Files
LlamaCasty/HANDOFF.md
T
gramps eba6af5b9b TASK 21 Increment A: media-source model + persistence (schema migration + round-trip test)
SourceType.MediaSource added; MediaSourceType (Video/Audio) and MediaPlaybackState
(Stopped/Playing/Paused) enums. Source gains MediaPath, MediaIsLooping, MediaVolume
(0-1 clamped), MediaPlaybackState. LayoutStore: MigrateSourceTable adds 4 guarded
ALTERs (MediaPath, MediaIsLooping, MediaVolume, MediaPlaybackState); SELECT appends
indices 26-29, INSERT adds 4 columns + params. Round-trip test
MediaSource_Config_Survives_Save_And_Reload passes. Build 0 warnings, 245/247
tests (2 known pre-existing). Gated on creator run for later integration (ffmpeg).
2026-08-29 09:43:29 -07:00

57 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HANDOFF — Session State
## Branch / Commit State
**`main`**, last pushed commit **`46f4696`** (manual-rename modal). Working tree is **DIRTY** —
TASK 21 Increment A (model + persistence for media sources) is fully implemented, verified, and
ready to commit. See "In flight" below.
No feature branches pre-1.0: all work lands on `main` per work unit.
## In flight: TASK 21 — next bounded slice = Increment B (FFmpeg video decoder, items 4–5)
**What is DONE (uncommitted, ready to commit):** Increment A — `SourceType.MediaSource` enum,
`MediaSourceType`/`MediaPlaybackState` enums, media config fields on `Source` (`MediaPath`,
`MediaIsLooping`, `MediaVolume`, `MediaPlaybackState`), LayoutStore migration + SELECT + INSERT,
round-trip test (`MediaSource_Config_Survives_Save_And_Reload`). Build 0 warnings, 245/247 tests
(2 known failures), scope check clean.
**What is NOT started (Increment B):** `MediaVideoDecoder` — FFmpeg-based video decoder → `VideoFrame`.
Needs ffmpeg present on Windows PATH or in `%APPDATA%\ytLlive\tools` to test. Currently absent:
neither `ffmpeg.exe` on PATH nor in tools cache (locator's network pull hasn't run). This is a
**run-the-app wall** — not blocked from writing the code, but blocked from headless integration
testing. Can be shipped as a compile-verified code commit gated on creator run, or deferred until
ffmpeg is present.
## Landmines (unchanged)
- **Pre-existing test failures (do not chase):** `AudioPipelineTests.Mix_HonorsProviderGains…` +
`RoundClipInteractionTests.Round_Clip_Corner_Is_Grabbable…`.
- **App running locks `ytLive.exe`** → build fails MSB3027 until the creator exits the app.
- **Real-MainWindow tests MUST set `LayoutPathOverride`** — DB pollution wiped real data once.
- **Pre-commit gate:** run `./scripts/verify.sh <scope...>` — clean build (0 warnings) + full tests +
scope check. Do NOT trust an incremental build's "0 warnings".
- **Good Dog Rule:** ONE integration test per change.
- **🔬 Derived-solution rule:** record one-off solutions in `MyMistakes.md` recipes registry same session.
- Startup diagnostics: `%APPDATA%\ytLlive\startup.log`.
- Media-source feature is large (12 items); each later slice (decode, compositor wiring, loop/volume,
UI) is its own bounded increment — decoder needs ffmpeg present, can't be headless-tested unless
ffmpeg is installed (currently absent from Windows PATH + empty tools cache).
## Todo state
- TASK 18: fully shipped (`a9eb360` recording, `c8374bd` docs, `be529a4` verify.sh, `46f4696` rename
modal). Only remaining = **running-app verification** (creator must run the WPF app).
- TASK 21: Increment A (model + persistence) done and ready to commit. Increment B (ffmpeg decoder)
is the next bounded slice — compile-verifiable without ffmpeg, but integration test is walled.
- TASK 22 (audio sync offset): not started.
## Next steps
1. Commit + push Increment A (the code is ready, gates passed, TASKS/HANDOFF docs updated).
2. Commit + push the handoff correction (HANDOFF says done, not partial).
3. Running-app verification of TASK 18 rename/dual-output (creator) — one of two run-app walls.
4. Increment B: write `MediaVideoDecoder` (FFmpeg → BGRA8 `VideoFrame`), compile-verified, gated on
creator run for integration test (ffmpeg not present headlessly).
5. Later TASK 21 slices + TASK 22.