feat(text): composite shared text rasters in output

Raster static text on UI-thread changes and reuse the same transparent BGRA frame in preview and all compositor paths. Cache text frame identity in the frame-pump signature and invalidate static bakes on edits. Follow OBS text-source conventions: https://obsproject.com/kb/text-sources
This commit is contained in:
2026-11-04 15:01:47 -08:00
parent 58eb640c4e
commit 5c4acf141b
19 changed files with 622 additions and 81 deletions
+9 -12
View File
@@ -1,21 +1,18 @@
# HANDOFF — 2026-11-04 (Day 2 and YouTube live-state color)
# HANDOFF — 2026-11-04 (TASK 3·17 — static text layers)
## State
- `main`; relevant commits: vertical scaling through FFmpeg `6310f50`, Day 2 reconciliation
`f921c01`, Steam-frame-rate entitlement `7216c95`, Task 53 visual acceptance `1993e7c`.
- The top menu background follows YouTube's broadcast status: normal ON-AIR starts red and turns
green only at `lifeCycleStatus=live`; TEST stays gold; stopping restores the idle surface color.
- TASK 53 is complete: six output recordings and the vertical YouTube player view were accepted by
the creator. Platform-specific safe zones are explicitly out of scope.
- Output entitlement code now gates by frame rate; the paid Steam App ID still needs Steamworks metadata.
- The focused top-bar test passes. The last full verification had a clean build and 522/523 tests;
the only failure was the known `AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback`.
- Four untracked `Assets/llamacasty-*` files remain untouched.
- `main`; TASK 53 is complete and TASK 3·17 is complete in three commits: `60c4a00`, `58eb640`,
and the final output/compositing phase.
- Text layers persist independently, edit as static multiline text, and share one cached raster between
preview and output. The frame pump only reads the raster cache; no WPF render occurs on its thread.
- The app clean build has 0 warnings. 524 tests passed with the documented physical mouse-injection test
and known audio test excluded; the new text renderer, preview/output, and pump-cache tests pass.
- The four untracked `Assets/llamacasty-*` files remain untouched.
## Next action
- Next queued coding task: TASK 3·17, the Text layer.
- Next action: select the next queued task from `TASKS.md`.
- Do not push absent a checkpoint request.
## Landmines