Files
LlamaCasty/HANDOFF.md
T

39 lines
2.5 KiB
Markdown

# HANDOFF — 2026-11-06 (Starting art + site scenes)
## 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 replaced twice today** (`f7e1b76`, `a6f15a4`): the corrected onboarding screen is
`Assets/starting-background.jpg`; both earlier images are in `Assets/archive/`. Bundled art is
hash-keyed into the layout DB on first seed, so replacement rides on `HealDefaultArtVersion`
(**now 4**) — bump it whenever a bundled background changes.
- 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: the Starting screen is now in the scenes section (`scenes-shot`), deployed 2026-11-06 12:05.
- Tests: 575 green; `FAST=1 ./scripts/verify.sh` ≈ 62s. Background suite 45 green.
## Next action
- **App queue starts at 33** (bandwidth step-down), then 34/35/37/40/50/55, Move transitions, 9·5.
- Site: 15-second demo clip → compress, poster, hero with reduced-motion fallback. Creator is shooting it.
- 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`.
- **`AllBackgrounds()` returns only the LIVE scene's rows** — never use it to mean "every background"
(that bug made art-version 2 heal nothing). Walk `Scenes` instead.
- 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 under `dotnet test`.
- Media sessions are keyed by **path + look** (`MainViewModel.MediaSessionKey`); never acquire by raw path.
- **The audio pipe is one instance per machine.** DEBUG appends its id (`InstanceProfile.AudioPipeName`).
- Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`.
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).