diff --git a/sessions/0026/SESSION-0026.0-TRANSCRIPT-2026-06-27T15-26--INPROGRESS.md b/sessions/0026/SESSION-0026.0-TRANSCRIPT-2026-06-27T15-26--INPROGRESS.md index 9843d81..81d56bf 100644 --- a/sessions/0026/SESSION-0026.0-TRANSCRIPT-2026-06-27T15-26--INPROGRESS.md +++ b/sessions/0026/SESSION-0026.0-TRANSCRIPT-2026-06-27T15-26--INPROGRESS.md @@ -71,6 +71,21 @@ Pure scrub logic kept separable + unit-tested; Playwright E2E extended to assert loop-normalized tracked label (`appear 0.0`/`disappear 0.7` + 3-keyframe track) is now slightly misaligned to the subject. It's demo/test material gated behind both knobs up; left as-is — re-author via `/author.html` if the operator wants it pixel-accurate. +### Eyeball round 2 — 2 more items, both FIXED (2 commits) + +- **Fix 3 — morph→loop load jolt (double-buffer).** A pause/jolt when the morph ended and the next altitude's + loop loaded: swapping `vid.src` to the base + seeking the tail reloaded the ON-SCREEN element (decode+seek + stall). Added a dedicated `#vid-loop` element for the steady-state base loop; during a scrub it is PRELOADED to + the clip we're heading toward (`loadLoop`, paused at the tail frame). The paint shader reads the active source + (`displayVid() = busy ? vid : loopVid`), so landing is an instant source swap — no reload, no seek. E2E asserts + the loop element is armed + playing from ~3s after landing. +- **Fix 4 — audio on/off → 0–10 level dial.** Replaced the Audio checkbox with a 0–10 range slider = master gain + (`audioVol = level/10`), scaling rest volume + the two-track scrub crossfade. First Video-on lifts audio to + **3/10** (was full). E2E: range 0–10 default 0; first video-on → 3. +- **Verification:** Playwright **9 green** · node unit 9 · screenshot-confirmed the dial layout. +- **D3 residual still applies:** double-buffer kills the LOAD pause both directions; the reverse/turn-back FRAME + asymmetry (morph src-start@0 vs loop tail@3s) and the ~loop-wrap seek remain (per-clip loop files would fully + resolve if wanted). - **Resume:** merge + `wgl-session-finalize` on operator go, OR next eyeball round of tweaks. ## Deferred decisions