# TASKS โ€” the active queue > One line per live item; the detail lives in `TASKS/task-*.md`. Done work is in > [`TASKS/archive.md`](TASKS/archive.md) (2026-10-29 snapshot of the old catalogue). Retired > decisions are in [`docs/ai/decisions.md`](docs/ai/decisions.md). > Markers: โ˜ queued ยท ๐Ÿ”ถ in progress ยท โณ blocked ยท โธ deferred ยท โŒ retired. ## Next up **TASK 3ยท17 โ€” the Text layer.** The `TextOverlay` source type exists as a placeholder and nothing else does: `AddSource` creates it 0ร—0, all four compositor paths `continue` past it, `FramePump`'s hash skips it, it is not draggable, and it has no text/font/colour properties or persistence. The unit: text content, font family/size/weight/style, colour, alignment, drag/resize, persisted; renderer mirrors `Services/ChatBoxRenderer.cs`. One Good Dog test. ## Queue | Task | Status | Scope | Detail | |---|---|---|---| | 3ยท17 | โ˜ **NEXT** | **Text layer** โ€” content, font family/size/weight/style, colour, alignment, drag/resize, persisted | [`task-03`](TASKS/task-03-capture-pipeline.md) | | 21 | ๐Ÿ”ถ | Media source: acquisition wiring + file picker + loop/volume UI (decoder, manager, pacing, loop all shipped โ€” **no `AcquireAsync` caller exists**) | [`task-21`](TASKS/task-21-media-source.md) | | โ€” | โ˜ | Transitions **Move**: per-layer carry-across-scenes flag, per-scene placement, fixed z band | [`ui-surface`](docs/ai/ui-surface.md) | | 55ยท2โ€“3 | โ˜ | Disk hygiene: delete `%TEMP%` alert clips on close + sweep at startup; low-disk guard before REC (slice 1 shipped) | [`task-55`](TASKS/task-55-disk-hygiene.md) | | 40ยทA/C/D | โ˜ | App Settings: active-camera picker; persist output resolution + surface transition defaults + confirm-before-End; accent consolidation | [`task-40`](TASKS/task-40-app-settings-round.md) | | 3ยท20 | โ˜ | RewardEvent persistence: canonical `RewardEvents` table + `superChatEvents.list` 30-day backfill (the session report and journey read it) | [`task-03`](TASKS/task-03-capture-pipeline.md) | | 32 | โ˜ | Stream resilience: blip retry โ†’ measured grace + amber "RECONNECTING" โ†’ one-click Back on air โ†’ fragmented MP4 โ†’ ingest pre-flight | [`task-32`](TASKS/task-32-stream-resilience.md) | | 33 | โ˜ | Bandwidth auto step-down: pure policy over dropped-frame rate, one-way within a broadcast | [`task-33`](TASKS/task-33-bandwidth-step-down.md) | | 34 | โ˜ | Scheduled streams (Text-drawer version) | [`task-34`](TASKS/task-34-scheduled-streams.md) | | 35 | โ˜ | Scene-linked audio | [`task-35`](TASKS/task-35-scene-linked-audio.md) | | 37 | โ˜ | Defaults vs current layout split (build-id); enables one-click revert to defaults | [`task-37`](TASKS/task-37-defaults-current-split.md) | | 39ยท2 | โ˜ | YPP slice 2: Analytics scopes, watch-hours/Shorts velocity + ETA | [`task-39`](TASKS/task-39-ypp-journey-tracker.md) | | 49 | โ˜ | Chat profanity filter: local, opt-in, **non-persistent**, user-supplied word list | [`task-49`](TASKS/task-49-chat-profanity-filter.md) | | 50 | โ˜ | One-button publish of the local recording (resumable upload) | [`task-50`](TASKS/task-50-publish-recording.md) | | 53 | โ˜ | Output-format contract: pin every tier with a geometry test, prove 9:16 end-to-end, recorded file matches output | [`task-53`](TASKS/task-53-output-formats.md) | | 54 | ๐Ÿ”ถ | Freemium: EULA + privacy shipped; **no licence path built** โ€” needs the entitlement seam, the output-profile cap and the licence UI below; site copy still says free forever | [`task-54`](TASKS/task-54-marcom-free-merch.md) | | โ€” | โ˜ | **Entitlement seam** โ€” `IEntitlement` over Polar activate/validate/deactivate, channel-ID match, 2 activations, 7โ€“14 day lease, `--activate` CLI | [`commercial`](docs/ai/commercial.md) | | โ€” | โ˜ | **OutputProfile gate** โ€” โ‰ค921,600 px / โ‰ค30 fps for stream **and** recording, greyed tier entries, live re-resolve, never mid-stream | [`commercial`](docs/ai/commercial.md) | | โ€” | โ˜ | **Licence UI** โ€” claim page, four states, 7/1/0-day notices, portal link, licence ID in About | [`commercial`](docs/ai/commercial.md) | | โ€” | โ˜ | **System messages** โ€” `SystemMessage` + `MessageCenter`, strip above the dock, dedupe by key, short history, never composited | [`ui-surface`](docs/ai/ui-surface.md) | | โ€” | โ˜ | **Packaging** โ€” portable zip, GitHub Release, winget manifest, Azure Trusted Signing | [`Distribution.md`](Distribution.md) | | 9ยท5 | โ˜ | Webcam identity key reconciliation | [`task-09`](TASKS/task-09-live-stream-management.md) | | 14 | ๐Ÿ”ถ | Creator feedback batch โ€” branch 3+ | [`task-14`](TASKS/task-14-creator-feedback-batch.md) | | โ€” | โ˜ | Small: `StreamConfig` defaults (`TargetBitrate=6000`, `1920x1080`) are stale โ€” the dropdown drives `StreamHealth` | this line | | 36 | โ˜ | **Gold pass** โ€” the v1 gate, always the last unit (see 1.0 gates) | [`task-36`](TASKS/task-36-gold-pass.md) | | 48 | โธ | Distribution & packaging โ€” route settled 2026-10-31 (winget/portable first; Steam + Store parked). Build steps: [`Distribution.md`](Distribution.md); starts after the entitlement seam | [`task-48`](TASKS/task-48-distribution-msix.md) | | 10 | โŒ | Retired 2026-10-08; superseded by the TASK 54 rows above โ€” the Polar design it described is rebuilt as a lease (`commercial.md`), not revived as written | [`task-10`](TASKS/task-10-monetization.md) | ## Pending the creator's hands (not programming) - โœ… App Settings grouping + right-click gear โ€” reported working 2026-10-29. - โœ… Transition picker/durations, Wipe, preview + program transitions โ€” reported working 2026-10-29. - โœ… Brand logo layer โ€” reported working 2026-10-29. - โณ Vertical-tier camera check (Live tile inside the band, Chat rect-only) โ€” outstanding. - โณ **Webcam cadence**: a Release take in the failing geometry (vertical tier first) blocks Units 1โ€“2. No fix until a reading names the stage. ## 1.0 gates (before the first shipped build) - **Visibility picker** โ€” replace the always-Private lock, hide the TEST button, and wire `UpdateBroadcast` in the same unit (it is the only code that can change a broadcast's privacy). - **Kill the dev multi-instance affordance** โ€” `Helpers/InstanceProfile.cs` is already `#if DEBUG`; re-prove it on a Release build. - **Release engineering** โ€” `scripts/publish.sh` (self-contained win-x64, no test artifacts), Debug-only `InternalsVisibleTo`, the `LlamaCasty.exe` assembly rename (three pack URIs, incl. `MainWindow.xaml:14`), full license texts beside `THIRD-PARTY-NOTICES.txt` (TASK 4 req 9). - **Gold pass** (TASK 36): the screens/layers audit, native-Windows verification, and the branding-flash decision. ## Research [`research-youtube-api.md`](TASKS/research-youtube-api.md) ยท [`research-store-certification.md`](TASKS/research-store-certification.md)