Skip to content

[main] Remove accidental net11 changes from #37995 - #38155

Merged
kubaflo merged 1 commit into
mainfrom
kubaflo-retarget-listview-cleanup
Sep 3, 2026
Merged

kubaflo merged 1 commit into
mainfrom
kubaflo-retarget-listview-cleanup

Conversation

@kubaflo

@kubaflo kubaflo commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Root Cause

PR #37995 was opened from a branch containing the net11.0 branch history. Although the PR targeted main, GitHub squashed all 100 commits in that branch into the merge commit, introducing changes across 3,272 files.

Description of Change

Validation

  • compared the corrected tree with the parent of Tests: remove dedicated ListView coverage #37995; its 242 changed paths exactly match the intended ListView cleanup plus the two subsequent legitimate main commits
  • confirmed no remaining UITestCategories.ListView or TestCategory.ListView references
  • parsed eng/pipelines/common/ui-tests.yml successfully

Restore main to its pre-merge content while retaining only the intended ListView test cleanup from #37995.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3391bd85-62d2-4de0-84c7-5952156ea5bb
Copilot AI lite review requested due to automatic review settings September 3, 2026 11:25
@kubaflo
kubaflo temporarily deployed to copilot-pat-pool September 3, 2026 11:25 — with GitHub Actions Inactive
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 38155

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 38155"

@kubaflo
kubaflo temporarily deployed to copilot-pat-pool September 3, 2026 11:25 — with GitHub Actions Inactive
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Skill Validation Results

@kubaflo — new skill validation results are available based on this last commit: f06a85c.
To request a fresh validation after new comments or commits, comment /evaluate-skills.

Overall Needs attention Static Passed LLM Needs attention Skills 24 Agents 6

⚠️ Skill Validation Results — f06a85c · [main] Remove accidental net11 changes from #37995 · 2026-09-03T11:28:05Z

✅ Static Checks Passed

Skills: 24 | Eval specs linted: 16

Full lint output
── .github/skills/agentic-labeler/tests/eval.vally.yaml
Vally collects pseudonymous usage telemetry (command name, version, outcome, duration, persistent device identifier (when available), and coarse OS/runtime info) to improve the product. No prompts, datasets, file paths, or arguments are collected.
Opt out any time by setting VALLY_TELEMETRY_OPTOUT=1 or DO_NOT_TRACK=1.
Learn more: https://aka.ms/vally/telemetry
✔ .github/skills/agentic-labeler/tests/eval.vally.yaml is valid
── .github/skills/analyze-sessions/tests/eval.vally.yaml
✔ .github/skills/analyze-sessions/tests/eval.vally.yaml is valid
── .github/skills/ci-fix/tests/eval.ownership.vally.yaml
✔ .github/skills/ci-fix/tests/eval.ownership.vally.yaml is valid
── .github/skills/ci-fix/tests/eval.vally.yaml
✔ .github/skills/ci-fix/tests/eval.vally.yaml is valid
── .github/skills/code-review/tests/eval.inline-findings.vally.yaml
✔ .github/skills/code-review/tests/eval.inline-findings.vally.yaml is valid
── .github/skills/code-review/tests/eval.producer-trace.vally.yaml
✔ .github/skills/code-review/tests/eval.producer-trace.vally.yaml is valid
── .github/skills/code-review/tests/eval.trim-aot.vally.yaml
✔ .github/skills/code-review/tests/eval.trim-aot.vally.yaml is valid
── .github/skills/code-review/tests/eval.vally.yaml
✔ .github/skills/code-review/tests/eval.vally.yaml is valid
── .github/skills/code-review/tests/hermeticity.vally.yaml
✔ .github/skills/code-review/tests/hermeticity.vally.yaml is valid
── .github/skills/code-review/tests/soak.capability.vally.yaml
✔ .github/skills/code-review/tests/soak.capability.vally.yaml is valid
── .github/skills/evaluate-pr-tests/tests/eval.vally.yaml
✔ .github/skills/evaluate-pr-tests/tests/eval.vally.yaml is valid
── .github/skills/pr-review/tests/eval.gh-auth.vally.yaml
✔ .github/skills/pr-review/tests/eval.gh-auth.vally.yaml is valid
── .github/skills/try-fix/tests/eval.restore.vally.yaml
✔ .github/skills/try-fix/tests/eval.restore.vally.yaml is valid
── .github/skills/try-fix/tests/eval.vally.yaml
✔ .github/skills/try-fix/tests/eval.vally.yaml is valid
── .github/skills/verify-tests-fail-without-fix/tests/eval.protocol.vally.yaml
✔ .github/skills/verify-tests-fail-without-fix/tests/eval.protocol.vally.yaml is valid
── .github/skills/verify-tests-fail-without-fix/tests/eval.vally.yaml
✔ .github/skills/verify-tests-fail-without-fix/tests/eval.vally.yaml is valid

