From aa130a65633b24760a093b2fdb8bc60c76d20a91 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 4 Sep 2026 02:06:31 +0900 Subject: [PATCH 1/4] fix(models): normalize mobile tab spacing and stabilize Combos layout Carried from #3333 onto current dev. Independent of the other carried fixes, so it ships as its own PR rather than a stack layer. Co-authored-by: hajune --- gui/src/styles-compatibility-matrix.css | 11 +++- gui/src/styles-models-workspace.css | 29 +++++++--- gui/src/styles.css | 74 +++++++++++++++++++++---- gui/tests/models-tab-layout.test.ts | 62 +++++++++++++++++++++ 4 files changed, 157 insertions(+), 19 deletions(-) create mode 100644 gui/tests/models-tab-layout.test.ts diff --git a/gui/src/styles-compatibility-matrix.css b/gui/src/styles-compatibility-matrix.css index db86e4a89d..38ff9f61f9 100644 --- a/gui/src/styles-compatibility-matrix.css +++ b/gui/src/styles-compatibility-matrix.css @@ -3,7 +3,16 @@ Namespace: lab-matrix- ============================================================================ */ -.main-inner:has(.lab-page) { +/* + Scoped to the VISIBLE compatibility panel by id, not to `.lab-page`: the lab renders no + `.lab-page` while it is loading (skeleton), so a `:has(.lab-page)` test dropped the width + to 980px during load and snapped to 1200px afterwards — the tab's size was not fixed. It + also matched from any tab once the lab had been opened (panels stay mounted), leaking the + width across tabs. `#models-panel-compatibility:not([hidden])` is true only while this is + the active tab, so the width is held steady across load/error and never leaks. Matches the + catalog and routing rules in styles-models-workspace.css. +*/ +.main-inner:has(#models-panel-compatibility:not([hidden])) { max-width: 1200px; box-sizing: border-box; } diff --git a/gui/src/styles-models-workspace.css b/gui/src/styles-models-workspace.css index ab00d41402..e1120eb04c 100644 --- a/gui/src/styles-models-workspace.css +++ b/gui/src/styles-models-workspace.css @@ -8,14 +8,29 @@ /* The catalog wants a wider column than the 980px default. - Scoped to a VISIBLE catalog panel, not merely a present one: panels mount lazily and - then stay mounted so drafts survive a tab hop, so a bare `:has(.models-workspace-shell)` - keeps matching after the catalog has been opened once. Routing would then render at - 980px on a direct visit and 1200px afterwards — a width that depends on browsing - history. No surface renders the shell outside a tabpanel any more, so the old - direct-child arm is gone with the standalone pages it served. + Scoped to the VISIBLE catalog panel by its id: `#models-panel-catalog:not([hidden])` is + true only while catalog is the active tab (an inactive panel carries `hidden`), so this + never leaks onto another tab even though panels stay mounted after their first visit. + + It deliberately does NOT also require `.models-workspace-shell`: the shell is absent + while the catalog is loading (skeleton) or after a cold failure (error notice), so gating + on it dropped the width back to 980px in those states and snapped it to 1200px only once + data arrived — the catalog tab's size was not fixed. The panel-id test alone holds the + width steady across load, empty, and error, matching the routing rule below. */ -.main-inner:has(#models-panel-catalog:not([hidden]) .models-workspace-shell) { +.main-inner:has(#models-panel-catalog:not([hidden])) { + max-width: 1200px; +} + +/* + Routing shares the catalog/compatibility 1200px column so hopping between the Models + tabs never resizes the page. Scoped to the VISIBLE routing panel for the same reason + the catalog rule is: panels stay mounted after their first visit, so an unscoped `:has` + would leak this width onto whatever tab is open. Without this rule routing fell back to + the 980px `.main-inner` default — a visible width jump on every hop to it, and one that + only appeared once the compatibility tab's own `:has(.lab-page)` had leaked 1200px in. +*/ +.main-inner:has(#models-panel-routing:not([hidden])) { max-width: 1200px; } diff --git a/gui/src/styles.css b/gui/src/styles.css index 75d6aaa501..c39a0c82ce 100644 --- a/gui/src/styles.css +++ b/gui/src/styles.css @@ -450,6 +450,46 @@ input[type="checkbox"], input[type="radio"] { accent-color: var(--accent); } } .main-inner.main-inner--combos > .page-sub { margin-bottom: 10px; } +/* Keep the Models tab strip border aligned with its tab buttons in the full-bleed layout. */ +.main-inner.main-inner--combos > .page-tabs { + margin-inline: 36px; + padding-inline: 0; +} + +/* + Full-bleed is for the combos WORKSPACE grid only. Its loading and error fallbacks render + no `.combos-workspace-shell` (Combos.tsx returns a bare skeleton or an error notice), yet + `main-inner--combos` is applied on tab selection alone — so with no workspace to fill, the + lone subtitle/notice/retry stretched edge to edge (padding:0, max-width:none, flex column) + while every sibling Models tab stayed boxed. That is the "콤보만 영역이 이상해짐" report. + + When no workspace shell is present, drop the full-bleed and box the page like the other + tabs: reset the container, its chrome inset, and the fill panel back to normal flow. +*/ +/* + Each rule below is a SINGLE selector on purpose. Vite's Rolldown CSS minifier corrupts a + comma-separated selector list whose selectors carry `:not(:has(...))` — it emits a stray + `)` before the block and the browser then drops the whole rule. A single `:not(:has())` + selector minifies correctly, so the chrome inset is handled without a list: the container + drops its own horizontal padding and the page chrome keeps the 36px inline padding it + already gets above (`.main-inner--combos > .page-head` etc.), which the panel matches. +*/ +.main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) { + max-width: 1200px; + margin: 0 auto; + padding: 32px 0 64px; + min-height: 0; + height: auto; + overflow: visible; + display: block; +} +.main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .models-tab-panel--fill:not([hidden]) { + flex: 0 1 auto; + height: auto; + display: block; + padding-inline: 36px; +} + /* ---- page header ---- */ .page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 6px; } .page-head h2 { font-size: var(--text-title); } @@ -2006,22 +2046,12 @@ table.logs-table { .logs-table col.logs-col-duration { width: 8%; } .log-col-rate { min-width: 7ch; white-space: nowrap; } .log-col-cost { min-width: 10ch; white-space: nowrap; } -/* table-layout: fixed sizes the columns but does not clip them: a cell whose content is wider - than its paints straight over the neighbour (seen as "US$0.1401claude-fable-5-1" and a - "reasoning_effort=high" caption sitting under the provider name). Clip at the cell so an - overlong value truncates inside its own column instead. */ -.logs-table tbody td { overflow: hidden; } -.log-reasoning-cell { overflow-wrap: anywhere; } .log-status-cell { display: inline-flex; flex-direction: column; align-items: flex-start; gap: var(--space-0-5); min-width: 7ch; line-height: var(--leading-tight); } .log-detail-btn { background: none; border: none; padding: 0; cursor: pointer; color: var(--accent-hover); font: inherit; font-size: var(--text-caption); text-decoration: underline; - /* Wraps rather than clips: with the cell now clipping overflow, a nowrap label such as - zh-TW's 檢視詳細資料 would lose its tail in the 8% status column. */ - white-space: normal; - text-align: left; + white-space: nowrap; } -.log-detail-btn:focus-visible { outline-offset: -2px; } /* Logs page layout rhythm — keep spacing in CSS so virtualized rows don't flood inline px. */ .logs-auto-refresh { @@ -2335,6 +2365,28 @@ button.prov-account-row.active { cursor: default; } .main-inner.main-inner--combos > .page-head, .main-inner.main-inner--combos > .page-tabs, .main-inner.main-inner--combos > .page-sub { padding-inline: 18px; } + .main-inner.main-inner--combos > .page-tabs { + margin-inline: 18px; + padding-inline: 0; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .models-tab-panel--fill:not([hidden]) { + padding-inline: 0; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) { + padding: 22px 18px 48px; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .page-head { + padding-inline: 0; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .page-tabs { + padding-inline: 0; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .page-sub { + padding-inline: 0; + } + .main-inner.main-inner--combos:not(:has(.combos-workspace-shell)) > .page-tabs { + margin-inline: 0; + } /* settings rows: copy takes the full width, controls drop underneath */ .setting-row { flex-wrap: wrap; } .setting-row .setting-copy { flex: 1 1 100% !important; } diff --git a/gui/tests/models-tab-layout.test.ts b/gui/tests/models-tab-layout.test.ts new file mode 100644 index 0000000000..34bc9941dd --- /dev/null +++ b/gui/tests/models-tab-layout.test.ts @@ -0,0 +1,62 @@ +import { expect, test } from "bun:test"; +import { effectiveDeclaration, ruleBodies, withoutComments } from "./helpers/css-declarations"; + +async function readStylesheet(path: string): Promise { + return withoutComments(await Bun.file(new URL(path, import.meta.url)).text()); +} + +test("Models tab strips keep their full-bleed container borders aligned", async () => { + const baseStyles = await readStylesheet("../src/styles.css"); + const workspaceStyles = await readStylesheet("../src/styles-models-workspace.css"); + const compatibilityStyles = await readStylesheet("../src/styles-compatibility-matrix.css"); + + // The Combos workspace removes the outer container padding. Replacing the tab strip's + // padding with an equal inline margin keeps its border aligned with the tab buttons. + const tabStripSelector = ".main-inner.main-inner--combos > .page-tabs"; + const tabStripBodies = ruleBodies(baseStyles, tabStripSelector); + expect(tabStripBodies[0]).toMatch(/margin-inline:\s*36px/); + expect(effectiveDeclaration(baseStyles, tabStripSelector, "margin-inline")).toBe("18px"); + expect(effectiveDeclaration( + baseStyles, + tabStripSelector, + "padding-inline", + )).toBe("0"); + expect(tabStripBodies.at(-1)).toMatch(/padding-inline:\s*0/); + + // Loading, empty, and error fallbacks do not render the workspace shell. Keep those + // shell-free states boxed instead of allowing the full-bleed Combos container to stretch + // their notice and retry controls edge to edge. + const shellFreeContainer = ".main-inner.main-inner--combos:not(:has(.combos-workspace-shell))"; + expect(effectiveDeclaration(baseStyles, shellFreeContainer, "max-width")).toBe("1200px"); + expect(effectiveDeclaration(baseStyles, shellFreeContainer, "margin")).toBe("0 auto"); + expect(ruleBodies(baseStyles, shellFreeContainer)[0]).toMatch(/padding:\s*32px 0 64px/); + expect(effectiveDeclaration(baseStyles, shellFreeContainer, "padding")).toBe("22px 18px 48px"); + + const shellFreePanel = `${shellFreeContainer} > .models-tab-panel--fill:not([hidden])`; + expect(effectiveDeclaration(baseStyles, shellFreePanel, "display")).toBe("block"); + expect(ruleBodies(baseStyles, shellFreePanel)[0]).toMatch(/padding-inline:\s*36px/); + expect(effectiveDeclaration(baseStyles, shellFreePanel, "padding-inline")).toBe("0"); + + for (const selector of [ + `${shellFreeContainer} > .page-head`, + `${shellFreeContainer} > .page-tabs`, + `${shellFreeContainer} > .page-sub`, + ]) { + expect(effectiveDeclaration(baseStyles, selector, "padding-inline")).toBe("0"); + } + expect(effectiveDeclaration(baseStyles, `${shellFreeContainer} > .page-tabs`, "margin-inline")).toBe("0"); + + // Every Models workspace tab uses the same column width, including loading/error states + // where the panel content itself may not have mounted yet. + for (const selector of [ + ".main-inner:has(#models-panel-catalog:not([hidden]))", + ".main-inner:has(#models-panel-routing:not([hidden]))", + ]) { + expect(effectiveDeclaration(workspaceStyles, selector, "max-width")).toBe("1200px"); + } + expect(effectiveDeclaration( + compatibilityStyles, + ".main-inner:has(#models-panel-compatibility:not([hidden]))", + "max-width", + )).toBe("1200px"); +}); From 0ec46017182afe68fa42b0a5e0eb8bf3ac23468f Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 4 Sep 2026 02:25:57 +0900 Subject: [PATCH 2/4] docs(pr-assets): show the Models tab width stability fix Rendered against the branch stylesheet; the measured widths are read from getBoundingClientRect, not drawn. --- docs/pr-assets/models-tab-width-stability.png | Bin 0 -> 77273 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/pr-assets/models-tab-width-stability.png diff --git a/docs/pr-assets/models-tab-width-stability.png b/docs/pr-assets/models-tab-width-stability.png new file mode 100644 index 0000000000000000000000000000000000000000..57bebe526e3f9c3ec50dc7f12e00037056fc7032 GIT binary patch literal 77273 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 eae)8s)b+D#9Hjfvc= Date: Fri, 4 Sep 2026 02:31:32 +0900 Subject: [PATCH 3/4] fix(gui): anchor the page-tabs guard to the base rule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI caught this: the carried Models/Combos styling adds a scoped `.main-inner--combos > .page-tabs` rule above the base one, and the dashboard guard located its target with a bare indexOf(".page-tabs {") — which matches any rule whose selector merely ENDS in that string. It read the new scoped block, found no flex-wrap, and failed on a declaration nothing had touched. Anchoring the search to a line-start .page-tabs rule fixes the guard without weakening it: removing flex-wrap from the real base rule still fails the test. --- gui/tests/dashboard-tabs.test.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gui/tests/dashboard-tabs.test.ts b/gui/tests/dashboard-tabs.test.ts index c289eceada..7df1b1aa69 100644 --- a/gui/tests/dashboard-tabs.test.ts +++ b/gui/tests/dashboard-tabs.test.ts @@ -62,7 +62,13 @@ test("Dashboard uses the shared page-tabs strip with a tablist", async () => { // Short tab strips wrap instead of creating a horizontal scrollbar (Q7). const css = await Bun.file(new URL("../src/styles.css", import.meta.url)).text(); - const strip = css.slice(css.indexOf(".page-tabs {"), css.indexOf("}", css.indexOf(".page-tabs {"))); + // Anchor to the BASE rule at the start of a line. A bare `indexOf(".page-tabs {")` + // matches any scoped rule that merely ends in that selector — e.g. + // `.main-inner--combos > .page-tabs {` — so adding one above line 506 made this + // read the wrong block and fail on a stylesheet that was never touched here. + const start = css.search(/^\.page-tabs \{/m); + expect(start).toBeGreaterThanOrEqual(0); + const strip = css.slice(start, css.indexOf("}", start)); expect(strip).toContain("flex-wrap: wrap"); expect(strip).toContain("overflow: visible"); }); From 16b358d55f04ec3d74ff6300b15c7eb7bc109824 Mon Sep 17 00:00:00 2001 From: jun Date: Fri, 4 Sep 2026 02:37:07 +0900 Subject: [PATCH 4/4] fix(gui): restore the Logs table clipping rules the carry reverted CI was right and my earlier read of it was wrong. #3333 predates #3367, so taking gui/src/styles.css wholesale from the PR head silently reverted the newer Logs fix: .logs-table tbody td { overflow: hidden }, the .log-reasoning-cell wrap rule, and the .log-detail-btn wrapping that #3367 added on top. tests/logs-table-overflow.test.ts caught exactly that. This is the hazard in carrying a whole file rather than a diff, and it is why the guard test earned its keep. --- gui/src/styles.css | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gui/src/styles.css b/gui/src/styles.css index c39a0c82ce..b1a697d600 100644 --- a/gui/src/styles.css +++ b/gui/src/styles.css @@ -2046,12 +2046,22 @@ table.logs-table { .logs-table col.logs-col-duration { width: 8%; } .log-col-rate { min-width: 7ch; white-space: nowrap; } .log-col-cost { min-width: 10ch; white-space: nowrap; } +/* table-layout: fixed sizes the columns but does not clip them: a cell whose content is wider + than its paints straight over the neighbour (seen as "US$0.1401claude-fable-5-1" and a + "reasoning_effort=high" caption sitting under the provider name). Clip at the cell so an + overlong value truncates inside its own column instead. */ +.logs-table tbody td { overflow: hidden; } +.log-reasoning-cell { overflow-wrap: anywhere; } .log-status-cell { display: inline-flex; flex-direction: column; align-items: flex-start; gap: var(--space-0-5); min-width: 7ch; line-height: var(--leading-tight); } .log-detail-btn { background: none; border: none; padding: 0; cursor: pointer; color: var(--accent-hover); font: inherit; font-size: var(--text-caption); text-decoration: underline; - white-space: nowrap; + /* Wraps rather than clips: with the cell now clipping overflow, a nowrap label such as + zh-TW's 檢視詳細資料 would lose its tail in the 8% status column. */ + white-space: normal; + text-align: left; } +.log-detail-btn:focus-visible { outline-offset: -2px; } /* Logs page layout rhythm — keep spacing in CSS so virtualized rows don't flood inline px. */ .logs-auto-refresh {