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).
3.3 KiB
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.mdrecipes 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 (
a9eb360recording,c8374bddocs,be529a4verify.sh,46f4696rename 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
- Commit + push Increment A (the code is ready, gates passed, TASKS/HANDOFF docs updated).
- Commit + push the handoff correction (HANDOFF says done, not partial).
- Running-app verification of TASK 18 rename/dual-output (creator) — one of two run-app walls.
- Increment B: write
MediaVideoDecoder(FFmpeg → BGRA8VideoFrame), compile-verified, gated on creator run for integration test (ffmpeg not present headlessly). - Later TASK 21 slices + TASK 22.