Files
LlamaCasty/HANDOFF.md
T
gramps ff5c005bd9 feat(settings): position slide-out notifications
App Settings now chooses one of six ToastArea positions (left/right ×
top/center/bottom), defaulting to the existing bottom-right. The setting is
persisted per profile and the toast area moves immediately; edge gutters keep
bottom notifications above the footer.

ToastPositionIntegrationTests covers live repositioning and restart persistence.
617 tests green, clean build with 0 warnings.

Reference scan: OBS Notifier supports user-configured notification placement:
https://github.com/DmitriySalnikov/OBSNotifier
2026-11-11 10:10:21 -08:00

2.5 KiB
Raw Blame History

HANDOFF — 2026-11-11 (recovery fixes + alert placement; creator UI 2→3 next)

State

  • main; b265d42 is the latest pushed commit. Recovery fixes and alert placement 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).
  • Verification: 617 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 → 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").