From 66b85d3fcc06a1fd7427d2c433b7900f808e5bc1 Mon Sep 17 00:00:00 2001 From: gramps Date: Fri, 30 Oct 2026 08:03:28 -0700 Subject: [PATCH] docs(handoff): preview pane next, with the colour-picker trap recorded --- HANDOFF.md | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index 1be0455..bf84f26 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -2,35 +2,37 @@ ## State -- Branch `main`, worktree clean. **Seven design commits, unpushed** (push at your checkpoint): - `565b8db` DESIGN.md standard · `f2bf577` Tokens.xaml + guard · `84c335a` fonts bundled · - `ffdf3b6` sans wired into the window · `4ef84f2` Controls.xaml · `0275e30` shell - (top bar, window, scene strip; mono telemetry). -- **The app is half-converted on purpose:** theme, shell and readouts are tokenised; the left - panel, preview pane and dialogs still carry the old palette. -- `DESIGN.md` is normative; `Themes/Tokens.xaml` is its implementation. Blue `#38bdf8` is the - only interactive accent; red `#ff5451` is live/record only; `#e94560` is retired from chrome. +- Branch `main`, worktree clean. **Eight design commits, unpushed** (push at your checkpoint): + `565b8db` DESIGN.md standard · `f2bf577` Tokens.xaml + guard · `84c335a` fonts · + `ffdf3b6` sans wired · `4ef84f2` Controls.xaml · `0275e30` shell (top bar, window, scene + strip, mono telemetry) · `2dbc35b` left panel · `3edb0d1` positive + dark-scrim tokens. +- **Half-converted on purpose:** theme, shell, left panel and readouts are tokenised; the preview + pane and the dialogs still carry the old palette. +- `DESIGN.md` is normative; `Themes/Tokens.xaml` implements it. Blue `#38bdf8` is the only + interactive accent; red `#ff5451` is live/record only; `#e94560` is retired from chrome. ## Next action -Continue the sweep, one surface per commit, adding each file to -`DesignTokensTests.Converted_surfaces_carry_no_raw_colour`: `Controls/LeftPanel.xaml` (101 hexes) -→ `Controls/PreviewPane.xaml` (110) → `Controls/OverlayHost.xaml` + the dialogs (~85) → the -VM/service brush literals (`MainViewModel.Streaming.cs`, `MainViewModel.Audio.cs`, -`NotificationService.cs`). +**`Controls/PreviewPane.xaml`** (110 hexes), then `Controls/OverlayHost.xaml` + dialogs (~85), +then the VM/service brush literals (`MainViewModel.Streaming.cs`, `.Audio.cs`, +`NotificationService.cs`). Add each file to `DesignTokensTests.Converted_surfaces_carry_no_raw_colour`. + +⚠️ **PreviewPane trap:** it holds a **hardcoded chat-border colour menu** — `MenuItem` rows with +`Tag="#22c55e"`-style values bound through `EnumToBool` (~line 265). Those hexes are **user data, +not theme**; tokenising them breaks the picker. Route them through `Models/BorderColorPalette.cs` +first (TASK 63 precedent), then sweep the rest. ## Landmines -- **Never tokenize the on-stream renderers or user data:** `Services/AlertRenderer.cs`, - `ChatBoxRenderer`, `Compositor/*`, `BrandFlashPresenter`, `Models/BorderColorPalette.cs`, - `Models/Source.cs` chat-colour defaults. Those paint the broadcast picture, not app chrome. -- `Themes/Tokens.xaml` is the only file allowed a raw hex; the guard lists converted files, so a - surface that regresses fails the test. -- A red settings control is a bug now — red means live/record. Sliders and toggles are blue. +- **Not every hex is a theme colour.** Tokenise app chrome only; leave `BorderColorPalette`, + picker `Tag=` values, `Models/Source.cs` chat defaults, and the on-stream renderers + (`AlertRenderer`, `ChatBoxRenderer`, `Compositor/*`, `BrandFlashPresenter`) literal. +- `Themes/Tokens.xaml` is the only file allowed a raw hex; the guard lists converted files. +- A red settings control is a bug now — red means live/record. - Pre-existing: the **full test suite hangs** (WASAPI teardown). Per-class runs are the way. ## Pending -- **Launch once** to confirm Inter/JetBrains Mono render and the blue accent reads right — the - fonts resolve by pack URI, which no test can prove. +- **Launch once**: confirm Inter/JetBrains Mono render (pack-URI resolution is unprovable in the + test host) and that the blue reads right in the room. - Vertical-tier camera check; webcam-cadence take in the failing geometry.