# HANDOFF — 2026-10-10 (scene-order F-key fix + desktop-lock fix; both LOCAL, uncommitted) ## At a glance - **Branch** main (no feature branch). Pushed through `5685c5d`; 18 commits local, **not pushed** (push at the creator's call). - Desktop-lock fix committed as `63bf844`; **scene-order fix below is uncommitted**. ## Branch - main (no feature branch). Pushed through `5685c5d` (TRAX toggle); everything after is local, **not pushed** (push at the creator's call). ## New work unit (this handoff) — READY TO VERIFY, do not commit yet - **Fix** for the scene-strip / F-key ordering report — `ViewModels/MainViewModel.Scenes.cs` new `ReorderScenesToCanonical()` (canonical F1-F5 order at load, renamed scenes after; next save re-stamps SortOrder) called from `MainViewModel.cs:LoadLayout`; `ytLive.Tests/SceneOrderTests.cs` (new, seeds a Chat-before-BRB DB and asserts order + F1-F5 labels + persisted SortOrder). See `bugs.md` entry 2026-10-10. Scope-locked files: `ViewModels/MainViewModel.Scenes.cs`, `ViewModels/MainViewModel.cs` (1 call line), `ytLive.Tests/SceneOrderTests.cs`, `bugs.md`, `HANDOFF.md`. - Full suite **423 passed / 0 failed / 0 warnings**. Root cause was the creator's own DB (Chat SortOrder 2, BRB 3); the fix heals it on next launch regardless of DB history. - **To commit later (this unit only):** the files listed above. Then the working tree is back to just the creator's pinned-chat unit (NOT mine to commit). ## Desktop-lock unit (COMMITTED 63bf844 — desktop "lock" fix) - `ShowActivated = !FullscreenGameRunningNow` + `FullScreenDetectorOverride` seam + `DesktopLockTests` (3 tests). Committed 2026-10-10. Creator still to verify in-game (launch while an exclusive-fullscreen game owns the foreground — the game must stay live). ## Dirty files — current reality (2026-10-10) - **NOT mine — do NOT commit:** the creator's in-flight "pinned chat" unit (`Models/YouTube.cs`, `ViewModels/MainViewModel.Chat.cs`, untracked `Helpers/RelayCommandGeneric.cs`, and **its hunks in `Controls/LeftPanel.xaml`**), plus the creator's untracked `Assets/llamacasty*` art. - ⚠️ Pre-commit (scene-order unit): `scripts/verify.sh` runs `scripts/scope-check.sh` against ALL working-tree changes — the not-mine pinned-chat + art files WILL flag. Pass them as declared-known. ## What just happened — TASK 51 quality pass (committed 2026-10-09) 1. **Jitter fix (`3057069`) — `MaskSmoother`**: per-session blend 0.75×new + 0.25×previous at the ONE worker (`CameraManager.RunEffectWorker` → `session.Smoother.Smooth(TrySegment(source))`). State on `CameraSession`, NOT the segmenter (shared app-wide, contract-pinned to raw output). Null resets history; first frame passes through; never aliases caller's array; ping-pong buffers (no per-frame LOH alloc). Weights: OBS obs-backgroundremoval 0.85 default, Jitsi 0.7/0.3 best (0.5/0.5 smears). Test `Temporal_Smoothing_Damps_Segmentation_Jitter_Across_Frames`: x=6 → first 255 / smoothed 58 / raw-unsmoothed 0. ⚠️ Gotcha: worker guards a re-queued identical frame reference — pump frame2 as a NEW instance. 2. **Blur "heavy" fix (this commit) — quadratic radius**: `BlurRadius(strength)` = 1 + 5·s², `MaxBlurRadius` 12→6 small px (≈ 24 full px max). Default 0.5 = 2 small px (was 6 under the old linear curve) — ~3× lighter spread. Rationale: StreamFX defaults Box blur Size to 5, author stops downscaled blurs ~8px. Test `Blur_default_strength_is_gentle_and_full_strength_is_strong` pins the mapping and step-edge behaviour (reach 9px default vs 26px max). Point-source probes vanish below the 0.5 rounding (3 box passes dilute a spike) — use a step edge, not a spike, to measure blur. ## Next step - Creator launches the app: the scene strip must show Starting/Live/BRB/Chat/Ending in order with F1-F5 correct (the creator's DB had Chat before BRB; the load-time reorder heals it and the next save re-stamps SortOrder). Also still to verify when convenient: the desktop-lock fix while an exclusive-fullscreen game owns the foreground. Then I can commit the scene-order unit. ## Tests - Full suite **423 passed / 0 failed / 0 skipped / 0 warnings** (2026-10-10; includes the new `SceneOrderTests`). Known env flakes remain `Mix_HonorsProviderGains…` (fails while system audio plays) and `RealMouseDrag…` (needs an idle desktop). ## Also still open - **Vertical-format regression (STALE, not fixed):** 1080p60 vertical selection no longer shrinks the capture border in the preview. Mechanism mapped (see prior summary): the crop Rectangle `Controls/PreviewPane.xaml:319-322` bound to `OutputRectX/Y/W/H` + `IsOutputCropped`, driven by `MainViewModel.Streaming.cs` `ApplyStreamQuality` from `SelectedQuality` (binding + ctor only, `new("Vertical 1080p60", 60, 8.0, 1080, 1920)`), `DimRects` in `MainViewModel.cs:91-94`. Root cause unknown — paused. - **Vertical recording file closed:** the recording itself is 1080×1920 60fps correctly; the "whitespace" was the app's preview UI, not the file. Audio loudness (`ebur128`) for the private video was never run and the thread is closed unless the user reopens it. - Blur-heaviness = fixed (above). Yellow-border regression = stale thread. - ⛔ Sudo password rotation pending (user; then update both password lines in `CREDENTIALS.md`). - TASK 56 secret scan before `gramps/LlamaCasty` goes public. TASK 55 disk hygiene queued.