docs(69): queue the chat sample preview toggle

This commit is contained in:
2026-11-11 07:37:38 -08:00
parent b265d42fb4
commit 4e5b4e3999
3 changed files with 32 additions and 4 deletions
+3 -3
View File
@@ -1,8 +1,8 @@
# HANDOFF — 2026-11-11 (TASK 37 complete; queue advances to TASK 40) # HANDOFF — 2026-11-11 (TASK 37 complete; TASK 69 queued)
## State ## State
- `main`, clean and pushed to `origin/main` at `1d35a74`. - `main`, worktree clean. App work is pushed through `b265d42`; TASK 69 queue update is local only.
- **Done:** TASK 35 scene-linked audio, TASK 55 disk hygiene, TASK 65 replay clips, TASK 37 defaults/current split. - **Done:** TASK 35 scene-linked audio, TASK 55 disk hygiene, TASK 65 replay clips, TASK 37 defaults/current split.
- TASK 37: SQLite keeps an immutable default snapshot beside build-stamped current rows; App Settings can - TASK 37: SQLite keeps an immutable default snapshot beside build-stamped current rows; App Settings can
restore the staged scene or all scenes, offline only. Webcam identity survives both restore paths. restore the staged scene or all scenes, offline only. Webcam identity survives both restore paths.
@@ -12,7 +12,7 @@
## Next action ## Next action
- Queue: **40·A/C/D → Move → 9·5 → 14·16/17/18 → 66 → 67 → 68 → 36**. - Queue: **40·A/C/D → Move → 9·5 → 14·16/17/18 → 66 → 67 → 68 → 69 → 36**.
- Ask creator before TASK 68 about first-run ON-AIR default; before gold pass, settle the Release - Ask creator before TASK 68 about first-run ON-AIR default; before gold pass, settle the Release
single-instance mutex behavior. single-instance mutex behavior.
- TASK 34 scheduling and TASK 50 recording publish are retired; YouTube owns those surfaces. - TASK 34 scheduling and TASK 50 recording publish are retired; YouTube owns those surfaces.
+2 -1
View File
@@ -9,7 +9,7 @@
**Creator ruling 2026-11-09 — finish the queue before the new features, gold pass always last.** **Creator ruling 2026-11-09 — finish the queue before the new features, gold pass always last.**
`40·A/C/D → Move → 9·5 → 14 (remaining slices) → 66 → 67 → 68 → 36` `40·A/C/D → Move → 9·5 → 14 (remaining slices) → 66 → 67 → 68 → 69 → 36`
The rule behind the two retirements below: **do not rebuild the platform's own surface.** Scheduling, The rule behind the two retirements below: **do not rebuild the platform's own surface.** Scheduling,
publishing, moderation and channel management are YouTube's; the app owns capture → scene → sound → publishing, moderation and channel management are YouTube's; the app owns capture → scene → sound →
@@ -30,6 +30,7 @@ output.
| 66 | ☐ | **Timed ticker messages** — "every N minutes show this", from a creator-written list | [`task-66`](TASKS/task-66-timed-ticker.md) | | 66 | ☐ | **Timed ticker messages** — "every N minutes show this", from a creator-written list | [`task-66`](TASKS/task-66-timed-ticker.md) |
| 67 | ☐ | **Per-event alert videos** — a clip per monetization event, falling back to the default | [`task-67`](TASKS/task-67-per-event-alert-videos.md) | | 67 | ☐ | **Per-event alert videos** — a clip per monetization event, falling back to the default | [`task-67`](TASKS/task-67-per-event-alert-videos.md) |
| 68 | ☐ | **Editing while live** + first-run On-Air state matching the 1-2-3 screen | [`task-68`](TASKS/task-68-edit-while-live.md) | | 68 | ☐ | **Editing while live** + first-run On-Air state matching the 1-2-3 screen | [`task-68`](TASKS/task-68-edit-while-live.md) |
| 69 | ☐ | **Chat sample-preview toggle** — per-layer control to show/hide mock chat in the preview; real messages unaffected, never output | [`task-69`](TASKS/task-69-chat-preview-toggle.md) |
| 36 | ☐ | **Gold pass** — the v1 gate: screens/layers audit (every control does something), native-Windows verification, branding-flash decision. Always the last unit | [`task-36`](TASKS/task-36-gold-pass.md) | | 36 | ☐ | **Gold pass** — the v1 gate: screens/layers audit (every control does something), native-Windows verification, branding-flash decision. Always the last unit | [`task-36`](TASKS/task-36-gold-pass.md) |
| 34 | ❌ | **Scheduled streams — retired 2026-11-09.** YouTube owns scheduling *and* the reminder that makes it useful; the app neither creates nor displays scheduled broadcasts, and there is no value in a copy that can fall out of sync | [`decisions`](docs/ai/decisions.md) | | 34 | ❌ | **Scheduled streams — retired 2026-11-09.** YouTube owns scheduling *and* the reminder that makes it useful; the app neither creates nor displays scheduled broadcasts, and there is no value in a copy that can fall out of sync | [`decisions`](docs/ai/decisions.md) |
| 50 | ❌ | **Publish recording — retired 2026-11-09.** YouTube Studio owns upload (resumable, quota-aware, and it explains rejections). In-app publishing would also widen the OAuth consent to whole-channel video management. The recording lands in the creator's folder; the app adds "Show in folder" instead | [`decisions`](docs/ai/decisions.md) | | 50 | ❌ | **Publish recording — retired 2026-11-09.** YouTube Studio owns upload (resumable, quota-aware, and it explains rejections). In-app publishing would also widen the OAuth consent to whole-channel video management. The recording lands in the creator's folder; the app adds "Show in folder" instead | [`decisions`](docs/ai/decisions.md) |
+27
View File
@@ -0,0 +1,27 @@
# TASK 69 — Chat sample-preview toggle
**Status:** ☐ Queued (creator request 2026-11-11); scheduled after TASK 68 and before the gold pass.
## Request
Expose the autogenerated sample chatter as a per-ChatBox layer-control toggle, so the creator decides
whether it appears while adjusting chat font/color and previewing the layout. Keep the existing behavior
as the default: `Source.ChatPreviewEnabled` already defaults to `true`.
## Established behavior
- `ChatOverlayLayer.StartMockPreview` autogenerates sample messages for the ChatBox preview.
- A real message stops the sample loop; after the real-message fade clears the buffer, the sample loop
starts again—even during a live session.
- Samples are preview-only: they are not inserted into the real `Messages` buffer, and the output
renderer reads that real buffer. Viewers do not receive sample chatter.
- `ChatPreviewEnabled` is currently read by the mock-preview starter but is not persisted.
## Acceptance
- The selected ChatBox layer control exposes **Show sample chat in preview**, on by default.
- The choice persists across restart and applies to that ChatBox layer.
- Off stops/removes generated samples. It does not hide real chat messages or change the live output.
- When on, samples return in the preview when there are no real messages to show.
- One Good Dog integration test covers the toggle and persistence; pin that sample chatter never enters
the output message buffer.