⚠️ LLM Evaluation Incomplete

No valid JUnit suite results were found for: verify-tests-fail-without-fix.

🔍 Full results and investigation steps

@kubaflo
kubaflo temporarily deployed to copilot-pat-pool September 3, 2026 11:30 — with GitHub Actions Inactive
@kubaflo
kubaflo temporarily deployed to copilot-pat-pool September 3, 2026 11:31 — with GitHub Actions Inactive
@github-actions github-actions Bot added area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions platform/android platform/ios platform/macos macOS / Mac Catalyst platform/windows labels Sep 3, 2026
@kubaflo

kubaflo commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

@dalexsoto stamp

@kubaflo
kubaflo temporarily deployed to copilot-pat-pool September 3, 2026 11:32 — with GitHub Actions Inactive

@dalexsoto dalexsoto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stamping as requested by @kubaflo; no code review performed.

@kubaflo
kubaflo merged commit 7a2ed62 into main Sep 3, 2026
18 of 33 checks passed
@kubaflo
kubaflo deleted the kubaflo-retarget-listview-cleanup branch September 3, 2026 11:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The PR is a very large cross-cutting revert and includes multiple confirmed runtime/CI-breaking issues (null-safety regressions and exit-code propagation).

Pull request overview

This PR aims to remove unintended net11.0-branch payload that was accidentally merged into main via #37995, while preserving the intended dedicated ListView test cleanup and subsequent legitimate main changes.

Changes:

  • Adjusts numerous source, test, and build/pipeline files to align main back to the expected baseline after the accidental net11.0 history merge.
  • Updates templates and samples (XAML headers/xmlns, host options, minor behavior tweaks) as part of restoring the corrected tree state.
  • Removes/reclassifies various test artifacts and supporting infrastructure impacted by the accidental merge.
