docs(handoff): scoreboard units 1-10 landed; providers + goal inputs remain
This commit is contained in:
+20
-17
@@ -1,26 +1,29 @@
|
||||
# HANDOFF — 2026-10-30 (audio dock shipped; needs an eyes/hands pass)
|
||||
# HANDOFF — 2026-10-30 (scoreboard built to the polling policy; two wiring items left)
|
||||
|
||||
## State
|
||||
|
||||
- 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.
|
||||
- Branch `main`. The audio dock is shipped and pushed. **The scoreboard is built** in ten units,
|
||||
local commits only: tallies (`Models/ScoreboardState`, session-scoped), lifecycle
|
||||
(`ScoreboardRecorder`: start clears, End freezes), layout (`Models/ScoreboardLayout`: coupled
|
||||
edges resolved at render time, shrink-then-wrap, never scroll), renderer
|
||||
(`Services/Compositor/ScoreboardRenderer`: plate + text colour + opacity + 14–24px, cached),
|
||||
tile selection (`Models/ScoreboardTiles`, opt-in, money per currency), the cached presenter, the
|
||||
layer itself (`SourceType.Scoreboard`, strip geometry, resolver case), the properties panel
|
||||
(eight fact switches + colours + plate + size, theme widgets only), the Analytics scope
|
||||
(`yt-analytics.readonly`, incremental, `HasAnalyticsScope`), and the polling policy
|
||||
(`Models/ScoreboardCadence`).
|
||||
- Fixed on the way: the chat feed now reaches the tallies (the recorder had no caller).
|
||||
|
||||
## Next action
|
||||
|
||||
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).
|
||||
1. **HTTP providers** behind the cadence policy: watch hours (`reports.query`,
|
||||
`metrics=estimatedMinutesWatched`) and subscriber count (`channels.list?mine=true&part=statistics`),
|
||||
both behind an interface with a fake for tests, plus the timer that calls
|
||||
`ScoreboardCadence.Due(...)` and writes the values into `ScoreboardTiles`.
|
||||
2. **Goal-target inputs** in the properties panel (the tiles read `SubscriberGoal`/`WatchHourGoal`
|
||||
but nothing sets them yet).
|
||||
3. **On-screen check** of the strip: one line at 24px, plate/opacity, and the edge swap against the
|
||||
social bar.
|
||||
|
||||
## Landmines
|
||||
|
||||
|
||||
Reference in New Issue
Block a user