docs(handoff): audio dock shipped, awaiting an eyes-and-hands pass

This commit is contained in:
2026-10-30 13:20:19 -07:00
parent 16689c0a80
commit 8aa483f933
+17 -17
View File
@@ -1,26 +1,26 @@
# HANDOFF — 2026-10-30 (design conversion complete; spacing is a layout pass, not a sweep)
# HANDOFF — 2026-10-30 (audio dock shipped; needs an eyes/hands pass)
## State
- Branch `main`, worktree clean. **~20 commits, unpushed** (push at your checkpoint).
- **The design conversion is done**: `DESIGN.md` is the contract, `Themes/Tokens.xaml` implements
it, and every surface consumes it — UI chrome, all dialogs (typeface included), the VM's state
colours via `Helpers/ThemeBrush`, and the on-stream graphics via `Services/Compositor/OutputPalette`
(which mirrors the tokens and is checked against them, because the pump thread cannot read app
resources). Blue `#38bdf8` is the only interactive accent; red `#ff5451` is live/record;
`#e94560` is gone from the product.
- Four guards hold it: `DesignTokensTests` (doc ↔ brushes; converted files may not regress to a
literal), `ThemeResourceTests` (no dangling `StaticResource` — the class of crash that killed the
app on a slider), `OutputPaletteTests` (on-stream ↔ theme), `SocialsPreviewTests` (a real
MainWindow, real preview elements) and `DialogTypographyTests` (dialogs inherit Inter).
- Branch `main`, worktree clean. Ten dock units landed on top of the design conversion; nothing
pushed since `1724922` — this batch is local.
- **The sound bars exist**: `Controls/AudioDock` — master strip on top (nearest the preview), four
bays below (MIC / GAME / TRAX / LIP-SYNC), 148px, auto-collapsing to 36px below a 900px window
height. The dock is now the ONLY audio surface; the preview's mic row, game chip, TRAX button and
sync slider are deleted.
- Faders speak dB (`Helpers/GainDb`, 0 dB = unity). Ladders are measured (`SegmentMeter` +
`MeterScale`), never decorative. The duck badge prints the gain the mixer applied.
- **MONO output** (creator ruling): folds the finished mix to both channels, persisted as
`Audio.MonoOutput`, one click in the master strip. Exists because single-sided audio is inaudible
with profound right-side deafness, not merely unbalanced.
- Deliberately absent: L/R ladders (one ladder + an imbalance flag instead), TRAX scrub/prev-next
(OBS territory), CPU/GPU/NVENC readouts, acrylic.
## Next action
Nothing queued for the design. The **one** item deliberately not swept: the spacing scale. Margins
and paddings are per-side `Thickness`, not the single values `DESIGN.md` defines, so converting
them mechanically would change layout without a rationale — that is a layout pass (a designer's
job), not a colour-style sweep. Radii are tokenised where a token was honest; component geometry
(pill halves, 2.5px hairlines) stays literal on purpose.
Nothing queued. **Needs the creator's hands**: launch and judge the dock at the real window size —
bay proportions at 148px, the master strip's ladder/label density, and whether the MONO fold sounds
right through their own ears/headphones (the one thing no test can answer).
## Landmines