Bump MonoApiToolsMSBuildTasksPackageVersion to 0.5.0 and ship Essentials.AI public APIs#34574
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the repository’s centralized NuGet version pin for Mono.ApiTools.MSBuildTasks to pick up the newer 0.5.0 MSBuild tasks used for public API file generation/validation workflows.
Changes:
- Bumps
MonoApiToolsMSBuildTasksPackageVersionfrom0.4.0to0.5.0.
ef2f47e to
f006ef1
Compare
|
🚀 Dogfood this PR with:
curl -fsSL https://github.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34574Or
iex "& { $(irm https://github.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34574" |
🤖 AI Summary📊 Expand Full Review —
|
| File | Type | Change |
|---|---|---|
eng/Versions.props |
Build config | Version 0.4.0 → 0.5.0 |
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
Shipped APIs (identical across 3 platforms)
AppleIntelligenceChatClient— 2 constructors,GetResponseAsync,GetStreamingResponseAsyncNLEmbeddingGenerator— 3 constructors,Dispose,GenerateAsyncNLEmbeddingExtensions.AsIEmbeddingGenerator— extension method
Edge Cases / Concerns
- The
[MAUIAI0001]prefix was absent in the old Unshipped entries but is now present in Shipped. This is a correction — the Essentials.AI assembly uses[Experimental("MAUIAI0001")], so PublicAPI entries must be prefixed with[MAUIAI0001]. - MonoApiTools 0.5.0 may enforce stricter prefix validation — the version bump and prefix addition are likely related.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #34574 | Version bump + move APIs from Unshipped→Shipped with [MAUIAI0001] prefix |
⏳ CI IN PROGRESS | 7 files | Infrastructure change, no functional code |
🚦 Gate — Test Verification
Gate Result: ⚠️ SKIPPED
Platform: N/A
Mode: N/A
Reason: This PR contains no functional code changes and no tests. It is a pure infrastructure/metadata change (version bump + PublicAPI file management). Gate verification is not applicable.
- Tests FAIL without fix: N/A — no tests exist for this change type
- Tests PASS with fix: N/A — no tests exist for this change type
Assessment: Gate phase is correctly skipped for infrastructure PRs that:
- Have zero implementation file changes
- Have zero test file changes
- Fix no bug (no linked issue)
- Only modify build configuration and API metadata files
CI Build: Running at https://dev.azure.com/dnceng-public/cbb18261-c48f-4abb-8651-8cdcb5474649/_build/results?buildId=1352267 — will validate that the version bump and PublicAPI changes don't break the build.
🔧 Fix — Analysis & Comparison
Try-Fix Result: ⚠️ NOT APPLICABLE
Reason: PR #34574 is an infrastructure/metadata PR with no bug to fix.
Try-Fix is designed for bug-fix PRs where alternative code fixes can be explored and empirically tested. This PR:
- Contains no functional code changes — only a version string bump and PublicAPI text file moves
- Fixes no bug — there is no linked issue
- Has no test command — there are no tests to verify against
- Has no target files for alternative fix exploration — the changes are administrative
Running 4 AI models to propose "alternative version bumps" or "alternative ways to move text between files" would produce no meaningful results.
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #34574 | Bump MonoApiTools 0.4.0→0.5.0 + ship Essentials.AI APIs with [MAUIAI0001] prefix |
⏳ CI IN PROGRESS | 7 files | Only viable approach — this is metadata, not a bug fix |
Cross-Pollination
N/A — No alternative approaches possible for infrastructure changes.
Exhausted: Yes (by nature of change type)
Selected Fix: PR's approach — it is the only meaningful approach for this change type.
Code Review (In Lieu of Try-Fix)
Since try-fix is not applicable, a detailed code review was performed instead:
✅ Correctness Verified:
- Version bump:
MonoApiToolsMSBuildTasksPackageVersion0.4.0 → 0.5.0 — single property change, correct location ineng/Versions.props - API entries: All 13 API entries moved correctly from Unshipped→Shipped across all 3 platforms
[MAUIAI0001]prefix: Correctly added to all Shipped entries (was missing from old Unshipped entries)- File format:
#nullable enablepreserved on line 1 of all files, alphabetical sort maintained - Platform scope: Only Apple platforms (net-ios, net-maccatalyst, net-macos) modified — correct since these are Apple-only NaturalLanguage APIs
- Content parity: All 3 platform directories have identical API entries — correct since these APIs are the same across Apple platforms
- Non-Apple platforms untouched: net-android, net-windows, netstandard, net directories correctly unchanged
- The old Unshipped entries were missing the
[MAUIAI0001]prefix that the experimental attribute requires. This PR corrects that. - The 3 Shipped.txt files are byte-identical (verified) — consistent with these APIs being shared across Apple platforms.
📋 Report — Final Recommendation
✅ Final Recommendation: APPROVE
Phase Status
| Phase | Status | Notes |
|---|---|---|
| Pre-Flight | ✅ COMPLETE | Infrastructure/metadata PR — version bump + PublicAPI shipping |
| Gate | No tests exist (not applicable for infrastructure changes) | |
| Try-Fix | No bug to fix — detailed code review performed instead | |
| Report | ✅ COMPLETE |
Summary
PR #34574 makes two clean infrastructure changes:
- Bumps
MonoApiToolsMSBuildTasksPackageVersionfrom 0.4.0 to 0.5.0 - Ships 13 Essentials.AI public API entries by moving them from
PublicAPI.Unshipped.txttoPublicAPI.Shipped.txtacross 3 Apple platforms (net-ios, net-maccatalyst, net-macos)
The PR also corrects a pre-existing issue: the old Unshipped entries were missing the required [MAUIAI0001] experimental prefix, which is now correctly present in the Shipped entries.
Root Cause
N/A — This is not a bug fix. It is a routine maintenance task to:
- Update a build tooling dependency
- Mark previously-unshipped experimental APIs as shipped
Fix Quality
Excellent — The changes are minimal, correct, and well-scoped:
| Criterion | Assessment |
|---|---|
| Correctness | ✅ All 13 API entries moved accurately with proper [MAUIAI0001] prefix |
| Completeness | ✅ All 3 Apple platforms updated consistently; non-Apple platforms correctly untouched |
| File format | ✅ #nullable enable on line 1 preserved; alphabetical sort maintained; BOM encoding intact |
| Scope | ✅ Minimal — only touches necessary files (1 version prop + 6 PublicAPI files) |
| Risk | ✅ Very low — no functional code changes; CI build validates compatibility |
Potential Concerns
- MonoApiTools 0.5.0 compatibility: The version bump should be validated by CI. If the build passes, the new version is compatible.
- Experimental API shipping: These APIs are marked
[Experimental("MAUIAI0001")]— shipping them in PublicAPI.Shipped.txt signals stability intent while maintaining the experimental attribute for consumer-facing warnings.
CI Status
CI build 1352267 is currently in progress. Recommend waiting for CI green before merge, particularly to validate MonoApiTools 0.5.0 compatibility with the existing build infrastructure.
🚦 Gate - Test Before and After Fix📊 Expand Full Gate —
|
🤖 AI Summary📊 Expand Full Review —
|
| File | Type | Change |
|---|---|---|
eng/Versions.props |
Build config | MonoApiToolsMSBuildTasksPackageVersion 0.4.0 → 0.5.0 |
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-ios/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Shipped.txt |
API metadata | +13 entries with [MAUIAI0001] prefix |
src/AI/src/Essentials.AI/PublicAPI/net-macos/PublicAPI.Unshipped.txt |
API metadata | -13 entries (now only #nullable enable) |
Shipped APIs (identical across all 3 platforms)
AppleIntelligenceChatClient— 2 constructors,GetResponseAsync,GetStreamingResponseAsyncNLEmbeddingGenerator— 3 constructors,Dispose,GenerateAsyncNLEmbeddingExtensions.AsIEmbeddingGenerator— extension method
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #34574 | Version bump + move APIs from Unshipped→Shipped with [MAUIAI0001] prefix |
⏳ PENDING (Gate skipped — no tests) | 7 files | Infrastructure change, no functional code |
🔧 Fix — Analysis & Comparison
Fix Candidates
| # | Source | Approach | Test Result | Files Changed | Notes |
|---|---|---|---|---|---|
| PR | PR #34574 | Bump MonoApiTools 0.4.0→0.5.0 + ship Essentials.AI APIs with [MAUIAI0001] prefix |
7 files | Infrastructure/metadata change — no bug to fix |
Try-Fix Status: ⚠️ NOT APPLICABLE
Reason: PR #34574 is a pure infrastructure/metadata PR with no bug to fix.
The try-fix skill requires:
- A bug description — this PR fixes no bug, has no linked issue
- A test command — there are no tests for version bumps or PublicAPI file moves
- Target files — the changes are administrative text files with no executable logic
Running 4 AI models to propose "alternative ways to move text between files" or "alternative version numbers" would produce zero meaningful results and cannot be empirically validated.
Correctness verified by code review instead:
- ✅
MonoApiToolsMSBuildTasksPackageVersion0.4.0 → 0.5.0 — single property ineng/Versions.props - ✅ All 13 API entries moved correctly from Unshipped→Shipped across 3 Apple platforms
- ✅
[MAUIAI0001]prefix correctly added to all Shipped entries (was missing from old Unshipped entries — this is a correction) - ✅
#nullable enablepreserved on line 1 of all files - ✅ Only Apple platforms modified; non-Apple directories untouched
- ✅ Content parity: all 3 Shipped.txt files are byte-identical
Cross-Pollination
N/A — No alternative approaches possible for infrastructure changes.
Exhausted: Yes (by nature of change type — no code logic to alter)
Selected Fix: PR's approach — only viable approach for this change type
📋 Report — Final Recommendation
✅ Final Recommendation: APPROVE
Phase Status
| Phase | Status | Notes |
|---|---|---|
| Pre-Flight | ✅ COMPLETE | Infrastructure/metadata PR — version bump + PublicAPI shipping |
| Gate | No tests detected (not applicable for infrastructure changes) | |
| Try-Fix | No bug to fix — no test command, no target code files | |
| Report | ✅ COMPLETE |
Summary
PR #34574 makes two clean infrastructure changes:
- Bumps
MonoApiToolsMSBuildTasksPackageVersionfrom 0.4.0 to 0.5.0 ineng/Versions.props - Ships 13 Essentials.AI public API entries by moving them from
PublicAPI.Unshipped.txttoPublicAPI.Shipped.txtacross 3 Apple platforms (net-ios, net-maccatalyst, net-macos)
The PR also corrects a pre-existing issue: the old Unshipped entries were missing the required [MAUIAI0001] experimental prefix; the new Shipped entries correctly include it.
Root Cause
N/A — This is not a bug fix. Routine maintenance:
- Update build tooling dependency (MonoApiTools 0.4.0 → 0.5.0)
- Mark previously-unshipped Essentials.AI experimental APIs as shipped
Fix Quality
| Criterion | Assessment |
|---|---|
| Correctness | ✅ All 13 API entries moved accurately with proper [MAUIAI0001] prefix |
| Completeness | ✅ All 3 Apple platforms updated consistently; non-Apple platforms correctly untouched |
| File format | ✅ #nullable enable on line 1 preserved; alphabetical sort maintained |
| Scope | ✅ Minimal — only touches necessary files (1 version prop + 6 PublicAPI files) |
| Risk | ✅ Very low — no functional code changes; CI validates compatibility |
Notes
- No tests added (not applicable for this PR type) — Gate was correctly skipped
- Try-Fix not applicable — this PR contains no executable code changes and no bug to fix
- A prior agent review reached the same APPROVE recommendation (labels:
s/agent-approved,s/agent-fix-pr-picked)
Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com>
f006ef1 to
e0f23aa
Compare
…als.AI public APIs (#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (dotnet#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (dotnet#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
…als.AI public APIs (#34574) ## Changes - **eng/Versions.props**: Update `MonoApiToolsMSBuildTasksPackageVersion` from `0.4.0` to `0.5.0` - **Essentials.AI PublicAPI**: Move all `[MAUIAI0001]` API entries from `PublicAPI.Unshipped.txt` to `PublicAPI.Shipped.txt` for net-ios, net-maccatalyst, and net-macos — these APIs have now shipped ### Shipped APIs (per platform) - `AppleIntelligenceChatClient` (constructors, `GetResponseAsync`, `GetStreamingResponseAsync`) - `NLEmbeddingGenerator` (constructors, `Dispose`, `GenerateAsync`) - `NLEmbeddingExtensions.AsIEmbeddingGenerator` --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
## Blazor - Fix: Filter precompressed RCL assets from MAUI Blazor Hybrid APKs by @mattleibow in #33917 <details> <summary>🔧 Fixes</summary> - [.NET MAUI Blazor Hybrid App should not precompress assets](#33773) </details> - [Windows] Fix for Runtime error when closing external window with WPF Webview Control by @BagavathiPerumal in #34006 <details> <summary>🔧 Fixes</summary> - [Runtime error when closing external window with WPF Webview Control](#32944) </details> ## Button - [Android] ImageButton CornerRadius not being applied - fix by @kubaflo in #30074 <details> <summary>🔧 Fixes</summary> - [ImageButton CornerRadius not being applied on Android](#23854) </details> - Fix Disabled visual state ignored when Button has locally-set BackgroundColor/TextColor by @Dhivya-SF4094 in #34444 <details> <summary>🔧 Fixes</summary> - [[regression/9.0] VisualState "Disabled" is not properly applied for Button with custom appearance](#34363) </details> ## CollectionView - Fix CollectionView grid spacing updates for first row and column by @KarthikRajaKalaimani in #34527 <details> <summary>🔧 Fixes</summary> - [[MAUI] I2_Vertical grid for horizontal Item Spacing and Vertical Item Spacing - horizontally updating the spacing only applies to the second column](#34257) </details> - Fix CollectionView record struct selection on Windows by @jeremy-visionaid in #33488 - [Android] Ensure disconnected ItemsViewHandler doesn't hold onto the items source by @filipnavara in #24610 <details> <summary>🔧 Fixes</summary> - [Crash on NullReferenceException with measurement cells in CollectionView](#24304) </details> - [Windows] Fixed VisualState Setters not working properly for CollectionView by @Dhivya-SF4094 in #27230 <details> <summary>🔧 Fixes</summary> - [VisualState Setters not working properly on Windows for a CollectionView](#27086) - [[regression/8.0.3] [Windows][CollectionView]Label Disappear when set Style in ContentPage.Resources](#19209) - [[Windows] Label style defined as ContentPage Resource doesn't propagate to CollectionView](#18701) </details> - [Windows] Fixed Margin doesn't work inside CollectionView EmptyView by @Dhivya-SF4094 in #29897 <details> <summary>🔧 Fixes</summary> - [Margin doesn't work inside CollectionView EmptyView](#8494) </details> - [Android, Windows] Fix CarouselView PreviousPosition/PreviousItem incorrect during animated ScrollTo() by @praveenkumarkarunanithi in #34570 <details> <summary>🔧 Fixes</summary> - [[Android] CurrentItemChangedEventArgs.PreviousItem and PositionChangedEventArgs.PreviousPosition Not Updating Correctly When Using ScrollTo or Setting Position](#29544) </details> - [iOS] CarouselView2: Update internal scroll indicators for compositional layout by @SubhikshaSf4851 in #33639 <details> <summary>🔧 Fixes</summary> - [[iOS] Horizontal Scroll Bar Not Visible on CarouselView (CV2)](#29390) </details> - [CarouselViewHandler2] Fir fox CurrentItem does not work when ItemSpacing is set by @SyedAbdulAzeemSF4852 in #32135 <details> <summary>🔧 Fixes</summary> - [[CarouselViewHandler2] CurrentItem does not work when ItemSpacing is set](#32048) </details> - [iOS] Fix for Incorrect Scroll in Loop Mode When CurrentItem Is Not Found in ItemsSource by @SyedAbdulAzeemSF4852 in #32141 <details> <summary>🔧 Fixes</summary> - [[Android & iOS] Setting an invalid CurrentItem causes scroll to last item in looped CarouselView](#32139) </details> - [Android] IndicatorView: Add TalkBack accessibility descriptions for indicators by @praveenkumarkarunanithi in #31775 <details> <summary>🔧 Fixes</summary> - [[Android] IndicatorView does not convey correct accessibility information](#31446) </details> - [iOS, macOS] Fixed CollectionView KeepLastItemInView Not Updating Correctly When Items Are Added Dynamically by @NanthiniMahalingam in #32191 <details> <summary>🔧 Fixes</summary> - [[.NET10] I9 - Scroll_Position - "KeepLastItemInView" does not keep the last item at the end of the displayed list when adding new items.](#31825) </details> - [Windows, Android] Resolved issue with dynamic Header/Footer reassignment in CollectionView. by @prakashKannanSf3972 in #28403 <details> <summary>🔧 Fixes</summary> - [[Windows, Android] Toggling Header/Footer in CollectionView Dynamically is not working](#27959) - [CollectionView HeaderTemplate and FooterTemplate are not displayed when ItemsSource is initially set to null](#28337) - [[Android] Header and Footer Not Visible in CollectionView When EmptyView is Selected First](#28351) </details> - [Android] Fix CollectionView inside disabled RefreshView blocks scroll by @Vignesh-SF3580 in #34702 <details> <summary>🔧 Fixes</summary> - [C6-The C6 page cannot scroll on Windows and Android platforms.](#34666) </details> - [Android] CollectionView: Fix SelectedItem visual state not applying when re-selecting same item by @KarthikRajaKalaimani in #31591 <details> <summary>🔧 Fixes</summary> - [CollectionView - SelectedItem visual state manager not working](#20062) </details> - [Windows] Fixed CollectionView.EmptyView can not be removed by setting it to Null by @Dhivya-SF4094 in #29487 <details> <summary>🔧 Fixes</summary> - [[Windows] CollectionView.EmptyView can not be removed by setting it to Null](#18657) - [[Windows] EmptyViewTemplate Not Working in CarouselView](#29463) - [EmptyViewTemplate does not do anything](#18551) - [[MAUI] I5_EmptyView - The data template selector cannot display the correct string.](#23330) </details> - [iOS] Support for IsSwipeEnabled on CarouselView2 by @kubaflo in #29996 <details> <summary>🔧 Fixes</summary> - [[iOS] IsSwipeEnabled Not Working on CarouselView (CV2)](#29391) </details> - [iOS, MacOS] Fixed FlowDirection not working on Header/Footer in CollectionView by @Dhivya-SF4094 in #32775 <details> <summary>🔧 Fixes</summary> - [[iOS, MacOS] FlowDirection not working on Header/Footer in CollectionView](#32771) </details> - [iOS] CollectionView: Fix drag-and-drop reordering into empty groups by @SuthiYuvaraj in #34151 <details> <summary>🔧 Fixes</summary> - [CollectionView Drag and Drop Reordering Can't Drop in Empty Group](#12008) </details> - [Android] CollectionView: Fix drag-and-drop reordering into empty groups by @SuthiYuvaraj in #31867 <details> <summary>🔧 Fixes</summary> - [CollectionView Drag and Drop Reordering Can't Drop in Empty Group](#12008) </details> - [iOS] Fix vertical CarouselView MandatorySingle snapping on iOS by @Vignesh-SF3580 in #34700 <details> <summary>🔧 Fixes</summary> - [CarouselView vertical snap points ignored on iOS with Microsoft.Maui.Controls v10.0.20 (regression from v9.0.120)](#33308) </details> - [iOS26] Fix CarouselView scrolling to wrong item when navigating to last item by @Vignesh-SF3580 in #34013 <details> <summary>🔧 Fixes</summary> - [[iOS 26] CarouselView does not scroll to the correct last item](#33770) </details> - Fixed the OnPlatform does not work for header property in Collection view by @NanthiniMahalingam in #28935 <details> <summary>🔧 Fixes</summary> - [OnPlatform does not work in Header of CollectionView](#25124) </details> - [Android] [Candidate branch] Fix VerifySelectedItemClearsOnNullAssignment, CollectionViewSelectionShouldClear, SelectedItemVisualIsCleared UI test failure on Android by @KarthikRajaKalaimani in #34928 ## DateTimePicker - [iOS] Fix for DatePicker FlowDirection Not Working on iOS by @SyedAbdulAzeemSF4852 in #30193 <details> <summary>🔧 Fixes</summary> - [[iOS] DatePicker FlowDirection Not Working on iOS](#30065) </details> ## Drawing - [Shapes] Line: Fix asymmetric Stretch.None path translation when right/bottom edge overflows by @NirmalKumarYuvaraj in #34385 <details> <summary>🔧 Fixes</summary> - [Line coordinates not computed correctly](#11404) - [Lines not drawing correctly](#26961) </details> - [Android] Fixed GraphicsView drawable is visible outside the canvas by @NirmalKumarYuvaraj in #28353 <details> <summary>🔧 Fixes</summary> - [[Android] GraphicsView, The drawn image can also be visible outside the canvas](#20834) </details> - Fixed Custom Drawable does not support binding by @NirmalKumarYuvaraj in #29442 <details> <summary>🔧 Fixes</summary> - [Custom IDrawable control does not databind to a model property when used inside a CollectionView ItemTemplate](#20991) </details> - Added a support for GradientBrushes on Shape.Stroke by @kubaflo in #22208 <details> <summary>🔧 Fixes</summary> - [GradientBrushes are not supported on Shape.Stroke](#21983) </details> ## Editor - Fixed Editor HorizontalTextAlignment does not update at run time by @NirmalKumarYuvaraj in #25129 <details> <summary>🔧 Fixes</summary> - [Editor HorizontalTextAlignment Does not Works.](#10987) - [[iOS/MacOs] Right-To-Left (RTL) alignment is not applied to Editor placeholder](#30052) </details> - [Windows] Fixed Entry Editor placeholder Text CharacterSpacing by @SubhikshaSf4851 in #30324 <details> <summary>🔧 Fixes</summary> - [[Windows] CharacterSpacing not applied to Placeholder text in Entry and Editor controls](#30071) </details> ## Entry - [Windows] Fix fo setting an Entry's Keyboard to Date causes it to be interpreted as a password input by @SyedAbdulAzeemSF4852 in #29344 <details> <summary>🔧 Fixes</summary> - [[Windows] Entry Keyboad-Type "Date" results in Password-Entry](#28975) </details> - [Android] Exception thrown when give more than 5000 characters to the Text property of Entry. by @KarthikRajaKalaimani in #30242 <details> <summary>🔧 Fixes</summary> - [Android crash when Entry has >5000 characters](#30144) </details> ## Essentials - Bump MonoApiToolsMSBuildTasksPackageVersion to 0.5.0 and ship Essentials.AI public APIs by @mattleibow via @Copilot in #34574 - [Mac] DeviceDisplay.KeepScreenOn not being respected on Mac OS by @HarishwaranVijayakumar in #32708 <details> <summary>🔧 Fixes</summary> - [[Mac Catalyst] DeviceDisplay.KeepScreenOn not being respected on Mac OS](#26059) </details> ## Flyoutpage - [Windows] FlyoutPage: update CollapseStyle at runtime by @devanathan-vaithiyanathan in #29927 <details> <summary>🔧 Fixes</summary> - [Flyout Page SetCollapseStyle doesn't have any change](#18200) </details> ## Gestures - [Android] Fix for TapGestureRecognizer doesn't fire by @HarishwaranVijayakumar in #34497 <details> <summary>🔧 Fixes</summary> - [[Android] TapGestureRecognizer doesn't fire](#5825) </details> ## Image - [Android] Fix Share.RequestAsync SecurityException on Android 10+ caused by missing ClipData by @HarishwaranVijayakumar in #34417 <details> <summary>🔧 Fixes</summary> - [[Bug] Share.RequestAsync throws java.lang.SecurityException (uid=1000) on Android 10+ due to missing intent.ClipData](#34370) </details> - [Windows]Fixed the MauiImage with logical name containing path issue by @sheiksyedm in #32864 <details> <summary>🔧 Fixes</summary> - [MauiImage with LogicalName containing path - is not working on Windows](#32356) </details> - [Android, Windows & iOS] Fix Downsize/ScaleImage to maintain aspect ratio and prevent upscaling by @SyedAbdulAzeemSF4852 in #30808 <details> <summary>🔧 Fixes</summary> - [[Android & Windows] In GraphicsView, the aspect ratio is not maintained when Downsize is called with both maxWidth and maxHeight](#30803) </details> ## Label - [iOS , macOS] Fixed Label text cropping when a width request is specified on the label inside a VerticalStackLayout with specified width request by @NanthiniMahalingam in #29166 <details> <summary>🔧 Fixes</summary> - [Label text gets cropped when a width request is specified on the label inside a VerticalStackLayout](#28660) - [[iOS] Label with a fixed WidthRequest has wrong height](#26644) </details> - [Android] Fix Label word wrapping clips text depending on alignment and layout options by @Dhivya-SF4094 in #34533 <details> <summary>🔧 Fixes</summary> - [Bug: Android Label word wrapping clips text depending on alignment and layout options](#34459) </details> - LineHeight and decorations for HTML Label - fix by @kubaflo in #31202 <details> <summary>🔧 Fixes</summary> - [LineHeight with HTML Label not working](#22193) - [lineheight is broken ](#22197) </details> - [iOS] Fix Label with TailTruncation not rendering after empty-to-non-empty text transition by @kubaflo in #34812 <details> <summary>🔧 Fixes</summary> - [Label with LineBreakMode="TailTruncation" does not render text if initial Text is null or empty on first render (iOS)](#34591) </details> ## Layout - [Android] Fix overflowing children clipped when parent Opacity < 1 by @SyedAbdulAzeemSF4852 in #34565 <details> <summary>🔧 Fixes</summary> - [Maui Android parent view inappropriately creates clipping mask when its opacity is less than 1, cropping out children](#22038) </details> - Fixed the FlexLayout reverse issue with the AlignContent by @Ahamed-Ali in #32134 <details> <summary>🔧 Fixes</summary> - [FlexLayout alignment issue when Wrap is set to Reverse and AlignContent is set to SpaceAround, SpaceBetween or SpaceEvenly](#31565) </details> - [iOS/Mac] Fixed BoxView in AbsoluteLayout did not return to its default AutoSize for Height and Width after reset by @Dhivya-SF4094 in #31648 <details> <summary>🔧 Fixes</summary> - [[iOS, Catalyst] BoxView in AbsoluteLayout does not return to default AutoSize for Height/Width after reset](#31496) </details> ## Map - [Windows] Implement WinUI 3 MapControl handler using Azure Maps by @jfversluis in #34138 ## Modal - [Android] PopToRootAsync for modal pages - improvements by @kubaflo in #26851 <details> <summary>🔧 Fixes</summary> - [Shell PopToRootAsync doesn't happen instantly - previous pages flash quickly. Only happens in NET 9](#26846) </details> - [Android] Fix HideSoftInputOnTapped doesn't work on Modal Pages by @HarishwaranVijayakumar in #34770 <details> <summary>🔧 Fixes</summary> - [HideSoftInputOnTapped doesn't work on Modal Pages](#34730) </details> ## Navigation - [iOS] Alert popup may be displayed on wrong window when modal page navigation is in progress - fix by @kubaflo in #31016 <details> <summary>🔧 Fixes</summary> - [Alert popup may be displayed on wrong window when modal page navigation is in progress on iOS/MacOS](#30970) </details> - [Android] Page: Fix OnNavigatedTo called twice when NavigationPage is FlyoutPage Detail by @KarthikRajaKalaimani in #31931 <details> <summary>🔧 Fixes</summary> - [NavigationPage and FlyoutPage both call OnNavigatedTo, so it is called twice](#23902) </details> ## Picker - Fixed the Picker didn't dismiss it when tapping outside on iOS and MacCatalyst platform. by @KarthikRajaKalaimani in #30067 <details> <summary>🔧 Fixes</summary> - [[regression/8.0.3] iOS Picker dismiss does not work when clicking outside of the Picker](#19168) </details> - [Windows] Fixed Picker items width wont resize back by @SubhikshaSf4851 in #33042 <details> <summary>🔧 Fixes</summary> - [Picker items width won't resize back when its container window gets resized down.](#32984) </details> ## RadioButton - Fix TalkBack not correctly narrating RadioButtons with Content by @SubhikshaSf4851 in #34521 <details> <summary>🔧 Fixes</summary> - [[Android] TalkBack does not correctly narrate RadioButtons with Content](#34322) </details> ## SafeArea - [Android] Fix SafeAreaShouldWorkOnAllShellTabs test failure on API 36 by @praveenkumarkarunanithi in #34239 ## ScrollView - [iOS] Preserve ScrollView offsets when Orientation changes to Neither by @Vignesh-SF3580 in #34672 <details> <summary>🔧 Fixes</summary> - [Incorrect implementation of ScrollView.Orientation](#34583) </details> ## Searchbar - [Android] Fix SearchBar text bleeding between instances after navigation by @SyedAbdulAzeemSF4852 in #34703 <details> <summary>🔧 Fixes</summary> - [MAUI Android: SearchBar copies content from one to the other](#20348) </details> - Fixed SearchBar CursorPosition and SelectionLength not updating when typing by @Dhivya-SF4094 in #34347 <details> <summary>🔧 Fixes</summary> - [SearchBar - CursorPosition and SelectionLength are not updated when the user types](#30779) </details> ## SearchBar - [Windows] Fixed SearchHandler issues by @Tamilarasan-Paranthaman in #29520 <details> <summary>🔧 Fixes</summary> - [[Windows] SearchHandler APIs are not functioning properly](#29493) </details> ## Shell - [iOS, Mac] Fix for Background set to Transparent doesn't have the same behavior as BackgroundColor Transparent by @HarishwaranVijayakumar in #32245 <details> <summary>🔧 Fixes</summary> - [Background set to Transparent doesn't have the same behavior as BackgroundColor = Transparent](#22769) </details> - [iOS] Fix App crash with NullReferenceException in ShellSectionRenderer by @devanathan-vaithiyanathan in #32109 <details> <summary>🔧 Fixes</summary> - [[iOS] App crash with NullReferenceException in ShellSectionRenderer](#31961) </details> - [Android] Fixed back button icon selection logic in ShellToolbarTracker by @kubaflo in #32080 <details> <summary>🔧 Fixes</summary> - [IconOverride in Shell.BackButtonBehavior does not work.](#32050) </details> - Fix TabBarIsVisible Not Updating Dynamically When Set on ShellContent by @Vignesh-SF3580 in #33090 <details> <summary>🔧 Fixes</summary> - [Shell.TabBarIsVisible is not updated dynamically at runtime](#32994) </details> - [iOS, macOS] Shell: Fix RTL flow direction for flyout, menu cells, tab bar, and Locked flyout position by @NanthiniMahalingam in #32701 <details> <summary>🔧 Fixes</summary> - [[iOS, Mac Catalyst] Shell Flyout and Content Do Not Fully Support RightToLeft (RTL)](#32419) </details> - [IOS] Inconsistent Resize Behavior for Header/Footer - fix by @kubaflo in #28713 <details> <summary>🔧 Fixes</summary> - [[IOS, Mac] Inconsistent Resize Behavior for Header/Footer](#26397) - [Enable Shell Flyout Header/Footer resize tests on iOS/Catalyst](#33501) </details> - [Android] Fix for SearchHandler retaining previous page SearchView data in pages within Shell sections by @BagavathiPerumal in #29545 <details> <summary>🔧 Fixes</summary> - [[Shell][Android] The truth is out there...but not on top tab search handlers](#8716) </details> - [Android] Fix empty space above TabBar after navigating back when TabBar visibility is toggled by @praveenkumarkarunanithi in #34324 <details> <summary>🔧 Fixes</summary> - [Empty space appears above TabBar after navigating back when TabBar visibility is toggled](#33703) - [Grid with SafeAreaEdges=Container has incorrect size when tab bar appears](#34256) </details> ## SwipeView - [Android] SwipeView: Use MeasureSpecMode.Exactly for SwipeItem layout to fix text visibility by @Ahamed-Ali in #27399 <details> <summary>🔧 Fixes</summary> - [[Android] Right SwipeView items are not visible in the SwipeView.](#27367) </details> - [Android] Prevent the tap that closes an open SwipeView from being propagated to children by @sjordanGSS in #24275 <details> <summary>🔧 Fixes</summary> - [Tapping to close a SwipeView will activate TapGestureRecognizers on .Content](#23921) </details> ## Switch - [iOS & Mac] Fix for SearchHandler retains previous page state when switching top tabs by @BagavathiPerumal in #34735 <details> <summary>🔧 Fixes</summary> - [[Shell] [iOS & Mac] SearchHandler retains previous page state when switching top tabs](#34693) </details> ## TabbedPage - [Android] Fixed NullReferenceException in app with TabBar after returning from minimized state by @NirmalKumarYuvaraj in #34779 <details> <summary>🔧 Fixes</summary> - [NullReferenceException in app with TabBar after returning from minimized state](#34720) </details> ## Titlebar - Fixed BindingContext of the Window TitleBar is not being passed on to its child content. by @NirmalKumarYuvaraj in #30080 <details> <summary>🔧 Fixes</summary> - [The BindingContext of the Window TitleBar is not being passed on to its child content.](#24831) </details> - [Windows/Mac] Fix RTL FlowDirection causes overlap with native window control buttons in TitleBar by @devanathan-vaithiyanathan in #30400 <details> <summary>🔧 Fixes</summary> - [[Windows, Mac] RTL FlowDirection causes overlap with native window control buttons in TitleBar](#30399) </details> ## WebView - [Windows] Fix WebView background color not being applied by @SubhikshaSf4851 in #34599 <details> <summary>🔧 Fixes</summary> - [WebView background color has changed after update, can't override.](#34518) </details> - [Android] Fix for WebView/HybridWebView briefly flashes full screen before layout completes by @praveenkumarkarunanithi in #33207 <details> <summary>🔧 Fixes</summary> - [[Android] HybridWebView briefly resizes to full screen when page is opened before snapping back to correct size](#31475) </details> ## Xaml - Improved style inheritance by @kubaflo in #31317 <details> <summary>🔧 Fixes</summary> - [Styles based on a style that is based on another style that uses AppThemeBinding do not inherit properties correctly.](#31280) </details> - Fix for VisualStateManager Setter.TargetName failing when ControlTemplate is applied by @BagavathiPerumal in #33208 <details> <summary>🔧 Fixes</summary> - [Setter.TargetName + ControlTemplate crash](#26977) </details> <details> <summary>🧪 Testing (4)</summary> - [Testing] Additional Feature Matrix Event Test Cases for Slider and ScrollView by @nivetha-nagalingam in #34352 - [Testing] Fixed Build error on inflight/ candidate PR 34885 by @NafeelaNazhir in #34891 - [Testing] Fixed UI test image failure in PR 34885 - [13/4/2026] by @NafeelaNazhir in #34933 - Fixed test failure - CursorPositionUpdatesWhenSearchBarGainsFocus by @Dhivya-SF4094 in #34938 </details> <details> <summary>📦 Other (3)</summary> - Fix Loaded event not called for MAUI View added to native View by @NirmalKumarYuvaraj in #34345 <details> <summary>🔧 Fixes</summary> - [Loaded event not called for MAUI View added to native View](#34310) </details> - Add public IAlertManager and IAlertManagerSubscription interfaces by @Redth in #34228 <details> <summary>🔧 Fixes</summary> - [Alert/Dialog system (`DisplayAlert`, `DisplayActionSheet`, `DisplayPromptAsync`) needs a public extensibility point](#34104) </details> - Fix crash when displaying alerts on unloaded pages by @kubaflo in #33288 </details> <details> <summary>📝 Issue References</summary> Fixes #5825, Fixes #8494, Fixes #8716, Fixes #10987, Fixes #11404, Fixes #12008, Fixes #18200, Fixes #18551, Fixes #18657, Fixes #18701, Fixes #19168, Fixes #19209, Fixes #20062, Fixes #20348, Fixes #20834, Fixes #20991, Fixes #21983, Fixes #22038, Fixes #22193, Fixes #22197, Fixes #22769, Fixes #23330, Fixes #23854, Fixes #23902, Fixes #23921, Fixes #24304, Fixes #24831, Fixes #25124, Fixes #26059, Fixes #26397, Fixes #26644, Fixes #26846, Fixes #26961, Fixes #26977, Fixes #27086, Fixes #27367, Fixes #27959, Fixes #28337, Fixes #28351, Fixes #28660, Fixes #28975, Fixes #29390, Fixes #29391, Fixes #29463, Fixes #29493, Fixes #29544, Fixes #30052, Fixes #30065, Fixes #30071, Fixes #30144, Fixes #30399, Fixes #30779, Fixes #30803, Fixes #30970, Fixes #31280, Fixes #31446, Fixes #31475, Fixes #31496, Fixes #31565, Fixes #31825, Fixes #31961, Fixes #32048, Fixes #32050, Fixes #32139, Fixes #32356, Fixes #32419, Fixes #32771, Fixes #32944, Fixes #32984, Fixes #32994, Fixes #33308, Fixes #33501, Fixes #33703, Fixes #33770, Fixes #33773, Fixes #34104, Fixes #34256, Fixes #34257, Fixes #34310, Fixes #34322, Fixes #34363, Fixes #34370, Fixes #34459, Fixes #34518, Fixes #34583, Fixes #34591, Fixes #34666, Fixes #34693, Fixes #34720, Fixes #34730 </details> **Full Changelog**: main...inflight/candidate
Changes
MonoApiToolsMSBuildTasksPackageVersionfrom0.4.0to0.5.0[MAUIAI0001]API entries fromPublicAPI.Unshipped.txttoPublicAPI.Shipped.txtfor net-ios, net-maccatalyst, and net-macos — these APIs have now shippedShipped APIs (per platform)
AppleIntelligenceChatClient(constructors,GetResponseAsync,GetStreamingResponseAsync)NLEmbeddingGenerator(constructors,Dispose,GenerateAsync)NLEmbeddingExtensions.AsIEmbeddingGenerator