teamsiso/src/TeamsISO.App
Zac Gaetano 6c9bee7391
Some checks failed
CI / build-and-test (push) Failing after 27s
fix(wpf): catch participant-left race in ToggleIsoAsync, toast instead of crash
The operator path: click Enable on a participant -> AsyncRelayCommand fires
ToggleIsoAsync -> IsoController.EnableIsoAsync(id) -> tracker lookup -> throws
InvalidOperationException 'Participant <guid> not currently visible on the
network' when the participant has departed between the click and the engine
resolving the id.

Previously this exception escaped AsyncRelayCommand.Execute via the unawaited
Task in ICommand.Execute, hit System.Threading.Tasks.Task.ThrowAsync, and
ended up in Dispatcher.UnhandledException — which the App.CrashHandlers path
treats as a fatal and fires the crash dialog. Fatal in the log captured
during this morning's session at 08:08:27.

Wrap the EnableIsoAsync / DisableIsoAsync calls in try/catch:
  - InvalidOperationException -> toast 'X just left the meeting'; leave
    IsEnabled at its current value (engine state of record)
  - Exception -> toast 'Couldn't toggle ISO for X: <message>'; same rationale
  - finally clause still flips IsProcessing back so the spinner clears

No new tests — the race is hard to trigger deterministically without
introducing a mocking seam on the controller. The behavior change is small
and the surface is the only call site for EnableIso/DisableIso from the
participant row.
2026-05-16 08:48:06 -04:00
..
Assets feat(ui): empty-state, pipeline error/no-signal indicators, JetBrains Mono, tooltips 2026-05-08 19:32:19 -04:00
Converters feat(wpf): v2 task 39+40 - studio table redesign + Ctrl+K command palette 2026-05-15 11:15:00 -04:00
Properties polish(mainwindow): empty state, table widths, strings, theme tooltip 2026-05-15 19:26:23 -04:00
Services test: integration — App+MainWindow STA smoke, control-surface live VM, theme XAML load 2026-05-15 21:34:09 -04:00
Themes feat(wpf): v2 task 39+40 - studio table redesign + Ctrl+K command palette 2026-05-15 11:15:00 -04:00
ViewModels fix(wpf): catch participant-left race in ToggleIsoAsync, toast instead of crash 2026-05-16 08:48:06 -04:00
Views feat: per-ISO framerate/resolution/aspect/audio overrides + thumbnail BMP 2026-05-15 15:31:32 -04:00
AboutWindow.xaml feat(wpf): rollback to WPF host, axe recording, fix settings pane 2026-05-14 06:02:40 -04:00
AboutWindow.xaml.cs feat(wpf): rollback to WPF host, axe recording, fix settings pane 2026-05-14 06:02:40 -04:00
App.Bootstrap.cs refactor(app): split App.xaml.cs into themed partial files 2026-05-15 19:36:07 -04:00
App.CrashHandlers.cs refactor(app): split App.xaml.cs into themed partial files 2026-05-15 19:36:07 -04:00
App.UpdateCheckBootstrap.cs refactor(app): split App.xaml.cs into themed partial files 2026-05-15 19:36:07 -04:00
App.xaml feat(wpf): v2 'Studio Terminal' shell - theme system, header, transport strip, drawer 2026-05-14 12:46:24 -04:00
App.xaml.cs refactor(app): split App.xaml.cs into themed partial files 2026-05-15 19:36:07 -04:00
GlobalUsings.cs feat(ui): system tray icon + WinForms/WPF namespace disambiguation 2026-05-10 09:41:33 -04:00
HelpWindow.xaml Numpad 1-9 hotkeys toggle Nth participant's ISO 2026-05-10 21:26:37 -04:00
HelpWindow.xaml.cs feat: window-scoped keyboard shortcuts + help cheat sheet (F1) 2026-05-10 09:41:31 -04:00
MainWindow.xaml polish(mainwindow): empty state, table widths, strings, theme tooltip 2026-05-15 19:26:23 -04:00
MainWindow.xaml.cs polish(mainwindow): empty state, table widths, strings, theme tooltip 2026-05-15 19:26:23 -04:00
NotesWindow.xaml feat(ui): notes viewer + Stop-All confirm + folder shortcuts + README 2026-05-10 09:41:32 -04:00
NotesWindow.xaml.cs feat(ui): notes viewer + Stop-All confirm + folder shortcuts + README 2026-05-10 09:41:32 -04:00
OnboardingWindow.xaml Onboarding step + Open /ui button + recording duration in footer 2026-05-10 21:05:30 -04:00
OnboardingWindow.xaml.cs feat(ui): crash diagnostics, first-launch welcome, reset-to-defaults 2026-05-10 09:41:29 -04:00
PresetsDialog.xaml feat: preset import / export bundles 2026-05-10 09:41:30 -04:00
PresetsDialog.xaml.cs feat: REST control surface + lift preset-apply into PresetApplier 2026-05-10 09:41:29 -04:00
PreviewWindow.xaml feat: persist UI prefs + preview window + sort + inline note input 2026-05-10 09:41:34 -04:00
PreviewWindow.xaml.cs feat: persist UI prefs + preview window + sort + inline note input 2026-05-10 09:41:34 -04:00
TeamsEmbedWindow.xaml Phase E.4 experimental: SetParent-embed Teams window inside TeamsISO 2026-05-10 21:14:42 -04:00
TeamsEmbedWindow.xaml.cs refactor(services): extract TeamsEmbedHost from TeamsLauncher 2026-05-15 20:13:57 -04:00
TeamsISO.App.csproj polish(mainwindow): empty state, table widths, strings, theme tooltip 2026-05-15 19:26:23 -04:00