FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

refactor!: Align the conditional compilation vocabulary with the target framework by MartinZikmund · Pull Request #24088 · unoplatform/uno · GitHub

refactor!: Align the conditional compilation vocabulary with the target framework - #24088

Merged
MartinZikmund merged 40 commits into
feature/breakingchangesfrom
dev/mazi/constants-cleanup
Aug 24, 2026
Merged

refactor!: Align the conditional compilation vocabulary with the target framework#24088
MartinZikmund merged 40 commits into
feature/breakingchangesfrom
dev/mazi/constants-cleanup

Conversation

Copy link
Copy Markdown
Member

GitHub Issue: closes #17684

PR Type:

🔄 Refactoring (no functional changes, no api changes)

Stacked on #24087. It targets feature/breakingchanges too, so the diff below includes that PR's
commits — the ten commits from a960ed99 onward are what is new here. Please review after #24087 merges.

What changed? 🚀

Conditional compilation vocabulary, continuing where #24087 left the platform axis.

XAML prefixes. Every prefix is now named after a target framework. The ones that named a renderer, or a
distinction that no longer exists, are removed:

Removed Replacement
skia:, netstdref: not_winappsdk: (win: / not_win: kept as synonyms of winappsdk: / not_winappsdk:)
not_skia:, not_netstdref: winappsdk:
androidskia:, iosskia:, tvosskia:, wasmskia: android:, ios:, tvos:, wasm:
macos: desktop:
not_mux:, xamarin:, legacy: dropped — none resolved to a real condition

Dead conditional markup is deleted rather than migrated. Content behind android:, ios: and wasm: was
excluded from every project in this repository both before and after the change, since they all target a plain
netX.0. It targeted the native renderers removed in 7.0 and referenced types that no longer exist — 126
elements and 76 attributes across 62 files. Seven samples whose entire body was such markup are removed, along
with the [ActivePlatforms(Platform.Android)] UI test that drove one of them.

File suffixes. *.Apple.cs and *.UIKit.cs had byte-for-byte identical rules (IsApple and IsAppleUIKit
are both IsIOS or IsTvOS), so the 29 *.Apple.cs files are renamed and the suffix retires. *.reference.cs is
dropped from the SDK — it selects on UnoRuntimeIdentifier, which nothing outside Uno.UWP /
Uno.Foundation / Uno.UI.Dispatching sets, so for an application it compiled nowhere and warned nowhere; those
three projects keep it through the repository's own targets. *.iOSmacOS.cs named the native macOS target
removed in 7.0.

Preprocessor symbols. The eight HAS_UNO_SKIA_<host> symbols and their __UNO_SKIA_<host>__ counterparts are
removed, closing #17684. They read as a compile-time host discriminator but cannot be one: the SDK references
every desktop host package together, so a netX.0-desktop head defined all of them at once. Nothing branched on
them. HAS_UNO_SKIA and __UNO_SKIA__ are untouched — the XAML generator emits the former.

UNO_REFERENCE_API is now documented as what it actually is. Every Uno.WinUI.Runtime.Skia.* package defines it,
including the Android, Apple UIKit and WebAssembly ones, so it is not "no platform identifier" — it is the host
axis, the same condition as HAS_UNO. Documented as a synonym rather than given a third spelling.

Two defects found on the way:

  • BatchMergeXaml stamped a fixed mc:Ignorable="ios android wasm skia" onto every merged theme dictionary —
    naming prefixes the merged file does not declare while omitting not_win and not_winappsdk, which it does. It
    now collects the ignorable set from the conditional namespaces actually present.
  • DatePicker never forwarded UseNativeMinMaxDates to the native flyout: the assignment sat behind
    #if SUPPORTS_NATIVE_DATEPICKER, a symbol no target framework defines. NativeDatePickerFlyout is live on
    Skia-Android and reads that property when building the dialog, so it was silently ignored on the one target
    where it does anything. An internal INativeDatePickerFlyout lets DatePicker set it without naming a type
    from the Android runtime assembly.

