docs(handoff): every XAML surface tokenised; VM state colours are the last unit
This commit is contained in:
+23
-23
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user