dragon-iso/src/TeamsISO.App
Zac Gaetano 53c06a9af9 feat(ui): single-instance enforcement via per-user named mutex
Two simultaneous TeamsISO processes contend over the NDI runtime, the same default sender names, and %APPDATA%\\TeamsISO\\config.json — observed during testing when launchers / shortcuts produced duplicate windows. Add a Local namespace per-user-keyed mutex (Local\\WildDragon.TeamsISO.SingleInstance.<username>) at startup; if a second instance can't claim it, broadcast a registered window message ('WildDragon.TeamsISO.BringToFront') and Shutdown(0). The running instance subscribes to that message via ComponentDispatcher.ThreadFilterMessage and surfaces its main window when received.

Per-user keying lets two different Windows users on the same machine each run their own TeamsISO. Mutex is released and disposed on OnExit.

Verified: Start-Process the exe twice in a row -> only one process remains, with the original window surfaced.
2026-05-07 23:59:47 -04:00
..
Converters feat(ui): add MainWindow XAML with participants DataGrid, settings sidebar, alert banner 2026-05-07 15:40:49 +00:00
Themes feat(ui): rebuild MainWindow with Stone-theme design system 2026-05-07 23:58:02 -04:00
ViewModels feat(ui): rebuild MainWindow with Stone-theme design system 2026-05-07 23:58:02 -04:00
App.xaml feat(ui): rebuild MainWindow with Stone-theme design system 2026-05-07 23:58:02 -04:00
App.xaml.cs feat(ui): single-instance enforcement via per-user named mutex 2026-05-07 23:59:47 -04:00
MainWindow.xaml feat(ui): rebuild MainWindow with Stone-theme design system 2026-05-07 23:58:02 -04:00
MainWindow.xaml.cs feat(ui): add MainWindow XAML with participants DataGrid, settings sidebar, alert banner 2026-05-07 15:40:49 +00:00
TeamsISO.App.csproj feat(ui): add MVVM helpers and per-component view models (Participant, GlobalSettings, AlertBanner) 2026-05-07 15:39:46 +00:00