feat(settings): make slide-out alerts persist until dismissed

Add a persisted global App Settings switch. Off keeps the existing per-severity
lifetimes (errors remain sticky); on makes every alert non-expiring and closes
it when its body is clicked. The NotificationService supplies the current
setting to each toast request.

StickyNotificationIntegrationTests covers persistence and both request modes.
618 tests green, clean build with 0 warnings.

Reference: Notification.Wpf exposes a CloseOnClick request option:
https://github.com/G-Stas/Notification.Wpf
This commit is contained in:
2026-11-11 10:19:20 -08:00
parent ff5c005bd9
commit 9c0c40c688
11 changed files with 125 additions and 18 deletions
+7 -6
View File
@@ -1,9 +1,9 @@
# HANDOFF — 2026-11-11 (recovery fixes + alert placement; creator UI 2→3 next)
# HANDOFF — 2026-11-11 (recovery fixes + alert settings; metric cues next)
## State
- `main`; `b265d42` is the latest pushed commit. Recovery fixes and alert placement are committed locally,
verified, and not pushed yet.
- `main`; `b265d42` is the latest pushed commit. Recovery fixes and alert-setting changes are committed
locally, verified, and not pushed yet.
- **Done:** TASK 35 scene-linked audio, TASK 55 disk hygiene, TASK 65 replay clips, TASK 37 defaults/current split.
- TASK 37: SQLite keeps an immutable default snapshot beside build-stamped current rows; App Settings can
restore the staged scene or all scenes, offline only. Webcam identity survives both restore paths.
@@ -11,14 +11,15 @@
- Recovery incident: private test hit step-down on 85% loss; encoder restart reused a broken audio pipe.
Step-down now closes/recreates audio in order; recovery notifications/stops marshal to the dispatcher.
- App Settings now controls slide-out toast position (six left/right × top/center/bottom positions).
- Verification: **617 tests green, clean build with 0 warnings** (`FAST=1 ./scripts/verify.sh`). Creator test
- App Settings can keep all slide-out alerts until clicked/closed; default off preserves existing timers.
- Verification: **618 tests green, clean build with 0 warnings** (`FAST=1 ./scripts/verify.sh`). Creator test
was stable (~5.1 Mbps, 31 fps, 0.2% drop); its log showed no step-down/reconnect event.
- Steam remains blocked on Valve identity/tax review; no app IDs or store page.
## Next action
- Next: creator-directed **2) sticky click-to-dismiss alerts → 3) core-metric change cues**, one test/commit
each. Then resume **40·A/C/D → Move → 9·5 → 14·16/17/18 → 66 → 67 →
- Next: creator-directed **3) core-metric change cues**, one test/commit. Then resume
**40·A/C/D → Move → 9·5 → 14·16/17/18 → 66 → 67 →
68 → 69 → 70 → 36**.
- Ask creator before TASK 68 about first-run ON-AIR default; before gold pass, settle the Release
single-instance mutex behavior.