From 82512048606c15e765c564f400eb4e5988f70af1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:10:41 +0000 Subject: [PATCH 01/12] Initial plan From 8e6f3d6513cb1efa9dd83614e46de36f989b897e Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 28 Jan 2026 14:12:02 -0500 Subject: [PATCH 02/12] chore: Adjust restore --- build/workflow/copilot/restore-solution.sh | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/build/workflow/copilot/restore-solution.sh b/build/workflow/copilot/restore-solution.sh index afd36b48c..9fd34658c 100644 --- a/build/workflow/copilot/restore-solution.sh +++ b/build/workflow/copilot/restore-solution.sh @@ -1,5 +1,29 @@ #!/usr/bin/env bash set -euo pipefail +# Create a desktop-only crosstargeting override for build pipelines +cat > "src/crosstargeting_override.props" << 'EOF' + + + true + net10.0-desktop + net9.0 + + +EOF + +cd src + +dotnet workload restore +dotnet workload install android + # Restore solution packages to ensure dependencies are ready for subsequent steps -dotnet restore src/Uno.Toolkit.sln -p:SamplesTargetFrameworkOverride=net9.0-desktop -p:DisableMobileTargets=true \ No newline at end of file +dotnet restore Uno.Toolkit.sln + +# Preload the dev server tool +dotnet dnx -y uno.devserver --prerelease -- start -l trace + +sleep 20 + +dotnet dnx -y uno.devserver --prerelease -- stop -l trace + From 6ce9211221c0df9163e69fb7ed967d98d0fd3e1c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:22:33 +0000 Subject: [PATCH 03/12] feat: Add Settings page with version information display Co-authored-by: jeromelaban <5839577+jeromelaban@users.noreply.github.com> --- .../App.xaml.Navigation.cs | 3 +- .../Content/SettingsPage.xaml | 108 ++++++++++++++++++ .../Content/SettingsPage.xaml.cs | 46 ++++++++ 3 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml create mode 100644 samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs index fd31250d4..54f2e17df 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs @@ -124,7 +124,8 @@ private void OnNavigationItemInvoked(MUXC.NavigationView sender, MUXC.Navigation } else if (e.IsSettingsInvoked) { - _shell.ActivateDebugPanel(); + var settingsPage = new Content.SettingsPage(); + _shell.NavigationView.Content = settingsPage; } } diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml new file mode 100644 index 000000000..4556db7f8 --- /dev/null +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs new file mode 100644 index 000000000..d4422d565 --- /dev/null +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs @@ -0,0 +1,46 @@ +using System.Reflection; + +namespace Uno.Toolkit.Samples.Content +{ + public sealed partial class SettingsPage : Page + { + public SettingsPage() + { + this.InitializeComponent(); + this.Loaded += OnLoaded; + } + + private void OnLoaded(object sender, RoutedEventArgs e) + { + // Get version information + var assembly = Assembly.GetExecutingAssembly(); + var assemblyName = assembly.GetName(); + var version = assemblyName.Version; + + // Set version text + VersionTextBlock.Text = version != null ? $"{version.Major}.{version.Minor}.{version.Build}" : "Unknown"; + + // Set framework information + FrameworkTextBlock.Text = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; + + // Set platform information +#if __ANDROID__ + PlatformTextBlock.Text = "Android"; +#elif __IOS__ + PlatformTextBlock.Text = "iOS"; +#elif __WASM__ + PlatformTextBlock.Text = "WebAssembly"; +#elif __MACOS__ + PlatformTextBlock.Text = "macOS"; +#elif __SKIA__ + PlatformTextBlock.Text = "Skia (Desktop)"; +#elif WINDOWS_UWP + PlatformTextBlock.Text = "UWP"; +#elif WINDOWS + PlatformTextBlock.Text = "Windows (WinUI)"; +#else + PlatformTextBlock.Text = "Unknown"; +#endif + } + } +} From 68e8dcf7ec1afff6d75357dc60da2b44557166a6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:34:06 +0000 Subject: [PATCH 04/12] refactor: Cache SettingsPage instance and clear NavigationView selection Co-authored-by: jeromelaban <5839577+jeromelaban@users.noreply.github.com> --- .../Uno.Toolkit.Samples/App.xaml.Navigation.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs index 54f2e17df..127e3dfb2 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs @@ -10,6 +10,7 @@ partial class App { private static Sample[] _samples; private static IDictionary _nestedSampleMap; + private Content.SettingsPage _settingsPage; /// /// Invoked when Navigation to a certain page fails @@ -124,8 +125,12 @@ private void OnNavigationItemInvoked(MUXC.NavigationView sender, MUXC.Navigation } else if (e.IsSettingsInvoked) { - var settingsPage = new Content.SettingsPage(); - _shell.NavigationView.Content = settingsPage; + // Cache the settings page to avoid recreating it each time + _settingsPage ??= new Content.SettingsPage(); + + // Clear selected item to avoid having a sample highlighted while Settings is displayed + _shell.NavigationView.SelectedItem = null; + _shell.NavigationView.Content = _settingsPage; } } From ea751ae6315c035913b46ebb1ace53e7890fdd3e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:36:12 +0000 Subject: [PATCH 05/12] fix: Remove duplicate using and move initialization to constructor Co-authored-by: jeromelaban <5839577+jeromelaban@users.noreply.github.com> --- .../Uno.Toolkit.Samples/App.xaml.Navigation.cs | 1 - .../Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs | 8 ++------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs index 127e3dfb2..a45941510 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Reflection; using Uno.Extensions; using MUXC = Microsoft.UI.Xaml.Controls; diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs index d4422d565..43c88035a 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs @@ -7,12 +7,8 @@ public sealed partial class SettingsPage : Page public SettingsPage() { this.InitializeComponent(); - this.Loaded += OnLoaded; - } - - private void OnLoaded(object sender, RoutedEventArgs e) - { - // Get version information + + // Initialize version information once since the page is cached var assembly = Assembly.GetExecutingAssembly(); var assemblyName = assembly.GetName(); var version = assemblyName.Version; From 21f3b9cc908ae489c1507a543d0a681a426b4599 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 28 Jan 2026 15:40:52 -0500 Subject: [PATCH 06/12] chore: Adjust samples app override --- .../Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj index 5e0c93e1b..07419cc06 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj @@ -1,4 +1,6 @@  + + $(SamplesTargetFrameworkOverride) net10.0-android;net10.0-ios;net10.0-maccatalyst;net10.0-windows10.0.26100;net10.0-browserwasm;net10.0-desktop @@ -35,6 +37,7 @@ https://aka.platform.uno/singleproject-features --> + SkiaRenderer; From fea077e62fe951f32e73804ac761f2417db69e40 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:07:48 +0000 Subject: [PATCH 07/12] fix: Improve platform detection for desktop builds Co-authored-by: jeromelaban <5839577+jeromelaban@users.noreply.github.com> --- .../Content/SettingsPage.xaml.cs | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs index 43c88035a..f572709fa 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml.cs @@ -1,4 +1,5 @@ using System.Reflection; +using System.Runtime.InteropServices; namespace Uno.Toolkit.Samples.Content { @@ -17,7 +18,7 @@ public SettingsPage() VersionTextBlock.Text = version != null ? $"{version.Major}.{version.Minor}.{version.Build}" : "Unknown"; // Set framework information - FrameworkTextBlock.Text = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; + FrameworkTextBlock.Text = RuntimeInformation.FrameworkDescription; // Set platform information #if __ANDROID__ @@ -28,14 +29,25 @@ public SettingsPage() PlatformTextBlock.Text = "WebAssembly"; #elif __MACOS__ PlatformTextBlock.Text = "macOS"; -#elif __SKIA__ - PlatformTextBlock.Text = "Skia (Desktop)"; #elif WINDOWS_UWP PlatformTextBlock.Text = "UWP"; -#elif WINDOWS +#elif WINDOWS || WINDOWS_WINUI PlatformTextBlock.Text = "Windows (WinUI)"; #else - PlatformTextBlock.Text = "Unknown"; + // For Skia desktop builds, detect at runtime + // Check if we're running on a desktop platform (Windows, Linux, macOS) but not in browser + var isDesktop = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || + RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || + RuntimeInformation.IsOSPlatform(OSPlatform.OSX); + + if (isDesktop) + { + PlatformTextBlock.Text = "Skia (Desktop)"; + } + else + { + PlatformTextBlock.Text = "Unknown"; + } #endif } } From e2380e69fef3628bac7c2d7d95dfc9428194964c Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 28 Jan 2026 16:45:07 -0500 Subject: [PATCH 08/12] chore: Restore original native build --- .../Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj index 07419cc06..93660a33f 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples.csproj @@ -37,7 +37,6 @@ https://aka.platform.uno/singleproject-features --> - SkiaRenderer; From df2ebe344640522fd9982887b3ca8799ec4f58aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:00:23 +0000 Subject: [PATCH 09/12] feat: Add debug tools to Settings page Co-authored-by: jeromelaban <5839577+jeromelaban@users.noreply.github.com> --- .../App.xaml.Navigation.cs | 6 +++- .../Content/SettingsPage.xaml | 28 +++++++++++++++++++ .../Content/SettingsPage.xaml.cs | 26 +++++++++++++++++ .../Uno.Toolkit.Samples/Shell.xaml.cs | 11 ++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs index a45941510..cd92208c9 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/App.xaml.Navigation.cs @@ -125,7 +125,11 @@ private void OnNavigationItemInvoked(MUXC.NavigationView sender, MUXC.Navigation else if (e.IsSettingsInvoked) { // Cache the settings page to avoid recreating it each time - _settingsPage ??= new Content.SettingsPage(); + if (_settingsPage == null) + { + _settingsPage = new Content.SettingsPage(); + _settingsPage.SetShell(_shell); + } // Clear selected item to avoid having a sample highlighted while Settings is displayed _shell.NavigationView.SelectedItem = null; diff --git a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml index 4556db7f8..c0a1a2c0c 100644 --- a/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml +++ b/samples/Uno.Toolkit.Samples/Uno.Toolkit.Samples/Content/SettingsPage.xaml @@ -102,6 +102,34 @@ + + + + + + + + +