Plus three conditionals that read as live and could never be true (#if __ANDROID, #if WinUI, #if !DESKTOP),
and the branches guarded by symbols that are defined nowhere — SILVERLIGHT, METRO, WINPRT,
WINDOWS_PHONE, __XAMARIN__, XAMARIN_ANDROID, HAS_NATIVE_COMMANDBAR, IS_NATIVE_ELEMENT. Two of those had
rotted: the IS_NATIVE_ELEMENT arm subscribes to handlers that exist nowhere in the tree, and AppBar's
_isNativeTemplate could only ever be false, so its MeasureOverride early-return never ran.

PR Checklist ✅

  • 🧪 Added Runtime tests, UI tests, or a manual test sample (for bug fixes / features, if applicable) — 4 tests for the BatchMergeXaml change; a Skia-Android runtime test for the DatePicker fix
  • 📚 Docs have been added/updated following the documentation template (for bug fixes / features) — platform-specific-xaml.md, platform-specific-csharp.md, using-the-uno-sdk.md, migrating-to-uno-7.md, GLCanvasElement.md, progressring.md
  • 🖼️ Validated PR Screenshots Compare Test Run results — pending CI
  • ❗ Contains NO breaking changes
  • 👀 Reviewed 2 other open pull requests (optional but appreciated!)

Breaking change impact and migration

Applications and libraries using the removed prefixes, suffixes or symbols must rename. All of it is mechanical
and all of it is listed in doc/articles/migrating-to-uno-7.md, which gains three tables: removed XAML prefixes,
removed file suffixes, and removed preprocessor symbols.

The one behavioural change beyond renaming is DatePicker.UseNativeMinMaxDates, which starts taking effect on
Skia-Android. An application that set it and silently got the default behaviour will now get the behaviour it
asked for.

Validation

  • SamplesApp.Skia.Generic (net10.0-desktop) builds clean, 0 errors / 0 warnings, after every commit.
  • Uno.UI.Tasks.Tests 23/23.
  • XamlStyler check passes on all 68 changed SamplesApp XAML files.
  • Not validated locally: the *.Apple.cs → *.UIKit.cs rename only compiles on an Apple target framework, so
    the merged SoftwareBitmap partial was verified structurally (braces balanced, all 15 members preserved) but
    no compiler has seen it. The DatePicker runtime test needs a Skia-Android device and has not been run here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PTBMNbcPLwzdYrtPzY8s9Z

github-actions Bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform area/solution-templates Categorizes an issue or PR as relevant to the solution template area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/code-generation Categorizes an issue or PR as relevant to code generation area/build Categorizes an issue or PR as relevant to build infrastructure area/automation Categorizes an issue or PR as relevant to project automation kind/documentation platform/x11 🐧 Categorizes an issue or PR as relevant to X11 labels Aug 15, 2026

github-actions Bot commented Aug 15, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 11m 4s —— View job


Review Complete

  • Gather context: read diff and key changed files
  • Review: .claude/rules/ changes
  • Review: build system and SDK targets changes
  • Review: BatchMergeXaml / ignorable set fix
  • Review: DatePicker / UseNativeMinMaxDates fix
  • Review: dead conditional branch removals
  • Review: documentation updates
  • Review: XAML sample file changes
  • Post inline comments
  • Write summary

Summary

Verdict: ship after fixing the one inline finding.

1 finding at medium severity, 1 at low. No blocking issues in the core logic.


Inline finding (1)

Medium — DatePickerFlyout_Unloaded.xaml line 38: dangling ElementName binding

<TextBlock Text="{Binding Date, ElementName=TestNativeDatePickerFlyout}" /> — the element TestNativeDatePickerFlyout was the x:Name of the native flyout removed in this PR. The TextBlock remains but the binding target no longer exists; the runtime will log a binding warning and the TextBlock will be permanently empty. Remove the TextBlock (or its containing StackPanel row). Inline comment posted.


Low-severity observation (no inline comment)

DatePicker_Features.xaml lines 175–178 — the btnWithNativeFlyout button is now a dead end.

The section is labeled "NativeDatePickerFlyout (iOS & Android only)" and the button says "PICK DATE (Flyout)", but <Button.Flyout /> is empty so nothing happens on click. The DatePicker immediately below (line 183) already demonstrates UseNativeStyle + UseNativeMinMaxDates correctly. The dead button + section header will confuse readers of the sample. The section could be removed or the label updated to point at the DatePicker below it.


What looks good

BatchMergeXaml mc:Ignorable fix — the UpdateIgnorableNamespaces implementation is clean. Walking to root to collect declared namespace attributes (rather than maintaining a separate list), sorting with StringComparer.Ordinal for deterministic output, and covering the three Uno namespace host origins (http://uno.ui/, http://platform.uno/, http://nventive.com/) are all correct. The four new Given_MergedDictionary tests cover the key boundaries: conditional-in, non-conditional-excluded, legacy-hosts-in, no-ignorable-at-all.

DatePicker / INativeDatePickerFlyout fix — the interface-inversion-of-dependency pattern is the right call: Uno.UI declares the interface, the Android runtime assembly implements it, DatePicker casts with is. No preprocessor conditional, no cross-assembly reference, and InternalsVisibleTo("Uno.UI.RuntimeTests") is already in place so the internal interface is visible to the test. The runtime test ([PlatformCondition(ConditionMode.Include, RuntimeTestPlatforms.SkiaAndroid)]) directly asserts forwarding rather than inferring it from behaviour.

Dead conditional removal — all removed symbols (SILVERLIGHT, METRO, WINPRT, WINDOWS_PHONE, HAS_NATIVE_COMMANDBAR, IS_NATIVE_ELEMENT, #if __ANDROID, #if WinUI, #if !DESKTOP) are unreachable on any current target and the branches behind IS_NATIVE_ELEMENT and AppBar._isNativeTemplate had already rotted (event subscriptions to handlers that don't exist). Correct to delete rather than preserve.

HAS_UNO_SKIA_<host> removal — the rationale is watertight: the SDK references every desktop host package together, so a netX.0-desktop head defined all eight at once, making host discrimination via #if impossible. HAS_UNO_SKIA and __UNO_SKIA__ (consumed by the XAML generator) are correctly left alone.

*.Apple.cs retirement — IsApple and IsAppleUIKit both reduce to IsIOS or IsTvOS; the 29-file rename to *.UIKit.cs is correct. The *.reference.cs deletion is clean: the suffix compiled only on UnoRuntimeIdentifier-scoped projects, which no application ever selects, so the Lottie file and the SDK documentation entry were dead.

BatchMergeXaml NuGetPackageRoot move — moving the parameter from RuntimeAssetsSelectorTask_v0 to RuntimeAssetsValidatorTask_v0 and adding UnoWinRTRuntimeIdentifier, TargetPlatformIdentifier, ResolvedCompileFileDefinitionsInput, and DisablePlatformAssetValidation is consistent with the UNOB0020 feature (multi-targeted library asset validation). The _UnoDisableUNOB0020Validation normalization guard (converting any non-true value to false before the boolean parameter conversion) is a nice defensive touch.

Documentation — the three migration tables (XAML prefixes, file suffixes, preprocessor symbols) are complete and precise. The using-skia-rendering.md section on class libraries correctly inverts the 6.x description (platform asset now kept, not silently replaced). The new UNOB0020 error-code entry clearly explains both the detection limit (type presence only, not member changes) and the suppression property.

Conventional Commits — all 25 commits follow the format and scope correctly.

Copy link
Copy Markdown
Contributor

The build 227930 found UI Test snapshots differences: skia-linux-screenshots: 73, skia-windows-screenshots: 123

Details
  • skia-linux-screenshots: 73 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ButtonClippingTestsControl.png
    • CalendarView_Theming.png-dark
    • ElementLevelTheme.png-dark
    • ElementLevelTheme.png
    • Examples.png
    • Focus_FocusVisual_Properties.png-dark
    • ImageBrushInList.png-dark
    • ImageBrushInList.png
    • ImageBrush_Stretch.png
    • Buttons.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • ClipboardTests.png-dark
    • ClipboardTests.png
    • ContextRequested.png-dark
    • DropDownButtonPage.png-dark
    • Image_Margin_Large.png
    • ImageIconPage.png-dark
    • ButtonClippingTestsControl.png-dark
    • ImageIconPage.png
  • skia-windows-screenshots: 123 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Attributed_text_FontSize_Changing.png-dark
    • Contacts_Pick.png-dark
    • Contacts_Pick.png
    • DataTransferManager.png-dark
    • DataTransferManager.png
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • ClipboardTests.png-dark
    • DisplayInformation.png-dark
    • Dopes.png-dark
    • ElementLevelTheme.png-dark
    • ElementLevelTheme.png
    • Battery.png
    • Battery.png-dark
    • Haptics.VibrationDevice.png-dark
    • Haptics.VibrationDevice.png
    • Focus_FocusVisual_Properties.png-dark
    • Focus_FocusVisual_Properties.png
    • Buttons.png-dark
    • EmailManagerTests.png-dark

Copy link
Copy Markdown
Contributor

⚠️⚠️ The build 227931 has failed on Uno.UI - docs.

Copy link
Copy Markdown
Contributor

⚠️⚠️ The build 227930 has failed on Uno.UI - CI.

github-actions Bot commented Aug 15, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 9m 24s —— View job


Review Complete

  • Gather context: read diff and key changed files
  • Review: .claude/rules/ changes
  • Review: build system and SDK targets changes
  • Review: BatchMergeXaml / ignorable set fix
  • Review: DatePicker / UseNativeMinMaxDates fix
  • Review: dead conditional branch removals
  • Review: documentation updates
  • Review: XAML sample file changes
  • Post inline comments
  • Write summary

Summary

Verdict: ship — no blocking issues. The one medium-severity finding from the first pass (DatePickerFlyout_Unloaded.xaml dangling ElementName=TestNativeDatePickerFlyout binding) was resolved in commit 37e549be, which removed the entire "native flyout" row. Two low-severity observations follow, neither merge-blocking.


What looks good

BatchMergeXaml mc:Ignorable fix — UpdateIgnorableNamespaces correctly walks to the root to collect all conditional-namespace prefixes (filtering on the three Uno namespace host origins), sorts with StringComparer.Ordinal for deterministic output, and either sets or removes the attribute. The four Given_MergedDictionary tests (conditional-in, non-conditional-excluded, legacy-hosts-in, no-ignorable) cover the key boundaries cleanly.

DatePicker / INativeDatePickerFlyout fix — Interface-inversion-of-dependency is the right call: Uno.UI declares the internal interface INativeDatePickerFlyout, the Android runtime assembly implements it via NativeDatePickerFlyout, and DatePicker casts with is. No preprocessor conditional, no cross-assembly reference. The runtime test ([PlatformCondition(ConditionMode.Include, RuntimeTestPlatforms.SkiaAndroid)]) directly asserts forwarding. The class-level [RunsOnUIThread] on Given_DatePicker covers the new test.

Dead conditional removal — All removed symbols (SILVERLIGHT, METRO, WINPRT, WINDOWS_PHONE, HAS_NATIVE_COMMANDBAR, IS_NATIVE_ELEMENT, #if __ANDROID, #if WinUI, #if !DESKTOP) were unreachable on any current target. The commit message correctly explains that the two IS_NATIVE_ELEMENT-guarded arms had already rotted. XAMARIN (no underscores) is correctly kept — it's still defined for the Android and Apple target frameworks.

HAS_UNO_SKIA_<host> removal — The rationale is watertight: the SDK references every desktop host package together, so a net*.0-desktop head defined all eight at once, making host discrimination via #if impossible. HAS_UNO_SKIA and __UNO_SKIA__ (consumed by the XAML generator) are correctly left alone.

*.Apple.cs retirement — IsApple and IsAppleUIKit both reduce to IsIOS or IsTvOS; the rename to *.UIKit.cs is correct. The *.reference.cs deletion is sound: the suffix compiled only for projects that set UnoRuntimeIdentifier, which no application project does.

Documentation — The three migration tables (XAML prefixes, file suffixes, preprocessor symbols), the using-skia-rendering.md platform-asset inversion, and the UNOB0020 error-code entry are all accurate. The detection-limit caveat ("type presence only, not member changes") is important and present.


Low-severity observations (no inline comments; not blocking)

UpdateIgnorableNamespaces also fires on theme-dict children — FinalizeXaml calls UpdateIgnorableNamespaces() on each MergedDictionary, including nested theme-dict children. The child walks to root to collect prefixes (correct), then stamps mc:Ignorable on its own element — which does not re-declare the conditional xmlns:* prefixes (those are on the root). Because the prefixes are in scope via XML namespace inheritance, this is valid XML. WinAppSDK likely ignores mc:Ignorable on non-root elements. This was also the pre-existing behaviour (the constructor hard-coded mc:Ignorable="ios android wasm skia" on every dict, root and child alike), so the PR does not regress it.

ComboBox_FullScreen_Popup.xaml has three declared-but-unused namespace prefixes (not_android, not_ios, win) — these pre-date this PR and were not introduced by commit 37e549be, which only removed an empty <UserControl.Resources />. Not caused by this change; out of scope.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24088/wasm-skia-net9/index.html

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-24088/docs/index.html

Copy link
Copy Markdown
Contributor

The build 227952 found UI Test snapshots differences: skia-linux-screenshots: 73, skia-windows-screenshots: 134

Details
  • skia-linux-screenshots: 73 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ButtonClippingTestsControl.png-dark
    • ContentControl_Inheritance.png
    • DisplayInformation.png-dark
    • DisplayInformation.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • ImageBrush_Stretch.png
    • ImageIconPage.png-dark
    • ImageIconPage.png
    • DynamicFont.png
    • CalendarView_Theming.png-dark
    • ElementLevelTheme.png-dark
    • ElementLevelTheme.png
    • ButtonClippingTestsControl.png
    • Buttons.png
    • DropDownButtonPage.png-dark
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Examples.png
  • skia-windows-screenshots: 134 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • DataTransferManager.png-dark
    • DataTransferManager.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • Gamepad_Enumeration.png
    • AuthenticationBroker_Demo.png-dark
    • Battery.png
    • ClipboardTests.png-dark
    • EllipsemaskingEllipseGrid.png-dark
    • Grid_with_MinWidthColumns.png-dark
    • Battery.png-dark
    • Examples.png
    • DownloadFileSavePickerTests.png-dark
    • DownloadFileSavePickerTests.png
    • ExpanderColorValidationPage.png-dark
    • Focus_FocusVisual_Properties.png-dark
    • Focus_FocusVisual_Properties.png

MartinZikmund force-pushed the dev/mazi/constants-cleanup branch from 37e549b to 4c043bf Compare August 20, 2026 13:38

github-actions Bot commented Aug 20, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 8m 54s —— View job


Review Complete

  • Gather context: read PR diff and identify new commits since last review
  • Review: new commits (samples cleanup, docs linter, conditional-symbols doc)
  • Review: .claude/rules/ changes
  • Review: DatePicker / INativeDatePickerFlyout fix
  • Review: BatchMergeXaml UpdateIgnorableNamespaces
  • Review: dead conditional branch removals
  • Review: UITest references to deleted elements
  • Post inline comments
  • Write summary

Summary

Verdict: fix-first on the two UITest findings; all other new commits ship.

2 medium findings posted as inline comments. No blocking issues in the core logic. The prior two review passes are superseded — prior findings are all resolved or acknowledged.


New inline findings (2)

ComboBox_FullScreen_Popup.xaml line 16 — stale UITest reference.
ComboBoxTests_Fullscreen_Popup_iOS ([ActivePlatforms(Platform.iOS)]) targets _app.Marked("Units1"), the x:Name of the ios:ComboBox deleted from the file. The surviving ComboBox is Values2. The test is active and will throw on FastTap. Inline comment posted.

TextBlock_MeasureCache.xaml line 12 — stale UITest misses reads.
When_Padding_Is_Changed_Then_Cache_Is_Missed ([ActivePlatforms(Platform.Browser)]) calls _app.Marked("misses").GetDependencyPropertyValue<int>("Text") three times. misses was the wasm:TextBlock removed from this file; the reads will throw. The three misses1/2/3 variables are never asserted upon, so those three lines can be deleted without affecting the test's remaining width assertions. Inline comment posted.


New commits look good

Samples cleanup (4c043bf7) — the three remaining debris items from the native-flyout removal (DatePickerFlyout_Unloaded, DatePicker_Features, ComboBox_FullScreen_Popup) are correctly identified and removed. The commit message accurately describes the secondary problem (empty <Button.Flyout />) alongside the primary one (dangling ElementName).

Docs linter (6392a63f) — HTML comment separators for adjacent DocFX alert pairs and the _is_ → *is* emphasis-style fix are correct remedies for MD028 and MD049; no content change.

Conditional-symbol guidance (624adf8e) — the new table in code-style.md is accurate: LOOPING_SELECTOR_AVAILABLE, FOCUS_IMPLEMENTED, and the WIP family are correctly parked-not-dead; the developer-diagnostics and MUX-port-fidelity categories match what's in the tree; the SUPPORTS_NATIVE_DATEPICKER anecdote at the bottom is exactly the right motivating example for why "undefined ≠ deletable". The UNO_REFERENCE_API → HAS_UNO synonym guidance matches the cross-targeting targets comment.

Screenshot diffs (73 linux / 134 windows) — these are expected from the removal of native-only android:, ios:, and wasm: markup that was excluded from every Skia project to begin with. The samples that carried that markup have now shrunk or been deleted, so their screenshots change. These are not regressions; the PR author should confirm the new snapshots are accepted before merging.

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-24088/docs/index.html

Copy link
Copy Markdown
Contributor

The build 228921 found UI Test snapshots differences: skia-linux-screenshots: 73, skia-windows-screenshots: 172

Details
  • skia-linux-screenshots: 73 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Buttons.png
    • ButtonClippingTestsControl.png-dark
    • DropDownButtonPage.png-dark
    • Attributed_text_FontSize_Changing.png
    • ClipboardTests.png-dark
    • ClipboardTests.png
    • ButtonClippingTestsControl.png
    • DisplayInformation.png-dark
    • DisplayInformation.png
    • ContextRequested.png-dark
    • ContentControl_Inheritance.png
    • ElementLevelTheme.png-dark
    • DynamicFont.png
    • ElementLevelTheme.png
    • Focus_FocusVisual_Properties.png-dark
    • ImageBrushInList.png-dark
    • ImageBrushInList.png
    • ImageBrush_Stretch.png
  • skia-windows-screenshots: 172 changed over 2368

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DataTransferManager.png-dark
    • DataTransferManager.png
    • Button_Enabled_Control_Disabled.png
    • ContentPresenter_NativeEmbedding_Android_FillType.png
    • BitmapImage_vs_SvgImageSource.png
    • EllipsemaskingEllipseGrid.png-dark
    • EmailManagerTests.png-dark
    • EmailManagerTests.png
    • FocusManagerTest.png-dark
    • FocusManagerTest.png
    • ContentControl_NoTemplateNoContent.png-dark
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_Enumeration.png-dark
    • ButtonClippingTestsControl.png-dark
    • CalendarView_Theming.png
    • ClipboardTests.png-dark
    • BitmapImage_vs_SvgImageSource.png-dark
    • ChatBox.png

github-actions Bot commented Aug 21, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 3m 24s —— View job


Review Complete

  • Gather context: identify new commits since last review
  • Review: new commits
  • Review: outstanding UITest findings from prior passes
  • Write summary

Summary

Verdict: fix-first on two UITest issues. The two medium findings flagged in the previous review pass (2026-08-20) are still present — the UITest files weren't in the PR diff so inline comments cannot be posted on them; they are described here instead.


Latest commit (9f0c804f)

fix(build): Rewrite the task SHA in Uno.UI.Tasks.Tests — adds the new test project to the SHA-rewrite task set so the unit-test solution filter compiles. Clean; no review issues. The When_Native_View UITest was also removed alongside the deleted Android native view sample.


Two medium UITest fixes still needed

The XAML markup was correctly deleted in 4c043bf7, but the UITest methods that exercise those samples still reference the deleted element names. Since these files are not in the PR diff, inline comments cannot be posted — fixes are described here:

1. UnoSamples_Tests.ComboBoxTests.cs line 154 — "Units1" → "Values2"

ComboBoxTests_Fullscreen_Popup_iOS ([ActivePlatforms(Platform.iOS)]) calls _app.Marked("Units1"). Units1 was the x:Name of the ios:ComboBox removed from ComboBox_FullScreen_Popup.xaml. The surviving ComboBox is x:Name="Values2". Change:

// was:
var values2 = _app.Marked("Units1");
// fix:
var values2 = _app.Marked("Values2");

2. TextBlockTests.cs lines 424, 431, 438 — remove three stale misses reads

When_Padding_Is_Changed_Then_Cache_Is_Missed ([ActivePlatforms(Platform.Browser)]) calls _app.Marked("misses").GetDependencyPropertyValue<int>("Text") three times. misses was the x:Name of the wasm:TextBlock removed from TextBlock_MeasureCache.xaml. The three locals (misses1, misses2, misses3) are captured but never asserted upon — delete all three lines. The width-comparison assertions (w1 > w2, w3 == w1) are unaffected.


What looks good in the new commit

  • 9f0c804f build fix — adding the test project to Uno.UI.Build.csproj's SHA-rewrite set is exactly the right scope; no other changes needed.
  • When_Native_View removal in the same diff — the Android native view sample was deleted as dead markup, and the UITest that drove it is correctly removed alongside it. This is the correct pattern: the two open UITest fixes above are the same pattern but weren't caught in the same cleanup pass.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24088/wasm-skia-net9/index.html

MartinZikmund and others added 15 commits August 24, 2026 20:53
Four categories look dead to a symbol search but are deliberate: parked ported
code, developer diagnostics, MUX port fidelity, and vendored third-party
sources. Two more are invisible to a `#if` search entirely -- symbols emitted by
a generator, and those consumed through [Conditional].

Placed in the path-scoped C# rule so it loads whenever src/**/*.cs is edited,
which is when the mistake gets made.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PTBMNbcPLwzdYrtPzY8s9Z
The CI Setup > Validations stage runs markdownlint-cli 0.38.0 over doc/**/*.md
and it reported five errors:

  MD028 no-blanks-blockquote  three pairs of adjacent DocFX alerts, which the
                              linter reads as one blockquote with a blank line
                              in it, in using-skia-rendering.md,
                              using-the-uno-sdk.md and platform-specific-csharp.md
  MD049 emphasis-style        *is* in the UNO_REFERENCE_API table row, where the
                              rest of the document uses underscores

Each alert pair is separated with an HTML comment, the remedy markdownlint
documents for MD028. It renders as nothing, so no published content changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GP2BeVCQzY3sQB7QBv173u
Deleting the content behind the android: and ios: prefixes left the wrappers
that used to hold it, and one binding to an element that went with it.

DatePickerFlyout_Unloaded lost the whole native row: an empty <Button.Flyout />
made the "Open NativeDatePickerFlyout" button inert, and the TextBlock beside it
bound to ElementName=TestNativeDatePickerFlyout, which no longer resolves. The
code-behind reference to the button goes with it.

DatePicker_Features loses btnWithNativeFlyout for the same reason. The heading
above it named a flyout that is no longer in the sample; it now names the
DatePicker below, which is what the UseNativeMinMaxDates toggle still drives.

ComboBox_FullScreen_Popup loses an empty <UserControl.Resources />.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GP2BeVCQzY3sQB7QBv173u
The build stamps the commit SHA over the `v0` suffix of the MSBuild task
types, but the new test project was not in the rewrite set, so its
references still named the `_v0` types and the unit-test solution filter
failed to compile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsSTAhXXmx3UnADdnBPoBp
The verifier hardcoded the pre-7.0 conditional prefix set, so it kept feeding
'skia' into ExcludeXamlNamespacesProperty long after the props stopped emitting
it. That only passed because XamlFileParser carried the IsSkiaNotConditional
exemption this branch removes. Derive the lists from the prefixes the props
actually produce: android, ios, tvos, desktop, wasm, winappsdk and win.
The verifier folded Microsoft.tvOS.Ref into the iOS branch, so a tvOS
reference assembly got the iOS include/exclude lists: tvos landed in the
exclude set and not_tvos in the include set, the exact inverse of what
the SDK derives from the target framework. No test uses the tvOS
reference assemblies today, but tvos: is a live prefix as of this branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
ComboBoxTests_Fullscreen_Popup_iOS drove Units1, the ios:ComboBox with the
custom fullscreen-popup template this branch removed; the surviving Values2
is already covered by ComboBoxTests_Fullscreen_Popup_Generic.
DatePickerFlyout_Native_Unloaded drove TestNativeDatePickerFlyoutButton,
removed with the native flyout row, and had been commented out as broken.
The three misses reads in When_Padding_Is_Changed_Then_Cache_Is_Missed
targeted the wasm:TextBlock that is gone, and fed locals no assertion read.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
CalendarDatePicker_themeresources.xaml kept wasm in mc:ignorable after the
xmlns:wasm declaration and the wasm:Setter it guarded were removed, so the
XAML compiler was told to ignore a prefix that is not declared -- the same
defect the BatchMergeXaml ignorable fix addressed for merged output. The
TODO above the removed setter went with it; the style it pointed at no
longer exists anywhere. AppBar.xaml carried the same mismatch for netstdref
and not_netstdref, which predates this branch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
Uno.UI and Uno.UI.FluentTheme are built for a plain netX.0, so every negated
conditional prefix in their markup now resolves to "always included" and every
positive one to "never". not_android: and not_wasm: therefore say nothing --
they were written when the prefix named a renderer rather than a target
framework, and reading them today suggests a per-platform variant that the
single Uno.UI build cannot have.

Drop the prefix from the fourteen elements still carrying one, and the xmlns
declarations that no longer name anything -- including the two ContentDialog and
SystemResources kept without ever using. mc:Ignorable loses not_wasm alongside
its declaration so the two stay in step.

No behavior change: these elements were already emitted on every target.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R34nKe3bNnAssE9qwir9SZ
The samples compile into the -android, -ios and -browserwasm heads, so their
not_android:, not_ios: and not_wasm: markup now genuinely excludes -- where in
6.x it was suppressed everywhere and behaved as "always". Each site was written
against a native control that no longer exists, so what the prefix hides is
markup the Skia rendering the sample needs.

ComboBox_Picker and ComboBox_Popover lose their DropDownGlyph on Android,
ComboBox_Popover its whole Popup and the state driving PopupBorder on iOS, and
ComboBox_Disabled and ComboBox_ToggleDisabled their placeholder and drop-down
animations on WebAssembly. ComboBox_DropDownPlacement drops the padding that
gives the drop-down room to place itself, and Playground its XAML editor pane.

The remaining declarations name a prefix nothing uses; they and their
mc:Ignorable entries go with it.

Desktop and WinAppSDK output is unchanged -- these prefixes already resolved to
"included" there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R34nKe3bNnAssE9qwir9SZ
The prefix table listed only winappsdk and not_winappsdk, and the one line
about win and not_win called them a historical spelling, which read as a
retirement notice for two prefixes that are live, supported, and still the
more common form in Uno Platform's own markup. Both spellings now appear in
the table, with a note that neither is deprecated and no migration applies.

The namespace section also did not say that the prefix is matched by exact
comparison, leaving open whether a decorated variant such as
xmlns:not_winappsdkNamespace1 resolves as conditional. It does not; several
CLR namespaces belong in one #using: segment instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
XAMARIN named a platform family but had drifted to mean roughly "an assembly
Uno builds": Uno.CrossTargetting defined it for iOS, tvOS and Android, and
eleven project files then defined it again for Skia, WebAssembly, Reference
and netcoremobile. None of Uno.WinRT, Uno.UI.Dispatching, Uno.UI.Composition
or Uno.UI.XamlHost branch on it, so those definitions only made the symbol
read as though it meant something it did not.

Each remaining use now states its own condition. FuncMemoizeExtensions keeps
its locked memoizer on __ANDROID__ and __APPLE_UIKIT__, unchanged. The private
SkipLast exists because netstandard2.0 lacks Enumerable.SkipLast, which is
what it now says; its one caller is the XAML parser. CommandBarExtensions and
AttachedProperty_CollectionProperty selected branches no compilation could
reach, so the branches are gone. GlobalAssemblyInfo guarded two Code Access
Security attributes that .NET ignores, in a file nothing compiles.

Two conditions change behaviour rather than preserve it. Given_ItemsPresenter
documents an Android pixel-conversion tolerance that an undefined symbol had
switched off, including on Skia-Android; it is a runtime check now, so the
tolerance applies where the comment says it should. SamplesApp defined the
symbol for its Android head alone while the netcoremobile head defined it for
all three mobile targets, so its iOS and tvOS heads now match Android.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
Uno.UI pins UnoRuntimeIdentifier to Skia, which defines
UNO_HAS_ENHANCED_LIFECYCLE, so !UNO_HAS_ENHANCED_LIFECYCLE never compiled
there. What the branch held is not a fallback that stopped being reachable:
ReconfigureViewportPropagationPartial had no declaring partial and no caller
anywhere in the repository, so the implementation could not have compiled had
the branch ever been taken. Its declaration and call site were removed at some
point and this was left behind.

The remaining !UNO_HAS_ENHANCED_LIFECYCLE branches in Uno.UI are untouched.
Each is a coherent Loaded/Unloaded fallback for the native Android and iOS
renderers, named as such in its own comment, and belongs with that removal
rather than with a vocabulary sweep.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
WINAPPSDK_PACKAGED was dropped as never consumed, but it is defined in
Uno.Sdk and therefore ships to applications, where a repository-wide search
cannot see its users. Separating MSIX from unpackaged has no other
compile-time expression, and removing the symbol would have sent those
branches to #else without a diagnostic. The spec records the distinction:
for anything Uno.Sdk emits, the question is whether it is public surface.

CommandBarExtensions registered NavigationCommand and BackButtonForeground
with plain PropertyMetadata everywhere, because the FrameworkPropertyMetadata
carrying ValueInheritsDataContext sat behind XAMARIN, which neither Uno.UI.Extras
project defines. Uno targets are meant to inherit the data context here, so the
metadata is selected on HAS_UNO, the discriminator the rest of the assembly
already uses; WinAppSDK keeps PropertyMetadata, having no FrameworkPropertyMetadata.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
The sample was dropped with the native-era markup because its whole body sits
in a wasm: element, which read as unreachable. Uno.Web.Http.CookieManager is
not native-renderer API though -- it is a browser capability, and it stays
relevant wherever the app runs in a browser, Skia WebAssembly included. The
page is restored unchanged; its [Sample] registration is already behind
__WASM__, so it appears only on the head that can exercise it.

The other six samples removed alongside it were checked and stay removed. Each
holds nothing but native-renderer content: an android:Grid, an android:Border
wrapping a NativeView, an ios:StackPanel around a Picker described in the
sample itself as iOS-specific, and the two HorizontalListView pages, whose own
placeholders read "HorizontalListView is only used on Android".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe
MartinZikmund force-pushed the dev/mazi/constants-cleanup branch from 961b469 to 6c955c3 Compare August 24, 2026 18:56

github-actions Bot commented Aug 24, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 6m 53s —— View job


Review Complete

  • Gather context: identify new commits since last review
  • Review: new commits
  • Check: outstanding findings from prior passes
  • Post inline comments on any findings — none
  • Write summary

Summary

Verdict: ship. This pass reviews the same functional content as the 2026-08-24 18:21 review, which already gave a clean ship verdict. The branch appears to have been rebased (commit hashes changed; content is identical), which triggered the pull_request synchronize event. No new issues were found.


What was verified

  • CommandBarExtensions.cs — HAS_UNO-guarded FrameworkPropertyMetadata(null, ValueInheritsDataContext) on both NavigationCommandProperty and BackButtonForegroundProperty. Correct discriminator (HAS_UNO, same as the rest of the file); WinAppSDK keeps plain PropertyMetadata. ✓
  • Uno.SingleProject.WinAppSdk.targets — WINAPPSDK_PACKAGED restored with `` comment explaining it is SDK-emitted surface. The empty PropertyGroup shell from the removal commit is gone. ✓
  • INativeDatePickerFlyout / DatePicker — Interface-inversion pattern correct; DatePicker casts with is and sets UseNativeMinMaxDates, no cross-assembly reference, no preprocessor. Runtime test guards on [PlatformCondition(ConditionMode.Include, RuntimeTestPlatforms.SkiaAndroid)]. ✓
  • BatchMergeXaml UpdateIgnorableNamespaces — Walks to root to collect conditional-namespace prefixes (three Uno host origins), sorts with StringComparer.Ordinal, sets or removes the attribute cleanly. ✓
  • CSGenerator.cs iOS/tvOS split — tvOS gets its own branch so tvos: lands in includeXamlNamespaces (not exclude) on a tvOS target. ✓
  • UITest cleanup — All three stale references removed: ComboBoxTests_Fullscreen_Popup_iOS, DatePickerFlyout_Native_Unloaded, the three misses reads in When_Padding_Is_Changed_Then_Cache_Is_Missed. ✓
  • CookieManager sample restored — Body is wasm:StackPanel (browser capability, not native-renderer); [Sample] registration behind __WASM__. ✓
  • Migration doc — Three tables (XAML prefixes, file suffixes, preprocessor symbols) complete and accurate. UNOB0020 entry with detection-limit caveat present. ✓
  • spec/057 Correction block — Records that WINAPPSDK_PACKAGED is SDK-emitted public surface; the "repo-grep" test doesn't apply to it. ✓

All prior findings — resolved

Finding Pass Status
Dangling ElementName=TestNativeDatePickerFlyout 2026-08-15 Resolved — 37e549be
ComboBoxTests_Fullscreen_Popup_iOS stale "Units1" 2026-08-20 Resolved — a8cdaae6
When_Padding_Is_Changed_… stale misses reads 2026-08-20 Resolved — a8cdaae6
iOS/tvOS prefix lists in CSGenerator.cs 2026-08-22 Resolved — 417d2c3e
mc:Ignorable lists undeclared prefixes 2026-08-24 Resolved — 6e9643c0
not_android:/not_wasm: dead in framework XAML 2026-08-24 Resolved — a25c3a88, 1610ff7b
XAMARIN retirement 2026-08-24 Resolved — b8799a63
win/not_win retirement notice in docs 2026-08-24 Resolved — b2264125
Orphaned effective-viewport ReconfigureViewportPropagationPartial 2026-08-24 Resolved — 6d9541da
CommandBarExtensions missing ValueInheritsDataContext 2026-08-24 Resolved — 27eb380a
WINAPPSDK_PACKAGED incorrectly removed 2026-08-24 Resolved — 27eb380a
CookieManagerTests incorrectly removed 2026-08-24 Resolved — 961b4692

Screenshot diffs (73 linux / 182–193 windows — stable)

Linux count (73) has been stable across all CI runs. Windows count has settled in the 178–193 range. Both are consistent with expected sample removals; the new baselines should be accepted before merge.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24088/wasm-skia-net9/index.html

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-24088/docs/index.html

The runtime-asset-selector tests were written while the WinRT layer still
shipped as Uno.dll. RuntimeAssetsSelectorTask now recognises the layer by
"uno.winrt", so the fixture's Uno.dll was no longer treated as a WinRT
assembly and stayed on the Skia runtime instead of being swapped for the
platform implementation, failing all three assertions that check the swap.

Only the assembly name moves; the package is already Uno.WinRT.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KvtjrJRTUBs5bhK6sXeaCe

github-actions Bot commented Aug 24, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @MartinZikmund's task in 3m 35s —— View job


Review Complete

  • Gather context: identify new commits since last review
  • Review: new commit 84265c8e
  • Check: outstanding findings from prior passes — all resolved
  • Post inline comments — none warranted
  • Write summary

Summary

Verdict: ship. The single new commit since the 2026-08-24 18:56 review is a clean test fix. No new issues; all prior findings remain resolved.


New commit 84265c8e — correct

test(build): Follow the WinRT assembly rename in the selector tests

The three tests in Given_RuntimeEnabledPackage.cs were written when the WinRT layer assembly was named Uno.dll, but RuntimeAssetsSelectorTask.IsWinRTAssembly (line 238) now recognises it as "uno.winrt" (case-insensitive). With the old name in the fixture, the task's IsWinRTAssembly("Uno") returned false, so no WinRT swap occurred, and every assertion that checked for the swap was failing.

The fix is a precise rename:

  • WinRTAssemblies = ["Uno", ...] → ["Uno.WinRT", ...] — the fixture now creates Uno.WinRT.dll assets on disk
  • All three fixture paths updated: Uno.dll → Uno.WinRT.dll
  • The NotContain assertion at line 90 updated to match

After the fix, IsWinRTAssembly("Uno.WinRT") returns true, the task swaps correctly, and all assertions reflect the actual task behavior. The other two names in the array (Uno.Foundation, Uno.UI.Dispatching) are already present in the is pattern and were never affected.


All prior findings — resolved

Finding Pass Status
Dangling ElementName=TestNativeDatePickerFlyout 2026-08-15 Resolved — 37e549be
ComboBoxTests_Fullscreen_Popup_iOS stale "Units1" 2026-08-20 Resolved — a8cdaae6
When_Padding_Is_Changed_… stale misses reads 2026-08-20 Resolved — a8cdaae6
iOS/tvOS prefix lists in CSGenerator.cs 2026-08-22 Resolved — 417d2c3e
mc:Ignorable lists undeclared prefixes 2026-08-24 Resolved — 6e9643c0
not_android:/not_wasm: dead in framework XAML 2026-08-24 Resolved — a25c3a88, 1610ff7b
XAMARIN retirement 2026-08-24 Resolved — b8799a63
win/not_win retirement notice in docs 2026-08-24 Resolved — b2264125
Orphaned effective-viewport ReconfigureViewportPropagationPartial 2026-08-24 Resolved — 6d9541da
CommandBarExtensions missing ValueInheritsDataContext 2026-08-24 Resolved — 27eb380a
WINAPPSDK_PACKAGED incorrectly removed 2026-08-24 Resolved — 27eb380a
CookieManagerTests incorrectly removed 2026-08-24 Resolved — 961b4692

Screenshot diffs (73 linux / 182 windows — stable)

Linux count (73) has been stable across all CI runs. Windows count has settled at ~178–193. Both are consistent with expected sample removals from this PR. The new baselines should be accepted before merge.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-24088/wasm-skia-net9/index.html

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-24088/docs/index.html

Copy link
Copy Markdown
Contributor

The build 229858 found UI Test snapshots differences: skia-linux-screenshots: 73, skia-windows-screenshots: 264

Details
  • skia-linux-screenshots: 73 changed over 2366

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • DisplayInformation.png-dark
    • DisplayInformation.png
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Buttons.png
    • CalendarView_Theming.png-dark
    • ClipboardTests.png-dark
    • ClipboardTests.png
    • DropDownButtonPage.png-dark
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • ImageBrush_Stretch.png
    • Image_Margin_Large.png
    • ImageIconPage.png-dark
    • ImageIconPage.png
    • ContentControl_Inheritance.png
    • ElementLevelTheme.png-dark
  • skia-windows-screenshots: 264 changed over 2368

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • Battery.png-dark
    • ChatBox.png-dark
    • ChatBox.png
    • Contacts_Pick.png-dark
    • Contacts_Pick.png
    • DataTransferManager.png-dark
    • DataTransferManager.png
    • CompositionPath.png-dark
    • CompositionPath.png
    • DamageRegion_ShadowChildShape.png-dark
    • DamageRegion_ShadowChildShape.png
    • DamageRegion_SmallUpdate.png-dark
    • DamageRegion_SmallUpdate.png
    • Grid_with_Text_VerticalAlignment_With_Margin.png-dark
    • CalendarView_Theming.png-dark
    • CalendarView_Theming.png
    • Display.DisplayRequest.png-dark
    • Display.DisplayRequest.png
    • FileOpenPickerTests.png-dark
    • FileOpenPickerTests.png

mergify Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

MartinZikmund merged commit 88320e9 into feature/breakingchanges Aug 24, 2026
56 checks passed
MartinZikmund deleted the dev/mazi/constants-cleanup branch August 24, 2026 21:59
MartinZikmund added a commit that referenced this pull request Aug 25, 2026
The browserwasm head defines __WASM__ once it imports the Skia browser
runtime's build assets, and the samples now compile into the head, so code
written for the native WebAssembly backend is being compiled for the first
time in years.

#24088 removed the wasm-only elements from the TextBlock samples' XAML but
left the #if __WASM__ code-behind writing measure-cache metrics into them, so
those blocks now reference names the XAML no longer defines. The same applies
to UnitTestsPage's keep-alive for SamplesApp.UnitTests.TSBindings.TSBindingsTests,
a type that no longer exists anywhere. Drop all of them, along with the usings
that only served them.

Wasm_CustomEvent drives the DOM directly - UIElement.HtmlId,
RegisterHtmlEventHandler and a document.getElementById script - which 7.0
removes with the native backend. Excluded through ItemExclusions.props rather
than deleted, per the samples convention: SamplesApp.UITests still carries six
tests against it, and retiring the sample and those together is a separate call.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018tXCT4FVUg5GzGg67LfrRW
MartinZikmund added a commit that referenced this pull request Aug 28, 2026
The browserwasm head defines __WASM__ once it imports the Skia browser
runtime's build assets, and the samples now compile into the head, so code
written for the native WebAssembly backend is being compiled for the first
time in years.

#24088 removed the wasm-only elements from the TextBlock samples' XAML but
left the #if __WASM__ code-behind writing measure-cache metrics into them, so
those blocks now reference names the XAML no longer defines. The same applies
to UnitTestsPage's keep-alive for SamplesApp.UnitTests.TSBindings.TSBindingsTests,
a type that no longer exists anywhere. Drop all of them, along with the usings
that only served them.

Wasm_CustomEvent drives the DOM directly - UIElement.HtmlId,
RegisterHtmlEventHandler and a document.getElementById script - which 7.0
removes with the native backend. Excluded through ItemExclusions.props rather
than deleted, per the samples convention: SamplesApp.UITests still carries six
tests against it, and retiring the sample and those together is a separate call.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018tXCT4FVUg5GzGg67LfrRW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure area/code-generation Categorizes an issue or PR as relevant to code generation area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/solution-templates Categorizes an issue or PR as relevant to the solution template kind/documentation platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/x11 🐧 Categorizes an issue or PR as relevant to X11

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants


Back | FazBrowse Home | New Git URL