Repository navigation
[automated] Merge branch 'main' => 'net11.0' - #38455
Merged
Merged
Conversation
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary Completes the SR10 servicing-version transition by using the `servicing` prerelease label, removing the `inflight/current` override, and enabling stable package versions.
…ed containers (#37312) <!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! Backport of #37291 to `release/10.0.1xx-sr10`. /cc @kubaflo Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…#37594) Removes the repository-owned VG20 import and synchronizes the relevant Arcade credential-removal changes on `release/10.0.1xx-sr10`. Tracked by https://dev.azure.com/dnceng/internal/_workitems/edit/12131 Copilot-Session: e890b71a-c1aa-416c-a15c-be8da9fdd9b4
### Description of Change Backport of #37607 to `release/10.0.1xx-sr10`. Replace MAUI's long-lived `dn-bot-ceapex-package-r` dependency with a short-lived Entra token for OneLocBuild package restores. The pipeline acquires the token through the existing DevDiv `dnceng-onelocbuild-ceapex` workload-identity service connection and Arcade's shared federated-token helper. GitHub PR authentication is unchanged. The DevDiv service connection is configured for workload identity federation and MAUI pipeline 13330 is authorized to use it. ### Validation - Parsed the updated pipeline as YAML. - Verified the shared federated-token helper exists on this release branch. - Verified the legacy ceapex PAT is no longer referenced by MAUI's repo-owned localization pipeline. ### Issues Fixed Tracks [dnceng work item 10151](https://dev.azure.com/dnceng/internal/_workitems/edit/10151). Copilot-Session: 80f6a0c6-7947-4200-bb78-7f0fc01d671a
…ies (#37724) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1e7f77e3-4862-4b92-a662-d12b5918bb59
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d00747b7-96f3-4e7a-8dfb-e3a48db04b2d
Backport the isolated four-file Shell payload from #37542 without its unrelated inflight branch history. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d00747b7-96f3-4e7a-8dfb-e3a48db04b2d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d00747b7-96f3-4e7a-8dfb-e3a48db04b2d
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! <!-- !!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING MAIN. !!!!!!! --> ### Root cause This PR addresses Android, iOS, and Mac Catalyst test failures. #### Android The MediaPicker tests searched for a specific Android Photo Picker "Cancel" button using XPath. The system picker UI differs across Android versions, causing the tests to time out. #### Mac Catalyst Issue36769 test fails because the OnAppearing code in CI runs before the button is loaded in the UI. ### Description of Change - Removed `WaitForPhotoPicker()` from the Android MediaPicker tests. - Used `App.Back()` directly to close the picker before verifying cancellation. - Re-saved the expected iOS snapshots. - Fixed test case failure in Issue36769 - Switched Issue36749 button background verification from OnAppearing to the Button's Loaded event for reliable pass/fail checks ### Tests #### Android - `OverlappingPhotoPickerRequestsAreRejected` - `PickPhotosAsyncShouldReturnFromChildActivity` #### iOS - `ShellTabBarBackgroundColor` - `MoreTabShouldRespectNavBarCustomization` - `BottomTabColorTest` #### Mac Catalyst - `NativeStyledButtonPreservesInitialAndClearsDetachedBackground`
This pull request updates the following dependencies [marker]: <> (Begin:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) ## From https://github.com/dotnet/xharness - **Subscription**: [a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95](https://maestro.dot.net/subscriptions?search=a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) - **Build**: [20260828.1](https://dev.azure.com/dnceng/internal/_build/results?buildId=3060005) ([329158](https://maestro.dot.net/channel/2/github:dotnet:xharness/build/329158)) - **Date Produced**: August 28, 2026 2:17:22 PM UTC - **Commit**: [b355c0507b19670c2d386677d7f99260f07cefa5](dotnet/xharness@b355c05) - **Branch**: [main](https://github.com/dotnet/xharness/tree/main) [DependencyUpdate]: <> (Begin) - **Dependency Updates**: - From [11.0.0-prerelease.26419.1 to 11.0.0-prerelease.26428.1][1] - Microsoft.DotNet.XHarness.CLI - Microsoft.DotNet.XHarness.TestRunners.Common - Microsoft.DotNet.XHarness.TestRunners.Xunit [1]: dotnet/xharness@8dd9b8e...b355c05 [DependencyUpdate]: <> (End) [marker]: <> (End:a71c12d9-5aa4-4b46-e2d6-08da0cf8cd95) Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…37960) ### Issue Details On Windows, dynamically updating the content of a ContentPresenter can throw a System.ArgumentException when the content contains controls such as RefreshView or ScrollView. This happens when a platform view is reused while it is still attached to its previous WinUI parent, causing a “PointerEventRouter object already has an owner” exception. The initial fix detached the platform view from its previous parent, but some scenarios still failed because: * The logical content was not detached before creating the control-template platform tree. * ContentPanel.Content = null could leave stale children in CachedChildren. ### Description of Change <!-- Enter description of the fix in this section --> Updated the Windows ContentViewHandler content-update flow to properly handle direct, templated, and empty content. * Detach the existing content before creating the template platform tree. * Added a RemoveFromParent helper to safely detach the incoming platform view without disconnecting its handler. * Clear ContentPanel.CachedChildren before assigning new content or when the content becomes null. ### Issues Fixed <!-- Please make sure that there is a bug logged for the issue being fixed. The bug should describe the problem and how to reproduce it. --> Fixes #37958 Fixed below test cases: Control.DeviceTests: * ControlTemplateInitializesCorrectly * ControlTemplateCanBeReplacedCorrectly * ContentView updating it's ControlTemplate works * PropagateContextCorrectly Core.DeviceTests: * Content Initializes Correctly * Content Updates Correctly * ContentIsSetInitially * WindowSupportsEmptyPage_Platform
This pull request makes a minor UI adjustment to the `Issue35826` test case in the host app. The only change is to the padding of the `pickerAvailabilityLabel`, increasing the top padding to improve visual spacing. * UI Adjustment: * Increased the top padding of pickerAvailabilityLabel from 0 to 150 in Issue35826.cs to prevent the label from being hidden behind the status bar, which could cause a timeout exception during the test. Removed the unnecessary changes added by Copilot that caused an exception in the test, while retaining the original test and the fix from #36769 **Fixes:** #37746 --------- Co-authored-by: devanathan-vaithiyanathan <114395405+devanathan-vaithiyanathan@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Root Cause The dedicated `ListView` test bucket still included unit tests, device tests, issue-based UI tests, HostApp fixtures, and pipeline entries even though some of the remaining UI scenarios are really covering other features such as context actions, visibility, refresh, shadow, cells, custom renderers, images, and progress bars. ### Description of Change - removed the dedicated `ListView` unit test file and `Controls.DeviceTests/Elements/ListView` coverage - removed dedicated `UITestCategories.ListView` issue tests plus their unreferenced HostApp fixtures and snapshot baselines - reclassified non-ListView-primary UI tests into their actual categories instead of deleting them - removed the `ListView` UI-test pipeline bucket and the now-unused `UITestCategories.ListView` / `TestCategory.ListView` constants - removed the stale iOS and Mac Catalyst `Issue5503` app-delegate hook that became unreferenced once that HostApp page was deleted ### Key Technical Details Retained UI coverage was reclassified to these categories: - `ContextActions` - `IsEnabled` - `CustomRenderers` - `Image` - `ProgressBar` - `ToolbarItem` - `Shadow` - `IsVisible` - `RefreshView` - `Cells` ### Issues Fixed N/A ### Validation - `dotnet test src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj` - hits an existing locale-sensitive failure in `BindingUnitTests.TwoWayBindingToNullableDoublePropertyWithEmptyStringBecomesNull` (`3.14` vs `3,14`) - `dotnet test src/Controls/tests/Core.UnitTests/Controls.Core.UnitTests.csproj --no-restore --filter "FullyQualifiedName!=Microsoft.Maui.Controls.Core.UnitTests.BindingUnitTests.TwoWayBindingToNullableDoublePropertyWithEmptyStringBecomesNull"` - `dotnet build Microsoft.Maui.BuildTasks.slnf` - `dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -f net11.0-ios -p:BuildIpa=false -p:RuntimeIdentifier=iossimulator-arm64` - `dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -f net11.0-maccatalyst -p:RuntimeIdentifier=maccatalyst-arm64` - `dotnet build src/Controls/tests/TestCases.Android.Tests/Controls.TestCases.Android.Tests.csproj` - `dotnet build src/Controls/tests/TestCases.iOS.Tests/Controls.TestCases.iOS.Tests.csproj` - `dotnet build src/Controls/tests/TestCases.Mac.Tests/Controls.TestCases.Mac.Tests.csproj` - `dotnet build src/Controls/tests/TestCases.WinUI.Tests/Controls.TestCases.WinUI.Tests.csproj -p:EnableWindowsTargeting=true` - `dotnet build src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj -f net11.0-ios -p:BuildIpa=false -p:RuntimeIdentifier=iossimulator-arm64` - `dotnet build src/Controls/tests/TestCases.HostApp/Controls.TestCases.HostApp.csproj -f net11.0-maccatalyst -p:RuntimeIdentifier=maccatalyst-arm64` - `python3` + `yaml.safe_load` parse of `eng/pipelines/common/ui-tests.yml`
…load (#37746) <!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! <!-- release-readiness-agent: human-approval-required --> ## Summary Integrates the staged **.NET MAUI 10.0.101 (SR10.1)** payload from `inflight/10.0.101` into `release/10.0.1xx-sr10`, based on the shipped `10.0.100` release. The full release inventory and servicing decisions are tracked in #37723. The [authoritative regression query](https://github.com/dotnet/maui/issues?q=repo%3Adotnet%2Fmaui%20is%3Aissue%20is%3Aopen%20%28label%3A%22regressed-in-10.0.10%22%20OR%20label%3A%22regressed-in-10.0.20%22%20OR%20label%3A%22regressed-in-10.0.30%22%20OR%20label%3A%22regressed-in-10.0.40%22%20OR%20label%3A%22regressed-in-10.0.50%22%20OR%20label%3A%22regressed-in-10.0.60%22%20OR%20label%3A%22regressed-in-10.0.70%22%20OR%20label%3A%22regressed-in-10.0.80%22%20OR%20label%3A%22regressed-in-10.0.90%22%20OR%20label%3A%22regressed-in-10.0.100%22%29) remains the source for the servicing-regression scope. > [!IMPORTANT] > Checked items under **Staged in this PR** are merged into `inflight/10.0.101`, not yet into `release/10.0.1xx-sr10`. They reach the release branch only when this aggregate PR is merged. ## Status at a glance - [x] Stage the selected regression backports independently on `inflight/10.0.101`. - [x] Stage the SkiaSharp 4.150.1 payload and selective `SKPath.AddCircle` compatibility fix. - [x] Stage the isolated iOS 26 Liquid Glass TabBar payload from #37542. - [ ] Complete or explicitly defer the six unresolved servicing regressions listed below. - [ ] Complete the release gates and merge this PR into `release/10.0.1xx-sr10`. ## Staged in this PR ### Servicing regressions - [x] #35826 — Android MediaPicker completion from child activities. Source #35944; component backport #37724. - [x] #36298 — Windows dynamic `ContentPresenter` assignment. Source #36430; component backport #37725. - [x] #36749 — preserve custom iOS Button styling. Source #36769; component backport #37726. - [x] #36736 — align Android SwipeItem content. Source #36820; component backport #37727. - [x] #34563 — per-edge iOS safe-area handling. Source #37033; component backport #37728. - [x] #37706 — Android root-page back handling. Source #37709; component backport #37729. - [x] #37705 — Android Material 3 status-bar contrast. Source #37710; component backport #37730. - [x] #37423 — restore native iOS 26 Liquid Glass TabBar behavior through the isolated four-file payload from merged PR #37542. - [x] #37418 — Android off-screen `TranslationY` layout padding. Source fix #37772; focused backport commit `10799e67df`. - [x] #37361 — iOS RefreshView pull-to-refresh with an empty CollectionView. Source fix #37404; focused backport commit `d26faa8e93`. - [x] #37638 — Android `Screenshot.CaptureAsync` synchronous UI-thread deadlock. Source fix #37680; focused backport commit `778040a233`. ### Planned Skia payload - [x] Port the Skia/Svg.Skia update from #36255 through component backport #37731. - [x] Include only the required `SKPath.AddCircle` compatibility change from #36787; exclude its unrelated SourceGen changes. - [x] Confirm a matching SkiaSharp 4.150.1 native-assets/PDB build for `_SkiaSharpNativeAssetsVersion`, or record an explicit release-owner waiver. ### Integration follow-ups - [x] Apply the aggregate review fixes for safe-area cache invalidation, Activity-for-result cancellation ownership, and Android theme-test semantics. - [x] Keep the final branch payload as focused release commits without unrelated `inflight/current` history. - [x] Validate the #37418 and #37638 focused Android UI tests on the aggregate branch (2/2 passed). - [ ] Validate the #37361 focused iOS UI test on the aggregate branch. ## Already present on the SR10 base — no new merge needed - [x] #36852 — Android Shell hidden-fragment leak; fix #36903 is already in SR10. - [x] #36735 — Android ActivityIndicator visibility; fix #36748 is already in SR10. - [x] #36853 — Android Shell DI-singleton route blank page; fix #36903 is already in SR10. - [x] #36942 — Android UI event handling; fix #36988 is already in SR10. - [x] #37281 — Android scrolling inside shadowed containers; backport #37312 is already in SR10. ## Completed disposition — no backport required - [x] #37700 — closed as intended SR10 `SwipeView.Threshold` behavior from #36878; any SwipeItem sizing concern should be tracked separately. ## Not included yet — merge, defer, or explicitly disposition before payload freeze - [ ] #35301 — Windows CollectionView applies WinUI styling by default; no linked fix PR. - [ ] #34491 — Android CollectionView selection with `PointerGestureRecognizer`; replacement fix #37952 remains draft against `main`. - [ ] #35059 — iOS app becomes unresponsive when opening a ComboBox dropdown in landscape; no linked fix PR. - [ ] #37407 — iOS TimePicker default `t` format forces en-US; fix #37797 remains draft against `main`. - [ ] #36269 — Android `SafeAreaEdges` with Shell tab navigation and hidden TabBar; source fix #36474 remains open against `main` and has no SR10 backport. - [ ] #37657 — Android Shell/root-page `OnBackButtonPressed()` in Release builds; no linked fix PR. ## Release completion ### Before merging this PR - [ ] Refresh the authoritative query and reconcile #37723 with its current results. - [ ] Record an include/defer/close decision for every unresolved regression above. - [ ] Validate every included regression on its reported OS/version using the `10.0.101` candidate packages. - [ ] Complete current-head aggregate CI and resolve or explicitly waive every required build/device/UI-test failure. - [ ] Resolve or waive the Skia native-assets/PDB release gate. - [ ] Bump `eng/Versions.props` from patch `100` to `101` after the payload is frozen. - [ ] Obtain the required independent current-head maintainer approvals. - [ ] Merge #37746 into `release/10.0.1xx-sr10`. ### After merge - [ ] Confirm BAR promotion and the per-build validation feed used by the ship assessment. - [ ] Publish and tag `10.0.101`. - [ ] Complete the Visual Studio insertion/default-MAUI-version update. ## Notes - No automated `/backport` command was used for this release payload. - Supersedes #37745, which GitHub automatically closed when the integration branch was renamed from `vs/10.0.101` to `inflight/10.0.101`.
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Summary Bumps the SR10 release branch package patch version from `10.0.100` to `10.0.101` after the SR10.1 payload merge. ## Changes - Updates `eng/Versions.props` `PatchVersion` from `100` to `101`. - Leaves `SdkBandVersion`, `PreReleaseVersionLabel=servicing`, and stable-package settings unchanged. ## Context Follow-up to #37746 for the 10.0.101 release completion checklist.
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Description Removes the empty Azure Pipelines conditional left in `eng/pipelines/common/variables.yml` after #37594 removed the `Publish-Build-Assets` variable group. The dangling mapping prevents the official `dotnet-maui` pipeline from compiling: ```text /eng/pipelines/common/variables.yml (Line: 81, Col: 70): Expected a mapping /eng/pipelines/common/variables.yml (Line: 81, Col: 7): Expected at least one key-value pair in the mapping ``` This blocked [official build 3063359](https://dev.azure.com/dnceng/internal/_build/results?buildId=3063359) before any jobs ran, preventing creation and default-channel promotion of the SR10.1 BAR build. ## Validation - Parsed `eng/pipelines/common/variables.yml` successfully with Ruby Psych. - `git diff --check` passes. After merge, rerun the `dotnet-maui` official pipeline for `release/10.0.1xx-sr10`; its existing `.NET 10.0.1xx SDK` default-channel mapping should create the per-build validation feed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b603f8b0-824a-48b4-92e5-c891584266bf
…assOnAncestors failure on Mac (#38109) ### Root cause App.WaitForElement("Stats") only waited for the existing element, not for its asynchronously updated text. CI could therefore read stale initialization/layout-pass values such as Lvl1[1/1], causing a flaky failure. ### Description of change Replaced the immediate text read with WaitForTextToBePresentInElement, which polls for Lvl1[0/0] for up to 15 seconds before asserting success. This allows the asynchronous counter reset and UI update to complete. <!-- Enter description of the fix in this section --> ### Issues Fixed <!-- Please make sure that there is a bug logged for the issue being fixed. The bug should describe the problem and how to reproduce it. --> Fixes #36051
Updated [Magick.NET-Q8-AnyCPU](https://github.com/dlemstra/Magick.NET) from 14.14.0 to 14.15.0. <details> <summary>Release notes</summary> _Sourced from [Magick.NET-Q8-AnyCPU's releases](https://github.com/dlemstra/Magick.NET/releases)._ ## 14.15.0 ### What's Changed - Add `PingAsync` to `MagickImage` and `MagickImageCollection` (#2032). - Added `ImportIndexedPixels` to `MagickImage` (#2040) ### Related changes in ImageMagick since the last release of Magick.NET: - Stack Overflow in MVG decoder due to missing depth check (GHSA-mx48-2qq3-23hf) - Heap Buffer Overflow in ImageMagick MVG decoder (GHSA-wx47-rm3x-jx6p) - Policy Bypass due to an incomplete fix of CVE-2026-49219 (GHSA-56m6-8q75-f2rw) - Infinite Loop in connected-components when providing invalid arguments (GHSA-qhmf-7fc4-8q3h) - Heap Buffer Over-Write in JP2 encoder when due to incorrect handling of arguments (GHSA-c4v7-w88g-m6c4) - Policy Bypass in concatenate operation due to missing checks (GHSA-82mp-vp5c-9pf7) - Use-After-Free in crafted 8BIM when identifying an image (GHSA-ff5c-8x9r-8qcw) - Information Disclosure in MNG decoder because allocated memory is left unchanged (GHSA-8g53-9m3c-69xg) - Heap Buffer Over-Read in XCF decoder due to integer conversion overflow (GHSA-pjxj-pchx-4c3m) - Heap Buffer Over-Write in morphology operation when an invalid kernel is provided (GHSA-f5m7-cqgw-8hm7) - Heap Buffer Over-Read in BGR decoder due to mising end-of-file check (GHSA-7rgw-xg25-prjm) - Heap Buffer Over-Write in fx operation (GHSA-422r-8c97-xcg4) - Integer Overflow in JNX decoder causes heap buffer over-write when processing extremely large files on 32-bit builds (GHSA-h22j-f9xw-xjjm) ### Library updates: - ImageMagick 7.1.2-27 (2026-07-05) - libde265 1.1.1 (2026-06-03) - openexr 3.4.13 (2026-06-19) - libffi 3.6.0 (2026-06-20) - fontconfig 2.18.1 (2026-06-02) - gdk-pixbuf 2.44.7 (2026-06-27) - harfbuzz 14.2.1 (2026-06-02) - libheif 1.23.1 (2026-06-26) - libjxl 0.12.0 (2026-07-01) - openjph 0.30.1 (2026-06-22) - libtiff 4.7.2 (2026-06-26) **Full Changelog**: dlemstra/Magick.NET@14.14.0...14.15.0 Commits viewable in [compare view](dlemstra/Magick.NET@14.14.0...14.15.0). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/dotnet/maui/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) 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 - reverts the accidental `net11.0` payload from #37995 - preserves the intended dedicated ListView test cleanup from commit `86ca3e5655` - preserves legitimate `main` changes merged after #37995 ### Validation - compared the corrected tree with the parent of #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 Copilot-Session: 3391bd85-62d2-4de0-84c7-5952156ea5bb
…rol (#37252) > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! This pull request significantly enhances the TimePicker feature matrix test page and its associated ViewModel, adding new capabilities for interaction, state tracking, and test coverage. The main improvements include support for programmatically opening/closing/focusing/unfocusing the TimePicker, tracking open/close events, supporting nullable time values, and exposing new properties for automation and UI testing. The test suite is also expanded to cover these new behaviors. **Feature Enhancements:** * Added buttons to the UI for programmatically opening, closing, focusing, and unfocusing the `TimePicker`, and labels to display the current open state, event counts, and font auto-scaling status (`TimePickerControlPage.xaml`). * Added event handlers and logic in the code-behind to increment open/close counts, update labels, and support the new control actions (`TimePickerControlPage.xaml.cs`). * Added `IsOpen` and `FontAutoScalingEnabled` properties to the `TimePickerViewModel`, with full data binding and UI controls (radio buttons for font auto-scaling). [[1]](diffhunk://#diff-5fe691425795ef8492441486bf4b38049c4f669df0a4459b4b2abd9b285b343aR100-R112) [[2]](diffhunk://#diff-5fe691425795ef8492441486bf4b38049c4f669df0a4459b4b2abd9b285b343aR126-R138) [[3]](diffhunk://#diff-55129b55befff101cf7e07d36c3a6b465c156b6fdd9ae1b1e2d8231d8e9e35baR232-R250) **Test and Automation Improvements:** * Added/updated UI tests to cover new behaviors: programmatic open/close, focus/unfocus, and more detailed time selection scenarios (`Material3TimePickerFeatureTests.cs`). [[1]](diffhunk://#diff-3e1a5425800b38e01bd795b07b2206734acb064f38253ee25b8aacea83587630L25-R76) [[2]](diffhunk://#diff-3e1a5425800b38e01bd795b07b2206734acb064f38253ee25b8aacea83587630L49-R90) * Added a "Clear" button to allow clearing the selected time (setting it to null), and updated the ViewModel and UI to support nullable `TimeSpan` for time selection (`TimePickerOptionsPage.xaml`, [[1]](diffhunk://#diff-5fe691425795ef8492441486bf4b38049c4f669df0a4459b4b2abd9b285b343aL137-R165) [[2]](diffhunk://#diff-3963539c298480441769a257480206d05fb4d953148a73822f7e05b003496cecL82-R100). **ViewModel and UI Consistency:** * Added a `ResetToDefaults` method to the ViewModel to centralize the reset logic for all properties, used when navigating to options or resetting state (`TimePickerViewModel.cs`). * Refactored code to use consistent naming for UI elements (`TimeEntry`, `FormatEntry`), and improved data binding for clarity and maintainability (`TimePickerOptionsPage.xaml`, [[1]](diffhunk://#diff-55129b55befff101cf7e07d36c3a6b465c156b6fdd9ae1b1e2d8231d8e9e35baL29-R41) [[2]](diffhunk://#diff-55129b55befff101cf7e07d36c3a6b465c156b6fdd9ae1b1e2d8231d8e9e35baL50-R53). **Accessibility and Testability:** * Added `AutomationId`s to new UI elements to improve automation and accessibility support (`TimePickerControlPage.xaml`). **Minor UI Adjustments:** * Adjusted grid row definitions and margins to accommodate the new controls and maintain layout consistency (`TimePickerControlPage.xaml`, [src/Controls/tests/TestCases.HostApp/FeatureMatrix/TimePicker/TimePickerOptionsPage.xamlL16-R16](diffhunk://#diff-55129b55befff101cf7e07d36c3a6b465c156b6fdd9ae1b1e2d8231d8e9e35baL16-R16)). These changes collectively make the TimePicker feature matrix more robust, testable, and reflective of real-world usage scenarios, and provide a solid foundation for further feature and test expansion.
<!-- Please keep the note below for people who find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment whether this change resolves your issue. Thank you! ### Description of Change This change improves Android accessibility for `SwipeView` by ensuring that revealed swipe-item commands execute when users activate them through accessibility services such as TalkBack. TalkBack's "double tap to activate" dispatches `ACTION_CLICK` to the focused native view, while `MauiSwipeView` previously executed swipe items only through its touch hit-testing path. The submitted fix bridges that accessibility action to the existing swipe-item invocation behavior. **Accessibility improvements:** - Adds `AttachSwipeItemAccessibilityDelegate` in `MauiSwipeView` to install an accessibility delegate on each materialized swipe-item view. - Adds the sealed `SwipeItemAccessibilityDelegate`, which derives from `AccessibilityDelegateCompatWrapper` so existing accessibility behavior is preserved. - Advertises `ACTION_CLICK`, handles it through `PerformAccessibilityAction`, resolves the corresponding `ISwipeItem`, executes its command, and applies the existing `SwipeBehaviorOnInvoked` behavior. - Uses a weak reference to the owning `MauiSwipeView` and delegates unhandled accessibility actions to the prior delegate. - Updates `UpdateSwipeItems()` to attach the delegate as each swipe-item platform view is created. - Adds the required `AndroidX.Core.View` and `AndroidX.Core.View.Accessibility` imports. **Testing:** - Adds `SwipeItemCommandExecutesViaAccessibilityActionClick` to verify `ACTION_CLICK` is exposed and executes a `SwipeItem` command. - Adds `SwipeItemViewCommandExecutesViaAccessibilityActionClick` to verify the same behavior for a custom-content `SwipeItemView`, whose Android platform view is not inherently clickable. ### Issues Fixed Fixes #23478 ### Tested the behavior in the following platforms - [ ] Windows - [x] Android - [ ] iOS - [ ] Mac | Before Issue Fix | After Issue Fix | |---|---| | <video src="https://github.com/user-attachments/assets/e1e141c3-d3d2-4802-89cf-ef2b476b2cba"> | <video src="https://github.com/user-attachments/assets/55fd6980-6ca2-4f5a-a4f4-096a9fe4bdcb"> |
…during the rebase of Inflight/Current with main. (#37378) <!-- !!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING MAIN. !!!!!!! --> ### Description of Change Fixed the missing `#endif `in the `Issue32275 `test. <img width="800" height="128" alt="image" src="https://github.com/user-attachments/assets/30d6c5d6-8bec-4db4-9c92-c0ea9b2c01d6" /> <img width="1310" height="446" alt="image" src="https://github.com/user-attachments/assets/6e5797f7-faa8-4998-a2e2-064d0e4c674c" />
### Root Cause BlazorWebViewTests.Startup.cs uses nullable reference annotations (?), but the project does not enable nullable annotations. This caused CS8632 errors, and warnings are treated as errors. ### Cause PR #35053 ### Fix Added #nullable enable at the top of BlazorWebViewTests.Startup.cs. This follows the existing per-file convention and avoids enabling nullable annotations for the entire project. The Windows device-test build now passes successfully.
…er Does Not Leak" Device Tests (#37672) <!-- !!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING MAIN. !!!!!!! --> ### Issue details: PR #36698 aimed to fix and re-enable the "Cells Do Not Leak" and "Handler Does Not Leak" device memory-leak tests on iOS and Mac. To achieve this, it changed `TemplatedCell` and `ItemsViewController` on iOS so that a cell's bound view is detached from the parent's logical children — and the cell's native subviews are cleared — during disposal, ensuring templated views are released deterministically instead of being permanently rooted. After this change merged, the `NavigateForwardWhenLooped` and `NavigateBackWhenLooped` CarouselView UI tests started failing on iOS. ### Description of changes: This reverts the changes introduced in PR #36698, which modified `TemplatedCell.cs` and `ItemsViewController.cs` on iOS/MacCatalyst to detach a cell's bound view from the parent's logical children and clear its native subviews during disposal. Reverting restores the prior cell disposal behavior, fixing the CarouselView looped-navigation regression (#37571). As a side effect, it also re-introduces the original memory-leak test failures that PR #36698 addressed. ### Issues Fixed <!-- Please make sure that there is a bug logged for the issue being fixed. The bug should describe the problem and how to reproduce it. --> Fixes #37571 <!-- Are you targeting main? All PRs should target the main branch unless otherwise noted. -->
…roll content (#36511)" (#37810) ## Description This reverts #36511. The `Issue33037NonShell` UI tests added by that PR are unstable on iOS 26.5, while the proxy-based implementation is being reconsidered in #37548. Reverting avoids shipping the current implementation while that work continues. ## Why revert - Five scenarios fail in grouped iOS 26.5 runs despite passing individually and on iOS 26.3: - `Issue33037FixedHeaderCollectionViewButton` - `Issue33037ShortFixedHeaderCollectionViewButton` - `Issue33037GridScrollViewButton` - `ProgrammaticScrollCollapsesLargeTitle` - `ProgrammaticWebViewScrollCollapsesLargeTitle` - Restarting the app before each test makes all five pass, showing that the failures are specific to shared test-session state and do not reproduce when the scenarios run independently. - `Issue33037NonShell_GridScrollView_BeforeScroll` also produces an unstable first-paint visual difference. - #37548 is investigating a replacement for the proxy mechanism and remains in progress. ## Changes - Restores `NavigationRenderer.cs` to its pre-#36511 behavior. - Removes the `Issue33037NonShell` HostApp scenarios and UI tests. - Removes the nine associated iOS 26 snapshot baselines.
…ranches (#37837) <!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! Ported the changes from PR #37409 to the inflight/Candidate branch.
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! This PR updates UI test baselines and automation for keyboard-related SafeAreaEdges tests to work consistently across iOS 18.5 and iOS 26.5. **Changes:** - Added new/updated baseline screenshots for `ios-26, MacCatalyst, Windows` snapshots covering: - `AfterToggleBackgroundColors` / `BeforeToggleBackgroundColors` (Issue17389) - `RadioButtonBorderCleared` / `RadioButtonBorderReapplied` / `RadioButtonBorderSet` - `VerifyFlyoutWithHeaderFooter` - `VerifyShellSearch_CancelButtonColor` / `VerifyShellSearch_TextColor` - CollectionView grid layout and ImageButton/SearchHandler-related baselines - Updated `ShellSearchHandlerFeatureTests.cs` for the new baselines - Simplified the "keyboard done" automation in `SafeArea_BorderFeatureTests.cs`, `SafeArea_ContentViewFeatureTests.cs`, and `SafeArea_GridFeatureTests.cs` so the same logic works identically on both iOS 18.5 and iOS 26.5, removing iOS-version-specific branching (12 lines removed per file, replaced with a common approach). PR #36413 ([iOS] Entry: Fix Done accessory hit testing) changed the automation ID to be common for both, so the test cases were modified to use `DoneAccessory` instead of the version-specific `Toolbar`/`Done` lookup. - Changed AutomationId back to Text for the Shell Flyout Header/Footer views, fixing `VerifyCustomFlyoutContentWithHeaderFooter`, `VerifyCustomFlyoutContentTemplateWithHeaderFooter`, and `VerifyFlyoutWithHeaderFooter`. Due to `inflight/current` being rebased with `main`, PR #33335 ([iOS] Fix Shell Flyout SafeArea Rendering) resurfaced this issue again, so this PR preserves the `main` branch changes. - Resaved correct baseline images to fix mismatches from prior snapshot updates `ValidateInputTransparentBackgroundColorToggle` - Added baseline images for `LabelFormattedTextShouldRespectRTLFlowDirection` / `LabelFlowDirectionUpdatesShouldUpdateWhenFlowDirectionChangesAfterRender` - Resaved Mac snapshot images for `LabelFormattedTextShouldRespectRTLFlowDirection`, and renamed `LabelFormattedTextShouldUpdateWhenFlowDirectionChanges.png` → `LabelFormattedTextShouldUpdateWhenFlowDirectionChangesAfterRender.png` to match the updated test name - Fixed test case failure in Issue36769 - Switched Issue36749 button background verification from `OnAppearing` to the Button's `Loaded` event for reliable pass/fail checks - Resave the Shell SearchHandler Feature tests images. - Resave the android images - Resaved the iOS images(`ButtonWithCharacterSpacingRestoresDefaultTextColorAfterNull`, `Line_DashArray_DashOffset_Thickness`, `Line_StrokeColor_Thickness`) --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: LogishaSelvarajSF4525 <logisha.selvaraj@syncfusion.com> Co-authored-by: HarishKumarSF4517 <harish.kumar@syncfusion.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com> Co-authored-by: devanathan-vaithiyanathan <114395405+devanathan-vaithiyanathan@users.noreply.github.com>
### Description of Change Reverts #36503 and restores standard .NET event handling for `Accelerometer.ReadingChanged` and `ShakeDetected`. The custom weak event implementation introduced complex subscription semantics and caused the unsubscription regression tracked by #36574. A safer solution for the original memory-leak concern in #36216 can be considered separately. ### Issues Fixed Fixes #36574
…38126) <!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! Backports #38079 and #38078 to `inflight/candidate`. ### Changes - Backports the Android `BlazorWebView` intent-link resolution fix from #38079. - Backports the cross-platform `HybridWebView` message-origin validation fix from #38078. - Includes the device-test coverage from both source PRs. The landed squash commits were cherry-picked in landing order without conflicts. ### Validation - `dotnet build Microsoft.Maui.BuildTasks.slnf -c Debug` - `dotnet build src/BlazorWebView/tests/DeviceTests/MauiBlazorWebView.DeviceTests.csproj -f net10.0-android -c Debug` - `dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -f net10.0-android -c Debug` - `dotnet build src/Controls/tests/DeviceTests/Controls.DeviceTests.csproj -f net10.0-maccatalyst -c Debug` - Windows cross-build reaches the Windows-only `MakePri.exe` step and cannot complete on macOS. --------- Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c2a40510-33c4-4ff0-87f3-535f4a7e98a3 Copilot-Session: a5d3b169-5cb5-440d-a4ba-22e39d132876
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Changes #### 1. Restrict MemoryLeakInFormsAppCompatActivity test on Android - MemoryLeakInFormsAppCompatActivity (Bugzilla40955) continuously fails in CI on Android. - Added [Ignore("Failing on net10 #27411")] under #if ANDROID to restrict the test on Android only, keeping other platforms unaffected. #### 2. Update stale iOS snapshot baselines - Updated iOS snapshot baselines that were mismatched against current rendering (iOS 18.5): - RadioButtonBorderCleared.png - RadioButtonBorderReapplied.png - RadioButtonBorderSet.png - VerifyImageWithBackgroundColorYellow.png - VerifyTextWhenKeyboardTypeSet.png - VerifyTextWhenReturnTypeSet.png --------- Co-authored-by: BagavathiPerumal <bagavathiperumal.a@syncfusion.com>
#38392) This PR addresses the test failures that occurred in the inflight/candidate branch: #37393, and includes updates to improve rendering and test stability across platforms. - Resaved the **VerifyButton_ContentLayoutWithRightToLeftFlowDirection, ButtonContentLayoutShouldRespectRightToLeftFlowDirection** test images for iOS due to this fix PR #38339. - Resaved the **VerifyButton_ContentLayoutWithRightToLeftFlowDirection** test image for Mac due to this fix PR #38339.
Updated [ShimSkiaSharp](https://github.com/wieslawsoltes/Svg.Skia) from 5.1.1 to 5.2.3. <details> <summary>Release notes</summary> _Sourced from [ShimSkiaSharp's releases](https://github.com/wieslawsoltes/Svg.Skia/releases)._ ## 5.2.3 ## What's Changed * Update SVG upstream and prepare v5.2.3 by @wieslawsoltes in wieslawsoltes/Svg.Skia#562 **Full Changelog**: wieslawsoltes/Svg.Skia@v5.2.2...v5.2.3 ## 5.2.2 ## What's Changed * Add styled Avalonia SVG source resources by @wieslawsoltes in wieslawsoltes/Svg.Skia#560 * Keep run typeface when character fallback finds nothing by @donaldsteele in wieslawsoltes/Svg.Skia#559 * Add net10.0 target to MAUI controls by @wieslawsoltes in wieslawsoltes/Svg.Skia#561 ## New Contributors * @donaldsteele made their first contribution in wieslawsoltes/Svg.Skia#559 **Full Changelog**: wieslawsoltes/Svg.Skia@v5.2.1...v5.2.2 ## 5.2.1 ## What's Changed * Fix Linux SkiaSharp native asset version mismatch by @wieslawsoltes in wieslawsoltes/Svg.Skia#555 * Fix Avalonia SVG opacity layers by @wieslawsoltes in wieslawsoltes/Svg.Skia#556 **Full Changelog**: wieslawsoltes/Svg.Skia@v5.2.0...v5.2.1 ## 5.2.0 ## What's Changed * Update SkiaSharp to 4.148.0 and HarfBuzzSharp to 14.2.0 by @mattleibow in wieslawsoltes/Svg.Skia#544 * Restore Avalonia CurrentColor and CSS overrides by @wieslawsoltes in wieslawsoltes/Svg.Skia#549 * Strong-name sign all packaged assemblies by @wieslawsoltes in wieslawsoltes/Svg.Skia#547 * Honor variable font weights during text shaping by @wieslawsoltes in wieslawsoltes/Svg.Skia#548 * Ensure svg model has no trimmer warnings by @OleRoss in wieslawsoltes/Svg.Skia#551 ## New Contributors * @OleRoss made their first contribution in wieslawsoltes/Svg.Skia#551 **Full Changelog**: wieslawsoltes/Svg.Skia@v5.1.1...v5.2.0 Commits viewable in [compare view](wieslawsoltes/Svg.Skia@v5.1.1...v5.2.3). </details> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…38016) (#38381) > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! Workflow artifact: ci-fix Artifact kind: deflake Refs: #38016 Target branch: main Attempt: 1/10 ## Attempt 1 of 10 Expose the second page's back button to Appium only after the navigation push has completed. ### Previous attempts (prior commits on this PR) None. This attempt differs by: this is the first attempt. ## Root cause Build 1587350 intermittently failed `DisplayAlertAsyncShouldNotCrashWhenPageUnloaded` at `Issue33287.cs:28`, where the test waits for `MainPageLabel` immediately after tapping the second page's back button. The test exposed `GoBackButton` as soon as the second page was constructed, so Appium could find and tap it while `Navigation.PushAsync` was still completing. On MacCatalyst, that tap can be ignored during the transition, leaving the test on the second page until the element wait times out. Flake class: test-quality ## Why this was flaky The test synchronized on element existence rather than completion of the push transition. The same target failed twice in build 1587350 but passed on every platform in build 1589336, demonstrating transition-timing sensitivity rather than a persistent product failure. ## De-flake The host page now assigns the `GoBackButton` automation ID only after `Navigation.PushAsync` completes. `App.WaitForElement("GoBackButton")` therefore becomes a deterministic navigation-completion barrier before the test taps back. No assertion was weakened, no timeout was increased, and no retry attribute was added. ## Fix Keep the existing back-button command and test assertions, but delay automation exposure until the page is fully pushed. ## What is unverified / where I need help - The MacCatalyst UI test could not be run because this Linux runner has no MacCatalyst device rig. - Please confirm the MacCatalyst Page UI-test leg consistently completes the return navigation and still exercises the delayed alert on the unloaded page. ## Validation - Command: `not run because the MacCatalyst UI test requires a macOS device rig` - Result: not run ## Evidence - Original failing build (from tracking issue): https://dev.azure.com/dnceng-public/public/_build/results?buildId=1574142 - Latest verified-failing build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1587350 --- Filed by [`ci-status-fix`](https://github.com/dotnet/maui/blob/main/.github/workflows/ci-status-fix.md). This is the single PR for #38016: the workflow watches its own CI and pushes up to **10 attempts on this same PR** (it never opens a second PR). It advances only when the fix's own build settles red and that red is caused by the fix. Comments, reviews, and commits do not transfer ownership; the loop remains autonomous until this PR is closed. Eligible `CHANGES_REQUESTED` reviews are handled through Track C. After 10 attempts it stops and defers to humans. In round 1 a maintainer still needs to comment `/azp run maui-pr` (plus the gated uitests/devicetests legs when relevant) to exercise each new commit. > Generated by [CI Failure Fixer (main)](https://github.com/dotnet/maui/actions/runs/34423511939) · gpt56 · 376.2 AIC · ⌖ 33.6 AIC · ⊞ 23.4K · [◷](https://github.com/search?q=repo%3Adotnet%2Fmaui+%22gh-aw-workflow-id%3A+ci-status-fix%22&type=pullrequests) <!-- gh-aw-agentic-workflow: CI Failure Fixer (main), engine: copilot, model: gpt-5.6-sol, id: 34423511939, workflow_id: ci-status-fix, run: https://github.com/dotnet/maui/actions/runs/34423511939 --> <!-- gh-aw-workflow-id: ci-status-fix --> <!-- gh-aw-workflow-call-id: dotnet/maui/ci-status-fix --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…etails (#38416) > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Issue Details TalkBack forward-swipe navigation could not reach all content on the Task Details and Project Details pages generated by the .NET MAUI mobile project template. - On Task Details, navigation stopped after the Completed checkbox, making the Project picker and Save button unreachable. - On Project Details, navigation stopped after the Description entry, making the Category picker and following content unreachable. All interactive controls should be reachable in their logical visual order using TalkBack swipe navigation. ### Root Cause The Project and Category pickers are native .NET MAUI Picker controls hosted inside Syncfusion SfTextInputLayout wrappers. Their SemanticProperties.Description values were assigned to the SfTextInputLayout wrappers rather than to the interactive pickers. On Android, this caused the non-interactive wrapper to be exposed as the accessibility node instead of associating the semantic information directly with the native picker, which interrupted TalkBack forward-swipe navigation. ### Description of Change - Moved the Project semantic hint from SfTextInputLayout to the native Picker. - Moved the Category semantic hint from SfTextInputLayout to the native Picker. - Kept SfTextInputLayout responsible only for visual presentation. - Preserved the existing picker bindings, selection behavior, commands, and accessibility descriptions. - Updated the implementation to use SemanticProperties.Hint, since the provided semantic text is read correctly with the hint on the native Picker. The semantic hints are now assigned directly to the interactive Picker controls, allowing TalkBack to focus and activate the pickers and continue navigating through the remaining page content. ### Why Tests Were Not Added This issue requires manual accessibility validation using TalkBack to verify the forward-swipe navigation and ensure that the semantic hint is read correctly. Since this behavior cannot be reliably validated through automated tests, no additional tests were added. ### Issues Fixed Fixes #38328 ### Screenshots | Before Issue Fix | After Issue Fix | |----------|----------| | <video width="300" height="600" src="https://github.com/user-attachments/assets/a757aa87-5bd6-44b4-921e-a6371efc4e6d"> | <video width="300" height="600" src="https://github.com/user-attachments/assets/e149e943-4ace-434c-9015-bc88b49b1eff"> |
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## What's Coming This draft promotes the current `inflight/candidate` contents into `main` for the .NET 10 SR11 (`10.0.110`) candidate cycle. ## Candidate Snapshot - Initial source: `inflight/current`, followed by candidate-specific stabilization and approved backports - Rebased onto `main`: [`b96aa036`](b96aa03) - Current candidate head: [`b643a7e3`](b643a7e) - Final candidate commits relative to `main`: [111 commits](b96aa03...inflight/candidate) - Rebase accounting: all 111 pre-rebase commits map exactly to 111 rebased commits, with no modified, dropped, or added patches - Patch version: `110` - PR #37033 remains intentionally excluded because it merged into `inflight/current` after the initial candidate cut. ## Stabilization Since the Initial Cut - #37669 fixes the MauiBlazorWebView device-test build. - #37672 reverts unstable iOS and Mac Catalyst leak tests. - #37810 reverts the iOS wrapped-scroll-content large-title change. - #37837 completes iOS `ScrollView` requests inside collapsed branches. - #37438 updates the first set of candidate test failures. - #38021 fixes the Windows `ContentPresenter` device-test regression; its patch is now supplied by `main`. - #38096 reverts the Accelerometer weak-event change. - #38126 backports the BlazorWebView and HybridWebView fixes. - #38028 updates the remaining candidate test failures and stale iOS snapshots. ## Rebase Validation - [x] Commit accounting: 111 exact mappings with no modified, dropped, or added patches - [x] Independent reference merge and rebased branch have the identical tree ID `3e10281363c889cbafd4de790911efb0ae365e2a` - [x] BuildTasks succeeds with 0 warnings and 0 errors across the restored Android, iOS, Mac Catalyst, and .NET targets - [x] All 39 focused `ScrollViewUnitTests` pass - [x] No merge commits, conflict markers, or new whitespace warnings; the 26 existing whitespace warnings remain unchanged - [ ] Post-rebase `maui-pr`, `maui-pr-devicetests`, and `maui-pr-uitests` runs complete - [ ] Candidate-only build and test failures triaged - [ ] Release-readiness assessment completed This PR remains a draft while candidate validation and stabilization continue. Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/*
Preserve net11 APIs, platform refactors and dependency versions while integrating main fixes. Reconcile source generator diagnostics, Android request ownership and regression coverage. Android Material3TimePicker screenshot refresh is deferred because local emulator execution is blocked; the maintainer authorized pushing the merge resolution with that limitation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b658510-fa30-445f-9242-8463f99fed38
Contributor
Author
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 38455Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 38455" |
kubaflo
approved these changes
Sep 11, 2026
Contributor
Author
Skill Validation Results
✅ Skill Validation Results —
|
kubaflo
added a commit
that referenced
this pull request
Sep 15, 2026
<!-- Please let the below note in for people that find this PR --> > [!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](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ### Description of Change Targets **net11.0**. The automated main-to-net11.0 merge #38455 brought in the SkiaSharp 4 source changes from #37731 while retaining the older dependency and packaging definitions. Graphics.Skia therefore uses `SKPathBuilder` and the newer `DrawBitmap` overload but restores SkiaSharp 3.116.1. This breaks Windows/macOS solution builds, unit-test builds, and macOS packing; Helix monitoring and native-artifact publishing fail downstream. Restore the coordinated upgrade from #37731: - SkiaSharp 4.150.1, SkiaSharp.Extended 3.0.0, HarfBuzzSharp 14.2.1.1, and Svg.Skia 5.1.1. - Matching System.Memory, System.Buffers, and ExCSS versions. - Svg.SceneGraph and Svg.Animation version mappings, Resizetizer package contents, and third-party signing entries. With Graphics compiling, [PR build 1596609](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1596609) exposed two further Android recreation-test compilation problems. This PR also: - Aliases `Android.Content.ActivityFlags` so the new `AndroidX.Activity.ActivityFlags` type does not make intent flags ambiguous. - Shares an API-aware task-ID lookup between activity-result monitoring and the recreation test: `TaskInfo.TaskId` on Android 29+, `RecentTaskInfo.PersistentId` on Android 24–28. This preserves support for older Android versions instead of suppressing the platform warning or raising the minimum OS version. [PR build 1596661](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1596661) then reached integration testing and exposed JDK-discovery failures in macOS NativeAOT and Windows/macOS MultiProject tests. Although provisioning selected a valid JDK, Android SDK discovery still inspected broken system registrations (`java_home -X` returning empty XML) or the parent of a nested Windows JDK installation (missing `jar`). `ProvisionJdk` now publishes the validated home as `JavaSdkDirectory` in addition to `JAVA_HOME`, so downstream MSBuild processes use that JDK directly. The existing JDK validation and strict integration-test warning checks remain intact. No Graphics implementation changes, public API additions, or warning suppressions are needed. ### Issues Fixed Fixes the persistent `maui-pr` compilation failure on net11.0, observed in [build 1593297](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1593297) and [build 1594662](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1594662), plus the Android compilation and JDK-discovery blockers subsequently exposed in PR builds 1596609 and 1596661. ### Validation **Full CI: [maui-pr build 1596781](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1596781) completed successfully for head `7cbfdec35ece2ad29e072bae352fd29d3f417abb` on September 15, 2026. All 31 jobs succeeded, including Windows/macOS Debug/Release solution builds, both packaging jobs, and all integration jobs. All 48 Helix unit-test work items passed.** The previously failing JDK-sensitive integration jobs now pass: macOS AOT (18 passed), MultiProject macOS and Windows (19 passed and four existing skips each). The final Windows Build integration suite passed 84 tests with two existing skips. No tests were skipped or warning checks relaxed by this PR. Local and earlier CI evidence: - Reproduced all seven `CS0246`/`CS1501` errors with a targeted Graphics.Skia netstandard2.0 build before the change; the identical build passes afterward with zero warnings/errors. - Graphics.Tests (net11.0): 375 passed. - Resizetizer.UnitTests (net11.0): 782 passed, 2 skipped. - Resizetizer packing succeeds; the package contains all required Skia/SVG assemblies, including Svg.SceneGraph and Svg.Animation. - Confirmed restored managed/native package versions are aligned. - Reproduced both `CS0104` intent-flag errors and the `CA1416` task-ID error locally in Essentials.DeviceTests for net11.0-android; the same Debug build succeeds after the Android repair, with only existing MAUI1001 warnings. - Android API 30 emulator: all six ActivityStateManager tests passed, including all three recreation tests. The Essentials runner did not apply the requested category filter, so this run also exercised the broader suite: 386 passed, 30 ignored, and four Launcher mailto-resolution failures. Confirmed the emulator has no mailto handler. The API 24–28 task-ID fallback remains untested at runtime. - Before the JDK repair, CI build 1596661 passed both macOS solution configurations, Windows/macOS packing, and all 48 Helix unit-test work items across Windows/macOS and Debug/Release. Its iOS runtime integration cases also passed. - Ran `ProvisionJdk` locally and verified that both Azure variables contain the validated JDK home. Passed its emitted value to a fresh Android `_ResolveSdks` invocation using Azure's uppercase environment-variable convention; it selected the expected JDK even with an intentionally invalid `JAVA_HOME`. The CI agent-specific broken registrations were not reproduced locally. Local validation used the installed .NET 11 Preview 6 SDK; the successful full `maui-pr` build used the branch's RC.2 SDK. --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I detected changes in the main branch which have not been merged yet to net11.0. I'm a robot and am configured to help you automatically keep net11.0 up to date, so I've opened this PR.
This PR merges commits made on main by the following committers:
Instructions for merging from UI
This PR will not be auto-merged. When pull request checks pass, complete this PR by creating a merge commit, not a squash or rebase commit.
If this repo does not allow creating merge commits from the GitHub UI, use command line instructions.
Instructions for merging via command line
Run these commands to merge this pull request from the command line.
or if you are using SSH
After PR checks are complete push the branch
Instructions for resolving conflicts
Instructions for updating this pull request
Contributors to this repo have permission update this pull request by pushing to the branch 'merge/main-to-net11.0'. This can be done to resolve conflicts or make other changes to this pull request before it is merged.
The provided examples assume that the remote is named 'origin'. If you have a different remote name, please replace 'origin' with the name of your remote.
or if you are using SSH
Contact .NET Core Engineering (dotnet/dnceng) if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/dotnet/arcade/blob/main/.github/workflows/scripts/inter-branch-merge.ps1.