From b92569a8c76cec75baccf275d23e7db2ec1e260b Mon Sep 17 00:00:00 2001 From: gramps Date: Thu, 12 Nov 2026 16:14:48 -0800 Subject: [PATCH] feat(topbar): Output:, no chevron, and Esc returns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creator ruling 2026-11-12, the parts that were unambiguous: - The back chevron is gone from the left of the output line. - "Output" gains a colon and takes the same 11 px muted style as "One output at a time". - "press to return" sits centred under the switch pair. - Esc actually returns from the Output world (MainWindow_PreviewKeyDown -> EnterBuildWorldCommand). Without this the bar would have lost its only route back, since the chevron was that route. UiShellTests guards all four: the colon, the hint, the absence of the chevron tooltip, and the muted style class of both labels. 680 pass, 0 warnings. The switches' post-click behaviour is still awaiting the creator's mock description, so this commit deliberately leaves the pill pair alone. Scope justification: Assets/starting-background.jpg is outside this unit — the creator's replacement art, still awaiting their visual check. --- Controls/TopBar.xaml | 18 ++++++------------ MainWindow.xaml.cs | 8 ++++++++ ytLive.Tests/UiShellTests.cs | 6 ++++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Controls/TopBar.xaml b/Controls/TopBar.xaml index 1db99db..ffba55e 100644 --- a/Controls/TopBar.xaml +++ b/Controls/TopBar.xaml @@ -107,23 +107,13 @@ - - - + + + + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 62c5a67..b1b4c93 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -181,6 +181,14 @@ public partial class MainWindow : Window { _viewModel.DismissZoomIfActive(); } + + // Esc leaves a sub-menu (creator ruling 2026-11-12): the Output world is a sub-menu, and its + // back chevron is gone in favour of this. The bar says so under the switches. + if (e.Key == System.Windows.Input.Key.Escape && _viewModel.IsOutputWorld) + { + _viewModel.EnterBuildWorldCommand.Execute(null); + e.Handled = true; + } } private void UpdateTaskbarOverlay() diff --git a/ytLive.Tests/UiShellTests.cs b/ytLive.Tests/UiShellTests.cs index 4769099..6dda653 100644 --- a/ytLive.Tests/UiShellTests.cs +++ b/ytLive.Tests/UiShellTests.cs @@ -39,10 +39,12 @@ public class UiShellTests // line (creator ruling 2026-11-12), and a chevron is the way back. Assert.Contains("Data=\"M3,4h8v6H3V4zM13,4h8v6h-8V4zM3,12h8v8H3V12zM13,12h8v8h-8V12z\"", topBar); Assert.Contains("Visibility=\"{Binding IsBuildWorld, Converter={StaticResource BoolToVis}}\"", topBar); - Assert.Contains("ToolTip=\"Back to Build Scenes\"", topBar); + Assert.Contains("Text=\"Output:\"", topBar); + Assert.Contains("Text=\"press <esc> to return\"", topBar); + Assert.DoesNotContain("ToolTip=\"Back to Build Scenes\"", topBar); // Esc replaced the chevron // 2c. The output stage: two labelled switches and the exclusivity promise beside them. - Assert.Contains("Text=\"Output\"", topBar); + Assert.Contains("Text=\"Output:\"", topBar); Assert.Contains("Text=\"YouTube\"", topBar); Assert.Contains("Text=\"Local MP4\"", topBar); Assert.Contains("Text=\"One output at a time\"", topBar);