File summaries
File Description
src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json Adds Controls.Compatibility to workload manifest
src/TestUtils/src/DeviceTests.Runners/VisualRunner/DeviceRunner.cs Removes obsolete-warning pragmas around XamlCompilation
src/Templates/src/templates/maui-window-xaml/NewWindow1.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-resourcedictionary-xaml/Dictionary1.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-mobile/Resources/Styles/Colors.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-mobile/AppShell.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-mobile/App.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-mobile/.template.config/ide.host.json Removes hidden Avalonia-related options
src/Templates/src/templates/maui-contentview-xaml/NewContent1.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-contentpage-xaml/NewPage1.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-blazor/MainPage.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-blazor/Components/Layout/NavMenu.razor.js Removes nav toggle JS file
src/Templates/src/templates/maui-blazor/App.xaml Adds XML header + xmlns declarations
src/Templates/src/templates/maui-blazor/.template.config/dotnetcli.host.json Adds hidden Empty parameter
src/Templates/src/templates/maui-blazor-solution/MauiApp.1.Web/Components/Layout/ReconnectModal.razor.js Changes reconnect fallback behavior to reload
src/Templates/src/templates/maui-blazor-solution/.template.config/dotnetcli.host.json Adds hidden Empty parameter
src/Microsoft.Maui.TestUtils.DeviceTests.Runners.props Removes MauiTestProject property
src/Graphics/src/Graphics/Graphics.csproj Sets IsTrimmable to false
src/Essentials/test/DeviceTests/EssentialsStaticStateCollection.cs Removes xUnit collection definition
src/Essentials/src/Vibration/Vibration.shared.cs Simplifies Default implementation initialization
src/Essentials/src/Types/Location.shared.cs Removes Location TypeConverter attribute
src/Essentials/src/TextToSpeech/TextToSpeech.tizen.cs Adjusts locale/language selection logic
src/Essentials/src/Share/Share.shared.cs Simplifies Default implementation initialization
src/Essentials/src/SecureStorage/SecureStorage.android.cs Makes helper method static
src/Essentials/src/Permissions/Permissions.macos.cs Changes Info.plist key lookup logic
src/Essentials/src/NativeMethods.txt Removes native methods text list
src/Essentials/src/NativeMethods.json Removes CsWin32 config file
src/Essentials/src/Geocoding/Geocoding.tizen.cs Changes implementation interface
src/Essentials/src/Email/Email.shared.cs Simplifies Default implementation initialization
src/Essentials/src/DeviceInfo/DeviceInfo.shared.cs Simplifies Current implementation initialization
src/Essentials/src/Contacts/Contacts.shared.cs Simplifies Default implementation initialization
src/Essentials/src/Compass/Compass.shared.cs Simplifies Default implementation initialization
src/Essentials/src/Browser/Browser.shared.cs Simplifies Default implementation initialization
src/Essentials/src/AppInfo/AppInfo.windows.cs Inlines package name computation
src/Essentials/src/AppInfo/AppInfo.tizen.cs Inlines package name computation
src/Essentials/src/AppInfo/AppInfo.shared.cs Simplifies Current implementation initialization
src/Essentials/src/AppInfo/AppInfo.netstandard.cs Removes unused helper
src/Essentials/src/AppInfo/AppInfo.android.cs Inlines package name computation
src/Essentials/samples/Samples/View/PasskeysPage.xaml.cs Removes PasskeysPage code-behind
src/Essentials/samples/Samples/Platforms/MacCatalyst/Info.plist Removes a comment line
src/Essentials/samples/Samples/Platforms/Android/AndroidManifest.xml Removes POST_NOTIFICATIONS permission
src/Essentials/samples/Samples/App.xaml.cs Removes obsolete-warning pragmas around XamlCompilation
src/Essentials/samples/Samples/.gitignore Removes passkeys-local ignore rules
src/Essentials/samples/Samples.Server.Passkeys/appsettings.json Removes server appsettings
src/Core/tests/UnitTests/MainThreadStaticStateCollection.cs Removes xUnit collection definition
src/Core/tests/UnitTests/Hosting/HostBuilderServicesTests.cs Switches to string-named collection
src/Core/tests/DeviceTests/TestCategory.cs Removes Lifecycle category constant
src/Core/tests/DeviceTests/Services/EssentialsStaticStateCollection.cs Removes xUnit collection definition
src/Core/tests/DeviceTests/Core.DeviceTests.csproj Lowers Android SupportedOSPlatformVersion
src/Core/tests/DeviceTests.Shared/Stubs/WindowStub.cs Removes StatusBarTheme from stub
src/Core/tests/DeviceTests.Shared/Stubs/ContextStub.cs Removes Android Activity service stub
src/Core/src/Platform/Windows/TextBlockExtensions.cs Changes LineHeight update behavior
src/Core/src/Platform/Windows/MauiPasswordTextBox.cs Makes AutomationPeer internal (NET11 TODO)
src/Core/src/Platform/iOS/MauiWebViewNavigationDelegate.cs Changes URL extraction for navigating callback
src/Core/src/Platform/iOS/MauiTextView.cs Adjusts placeholder font assignment
src/Core/src/Platform/iOS/LabelExtensions.cs Removes obsolete-warning pragmas
src/Core/src/Platform/iOS/Culture.cs Adjusts country code nullability
src/Core/src/Platform/iOS/ButtonExtensions.cs Makes UpdateBackground internal (NET11 TODO)
src/Core/src/Platform/iOS/AttributedStringExtensions.cs Removes null-forgiving operator
src/Core/src/Platform/Android/MauiMaterialTimePicker.cs Makes type internal (NET11 TODO)
src/Core/src/Platform/Android/MauiMaterialContextThemeWrapper.cs Makes type internal
src/Core/src/Platform/Android/MauiHybridWebViewClient.cs Adds trimming/dynamic-code attributes
src/Core/src/Platform/Android/MaterialActivityIndicator.cs Makes type internal (NET11 TODO)
src/Core/src/Platform/Android/Material3Controls/MauiMaterialTextView.cs Makes type internal (NET11 TODO)
src/Core/src/Platform/Android/Material3Controls/MauiMaterialDatePicker.cs Makes type internal (NET11 TODO)
src/Core/src/ImageSources/ImageSourcePaint.cs Removes interface implementation
src/Core/src/Handlers/Window/WindowHandler.cs Removes StatusBarTheme mapping
src/Core/src/Handlers/WebView/WebViewHandler.Windows.cs Makes MapBackground internal (NET11 TODO)
src/Core/src/Handlers/WebView/WebViewHandler.cs Adds Android mapper entries for clients
src/Core/src/Handlers/View/ViewHandlerOfT.cs Removes generic handler interface from base list
src/Core/src/Handlers/View/ViewHandler.iOS.cs Removes connect-time safe-area guard
src/Core/src/Handlers/Switch/SwitchHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Stepper/StepperHandler.iOS.cs Makes MapFlowDirection internal (NET11 TODO)
src/Core/src/Handlers/ShapeView/ShapeViewHandler.cs Makes MapFlowDirection internal (NET11 TODO)
src/Core/src/Handlers/SearchBar/SearchBarHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/RadioButton/RadioButtonHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/ProgressBar/ProgressBarHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Picker/PickerHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Picker/PickerHandler.Android.cs Reduces dialog field visibility
src/Core/src/Handlers/Layout/LayoutHandler.cs Removes generic handler interface from base list
src/Core/src/Handlers/Label/LabelHandler.Android.cs Makes LabelHandler2 internal (NET11 TODO)
src/Core/src/Handlers/Image/ImageHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Entry/EntryHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Element/ElementHandlerOfT.cs Removes generic handler interface from base list
src/Core/src/Handlers/Editor/EditorHandler2.Android.cs Makes handler internal (NET11 TODO)
src/Core/src/Handlers/Button/ButtonHandler.iOS.cs Makes MapBackground internal (NET11 TODO)
src/Core/src/Handlers/ActivityIndicator/ActivityIndicatorHandler.Android.cs Makes ActivityIndicatorHandler2 internal (NET11 TODO)
src/Core/src/ActivationState.cs Adjusts persisted-state extraction logic
src/Core/maps/src/Properties/AssemblyInfo.cs Removes InternalsVisibleTo assembly attribute
src/Core/maps/src/Handlers/MapPin/MapPinHandler.Tizen.cs Removes MapImageSource stub
src/Core/maps/src/Handlers/MapPin/MapPinHandler.Standard.cs Removes MapImageSource stub
src/Core/maps/src/Handlers/MapPin/MapPinHandler.cs Removes ImageSource mapping from mapper
src/Controls/tests/Xaml.UnitTests/AssemblyInfoTests.cs Fixes expected assembly major version
src/Controls/tests/Xaml.Benchmarks/Program.cs Removes SourceGen_NoLazyRD benchmark
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33407.cs Adjusts screenshot capture parameters
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue32983.cs Removes per-test reset override
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue28604.cs Removes tolerance/retry from screenshot
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue20288.cs Removes internet connectivity guard
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue18896.cs Reduces screenshot retry timeout
src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/_GalleryUITest.cs Removes ready-element usage on gallery navigation
src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/EntryFeatureTests.cs Removes iOS keyboard assertion before screenshot
src/Controls/tests/TestCases.HostApp/MauiProgram.cs Removes Issue34392 handler registration
src/Controls/tests/TestCases.HostApp/Issues/Issue32983.cs Switches CollectionView2 to CollectionView
src/Controls/tests/TestCases.HostApp/FeatureMatrix/Slider/SliderControlPage.xaml Removes AutomationId from SliderGrid
src/Controls/tests/SourceGen.UnitTests/XamlHotReloadTestsCollection.cs Removes xUnit collection definition
src/Controls/tests/DeviceTests/Xaml/RadioButtonUsing.xaml.cs Removes obsolete-warning pragmas around XamlCompilation
src/Controls/tests/DeviceTests/TestCategory.cs Normalizes Map category constant
src/Controls/tests/DeviceTests/Elements/Toolbar/ToolbarTests.cs Adds NavigationRenderer alias import
src/Controls/tests/DeviceTests/Elements/CarouselView/CarouselViewTests.iOS.cs Removes delay before GC assertions
src/Controls/tests/DeviceTests/ControlsHandlerTestBase.Android.cs Removes override-ability of helper
src/Controls/tests/Core.UnitTests/Layouts/LayoutTests.cs Broadens NSubstitute service matching
src/Controls/tests/Core.UnitTests/Gestures/TapGestureRecognizerTests.cs Removes null-sender guard test
src/Controls/src/SourceGen/AnalyzerReleases.Unshipped.md Removes analyzer release entry
src/Controls/src/Core/StreamWrapper.cs Switches warning logging to ILogger (via MauiContext)
src/Controls/src/Core/SearchBar/SearchBar.Android.cs Makes Material3 overload internal (NET11 TODO)
src/Controls/src/Core/Platform/Tizen/GestureDetector.cs Removes LongPress handler mapping
src/Controls/src/Core/Platform/iOS/DragAndDropDelegate.cs Switches warning logging to ILogger (via MauiContext)
src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Tizen.cs Changes interface implemented to IDisposable
src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Standard.cs Changes interface implemented to IDisposable
src/Controls/src/Core/Platform/Android/DragAndDropGestureHandler.cs Switches warning logging to ILogger (via MauiContext)
src/Controls/src/Core/Platform/AlertManager/AlertManager.Windows.cs Updates obsolete TODO comment wording
src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs Updates obsolete TODO comment wording
src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs Updates obsolete TODO comment wording
src/Controls/src/Core/LegacyLayouts/Layout.cs Removes cached InvalidationEventArgs usage
src/Controls/src/Core/Layout/Layout.cs Updates SafeAreaEdges default-value docs
src/Controls/src/Core/Label/Label.iOS.cs Always maps formatting (removes connect guard)
src/Controls/src/Core/Internals/ICache.cs Removes internal ICache interface
src/Controls/src/Core/Editor/Editor.Android.cs Makes Material3 overload internal (NET11 TODO)
src/Controls/src/Core/ContentPage/ContentPage.cs Updates SafeAreaEdges default-value docs
src/Controls/src/Core/Compatibility/Android/FontNamedSizeService.cs Switches warning logging to ILogger (via MauiContext)
src/Controls/src/Core/CheckBox/CheckBox.cs Adds ElementHandler attribute
src/Controls/samples/Controls.Sample/Properties/launchSettings.json Changes Windows profile commandName
src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTimePickerPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSPickerPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSDatePickerPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidTitleViewPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Others/TemplatePage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Layouts/ScrollViewPages/ScrollViewTemplatePage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Core/WindowTitleBar.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Core/SemanticsPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Core/ApplicationControlPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Controls/ShapesPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Controls/ProgressBarPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Controls/MapsGalleries/PolygonsGallery.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Controls/CollectionViewGalleries/ExampleTemplates.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/Controls/CheckBoxPage.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Pages/AppShell.xaml.cs Makes sender non-nullable
src/Controls/samples/Controls.Sample/Main.razor Sets PreferExactMatches on Router
src/Controls/samples/Controls.Sample.Sandbox/MainPage.xaml Adds xmlns declarations
src/Controls/samples/Controls.Sample.Profiling/Startup.cs Adds XamlCompilation assembly attribute
src/Controls/Maps/src/HandlerImpl/Pin.Impl.cs Removes explicit IMapPin.ImageSource impl
src/Controls/Maps/src/HandlerImpl/MapElement.Impl.cs Removes explicit Clicked impl
src/Compatibility/Material/src/iOS/IMaterialEntryRenderer.cs Adds new Material iOS interface
src/Compatibility/Material/src/iOS/FormsMaterial.cs Adds FormsMaterial.Init entry point
src/Compatibility/Material/src/Android/Resources/values-v21/styles.xml Adds Android v21 styles resource
src/Compatibility/Material/src/Android/Resources/color/white_disabled_material.xml Adds color selector resource
src/Compatibility/Material/src/Android/Resources/color-v23/white_disabled_material.xml Adds v23 color selector resource
src/Compatibility/Maps/src/WPF/Properties/Settings.settings Adds WPF Settings.settings
src/Compatibility/Maps/src/WPF/Properties/AssemblyInfo.cs Adds WPF renderer export assembly info
src/Compatibility/Maps/src/Windows/Properties/AssemblyInfo.cs Adds Windows/UWP assembly info stub
src/Compatibility/Maps/src/Windows/Directory.Build.targets Adds Windows build target imports
src/Compatibility/Maps/src/Windows/Directory.Build.Props Adds Windows build props imports
src/Compatibility/Maps/src/Tizen/Properties/AssemblyInfo.cs Adds Tizen renderer export assembly info
src/Compatibility/Maps/src/MacOS/Properties/AssemblyInfo.cs Adds macOS renderer export assembly info
src/Compatibility/Maps/src/iOS/Properties/AssemblyInfo.cs Adds iOS renderer export assembly info
src/Compatibility/Maps/src/GTK/Location.cs Adds GTK location model
src/Compatibility/Core/tests/iOS/Properties/AssemblyInfo.cs Adds Preserve attribute for tests
src/Compatibility/Core/tests/Compatibility.UnitTests/ButtonHandlerStub.cs Adds handler stub for compatibility tests
src/Compatibility/Core/tests/Android/Resources/values/styles.xml Adds Android styles for tests
src/Compatibility/Core/tests/Android/Properties/AssemblyInfo.cs Adds Preserve attribute for tests
src/Compatibility/Core/src/WPF/PlatformEffect.cs Adds WPF PlatformEffect type
src/Compatibility/Core/src/WPF/ICellRenderer.cs Adds WPF ICellRenderer
src/Compatibility/Core/src/WPF/Controls/FormsElementIcon.cs Adds WPF FormsElementIcon control
src/Compatibility/Core/src/WPF/Controls/FormsContentPage.cs Adds WPF FormsContentPage control
src/Compatibility/Core/src/Windows/WindowsPlatform.cs Adds obsolete WindowsPlatform wrapper
src/Compatibility/Core/src/Windows/Win2DNotImplementedException.cs Adds Win2D NotImplemented exception
src/Compatibility/Core/src/Windows/ViewToRendererConverter.cs Adds Windows ViewToRendererConverter
src/Compatibility/Core/src/Windows/IVisualNativeElementRenderer.cs Adds Windows renderer interface
src/Compatibility/Core/src/Windows/IToolbarProvider.cs Adds toolbar provider interface
src/Compatibility/Core/src/Windows/IToolBarForegroundBinder.cs Adds toolbar foreground binder interface
src/Compatibility/Core/src/Windows/ITitleViewProvider.cs Adds title view provider interface
src/Compatibility/Core/src/Windows/ITitleProvider.cs Adds title provider interface
src/Compatibility/Core/src/Windows/ITitleIconProvider.cs Adds title icon provider interface
src/Compatibility/Core/src/Windows/IImageVisualElementRenderer.cs Adds image renderer interface
src/Compatibility/Core/src/Windows/Flags.cs Adds compatibility Flags stub
src/Compatibility/Core/src/Windows/Directory.Build.targets Adds Windows build target imports
src/Compatibility/Core/src/Windows/Directory.Build.Props Adds Windows build props imports
src/Compatibility/Core/src/Windows/DefaultRenderer.cs Adds obsolete DefaultRenderer
src/Compatibility/Core/src/Tizen/VisualElementRendererFlags.cs Adds Tizen renderer flags enum
src/Compatibility/Core/src/Tizen/TizenTitleBarVisibility.cs Adds Tizen title bar visibility enum
src/Compatibility/Core/src/Tizen/Renderers/ILayoutRenderer.cs Adds obsolete Tizen layout renderer interface
src/Compatibility/Core/src/Tizen/Properties/AssemblyInfo.cs Adds Preserve + InternalsVisibleTo
src/Compatibility/Core/src/Tizen/Flags.cs Adds Tizen compatibility flags
src/Compatibility/Core/src/Tizen/EmbeddedFontLoader.cs Adds Tizen compatibility embedded font loader
src/Compatibility/Core/src/MacOS/Renderers/DefaultRenderer.cs Adds macOS DefaultRenderer
src/Compatibility/Core/src/MacOS/Controls/ScrollViewScrollChangedEventArgs.cs Adds macOS scroll changed args
src/Compatibility/Core/src/MacOS/Cells/NSTableViewCellStyle.cs Adds macOS cell style enum
src/Compatibility/Core/src/iOS/Renderers/ElementSelectedEventArgs.cs Adds iOS ElementSelectedEventArgs
src/Compatibility/Core/src/iOS/Properties/AssemblyInfo.cs Adds InternalsVisibleTo + metadata
src/Compatibility/Core/src/iOS/iOSAppIndexingProvider.cs Adds iOS app indexing provider
src/Compatibility/Core/src/iOS/Flags.cs Adds iOS compatibility Flags stub
src/Compatibility/Core/src/iOS/CollectionView/ILoopItemsViewSource.cs Adds iOS loop source interface
src/Compatibility/Core/src/iOS/_IsIncrementalBuild Adds incremental build marker file
src/Compatibility/Core/src/GTK/webkit-sharp.dll.config Adds GTK dllmap config
src/Compatibility/Core/src/GTK/Renderers/IToolbarTracker.cs Adds GTK toolbar tracker interface
src/Compatibility/Core/src/GTK/Renderers/IPageControl.cs Adds GTK page control interface
src/Compatibility/Core/src/GTK/RendererFactory.cs Adds GTK renderer factory
src/Compatibility/Core/src/GTK/PlatformRenderer.cs Adds GTK platform renderer
src/Compatibility/Core/src/GTK/PlatformEffect.cs Adds GTK PlatformEffect
src/Compatibility/Core/src/GTK/PlatformConfigurationExtensions.cs Adds GTK platform config extensions
src/Compatibility/Core/src/GTK/Libs/webkit-sharp/README.txt Adds upstream link reference
src/Compatibility/Core/src/GTK/Libs/gtk-sharp/README.txt Adds upstream link reference
src/Compatibility/Core/src/GTK/IVisualNativeElementRenderer.cs Adds GTK native renderer interface
src/Compatibility/Core/src/GTK/IDesiredSizeProvider.cs Adds GTK desired size provider
src/Compatibility/Core/src/GTK/Extensions/GtkRectangleExtensions.cs Adds GTK rectangle extensions
src/Compatibility/Core/src/GTK/ExportImageSourceHandlerAttribute.cs Adds GTK export attribute
src/Compatibility/Core/src/GTK/ExportCellAttribute.cs Adds GTK export attribute
src/Compatibility/Core/src/GlobalNamespaces.cs Adds global using declarations
src/Compatibility/Core/src/AppHostBuilderExtensions.Standard.cs Adds compatibility lifecycle hook stub
src/Compatibility/Core/src/Android/VisualElementRendererFlags.cs Adds Android renderer flags enum
src/Compatibility/Core/src/Android/ViewInitializedEventArgs.cs Adds Android view initialized args
src/Compatibility/Core/src/Android/Renderers/ObjectJavaBox.cs Adds Java boxing helper
src/Compatibility/Core/src/Android/Renderers/IPopupTrigger.cs Adds popup trigger interface
src/Compatibility/Core/src/Android/Renderers/IImageSourceHandler.cs Adds image source handler interface
src/Compatibility/Core/src/Android/Renderers/IDescendantFocusToggler.cs Adds focus toggler interface
src/Compatibility/Core/src/Android/Renderers/ElementSelectedEventArgs.cs Adds Android ElementSelectedEventArgs
src/Compatibility/Core/src/Android/OnMeasureDelegate.cs Adds on-measure delegate
src/Compatibility/Core/src/Android/OnLayoutDelegate.cs Adds on-layout delegate
src/Compatibility/Core/src/Android/IStepperRenderer.cs Adds stepper renderer interface
src/Compatibility/Core/src/Android/IPlatformLayout.cs Adds platform layout interface
src/Compatibility/Core/src/Android/IPickerRenderer.cs Adds picker renderer interface
src/Compatibility/Core/src/Android/ILayoutChanges.cs Adds layout changes interface
src/Compatibility/Core/src/Android/IDeviceInfoProvider.cs Adds device info provider interface
src/Compatibility/Core/src/Android/IButtonLayoutRenderer.cs Adds button layout renderer interface
src/Compatibility/Core/src/Android/GetDesiredSizeDelegate.cs Adds desired-size delegate
src/Compatibility/Core/src/Android/Flags.cs Adds Android compatibility flags
src/Compatibility/Core/src/Android/AppCompat/CheckBoxRenderer.cs Adds obsolete AppCompat renderer wrapper
src/Compatibility/Core/src/Android/AndroidTitleBarVisibility.cs Adds Android title bar visibility enum
src/Compatibility/Core/src/Android/AndroidApplicationLifecycleState.cs Adds Android lifecycle state enum
src/BlazorWebView/src/SharedSource/WebView2WebViewManager.cs Changes WebView2 control type alias
src/BlazorWebView/src/SharedSource/Log.cs Removes a LoggerMessage entry
Microsoft.Maui.BuildTasks.slnf Removes HybridWebViewSourceGen project reference
eng/Tools.props Removes SkipInitInternalTooling guard
eng/pipelines/device-tests.yml Switches tfm default to net10.0
eng/pipelines/common/sdk-insertion.yml Updates comment about nuget drop source
eng/pipelines/common/device-tests-steps.yml Sets useCoreClr default false
eng/pipelines/ci-copilot.yml Hardcodes mac pool ImageOverride demand
eng/devices/devices-shared.cake Defaults targetFrameworkVersion to net10.0
eng/common/templates/vmr-build-pr.yml Adjusts VMR repo endpoint configuration
eng/common/templates/variables/pool-providers.yml Updates commented windows image demand
eng/common/templates/steps/component-governance.yml Adds wrapper template for component governance
eng/common/templates/jobs/codeql-build.yml Adds wrapper template for CodeQL build
eng/common/templates-official/variables/sdl-variables.yml Adds SDL variable definitions
eng/common/templates-official/variables/pool-providers.yml Updates commented windows pool image
eng/common/templates-official/steps/publish-pipeline-artifacts.yml Tweaks sbomEnabled condition and drops isProduction
eng/common/templates-official/steps/component-governance.yml Adds official wrapper for component governance
eng/common/templates-official/jobs/codeql-build.yml Adds official wrapper for CodeQL build
eng/common/sdl/packages.config Adds Guardian CLI package reference
eng/common/sdk-task.sh Updates help text for task directory name
eng/common/post-build/nuget-verification.ps1 Removes UseBasicParsing from Invoke-WebRequest
eng/common/pipeline-logging-functions.ps1 Changes telemetry error message prefix
eng/common/msbuild.sh Forces node_reuse=false on CI
eng/common/msbuild.ps1 Forces nodeReuse=false on CI
eng/common/internal-feed-operations.sh Changes arg-parsing loop condition
eng/common/internal-feed-operations.ps1 Removes UseBasicParsing from Invoke-WebRequest
eng/common/dotnet.sh Changes args-present condition
eng/common/dotnet.ps1 Removes explicit ExitWithExitCode propagation
eng/common/AGENTS.md Removes Arcade provenance documentation file
eng/build.sh Removes stray blank line
eng/Build.props Removes AdditionalProperties on build tasks project
.github/workflows/powershell-script-tests.yml Removes Set-ScreenResolution.ps1 path trigger
.github/scripts/RunTests.ps1 Adds Compatibility unit tests project
.github/dependabot.yml Removes Microsoft.Windows.SDK.BuildTools.WinApp from ignore patterns
Review details
  • Files reviewed: 216/3035 changed files
  • Comments generated: 5
  • Review effort level: Lite

