docs(handoff): Starting art vintage 4, the AllBackgrounds trap, site scenes shot
This commit is contained in:
+23
-28
@@ -1,43 +1,38 @@
|
||||
# HANDOFF — 2026-11-05 (alert stack + media/chroma fixes)
|
||||
# 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).
|
||||
- **Left panel alert stack** shipped: Steam licence indicator pinned at row 1 (`Entitlement 30 fps ·
|
||||
Maximum 60 fps`, pin → close once owned, permanent while owned), event rows LIFO beneath, click →
|
||||
About or the Logs tab with that event's lines painted. Detail: `docs/ai/ui-surface.md`.
|
||||
- Video layer fixes this session: the preview-pane trigger whitelist (a video layer was invisible), a
|
||||
quadratic frame copy that capped 1080p playback at 2 fps, and deadline pacing for video *and* audio.
|
||||
- Tests: 575 green, 1m50s; `FAST=1 ./scripts/verify.sh` = 527 in ~62s.
|
||||
- **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
|
||||
|
||||
- **32·1 + 32·2 shipped**: blip retry (immediate/+1/+2/+3 s), and the RECONNECTING sign driven by the
|
||||
status poll (4 s cadence while recovering) with **measured** elapsed/attempt only — the countdown was
|
||||
dropped after the creator pointed out YouTube's cutoff depends on variables we cannot see. The
|
||||
`chatEndedEvent` in the chat feed now prompts an immediate status check.
|
||||
- **32·5 shipped**: ingest pre-flight (TCP, 2 s) aborts go-live before any API call, so a dead
|
||||
network leaves no ghost broadcast.
|
||||
- Next:
|
||||
then 32·2/32·3 (countdown + Back on air) which need YOUR measurement take: pull the network on a
|
||||
private stream and time how long YouTube holds the broadcast.
|
||||
- Open loop: `32·4` is proven by construction only — kill ffmpeg mid-recording and play the file.
|
||||
- Do not push absent a checkpoint request.
|
||||
- **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:** partner account exists, identity verification pending, tax review in
|
||||
Valve's queue (up to 30 business days). No app IDs, no store page, Release entitlement still fails
|
||||
closed. Earliest realistic launch early-to-mid February 2027 — see `Distribution.md` §2.
|
||||
- **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 (alert box 2026-09-26, scoreboard,
|
||||
video layer 2026-11-05). Add the trigger with the layer type; pin it with `MediaPreviewDisplayTests`.
|
||||
- Nothing in the suite drives the real cursor any more; the drag arithmetic is pure (`DragReorderMathTests`).
|
||||
- Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`.
|
||||
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.** `NamedPipeAudioWriter` allows a single server, so two
|
||||
LlamaCasty processes cannot both go live. A DEBUG instance appends its id (`InstanceProfile.AudioPipeName`),
|
||||
Release keeps the plain name; the Go-Live path catches the failure and reports instead of dying.
|
||||
- **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"`).
|
||||
|
||||
Reference in New Issue
Block a user