Scene strip now renders in canonical F-key order regardless of persisted SortOrder. The strip loads Scenes ORDER BY SortOrder while each tab's F-key label is name-derived, so a session that persisted Chat before BRB (found on the creator's DB: SortOrder 2/3) showed tabs 'Chat F4' then 'BRB F3'. MainViewModel.LoadLayout now calls the new ReorderScenesToCanonical() - the five canonical scenes reorder to Starting, Live, BRB, Chat, Ending (F1-F5, stable among renamed non-canonical scenes), and the next auto-save re-stamps SortOrder so the heal persists. One integration test (SceneOrderTests) seeds the swapped-order DB and asserts loaded order, F1-F5 labels, and that a save persists the corrected ordering. 423 pass, 0 build warnings. (Unit: scene order)
This commit is contained in:
+33
-42
@@ -1,44 +1,40 @@
|
||||
# HANDOFF — 2026-10-10 (desktop-"lock" fix local, uncommitted)
|
||||
# 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`; everything after is local, **not
|
||||
pushed** (push at the creator's call).
|
||||
- Three work units in the working tree: (1) the desktop-lock fix below, (2) the TASK 51 webcam unit,
|
||||
(3) the creator's pinned-chat unit. Do NOT mix them in one commit.
|
||||
- **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 "desktop is locked once the app starts" report — `MainWindow.xaml.cs` +
|
||||
`ViewModels/MainViewModel.Background.cs` (`ShowActivated = !FullscreenGameRunningNow`, see
|
||||
`bugs.md` entry 2026-10-10). Scope-locked files: `MainWindow.xaml.cs`,
|
||||
`ViewModels/MainViewModel.Background.cs`, `ViewModels/MainViewModel.cs` (detector seam line),
|
||||
`ytLive.Tests/DesktopLockTests.cs` (new), `bugs.md`, this file.
|
||||
- **Regression tests:** `DesktopLockTests` (3 tests) drive the rule through the NEW
|
||||
`FullScreenDetectorOverride` test seam (the same seam pattern as `WindowEnumeratorOverride`) —
|
||||
no real Win32 foreground state is touched: full-screen game at launch ⇒ `ShowActivated=false`;
|
||||
normal launch ⇒ still `true`; `FullscreenGameRunningNow` reflects the detector. Full suite
|
||||
**422 passed / 0 failed / 0 warnings**. Real-app reproduction still deferred to the creator.
|
||||
- **To commit later (this unit only):** the two code files + the two memory files listed above.
|
||||
- Verify with the creator first: launch while an exclusive-fullscreen game is the foreground — the
|
||||
game must stay live and the app must open behind/alongside it without focus steal.
|
||||
- **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).
|
||||
|
||||
## Dirty files — split by ownership
|
||||
- **This work unit (COMMIT these):** `Services/BackgroundEffects/MaskSmoother.cs` (new), the smoother
|
||||
wiring in `Services/CameraManager.cs`, `ytLive.Tests/CameraManagerTests.cs` (new integration test),
|
||||
and the same-commit memory updates (`Services/index.md`, `ai.md`, `TASKS/task-51-webcam-bg-effects.md`,
|
||||
`TASKS.md` row 51, and this file) — all ship in the SAME commit.
|
||||
- **NOT mine — do NOT commit:** the in-flight "pinned chat" work unit (`Models/YouTube.cs`,
|
||||
## 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`** — only the webcam-properties region is TASK 51; the pinned-chat hunks
|
||||
stayed unstaged/untouched), plus the creator's untracked `Assets/llamacasty*` art.
|
||||
- ⚠️ Pre-commit: `scripts/verify.sh` runs `scripts/scope-check.sh` against ALL working-tree changes —
|
||||
the not-mine files WILL flag. Pass them to the script as declared-known (checksums unchanged since
|
||||
`5685c5d`) or let the script's output be reconciled before committing.
|
||||
`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 — two commits
|
||||
## 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
|
||||
@@ -55,14 +51,14 @@
|
||||
the 0.5 rounding (3 box passes dilute a spike) — use a step edge, not a spike, to measure blur.
|
||||
|
||||
## Next step
|
||||
- Creator verifies the desktop-lock fix: while THE DIVISION 2 (or any exclusive-fullscreen game) is the
|
||||
foreground window, launch the app — the game must stay live and the app must not yank focus. Also
|
||||
confirm a normal launch is unchanged. Then I can commit the unit and run the full suite when the
|
||||
mouse is free.
|
||||
- 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 **422 passed / 0 failed / 0 skipped / 0 warnings** (2026-10-10; includes the 3 new
|
||||
`DesktopLockTests`). Known env flakes remain `Mix_HonorsProviderGains…` (fails while system audio
|
||||
- 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
|
||||
@@ -77,9 +73,4 @@
|
||||
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.
|
||||
|
||||
## Tests
|
||||
- Full suite **416 passed / 1 known env flake** at `5685c5d`; the new smoothing test passes
|
||||
standalone (1 test run, Duration < 1 s after warm). 0 build warnings. Known environment flakes:
|
||||
`Mix_HonorsProviderGains…` (fails while system audio plays), `RealMouseDrag…` (needs an idle desktop).
|
||||
- TASK 56 secret scan before `gramps/LlamaCasty` goes public. TASK 55 disk hygiene queued.
|
||||
Reference in New Issue
Block a user