2.8 KiB
2.8 KiB
HANDOFF — 2026-11-09 (TASK 33 policy; vertical checks passed)
State
main. TASK 21 (video layer + soundtrack), TASK 64 (green/blue screen) and TASK 32·4 (fragmented MP4) are complete; TASK 49 is retired (YouTube owns chat moderation — we just don't paint tombstones).- Starting art:
Assets/starting-background.jpgis the corrected onboarding screen (earlier images inAssets/archive/). Bundled art is hash-keyed into the layout DB, soStampDefaultBackgroundAssetcompares bytes and re-stamps on a mismatch — no version bump. - Left panel alert stack shipped: Steam licence indicator pinned at row 1, event rows LIFO, click →
About or Logs with the event's lines painted. Detail:
docs/ai/ui-surface.md. - Site: demo video (silent loop) is the hero; Starting screen is in the scenes section.
- TASK 33 complete (
0fa3006): cause-classified step-down — shed our capture cost, then fps → resolution for the machine; bitrate only for the upload; one-way with recovery behind a flag. - Creator hands cleared 2026-11-09: vertical camera check 1–6 pass; vertical cadence 29.8 distinct/s (no defect).
- Tests: 588 green;
FAST=1 ./scripts/verify.sh≈ 4 min.
Next action
- App queue starts at 34 (scheduled streams; cite its research flags first), then 35/37/40/50/55, Move transitions, 9·5.
- Site repo commits are local (
llgit.llamachile.tube); deploy is./deploy.sh, not a push. - Do not push the app absent a checkpoint request.
- Steam is a wait, not a task: identity verification pending, tax review in Valve's queue (up to 30 business days). No app IDs, no store page, Release entitlement fails closed.
Landmines
- The preview pane draws frame-source layers from a whitelist of DataTriggers. A layer type with no
trigger is invisible in the preview while its decode looks healthy. Add the trigger with the layer
type; pin it with
MediaPreviewDisplayTests. - A bundled-art "version" heal cannot work: the constant and the embedded resource are compiled at
different moments, so a bump can race the image it is meant to ship. Compare bytes
(
LayoutStore.AssetMatches). Also:AllBackgrounds()returns only the LIVE scene's rows. - Pack URIs for bundled assets must be assembly-qualified (
/LlamaCasty;component/Assets/…): the unqualified form resolves against the entry assembly, which is the test host underdotnet test. - Media sessions are keyed by path + look (
MainViewModel.MediaSessionKey); never acquire by raw path. - The audio pipe allows ONE server per name; DEBUG suffixes it (id, else pid), Release does not.
- Integration tests constructing
MainWindowmust set a temporaryLayoutPathOverrideand clear it infinally. - Bundled FFmpeg stays outside the single-file exe (
ExcludeFromSingleFile="true").