Comment thread eng/common/dotnet.ps1
Comment on lines 8 to 11
if ($args.count -gt 0) {
$env:DOTNET_NOLOGO=1
& "$dotnetRoot\dotnet.exe" $args
ExitWithExitCode $LASTEXITCODE
}
Comment on lines 87 to +92
foreach (var k in s.Keys)
{
if (k is null)
continue;

var key = k.ToString();
if (key is not null)
state[key] = s?[k]?.ToString();
var val = s?[k]?.ToString();

state[key] = val;
Comment on lines -68 to 74
else
{
platformControl.ClearValue(TextBlock.LineHeightProperty);
}
}
Comment on lines 145 to 147
var request = navigationAction.Request;
var lastUrl = request.Url?.ToString() ?? string.Empty;
var lastUrl = request.Url.ToString();

Comment on lines 11 to +12
public static bool IsKeyDeclaredInInfoPlist(string usageKey) =>
NSBundle.MainBundle.InfoDictionary?.ContainsKey(new NSString(usageKey)) == true;
NSBundle.MainBundle.InfoDictionary.ContainsKey(new NSString(usageKey));
@github-actions github-actions Bot added this to the .NET 10 SR11 milestone Sep 3, 2026
kubaflo added a commit that referenced this pull request Sep 4, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 6, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 7, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 8, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 9, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 11, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 15, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 18, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 21, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 27, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Sep 27, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Oct 3, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
kubaflo added a commit that referenced this pull request Oct 3, 2026
### Description of Change

