diff --git a/HANDOFF.md b/HANDOFF.md index bf84f26..a6d3535 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -1,38 +1,38 @@ -# HANDOFF — 2026-10-30 (design standard landed; token sweep in flight) +# HANDOFF — 2026-10-30 (design standard + token sweep complete; visual check pending) ## State -- 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. +- Branch `main`, worktree clean. **Twelve commits, unpushed** (push at your checkpoint), + `565b8db` → `c885bbd`. `DESIGN.md` is normative; `Themes/Tokens.xaml` implements it. +- **Every XAML surface is tokenised and guarded**: theme, window, top bar, scene strip, left + panel, preview pane, App Settings, and all nine dialogs. The guard lists them all, so a raw hex + in any of those files fails `DesignTokensTests`. +- Blue `#38bdf8` is the only interactive accent; red `#ff5451` is live/record; `positive` + `#22c55e` is status only; `attention` `#ff8c3a` is warnings; `#e94560` is retired from chrome. +- Two duplications were killed on the way: the scene tiles no longer use one colour for two + states, and the webcam's right-click border-colour menu is generated from + `Models/BorderColorPalette` instead of carrying its own seven colours. ## Next action -**`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. +**Tokenise the VM-side state colours** (the last raw hexes in app chrome). They are strings bound +to `Background`/`Foreground`, so this is a VM→`Brush` refactor, not a find/replace: +`MainViewModel.Streaming.cs` (`RecDotBrush`, `RecTextBrush`, `OnAirBrush`, `RunningDotBrush`, +`TopBarBackground`), `MainViewModel.Streaming.Operations.cs` (`HealthIssueBackground`, +`PreviewGlowBrush`), `MainViewModel.Audio.cs` (meter zones, `MicProblemBrush`), +`Services/NotificationService.cs` (toast tints). Values already match the standard; only the +literals remain. ## Landmines -- **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. +- **Not every hex is a theme colour.** Leave `BorderColorPalette`, picker `Tag=` values, + `Models/Source.cs` chat defaults, and the on-stream renderers (`AlertRenderer`, + `ChatBoxRenderer`, `Compositor/*`, `BrandFlashPresenter`) literal. - 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**: confirm Inter/JetBrains Mono render (pack-URI resolution is unprovable in the - test host) and that the blue reads right in the room. +- **Launch and eyeball**: fonts render (pack-URI resolution cannot be proven in the test host), + the blue accent, blue-staged / red-live tiles, and mono telemetry. - Vertical-tier camera check; webcam-cadence take in the failing geometry.