From ff3700a2d0225c2d54d83e1545e369066387eb9a Mon Sep 17 00:00:00 2001 From: amosblomqvist Date: Wed, 23 Sep 2026 01:46:15 +0300 Subject: [PATCH] Polish: session names take 900 weight serif-off; floating controls match graph chrome MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .font-title now requests font-weight: 900 — with the serif toggle OFF, the prose font is a VARIABLE font and was rendering titles at 400, a whisper next to CMU's bold-only face; 900 lands directly on Source Sans 3 and CMU's single 700 face snaps to nearest, unchanged. Same rendering with serif on, real weight with it off. - The model + thinking pills match the graph view's floating top-right chrome (import notes / gear / coverage): border bg-card/85 shadow-lg backdrop-blur — the graph no longer bleeds through the pills. - The dictate button gets the same blurring at lower opacity (bg-card/50 backdrop-blur), staying quieter than the model pills. Gates: tsc clean, 866/866, lint 0, build ok. Live-verified: pills/dictate computed styles byte-identical to the reference chrome (bg .85/.5 alpha + blur(8px) + same shadow stack); title requests 900 in both serif states. --- app/globals.css | 10 ++++++++++ components/dictation.tsx | 4 +++- components/model-picker.tsx | 12 ++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/globals.css b/app/globals.css index eeb3716..8b722c4 100644 --- a/app/globals.css +++ b/app/globals.css @@ -178,6 +178,16 @@ body { line-height: var(--lh-prose-leading); } +/* Session-name weight (owner, fix wave round 3): with the serif toggle + OFF, --font-title resolves to the prose font — Source Sans 3 is loaded + as a VARIABLE font, and without an explicit weight the titles render at + 400, a whisper next to CMU's bold-only face. Request 900: the variable + font takes it, and CMU (a single 700 face) snaps to its nearest + available weight — the same rendering it already had. */ +.font-title { + font-weight: 900; +} + .lh-prose :where(strong, b) { color: var(--lh-ink-strong); font-weight: 700; diff --git a/components/dictation.tsx b/components/dictation.tsx index 01cea08..9851359 100644 --- a/components/dictation.tsx +++ b/components/dictation.tsx @@ -459,7 +459,9 @@ export function DictationBar({ dictation }: { dictation: Dictation }) { title={error ?? "Dictate into the composer"} aria-label={error ? `Dictation failed: ${error}` : "Start dictation"} data-testid="dictation-toggle" - className="flex h-7 w-full items-center justify-center gap-1.5 rounded-md border border-border/50 text-xs text-muted-foreground/70 transition-colors hover:border-border hover:text-muted-foreground" + // Same blurring as the floating chrome (owner, fix wave round 3), + // but lower opacity — the mic stays quieter than the model pills. + className="flex h-7 w-full items-center justify-center gap-1.5 rounded-md border border-border/50 bg-card/50 text-xs text-muted-foreground/70 shadow-lg backdrop-blur transition-colors hover:border-border hover:text-muted-foreground" > {error ?? "Dictate"} diff --git a/components/model-picker.tsx b/components/model-picker.tsx index 96dac5a..63fda83 100644 --- a/components/model-picker.tsx +++ b/components/model-picker.tsx @@ -247,7 +247,11 @@ export function ModelControl() { onClick={() => openMenu("model")} aria-expanded={open === "model"} title="Strong tier model (prober + teacher) — set app-wide" - className="flex items-center gap-1.5 rounded-full border border-border/60 bg-card/70 px-2.5 py-1 transition-colors hover:border-border hover:bg-muted" + // Chrome look (owner, fix wave round 3): matches the graph + // view's floating top-right buttons (import notes, gear, + // coverage) — blurred, fuller opacity, shadowed — so the + // graph no longer bleeds through these pills. + className="flex items-center gap-1.5 rounded-full border bg-card/85 px-2.5 py-1 shadow-lg backdrop-blur transition-colors hover:border-border hover:bg-muted" > {effectiveId ? prettyModel(effectiveId) : "—"} ▾ @@ -263,7 +267,11 @@ export function ModelControl() { }} aria-expanded={open === "thinking"} title="Strong tier thinking level — set app-wide" - className="flex items-center gap-1.5 rounded-full border border-border/60 bg-card/70 px-2.5 py-1 transition-colors hover:border-border hover:bg-muted" + // Chrome look (owner, fix wave round 3): matches the graph + // view's floating top-right buttons (import notes, gear, + // coverage) — blurred, fuller opacity, shadowed — so the + // graph no longer bleeds through these pills. + className="flex items-center gap-1.5 rounded-full border bg-card/85 px-2.5 py-1 shadow-lg backdrop-blur transition-colors hover:border-border hover:bg-muted" > {/* Just the level — the button reads like the model button reads the model name (owner, stats-control round 1). */}