Files
LlamaCasty/TASKS.md
T
gramps 2c5a3d8c11 docs(70): queue the Live Window App overlay layer
Record the creator's Live-only, single-layer scope and distinguish it from the
existing session-scoped Capture Window backdrop pin. Include HWND lifecycle,
protected-window, visual-only, and duplicate-underlay boundaries.

Reference scan: Microsoft HWND capture item API and OBS Window Capture:
https://learn.microsoft.com/en-us/windows/win32/api/windows.graphics.capture.interop/nf-windows-graphics-capture-interop-igraphicscaptureiteminterop-createforwindow
https://obsproject.com/kb/window-capture-sources
2026-11-11 07:42:37 -08:00

59 lines
6.1 KiB
Markdown

# TASKS — the active queue
> One line per live item; the detail lives in `TASKS/task-*.md`. Done work and the retired surge plan are
> in [`TASKS/archive.md`](TASKS/archive.md). Retired decisions are in
> [`docs/ai/decisions.md`](docs/ai/decisions.md).
> Markers: ☐ queued · 🔶 in progress · ⏳ blocked · ⏸ deferred · ❌ retired.
## Next up
**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 → 69 → 70 → 36`
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 →
output.
## Queue
| Task | Status | Scope | Detail |
|---|---|---|---|
| 35 | ✅ | **Scene-linked audio** — the scene remembers the room: BRB ships muted, three-state checkboxes per scene, applied once when the scene takes the program output (done 2026-11-10) | [`task-35`](TASKS/task-35-scene-linked-audio.md) |
| 37 | ✅ | **Defaults vs current layout split** — immutable SQLite default snapshot, build-stamped current layout, staged-scene and all-scene reset controls (done 2026-11-10) | [`task-37`](TASKS/task-37-defaults-current-split.md) |
| 40·A/C/D | ☐ | **Settings round** — active-camera picker; persist output resolution + surface transition defaults + confirm-before-End; accent consolidation | [`task-40`](TASKS/task-40-app-settings-round.md) |
| 55 | ✅ | **Disk hygiene** — log rotation (5 MB, one roll), temp alert clips deleted on close + swept at startup, low-disk guard (block under 1 GB, warn under 5 GB at start, one warning under 2 GB mid-show) — done 2026-11-10 | [`task-55`](TASKS/task-55-disk-hygiene.md) |
| — | ☐ | **Move transition** — per-layer carry-across-scenes flag, per-scene placement, fixed z band | [`ui-surface`](docs/ai/ui-surface.md) |
| 9·5 | ☐ | **Webcam identity key reconciliation** — one stable identity per camera across re-plugs | [`task-09`](TASKS/task-09-live-stream-management.md) |
| 14 | 🔶 | **Creator feedback batch** — Branch 2 shipped; Branch 3 remaining: webcam blank/standby, opacity+geometry consistency, Show-in-folder on stop (mic-gain slice closed after creator test 2026-11-10) | [`task-14`](TASKS/task-14-creator-feedback-batch.md) |
| 65 | ✅ | **Replay clips** — 10/15 s (default 10), RAM ring of fragmented MP4, F10 saves (inert during a Live replay); layer plays once then hides in Live, loops the kept 3/4/5 elsewhere; silent by default (done 2026-11-10) | [`task-65`](TASKS/task-65-replay-clips.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) |
| 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) |
| 70 | ☐ | **Window App layer** — capture one selected running app window as a visual layer over Live's game/display capture | [`task-70`](TASKS/task-70-window-app-layer.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) |
| 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) |
| 54 | 🔶 | Freemium: EULA + privacy shipped; one codebase for free Demo + paid app. **Blocked on Valve** — identity verification pending, tax review up to 30 business days | [`task-54`](TASKS/task-54-marcom-free-merch.md) |
| — | 🔶 | **Steam ownership** — `BIsSubscribedApp(paidAppId)` + Debug fake + app-wide `IsAppOwned`; paid app ID awaits Steamworks | [`commercial`](docs/ai/commercial.md) |
| — | ☐ | **Steam packaging** — `publish` output + `steam_api64.dll`, paid app and Demo, depots, `steamcmd` upload, store pages + capsule assets, measured system requirements | [`Distribution.md`](Distribution.md) |
| 48 | ⏸ | Distribution & packaging (winget/portable) — parked behind the entitlement seam | [`task-48`](TASKS/task-48-distribution-msix.md) |
| — | ☐ | **Training-video series** — 32 subjects listed in `youTubeTrainingVideos.md`; each is documentation, channel content and support deflection at once | `youTubeTrainingVideos.md` |
## 1.0 gates (before the first shipped build)
- **Release visibility flow** — default to Private; let the creator choose Private/Unlisted/Public at
creation and change it live through `UpdateBroadcast`; keep development/test runs forced Private.
- **Kill the dev multi-instance affordance** — `Helpers/InstanceProfile.cs` is `#if DEBUG`; re-prove on a
Release build.
- **Single-instance guard** — Release has none: two launches share one layout DB (read-whole/write-whole)
and one audio pipe. A named mutex that activates the first window.
- **Gold pass** (TASK 36).
- Release engineering: `publish.sh` **done**, exe rename **done**, full licence texts beside
`THIRD-PARTY-NOTICES.txt` needed; Debug-only `InternalsVisibleTo` outstanding.
## Research
[`research-youtube-api.md`](TASKS/research-youtube-api.md) · [`research-store-certification.md`](TASKS/research-store-certification.md)