# HANDOFF — 2026-11-05 (TASK 64 — green/blue screen for clips) ## State - `main`. TASK 21 complete (video file layer + its soundtrack). TASK 64 shipped through slice E: a clip with a green or blue backdrop is **offered** a key on add ("Looks like a green screen — Remove it"), accepting it keys the background **inside the decode pipe** (bundled ffmpeg `colorkey`/`despill`), with Amount/Softness/Fringe in the panel and the settings persisted. Sessions are keyed by **path + look**, so identical looks share one decoder. - Detection stays silent on lawns/pitches (confidence = coverage × hue tightness) and ignores letterbox bars. It never acts on its own. - Tests: `ChromaKeyDetectorTests` (pure) + `ChromaKeyApplyTests` (pipe asks ffmpeg to key; offer → accept → keyed session feeds the resolver; survives save). App build 0 warnings; full suite green apart from the two documented pre-existing failures. ## Next action - TASK 64 slice F: the **"Auto Green/Blue Screen"** opt-in setting (App Settings, high confidence only) and wiring alert clips to the same settings block. - Then TASK 49 (chat profanity filter). Day 3's TASK 32/33 resilience slices remain outstanding — 32·4 (fragmented MP4) is the smallest. - Do not push absent a checkpoint request. ## Landmines - `LayerReorderPersistenceTests.RealMouseDrag_OnTheLayerList_PersistsTheReorder` injects physical mouse input. Do not run it while the desktop is in use. - Integration tests constructing `MainWindow` must set a temporary `LayoutPathOverride` and clear it in `finally`. - Media sessions are keyed by **path + look** (`MainViewModel.MediaSessionKey`); never acquire by raw path, and release through `ReleaseMediaIfUnused`. - Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).