Files
LlamaCasty/HANDOFF.md
T
gramps 9c0c40c688 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
2026-11-11 10:19:20 -08:00

39 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HANDOFF — 2026-11-11 (recovery fixes + alert settings; metric cues next)
## State
- `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.
- TASK 14·15 mic input gain was closed by creator test (−2.6 dB, works great); slices 16–18 remain.
- 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).
- 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 **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.
- TASK 34 scheduling and TASK 50 recording publish are retired; YouTube owns those surfaces.
- Do not push app commits absent a checkpoint request.
## Landmines
- Preview frame-source layers need a `PreviewPane` DataTrigger; pin each new type with a visibility test.
- Bundled-art healing compares bytes (`LayoutStore.AssetMatches`); a compiled version constant races its resource.
- Pack URIs for bundled assets must be assembly-qualified (`/LlamaCasty;component/Assets/…`).
- Media sessions are keyed by path + look; never acquire by raw path.
- Audio pipe allows one server per name; DEBUG suffixes it, Release does not.
- Any test constructing `MainWindow` must use a temporary `LayoutPathOverride` and clear it in `finally`.
- Build with the Windows `dotnet.exe` host from WSL; read render numbers in Release.
- Bundled FFmpeg stays outside the single-file exe (`ExcludeFromSingleFile="true"`).