From 5bd750eaf503ed134547ba0cb055b0bfe56cc24c Mon Sep 17 00:00:00 2001 From: gramps Date: Fri, 13 Nov 2026 07:47:36 -0800 Subject: [PATCH] fix(topbar): announce the output stage when recording starts or stops MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Starting a local recording left the idle 'Start Recording' chip on screen and never revealed 'Stop Recording' — IsRecording raised its own notifications but not the output stage's, so the visibility bindings were never re-evaluated. The visible chip's command then correctly refused to run (recording was already in progress), which is the worst shape of bug: a dead button that looks live. IsRecording and StreamStatus now call RaiseOutputStage(). The regression test asserts the NOTIFICATIONS, not the property values — reading ShowEndRecordingAction directly passes either way, which is exactly how this slipped through. 682 pass, 0 warnings. --- ViewModels/MainViewModel.Streaming.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ViewModels/MainViewModel.Streaming.cs b/ViewModels/MainViewModel.Streaming.cs index 25104b4..699558d 100644 --- a/ViewModels/MainViewModel.Streaming.cs +++ b/ViewModels/MainViewModel.Streaming.cs @@ -87,6 +87,7 @@ public partial class MainViewModel : ViewModelBase OnPropertyChanged(nameof(ShowChatInactiveMessage)); OnPropertyChanged(nameof(ShowPreviewPlaceholder)); RaiseTopBarModes(); + RaiseOutputStage(); // IsLive drives ShowOutputStage UpdateLiveVisuals(); } } @@ -170,6 +171,7 @@ public partial class MainViewModel : ViewModelBase OnPropertyChanged(nameof(EndButtonText)); OnPropertyChanged(nameof(ShowTestButton)); RaiseTopBarModes(); + RaiseOutputStage(); // Start Recording <-> Stop Recording, and the REC clock UpdateSessionTimer(); } }