From 3db964e5cf089e5e2692b10e3529a77a56f35029 Mon Sep 17 00:00:00 2001 From: gramps Date: Fri, 6 Nov 2026 12:06:13 -0800 Subject: [PATCH] docs(handoff): Starting art vintage 4, the AllBackgrounds trap, site scenes shot --- HANDOFF.md | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index 9459936..44205ca 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -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"`).