From a9a10e01a486cda32e58b73c24496bbdbccec0da Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Sun, 10 May 2026 20:42:57 -0400 Subject: [PATCH] =?UTF-8?q?IN-CALL=20bar=20surfaces=20Teams=20meeting=20st?= =?UTF-8?q?ate=20=E2=80=94=20'READY'=20/=20'IN=20CALL'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operators using auto-hide Teams couldn't tell whether they were in a meeting without restoring the Teams window. New status pill in the IN-CALL bar header shows: • empty when Teams isn't running • 'READY' (gray dot) when Teams is running but not in a call • 'IN CALL' (cyan dot) when Teams is in an active meeting Detection: TeamsControlBridge.IsInCall() walks Teams' UIA tree looking for the Leave / Hang-up button. Present iff in a call — works across Teams versions because Teams only exposes the Leave control while a call is active. Same candidate-name list the LeaveCall command uses, with localized strings for EN/DE/ES/FR/PT/JA already in place. Polled at the existing 1Hz stats tick. UIA traversal can take 50-200ms in a busy call, so the probe runs off-thread; the property update is dispatched back via _dispatcher.InvokeAsync. Failure paths swallow exceptions — a flaky UIA call must never crash the stats timer. 159/159 tests passing, 0 warnings, 0 errors. --- src/TeamsISO.App/MainWindow.xaml | 36 ++++++++++- .../Services/TeamsControlBridge.cs | 45 +++++++++++++ src/TeamsISO.App/ViewModels/MainViewModel.cs | 64 +++++++++++++++++++ 3 files changed, 144 insertions(+), 1 deletion(-) diff --git a/src/TeamsISO.App/MainWindow.xaml b/src/TeamsISO.App/MainWindow.xaml index 52eaf20..1619973 100644 --- a/src/TeamsISO.App/MainWindow.xaml +++ b/src/TeamsISO.App/MainWindow.xaml @@ -473,7 +473,41 @@ + Margin="0,0,12,0"/> + + + + + + + + + + +