From c7efbfa1279d9f7ee72775f2bb3e6dfb5229e67a Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Fri, 9 Oct 2026 11:54:47 +0200 Subject: [PATCH 01/21] chore: adopt Uno 7 tooling and SDK pins Points the tooling submodule at the Uno 7 branch and updates global.json (.NET SDK 10.0.401, Uno.Sdk 7.0.0-dev.51, MSBuild.Sdk.Extras 3.0.44). Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01E8bkzyS24p8CYDWLUPsaPC --- global.json | 5 +++-- tooling | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/global.json b/global.json index 338ca727d..7f21440ea 100644 --- a/global.json +++ b/global.json @@ -1,10 +1,11 @@ { "sdk": { - "version": "9.0.310", + "version": "10.0.401", "rollForward": "latestFeature" }, "msbuild-sdks": { - "MSBuild.Sdk.Extras":"3.0.23" + "MSBuild.Sdk.Extras":"3.0.44", + "Uno.Sdk": "7.0.0-dev.51" } } diff --git a/tooling b/tooling index 5ebeaabec..0686dbc6a 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 5ebeaabeccc7a1d157ab40b784686a8758d15766 +Subproject commit 0686dbc6ae8ba2faca9ff52ac46488410cd00daf From 7bb22c2b1c063eacb44753c507346df8728f1059 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Fri, 9 Oct 2026 11:54:47 +0200 Subject: [PATCH 02/21] feat(MarkdownTextBlock): multi-target Uno Platform 7 heads Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01E8bkzyS24p8CYDWLUPsaPC --- .../CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj | 4 ++-- components/MarkdownTextBlock/src/MultiTarget.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj b/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj index f9a01416e..64edb1843 100644 --- a/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj +++ b/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj @@ -25,7 +25,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/components/MarkdownTextBlock/src/MultiTarget.props b/components/MarkdownTextBlock/src/MultiTarget.props index 18f6c7c98..81a497fd2 100644 --- a/components/MarkdownTextBlock/src/MultiTarget.props +++ b/components/MarkdownTextBlock/src/MultiTarget.props @@ -4,6 +4,6 @@ MultiTarget is a custom property that indicates which target a project is designed to be built for / run on. Used to create project references, generate solution files, enable/disable TargetFrameworks, and build nuget packages. --> - uwp;wasdk; + uwp;wasdk;wasm;win32;linux;macos;ios;android; From fe033a8baecd3f044838aac452d34819c318e394 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Fri, 9 Oct 2026 11:57:24 +0200 Subject: [PATCH 03/21] fix(MarkdownTextBlock): annotate GetPositionAtOffset result as nullable Uno annotates TextPointer.GetPositionAtOffset as nullable, which fails the build with warnings as errors. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01E8bkzyS24p8CYDWLUPsaPC --- components/MarkdownTextBlock/src/Extensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/MarkdownTextBlock/src/Extensions.cs b/components/MarkdownTextBlock/src/Extensions.cs index 8c682fe2d..4eb5203b4 100644 --- a/components/MarkdownTextBlock/src/Extensions.cs +++ b/components/MarkdownTextBlock/src/Extensions.cs @@ -365,7 +365,7 @@ public static string ToAlphabetical(this int index) else { // Try to find the next insertion position by moving one symbol forward - TextPointer next = position.GetPositionAtOffset(1, logicalDirection); + TextPointer? next = position.GetPositionAtOffset(1, logicalDirection); // If there is no next position, return null if (next == null) { @@ -384,7 +384,7 @@ public static bool IsAtInsertionPosition(this TextPointer position, LogicalDirec // Get the character rect of the current position Rect currentRect = position.GetCharacterRect(logicalDirection); // Try to get the next position by moving one symbol forward - TextPointer next = position.GetPositionAtOffset(1, logicalDirection); + TextPointer? next = position.GetPositionAtOffset(1, logicalDirection); // If there is no next position, return false if (next == null) { From 203e32574ce6df4dda634eb1c50a1fb649b45b7f Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Fri, 9 Oct 2026 12:28:01 +0200 Subject: [PATCH 04/21] fix(MarkdownTextBlock): use RenderTransform on Uno where Transform3D is a stub Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01E8bkzyS24p8CYDWLUPsaPC --- .../MarkdownTextBlock/src/TextElements/MyInlineCode.cs | 5 +++++ .../MarkdownTextBlock/src/TextElements/MyTaskListCheckBox.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/components/MarkdownTextBlock/src/TextElements/MyInlineCode.cs b/components/MarkdownTextBlock/src/TextElements/MyInlineCode.cs index 090f1a21d..8edffe312 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyInlineCode.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyInlineCode.cs @@ -29,9 +29,14 @@ public MyInlineCode(CodeInline codeInline, MarkdownConfig config) border.BorderThickness = _config.Themes.InlineCodeBorderThickness; border.CornerRadius = _config.Themes.InlineCodeCornerRadius; border.Padding = _config.Themes.InlineCodePadding; +#if HAS_UNO + // UIElement.Transform3D is not implemented on Uno + border.RenderTransform = new TranslateTransform { Y = 4 }; +#else CompositeTransform3D transform = new CompositeTransform3D(); transform.TranslateY = 4; border.Transform3D = transform; +#endif var textBlock = new TextBlock(); textBlock.FontSize = _config.Themes.InlineCodeFontSize; textBlock.Foreground = _config.Themes.InlineCodeForeground; diff --git a/components/MarkdownTextBlock/src/TextElements/MyTaskListCheckBox.cs b/components/MarkdownTextBlock/src/TextElements/MyTaskListCheckBox.cs index afd9d39f2..19ca34adb 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyTaskListCheckBox.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyTaskListCheckBox.cs @@ -15,9 +15,14 @@ public MyTaskListCheckBox(TaskList taskList) { _taskList = taskList; var grid = new Grid(); +#if HAS_UNO + // UIElement.Transform3D is not implemented on Uno + grid.RenderTransform = new TranslateTransform { Y = 2 }; +#else CompositeTransform3D transform = new CompositeTransform3D(); transform.TranslateY = 2; grid.Transform3D = transform; +#endif grid.Width = 16; grid.Height = 16; grid.Margin = new Thickness(2, 0, 2, 0); From b1251bb9e61515a622b789a8649890741f0c703a Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Fri, 9 Oct 2026 12:30:25 +0200 Subject: [PATCH 05/21] chore: bump tooling to latest Uno 7 branch head Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01E8bkzyS24p8CYDWLUPsaPC --- tooling | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling b/tooling index 0686dbc6a..843a88ab2 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 0686dbc6ae8ba2faca9ff52ac46488410cd00daf +Subproject commit 843a88ab27f6240dc1f540e981602955122cf3b0 From 987820eadd8c54a4440df652255cf15e288ddcd6 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 16:42:37 +0100 Subject: [PATCH 06/21] Rename the linuxgtk MultiTarget to linux, add win32 The Uno 7 tooling renamed linuxgtk to linux and added the win32 desktop target; Filter-Supported-Components rejects the old name, failing every build job. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- components/Adorners/src/MultiTarget.props | 2 +- components/GradientSlider/src/MultiTarget.props | 2 +- components/Ribbon/src/MultiTarget.props | 2 +- components/WrapPanel2/src/MultiTarget.props | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/Adorners/src/MultiTarget.props b/components/Adorners/src/MultiTarget.props index b11c19426..7d1e11c3c 100644 --- a/components/Adorners/src/MultiTarget.props +++ b/components/Adorners/src/MultiTarget.props @@ -4,6 +4,6 @@ MultiTarget is a custom property that indicates which target a project is designed to be built for / run on. Used to create project references, generate solution files, enable/disable TargetFrameworks, and build nuget packages. --> - uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android; + uwp;wasdk;wpf;win32;wasm;linux;macos;ios;android; \ No newline at end of file diff --git a/components/GradientSlider/src/MultiTarget.props b/components/GradientSlider/src/MultiTarget.props index b11c19426..7d1e11c3c 100644 --- a/components/GradientSlider/src/MultiTarget.props +++ b/components/GradientSlider/src/MultiTarget.props @@ -4,6 +4,6 @@ MultiTarget is a custom property that indicates which target a project is designed to be built for / run on. Used to create project references, generate solution files, enable/disable TargetFrameworks, and build nuget packages. --> - uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android; + uwp;wasdk;wpf;win32;wasm;linux;macos;ios;android; \ No newline at end of file diff --git a/components/Ribbon/src/MultiTarget.props b/components/Ribbon/src/MultiTarget.props index b11c19426..7d1e11c3c 100644 --- a/components/Ribbon/src/MultiTarget.props +++ b/components/Ribbon/src/MultiTarget.props @@ -4,6 +4,6 @@ MultiTarget is a custom property that indicates which target a project is designed to be built for / run on. Used to create project references, generate solution files, enable/disable TargetFrameworks, and build nuget packages. --> - uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android; + uwp;wasdk;wpf;win32;wasm;linux;macos;ios;android; \ No newline at end of file diff --git a/components/WrapPanel2/src/MultiTarget.props b/components/WrapPanel2/src/MultiTarget.props index b11c19426..7d1e11c3c 100644 --- a/components/WrapPanel2/src/MultiTarget.props +++ b/components/WrapPanel2/src/MultiTarget.props @@ -4,6 +4,6 @@ MultiTarget is a custom property that indicates which target a project is designed to be built for / run on. Used to create project references, generate solution files, enable/disable TargetFrameworks, and build nuget packages. --> - uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android; + uwp;wasdk;wpf;win32;wasm;linux;macos;ios;android; \ No newline at end of file From 7114e8bb9f06c87b0a570fb1605fe81cf5e94a8e Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 16:42:37 +0100 Subject: [PATCH 07/21] CI: Build the gallery through the Uno.Sdk head on WinUI 3 Ports the CommunityToolkit/Windows workflow changes for the Uno 7 tooling: the win32/linux matrix, the Uno.Sdk head on the WinUI 3 wasm job and wasm-linux becoming uno-linux, which builds that head for browserwasm and desktop. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .github/workflows/build.yml | 64 +++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 81ff65cb0..a67d60a21 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -72,7 +72,7 @@ jobs: fail-fast: false # prevent one matrix pipeline from being cancelled if one fails, we want them all to run to completion. matrix: winui: [2, 3] - multitarget: ['uwp', 'wasdk', 'wasm', 'wpf', 'linuxgtk', 'macos', 'ios', 'android'] + multitarget: ['uwp', 'wasdk', 'wasm', 'wpf', 'win32', 'linux', 'macos', 'ios', 'android'] exclude: # WinUI 2 not supported on wasdk - winui: 2 @@ -80,6 +80,18 @@ jobs: # WinUI 3 not supported on uwp - winui: 3 multitarget: uwp + # wpf is the Uno 5 Skia WPF head, which Uno 6 replaced with win32 + - winui: 3 + multitarget: wpf + # win32 is the Uno 6 Skia desktop head, which has no Uno 5 equivalent + - winui: 2 + multitarget: win32 + include: + # On WinUI 3 the Uno.Sdk head replaces the classic Wasm head, so it rides on the + # existing wasm job as a flag rather than a fake entry in the multitarget axis. + - winui: 3 + multitarget: wasm + unoSdkHead: true env: MULTI_TARGET_DIRECTORY: tooling/MultiTarget @@ -167,7 +179,7 @@ jobs: run: dotnet tool restore - name: Run Uno Check to Install Dependencies - if: ${{ matrix.multitarget != 'wasdk' && matrix.multitarget != 'linuxgtk' && matrix.multitarget != 'wpf' && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + if: ${{ matrix.multitarget != 'wasdk' && matrix.multitarget != 'linux' && matrix.multitarget != 'wpf' && matrix.multitarget != 'win32' && !matrix.unoSdkHead && env.HAS_BUILDABLE_COMPONENTS == 'true' }} run: > dotnet tool run uno-check --ci @@ -180,6 +192,12 @@ jobs: --skip vswin --verbose + # The Uno.Sdk head builds desktop/browserwasm/android (iOS is filtered on + # Windows). Install the matching workloads directly instead of uno-check. + - name: Install .NET workloads (Uno.Sdk head) + if: ${{ matrix.unoSdkHead && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + run: dotnet workload install wasm-tools android ios maui + - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 if: ${{ env.HAS_BUILDABLE_COMPONENTS == 'true' }} @@ -191,11 +209,11 @@ jobs: - name: Generate solution with ${{ matrix.multitarget }} gallery, components and tests working-directory: ./ if: ${{ env.HAS_BUILDABLE_COMPONENTS == 'true' }} - run: powershell -version 5.1 -command "./tooling/GenerateAllSolution.ps1 -MultiTargets ${{ matrix.multitarget }} ${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }} -Components ${{ env.CHANGED_COMPONENTS_LIST }} -WinUIMajorVersion ${{ matrix.winui }}" -ErrorAction Stop + run: powershell -version 5.1 -command "./tooling/GenerateAllSolution.ps1 -MultiTargets ${{ matrix.multitarget }}${{ matrix.unoSdkHead && ',win32 -IncludeUnoSdkHead' || '' }} ${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }} -Components ${{ env.CHANGED_COMPONENTS_LIST }} -WinUIMajorVersion ${{ matrix.winui }}" -ErrorAction Stop # Build solution - name: MSBuild (With diagnostics) - if: ${{ env.ENABLE_DIAGNOSTICS == 'true' && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + if: ${{ env.ENABLE_DIAGNOSTICS == 'true' && env.HAS_BUILDABLE_COMPONENTS == 'true' && !matrix.unoSdkHead }} run: > msbuild.exe /restore /nowarn:MSB4011 /p:Configuration=Release @@ -205,9 +223,15 @@ jobs: CommunityToolkit.AllComponents.sln - name: MSBuild - if: ${{ env.ENABLE_DIAGNOSTICS == 'false' && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + if: ${{ env.ENABLE_DIAGNOSTICS == 'false' && env.HAS_BUILDABLE_COMPONENTS == 'true' && !matrix.unoSdkHead }} run: msbuild.exe CommunityToolkit.AllComponents.sln /restore /nowarn:MSB4011 -p:Configuration=Release + # The Uno.Sdk head is a single project covering desktop/browserwasm/android + # (iOS is filtered on Windows); build it directly with dotnet. + - name: Build Uno.Sdk head + if: ${{ matrix.unoSdkHead && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + run: dotnet build tooling/ProjectHeads/AllComponents/Uno/CommunityToolkit.App.Uno.csproj -p:Configuration=Release ${{ env.ENABLE_DIAGNOSTICS == 'true' && '/bl' || '' }} + # Run tests - name: Setup VSTest Path uses: darenm/setup-vstest@3a16d909a1f3bbc65b52f8270d475d905e7d3e44 @@ -482,7 +506,7 @@ jobs: --api-key ${{ secrets.NUGET_PACKAGE_PUSH_TOKEN }} --skip-duplicate - wasm-linux: + uno-linux: runs-on: ubuntu-latest env: HEADS_DIRECTORY: tooling/ProjectHeads @@ -502,6 +526,12 @@ jobs: with: global-json-file: global.json + # iOS/maccatalyst aren't installable on Linux (Uno.Sdk filters those TFMs + # there). android + wasm-tools are both required: even a single-TFM build + # restores all of the head's TargetFrameworks, validating net10.0-android. + - name: Install .NET workloads + run: dotnet workload install android wasm-tools + - name: .NET Info (if diagnostics) if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }} run: dotnet --info @@ -510,27 +540,27 @@ jobs: - name: Restore dotnet tools run: dotnet tool restore + # Generate the full solution with the Uno.Sdk gallery head, components and tests - name: Generate solution shell: pwsh working-directory: ./ - run: ./tooling/GenerateAllSolution.ps1${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }} + run: ./tooling/GenerateAllSolution.ps1 -MultiTargets wasm,linux -IncludeUnoSdkHead -WinUIMajorVersion 3${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }} - - name: Install ninja for WASM native dependencies - run: sudo apt-get install ninja-build + - name: Build Uno head (browserwasm) + shell: pwsh + working-directory: ./ + run: dotnet build tooling/ProjectHeads/AllComponents/Uno/CommunityToolkit.App.Uno.csproj -f net10.0-browserwasm -p:Configuration=Release - # Issue with Comment Links currently, see: https://github.com/mrlacey/CommentLinks/issues/38 - # See launch.json configuration file for analogous command we're emulating here to build LINK: ../../.vscode/launch.json:CommunityToolkit.App.Wasm.csproj - - name: dotnet build - working-directory: ./${{ env.HEADS_DIRECTORY }}/AllComponents/Wasm/ - run: dotnet build /r /bl /p:UnoSourceGeneratorUseGenerationHost=true /p:UnoSourceGeneratorUseGenerationController=false - - # TODO: Do we want to run tests here? Can we do that on linux easily? + - name: Build Uno head (desktop) + shell: pwsh + working-directory: ./ + run: dotnet build tooling/ProjectHeads/AllComponents/Uno/CommunityToolkit.App.Uno.csproj -f net10.0-desktop -p:Configuration=Release - name: Artifact - Diagnostic Logs uses: actions/upload-artifact@v4 if: ${{ (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }} with: - name: linux-logs + name: uno-linux-logs path: ./**/*.*log From eb11ab9894216b8f83458ea601bbefaac5fdf785 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 17:40:41 +0100 Subject: [PATCH 08/21] fix(MarkdownTextBlock): make MarkdownThemes partial Uno 5 generates a partial declaration for every DependencyObject (CS0260). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- components/MarkdownTextBlock/src/MarkdownThemes.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/MarkdownTextBlock/src/MarkdownThemes.cs b/components/MarkdownTextBlock/src/MarkdownThemes.cs index 21393cf21..78cd56205 100644 --- a/components/MarkdownTextBlock/src/MarkdownThemes.cs +++ b/components/MarkdownTextBlock/src/MarkdownThemes.cs @@ -12,7 +12,7 @@ namespace CommunityToolkit.WinUI.Controls; -public sealed class MarkdownThemes : DependencyObject +public sealed partial class MarkdownThemes : DependencyObject { internal static MarkdownThemes Default { get; } = new(); From ab656696e96c4ec311c5719dc56cf6fe910e4239 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 17:40:41 +0100 Subject: [PATCH 09/21] fix(MarkdownTextBlock): disambiguate Markdig's TableRow On Uno 5 Android, Android.Widget.TableRow is also in scope (CS0104). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .../src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs | 1 + components/MarkdownTextBlock/src/TextElements/MyTable.cs | 1 + components/MarkdownTextBlock/src/TextElements/MyTableRow.cs | 1 + 3 files changed, 3 insertions(+) diff --git a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs index bc2a8a956..0c6ebc1ff 100644 --- a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs +++ b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Markdig.Extensions.Tables; +using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android using CommunityToolkit.WinUI.Controls.TextElements; namespace CommunityToolkit.WinUI.Controls.Renderers.ObjectRenderers.Extensions; diff --git a/components/MarkdownTextBlock/src/TextElements/MyTable.cs b/components/MarkdownTextBlock/src/TextElements/MyTable.cs index 2cd341cb5..e3cd7369f 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyTable.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyTable.cs @@ -4,6 +4,7 @@ using CommunityToolkit.WinUI.Controls; using Markdig.Extensions.Tables; +using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android namespace CommunityToolkit.WinUI.Controls.TextElements; diff --git a/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs b/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs index 01a348f04..82a10865e 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using Markdig.Extensions.Tables; +using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android namespace CommunityToolkit.WinUI.Controls.TextElements; From abc5aef09f097d153f273be323c025e716ca5def Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 17:40:41 +0100 Subject: [PATCH 10/21] chore: bump tooling to latest Uno 7 branch head Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- tooling | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling b/tooling index 4e83b8a67..758fbea76 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 4e83b8a6790ad45e9ac94e13b4c9ee5f6a581aed +Subproject commit 758fbea76cd98038652570f6c4b0a08aacd67076 From 3973b16d2255df3bf372954bd722c3515c85f247 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 17:50:33 +0100 Subject: [PATCH 11/21] chore: bump tooling to latest Uno 7 branch head Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- tooling | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling b/tooling index 758fbea76..84d2ca885 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 758fbea76cd98038652570f6c4b0a08aacd67076 +Subproject commit 84d2ca8858bebac583a6d86683d486bd75d749a4 From a92bf3ab92ca69dc0400fe65f30bcd34f2620476 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 18:42:17 +0100 Subject: [PATCH 12/21] chore: bump uno-check to 1.34.1 1.33.1 installs Microsoft.Android.Sdk 36.1.2, under which the .NET 10.0.403 SDK adds the host RID to the Android head's RuntimeIdentifiers and restore looks for Microsoft.NETCore.App.Runtime.Mono.win-x64 (NU1102). Matches the Windows and tooling repos. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .config/dotnet-tools.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index b31b01580..17e8c9dfc 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "uno.check": { - "version": "1.33.1", + "version": "1.34.1", "commands": [ "uno-check" ] From 456231b8396b849ec15d77ba225e4a006307149a Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 18:53:50 +0100 Subject: [PATCH 13/21] fix(TokenView): use XamlRoot on WinUI 3 without probing for it The ApiInformation probe names Windows.UI.Xaml.UIElement, which isn't trim-safe on Uno 7 (IL2122) and returns false on WinUI 3, so every WinUI 3 target fell back to the obsolete FocusManager.GetFocusedElement() (CS0618). XamlRoot always exists on WinUI 3, matching ApiInformationHelper in CommunityToolkit/Windows. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- components/TokenView/src/Helpers/ControlHelpers.cs | 4 ++++ components/TokenView/src/TokenView/TokenView.cs | 11 +++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/components/TokenView/src/Helpers/ControlHelpers.cs b/components/TokenView/src/Helpers/ControlHelpers.cs index 16f565f7d..66bf04f26 100644 --- a/components/TokenView/src/Helpers/ControlHelpers.cs +++ b/components/TokenView/src/Helpers/ControlHelpers.cs @@ -10,5 +10,9 @@ namespace CommunityToolkit.WinUI.Controls; internal static partial class ControlHelpers { +#if WINUI3 + internal static bool IsXamlRootAvailable => true; +#else internal static bool IsXamlRootAvailable { get; } = Windows.Foundation.Metadata.ApiInformation.IsPropertyPresent("Windows.UI.Xaml.UIElement", "XamlRoot"); +#endif } diff --git a/components/TokenView/src/TokenView/TokenView.cs b/components/TokenView/src/TokenView/TokenView.cs index f30ce945a..7053e14fa 100644 --- a/components/TokenView/src/TokenView/TokenView.cs +++ b/components/TokenView/src/TokenView/TokenView.cs @@ -128,10 +128,13 @@ private void UpdateScrollButtonsVisibility() { return FocusManager.GetFocusedElement(XamlRoot) as TokenItem; } - else - { - return FocusManager.GetFocusedElement() as TokenItem; - } + +#if WINUI3 + // Without a XamlRoot the control isn't in a live tree, so none of its items can have focus + return null; +#else + return FocusManager.GetFocusedElement() as TokenItem; +#endif } private void SelectedIndex_PropertyChanged(DependencyObject sender, DependencyProperty dp) From 6124d05210fa8fb9189081f094101a545b034a7f Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 19:15:56 +0100 Subject: [PATCH 14/21] CI: Install the current Android workload on the WinUI 3 Android job uno-check leaves Microsoft.Android.Sdk 36.1.2 selected, where the .NET 10.0.403 SDK adds the host RID to the Uno 7 Android head and restore fails on Microsoft.NETCore.App.Runtime.Mono.win-x64 (NU1102). 36.1.118 doesn't. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a67d60a21..54d15ba5a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -192,6 +192,12 @@ jobs: --skip vswin --verbose + # uno-check pins Microsoft.Android.Sdk 36.1.2, under which the Uno 7 Android head restores a + # Mono win-x64 runtime pack that doesn't exist (NU1102); install the current Android workload over it. + - name: Update the Android workload (WinUI 3) + if: ${{ matrix.winui == 3 && matrix.multitarget == 'android' && env.HAS_BUILDABLE_COMPONENTS == 'true' }} + run: dotnet workload install android + # The Uno.Sdk head builds desktop/browserwasm/android (iOS is filtered on # Windows). Install the matching workloads directly instead of uno-check. - name: Install .NET workloads (Uno.Sdk head) From 80fed6886f67531270d27c8655a1c581f746ad39 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 19:30:17 +0100 Subject: [PATCH 15/21] fix(MarkdownTextBlock): drop the Android SDK's implicit usings ImplicitUsings pulls Android.App and Android.Widget into the Android builds, whose Application, Orientation and TableRow clash with the XAML and Markdig types (CS0104). Replaces the per-file TableRow alias. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- ...mmunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj | 8 ++++++++ .../Renderers/ObjectRenderers/Extensions/TableRenderer.cs | 1 - components/MarkdownTextBlock/src/TextElements/MyTable.cs | 1 - .../MarkdownTextBlock/src/TextElements/MyTableRow.cs | 1 - 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj b/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj index 64edb1843..8f88739bf 100644 --- a/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj +++ b/components/MarkdownTextBlock/src/CommunityToolkit.WinUI.Controls.MarkdownTextBlock.csproj @@ -41,6 +41,14 @@ + + + + + + + MarkdownTextBlock.xaml diff --git a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs index 0c6ebc1ff..bc2a8a956 100644 --- a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs +++ b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Extensions/TableRenderer.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using Markdig.Extensions.Tables; -using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android using CommunityToolkit.WinUI.Controls.TextElements; namespace CommunityToolkit.WinUI.Controls.Renderers.ObjectRenderers.Extensions; diff --git a/components/MarkdownTextBlock/src/TextElements/MyTable.cs b/components/MarkdownTextBlock/src/TextElements/MyTable.cs index e3cd7369f..2cd341cb5 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyTable.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyTable.cs @@ -4,7 +4,6 @@ using CommunityToolkit.WinUI.Controls; using Markdig.Extensions.Tables; -using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android namespace CommunityToolkit.WinUI.Controls.TextElements; diff --git a/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs b/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs index 82a10865e..01a348f04 100644 --- a/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs +++ b/components/MarkdownTextBlock/src/TextElements/MyTableRow.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using Markdig.Extensions.Tables; -using TableRow = Markdig.Extensions.Tables.TableRow; // Android.Widget.TableRow on Uno 5 Android namespace CommunityToolkit.WinUI.Controls.TextElements; From 9c18376bf2dd5344d164444344353daf7c1ae1be Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 19:47:47 +0100 Subject: [PATCH 16/21] fix(MarkdownTextBlock): qualify Debug in the samples On Uno 5 Android the sample pages are ViewGroups, whose Debug(int) method hides System.Diagnostics.Debug (CS0119). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .../samples/MarkdownTextBlockExampleSample.xaml.cs | 3 +-- .../samples/MarkdownTextBlockLiveEditorSample.xaml.cs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/components/MarkdownTextBlock/samples/MarkdownTextBlockExampleSample.xaml.cs b/components/MarkdownTextBlock/samples/MarkdownTextBlockExampleSample.xaml.cs index 0e5019958..4ebf2e5f5 100644 --- a/components/MarkdownTextBlock/samples/MarkdownTextBlockExampleSample.xaml.cs +++ b/components/MarkdownTextBlock/samples/MarkdownTextBlockExampleSample.xaml.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using CommunityToolkit.WinUI.Controls; -using System.Diagnostics; namespace MarkdownTextBlockExperiment.Samples; @@ -607,6 +606,6 @@ public MarkdownTextBlockExampleSample() private void MarkdownTextBlock_OnLinkClicked(object? sender, LinkClickedEventArgs e) { - Debug.WriteLine($"Link Clicked: {e.Uri}"); + System.Diagnostics.Debug.WriteLine($"Link Clicked: {e.Uri}"); } } diff --git a/components/MarkdownTextBlock/samples/MarkdownTextBlockLiveEditorSample.xaml.cs b/components/MarkdownTextBlock/samples/MarkdownTextBlockLiveEditorSample.xaml.cs index f38598772..434f3bfba 100644 --- a/components/MarkdownTextBlock/samples/MarkdownTextBlockLiveEditorSample.xaml.cs +++ b/components/MarkdownTextBlock/samples/MarkdownTextBlockLiveEditorSample.xaml.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using CommunityToolkit.WinUI.Controls; -using System.Diagnostics; namespace MarkdownTextBlockExperiment.Samples; @@ -43,6 +42,6 @@ Try typing some **markdown** here! private void MarkdownTextBlock_OnLinkClicked(object? sender, LinkClickedEventArgs e) { - Debug.WriteLine($"Link Clicked: {e.Uri}"); + System.Diagnostics.Debug.WriteLine($"Link Clicked: {e.Uri}"); } } From cfe32ba1b55b1e19f4ad9051a25517d0c1301e0a Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 19:47:47 +0100 Subject: [PATCH 17/21] CI: Update rather than install the Android workload uno-check already installs it, so install was a no-op; update moves the manifest past 36.1.2. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 54d15ba5a..8c783dd48 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -193,10 +193,10 @@ jobs: --verbose # uno-check pins Microsoft.Android.Sdk 36.1.2, under which the Uno 7 Android head restores a - # Mono win-x64 runtime pack that doesn't exist (NU1102); install the current Android workload over it. + # Mono win-x64 runtime pack that doesn't exist (NU1102); update to the current workload manifests. - name: Update the Android workload (WinUI 3) if: ${{ matrix.winui == 3 && matrix.multitarget == 'android' && env.HAS_BUILDABLE_COMPONENTS == 'true' }} - run: dotnet workload install android + run: dotnet workload update # The Uno.Sdk head builds desktop/browserwasm/android (iOS is filtered on # Windows). Install the matching workloads directly instead of uno-check. From 69f5f35ee0b25261e7bac356560f3e1d495785f9 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Tue, 3 Nov 2026 19:59:16 +0100 Subject: [PATCH 18/21] chore: bump tooling to latest Uno 7 branch head Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- tooling | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling b/tooling index 84d2ca885..8a6b36df3 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 84d2ca8858bebac583a6d86683d486bd75d749a4 +Subproject commit 8a6b36df3adda544bfe4f283b59355c4aeee80ca From e953a3e4a908c25e5f4d1c1f3c57531cc5f46f91 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Wed, 4 Nov 2026 01:13:54 +0100 Subject: [PATCH 19/21] chore: bump Uno.Sdk to 7.0.0-dev.132 and tooling Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- global.json | 2 +- tooling | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/global.json b/global.json index b4769fec4..2c9e15e29 100644 --- a/global.json +++ b/global.json @@ -6,6 +6,6 @@ "msbuild-sdks": { "MSBuild.Sdk.Extras":"3.0.44", - "Uno.Sdk": "7.0.0-dev.89" + "Uno.Sdk": "7.0.0-dev.132" } } diff --git a/tooling b/tooling index 8a6b36df3..3620ce979 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 8a6b36df3adda544bfe4f283b59355c4aeee80ca +Subproject commit 3620ce97948e1c2de82f33d611544ab4d0d23c3f From 60ed6f51abaa8f4579eaab1627f5d21d1b984019 Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Wed, 4 Nov 2026 01:10:07 +0100 Subject: [PATCH 20/21] fix(RivePlayer): render through Uno's SKCanvasElement on Uno 7 SkiaSharp.Views.Uno.WinUI has no build for Uno 7 (every release, including the 4.156 previews, still ships the Uno 6 uno-runtime layout), so the Uno.Sdk head fails with UNOB0023 on net10.0-browserwasm. On WinUI 3 / Uno, draw through Uno.WinUI.Graphics2DSK's SKCanvasElement instead. Uno 7 already brings in SkiaSharp 4.151.1, and every SkiaSharp member RiveSharp references still exists there. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNu1EDpoRrpP3hnDukwz --- components/RivePlayer/src/Dependencies.props | 4 ++-- .../RivePlayer/src/RiveCanvasElement.cs | 20 +++++++++++++++++++ .../RivePlayer/src/RivePlayer.Platform.cs | 19 +++++++++++++++--- components/RivePlayer/src/RivePlayer.cs | 5 ++--- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 components/RivePlayer/src/RiveCanvasElement.cs diff --git a/components/RivePlayer/src/Dependencies.props b/components/RivePlayer/src/Dependencies.props index 857208ac2..73bd10af1 100644 --- a/components/RivePlayer/src/Dependencies.props +++ b/components/RivePlayer/src/Dependencies.props @@ -29,8 +29,8 @@ - + - + diff --git a/components/RivePlayer/src/RiveCanvasElement.cs b/components/RivePlayer/src/RiveCanvasElement.cs new file mode 100644 index 000000000..a76c5a4a0 --- /dev/null +++ b/components/RivePlayer/src/RiveCanvasElement.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +#if WINUI3 && HAS_UNO +using SkiaSharp; +using Uno.WinUI.Graphics2DSK; + +namespace CommunityToolkit.WinUI.Rive; + +internal sealed partial class RiveCanvasElement : SKCanvasElement +{ + private readonly RivePlayer _owner; + + public RiveCanvasElement(RivePlayer owner) => _owner = owner; + + protected override void RenderOverride(SKCanvas canvas, global::Windows.Foundation.Size area) => + _owner.PaintNextAnimationFrame(canvas, area); +} +#endif diff --git a/components/RivePlayer/src/RivePlayer.Platform.cs b/components/RivePlayer/src/RivePlayer.Platform.cs index 82068eca7..50547f4aa 100644 --- a/components/RivePlayer/src/RivePlayer.Platform.cs +++ b/components/RivePlayer/src/RivePlayer.Platform.cs @@ -2,7 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#if !WINAPPSDK +#if WINUI3 && HAS_UNO +using SkiaSharp; +#elif !WINAPPSDK // WASM on WinUI2 needs SkiaSharp.Views.UWP too. using SkiaSharp.Views.UWP; #else @@ -51,6 +53,9 @@ protected override void OnApplyTemplate() }; swapChainPanel.PaintSurface += OnPaintSurface; _skiaSurface.Content = swapChainPanel; +#elif WINUI3 && HAS_UNO + // SkiaSharp.Views has no Uno 7 build, so draw on Uno's own Skia canvas. + _skiaSurface.Content = new RiveCanvasElement(this); #else // WinAppSdk doesn't have SKSwapChainPanel yet. // SKSwapChainPanel doesn't work in WASM yet. @@ -71,6 +76,8 @@ internal void InvalidateAnimation() #if WINDOWS_UWP var swapChainPanel = _skiaSurface?.Content as SKSwapChainPanel; swapChainPanel?.Invalidate(); +#elif WINUI3 && HAS_UNO + (_skiaSurface?.Content as RiveCanvasElement)?.Invalidate(); #else var xamlCanvas = _skiaSurface?.Content as SKXamlCanvas; xamlCanvas?.Invalidate(); @@ -80,12 +87,18 @@ internal void InvalidateAnimation() #if WINDOWS_UWP private void OnPaintSurface(object? sender, SKPaintGLSurfaceEventArgs e) { - this.PaintNextAnimationFrame(e.Surface, e.BackendRenderTarget.Width, e.BackendRenderTarget.Height); + e.Surface.Canvas.Clear(); + this.PaintNextAnimationFrame(e.Surface.Canvas, e.BackendRenderTarget.Width, e.BackendRenderTarget.Height); } +#elif WINUI3 && HAS_UNO + // Called by RiveCanvasElement. The canvas is shared with the rest of the window, so it must not be cleared. + internal void PaintNextAnimationFrame(SKCanvas canvas, global::Windows.Foundation.Size area) => + this.PaintNextAnimationFrame(canvas, (int)area.Width, (int)area.Height); #else private void OnPaintSurface(object? sender, SKPaintSurfaceEventArgs e) { - this.PaintNextAnimationFrame(e.Surface, e.Info.Width, e.Info.Height); + e.Surface.Canvas.Clear(); + this.PaintNextAnimationFrame(e.Surface.Canvas, e.Info.Width, e.Info.Height); } #endif diff --git a/components/RivePlayer/src/RivePlayer.cs b/components/RivePlayer/src/RivePlayer.cs index 6cd5eaf44..1a9d92d91 100644 --- a/components/RivePlayer/src/RivePlayer.cs +++ b/components/RivePlayer/src/RivePlayer.cs @@ -199,7 +199,7 @@ private void HandlePointerEvent(Action handler, PointerRoutedEventArgs e) }); } - private void PaintNextAnimationFrame(SKSurface surface, int surfaceWidth, int surfaceHeight) + private void PaintNextAnimationFrame(SKCanvas canvas, int surfaceWidth, int surfaceHeight) { // Handle pending scene actions from the main thread. while (sceneActionsQueue.TryDequeue(out var action)) @@ -221,8 +221,7 @@ private void PaintNextAnimationFrame(SKSurface surface, int surfaceWidth, int su _lastPaintTime = now; // Render. - surface.Canvas.Clear(); - var renderer = new Renderer(surface.Canvas); + var renderer = new Renderer(canvas); renderer.Save(); renderer.Transform(ComputeAlignment(surfaceWidth, surfaceHeight)); _scene.Draw(renderer); From ccc8380f87ee364f16e8181cc01939cd9d697f1b Mon Sep 17 00:00:00 2001 From: Martin Zikmund Date: Wed, 11 Nov 2026 09:22:06 +0100 Subject: [PATCH 21/21] chore: bump Uno.Sdk to stable 7.0.5 and tooling Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TXMNtyvCafb6Ej7cqotkAC --- global.json | 2 +- tooling | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/global.json b/global.json index 2c9e15e29..26dcb4175 100644 --- a/global.json +++ b/global.json @@ -6,6 +6,6 @@ "msbuild-sdks": { "MSBuild.Sdk.Extras":"3.0.44", - "Uno.Sdk": "7.0.0-dev.132" + "Uno.Sdk": "7.0.5" } } diff --git a/tooling b/tooling index 3620ce979..14c2f755e 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 3620ce97948e1c2de82f33d611544ab4d0d23c3f +Subproject commit 14c2f755eebdcf93829983346a805baf11fe21b5