diff --git a/.fork/customizations.yaml b/.fork/customizations.yaml index 417742ef8fa..914a2fe8df1 100644 --- a/.fork/customizations.yaml +++ b/.fork/customizations.yaml @@ -611,11 +611,9 @@ it shares with these rows spends 8px of air on the left and 8+6 on the right: every card sits visibly off-centre in its own column, and the chrome rows above end 6px past where the cards do. The list's end padding gives - that 6px back — reading --app-scrollbar-width rather than restating 6px, so - the symmetry follows upstream if the scrollbar is ever retuned. The gutter - itself stays: the scrollbar keeps its lane, the cards are 8px from both - edges, and the compensation is meaningless without the gutter that causes - it, so the two must move together. + that 6px back. The gutter itself stays: the scrollbar keeps its lane, the + cards are 8px from both edges, and the compensation is meaningless without + the gutter that causes it, so the two must move together. The width given back is measured, not assumed. --app-scrollbar-width is only true where ::-webkit-scrollbar applies: Firefox sets no scrollbar-width, so @@ -682,9 +680,12 @@ - apps/web/src/components/SidebarStageBackdrop.test.tsx - apps/web/src/components/SidebarV2.tsx - apps/web/src/components/sidebar/SidebarChrome.tsx - # Defines --app-scrollbar-width, which the thread list's end padding reads - # to cancel its own scroll gutter. Retiring or renaming that token silently - # returns the list to 8px of air on one side and 14px on the other. + # Styles ::-webkit-scrollbar { width: var(--app-scrollbar-width) }, which + # is what makes the thread list's reserved lane a styled 6px at all — and + # what the intent's cross-engine argument is anchored to. A retune the + # measurement absorbs; the failure is this rule disappearing or gaining + # scrollbar-width/appearance handling, which hands the lane to the UA + # default width the drawn 6px gutter does not assume. - apps/web/src/index.css verify: - apps/web/src/__fork_guards__/forkSidebarChrome.test.ts @@ -1021,8 +1022,10 @@ # customization switches off. An upstream rework of that paint would leave # the fork disabling rules that no longer exist. - apps/web/src/index.css - # min-h-17.5 on the prompt editor, and the placeholder that has to track the - # prompt's type ramp. + # min-h-17.5 on the prompt editor, the placeholder that has to track the + # prompt's type ramp, and the max-h-50 / overflow-y-auto cap the fork + # re-homes on the prompt wrapper at >=40rem by overriding — the classes + # themselves stay on the editor here. - apps/web/src/components/ComposerPromptEditor.tsx verify: - apps/web/src/__fork_guards__/forkComposerShell.test.ts diff --git a/apps/web/src/__fork_guards__/forkSidebarChrome.test.ts b/apps/web/src/__fork_guards__/forkSidebarChrome.test.ts index 7edc5687cc5..a598dea175a 100644 --- a/apps/web/src/__fork_guards__/forkSidebarChrome.test.ts +++ b/apps/web/src/__fork_guards__/forkSidebarChrome.test.ts @@ -182,7 +182,16 @@ describe("fork guard: fork-sidebar-chrome", () => { const gutter = readSibling("../custom/useScrollGutterWidth.ts"); expect(gutter).toContain("offsetWidth - node.clientWidth"); expect(sidebarV2).toContain("ref={listScrollGutterRef}"); - expect(sidebarV2).not.toContain("calc(0.5rem-var(--app-scrollbar-width))"); + // The token-based giveback is this file's own prior implementation — + // pe-[calc(0.5rem-var(--app-scrollbar-width))], replaced by the measured + // gutter in 56954bc8 — which makes it the likeliest thing a revert or a + // wrong-side conflict resolution puts back, including *alongside* the + // measured term, where the containment checks above stay green and the + // last pe-* wins. Bounded to a pe-* utility so prose about the token + // cannot trip it, and looser than the old exact literal so a re-spelling + // like pe-[calc(var(--sidebar-list-pad)-var(--app-scrollbar-width))] + // cannot sail past. + expect(sidebarV2).not.toMatch(/pe-\[[^\]]*--app-scrollbar-width/u); }); it("puts the brand on the header's trailing edge", () => {