Reopened against `main` as requested in #38103.

`Element` stored a single `(key, specificity)` pair per
`BindableProperty`, so a
`{DynamicResource}`-valued `Setter` inside a `VisualState` **overwrote**
the registration a style
had installed when the state was entered (`OnSetDynamicResource`
replaces the entry when the
incoming specificity is greater or equal, and a full-VSM setter outranks
a style's), and
`Setter.UnApply` then removed the entry outright when the state was
left.

From that point `Element.OnResourcesChanged` never saw the property
again: the element stopped
following the resource for the rest of its lifetime, back in the default
state, with no way to
recover. A theme switch afterwards leaves it on whatever value happened
to be resolved at the
moment the state was entered.

`BindableObject.RemoveDynamicResource(BindableProperty,
SetterSpecificity)` already accepted a
specificity and discarded it, while its siblings
`RemoveBinding(property, specificity)` and
`ClearValue(property, specificity)` honour theirs.

This stores the registrations in `SetterSpecificityList<string>` — the
same structure `Values` and
`Bindings` already use — so each specificity keeps its own entry:

- entering a state adds the state's registration without disturbing the
style's;
- leaving it removes only that one and republishes the next one down, so
the property keeps
  tracking;
- `BindableContextAttributes.IsDynamicResource` is cleared only once the
last registration for the
  property is gone.

`SetterSpecificityList<T>` also gains `GetValueAt`/`GetSpecificityAt`,
because `Element` has to
enumerate every registered key, not just the effective one —
`GetMergedResources` and both
`OnResourcesChanged` overloads need all of them.

### Issues Fixed

Fixes #38069

### Tests


`DynamicResourceTests.VisualStateDynamicResourceDoesNotDestroyTheStylesRegistration`
walks the full
cycle on a `Button` whose style paints `BackgroundColor` from one
dynamic resource and whose
`Disabled` state paints it from another: enabled colour, disabled
colour, back to the enabled
colour, and then a change to the enabled resource must still reach the
element.

Without the change that last assertion fails — `Expected: Red, Actual:
Blue`, the element frozen on
the value resolved before the state was entered (verified by reverting
only the three product files
to `main` and re-running the test).

`Controls.Core.UnitTests` on this branch: **5645 passed, 30 skipped, 0
failed**.

The same change was verified against `release/10.0.1xx-sr10` in #38103
(5716 passed, 0 failed); the
two branches now carry the identical patch.

### Note on the force-push

This branch was originally written against `main` while it still carried
the accidental `net11.0`
payload from #37995, where `SetterSpecificityList<T>` is a struct.
#38155 reverted that payload, so
the branch has been rebuilt on top of current `main` (`c478f6b4`) with
the class-based version of
the patch — the same one that was validated on `release/10.0.1xx-sr10`.

---------

Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 4, 2026

This branch was previously deployed

1 inactive deployment
copilot-pat-pool — f06a85c8 Deployed Sep 3, 2026 by kubaflo via conclusion #1723
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions platform/android platform/ios platform/macos macOS / Mac Catalyst platform/windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants