Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
d604ddd
[xcode26.4] Bump PR to Xcode 26.4 Beta 2 (#24817)
dalexsoto Mar 5, 2026
76523b8
Merge remote-tracking branch 'origin/main' into `xcode26.4`
dalexsoto Mar 6, 2026
8ef7b9e
[tests] Fix arm64 - Mac Tahoe (26) condition
dalexsoto Mar 6, 2026
9942936
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4…
dalexsoto Mar 9, 2026
59fb54d
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4
dalexsoto Mar 9, 2026
006c288
[xcode26.4] Merge remote-tracking branch main into xcode26.4 (#24859)
dalexsoto Mar 9, 2026
90c7c8f
[xcode26.4] Update to Xcode 26.4 Beta 3 (#24864)
dalexsoto Mar 10, 2026
72192d1
[xcode26.4] Merge remote-tracking branch main into xcode26.4
dalexsoto Mar 16, 2026
e160b93
[xcode26.4] Merge remote-tracking branch main into xcode26.4 (#24898)
dalexsoto Mar 16, 2026
7afea30
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4
dalexsoto Mar 17, 2026
6e77759
[Accessibility] Update bindings to Xcode 26.4 Beta 3 (#24877)
dalexsoto Mar 17, 2026
1a21627
[xcode26.4] Merge remote-tracking branch main into xcode26.4 (#24910)
dalexsoto Mar 18, 2026
a963311
[AVFoundation] Updated bindings to Xcode 26.4 RC (#24933)
dalexsoto Mar 20, 2026
ece47f3
[BackgroundAssets] Update bindings to Xcode 26.4 Release Candidate (#…
dalexsoto Mar 20, 2026
ffd4f40
[ClassKit] Update bindings to Xcode 26.4 Release Candidate (#24946)
dalexsoto Mar 20, 2026
af24a91
[xcode26.4] Update to Xcode 26.4 Release Candidate (#24927)
dalexsoto Mar 20, 2026
ca0f324
[CoreData] Update bindings to Xcode 26.4 Release Candidate (#24951)
dalexsoto Mar 20, 2026
14bdefb
[BrowserKit] Update bindings to Xcode 26.4 Release Candidate (#24939)
dalexsoto Mar 21, 2026
cdd1160
[AVKit] Update bindings to Xcode 26.4 Release Candidate (#24945)
dalexsoto Mar 21, 2026
96794d7
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4…
dalexsoto Mar 21, 2026
1a55944
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4…
dalexsoto Mar 21, 2026
214953a
[CoreTelephony] Update bindings to Xcode 26.4 Release Candidate (#24959)
dalexsoto Mar 23, 2026
66ca293
[CoreNFC] Update bindings to Xcode 26.4 Release Candidate (#24958)
dalexsoto Mar 23, 2026
7b59288
[CoreText] Update bindings to Xcode 26.4 Release Candidate (#24960)
dalexsoto Mar 23, 2026
9a43d25
[CarPlay] Update bindings to Xcode 26.4 Release Candidate (#24961)
dalexsoto Mar 23, 2026
f03000c
[Foundation] Update to Xcode 26.4 Release Candidate (#24966)
dalexsoto Mar 23, 2026
790b2cf
[tests] Propagate XCODE_VERSION and XCODE_IS_STABLE to Windows CI tes…
dalexsoto Mar 23, 2026
f3ea558
[GameController] Update bindings to Xcode 26.4 Release Candidate (#24…
dalexsoto Mar 23, 2026
96bbf20
[PushKit] Update bindings to Xcode 26.4 Release Candidate (#24985)
dalexsoto Mar 24, 2026
6939769
[MetalKit] Update bindings to Xcode 26.4 Release Candidate (#24976)
dalexsoto Mar 24, 2026
51b6f8e
[SensorKit] Update bindings to Xcode 26.4 Release Candidate (#24983)
dalexsoto Mar 24, 2026
7df356d
[Metal] Update bindings to Xcode 26.4 Release Candidate (#24980)
dalexsoto Mar 24, 2026
6ce4f74
[MetalPerformanceShaders] Update bindings to Xcode 26.4 Release Candi…
dalexsoto Mar 24, 2026
c21166f
[PassKit] Update bindings to Xcode 26.4 Release Candidate (#24982)
dalexsoto Mar 24, 2026
77a5a70
[Photos] Update bindings to Xcode 26.4 Release Candidate (#24981)
dalexsoto Mar 24, 2026
f9ff4d7
[NetworkExtension] Update bindings to Xcode 26.4 Release Candidate (#…
dalexsoto Mar 24, 2026
de30b52
[WebKit] Update bindings to Xcode 26.4 Release Candidate (#24990)
dalexsoto Mar 24, 2026
ba62b83
[AuthenticationServices] Update bindings to Xcode 26.4 Release Candid…
dalexsoto Mar 24, 2026
60f6647
[UIKit] Update bindings to Xcode 26.4 Release Candidate (#24992)
dalexsoto Mar 24, 2026
ef05840
[FSKit] Update bindings to Xcode 26.4 Release Candidate (#24996)
dalexsoto Mar 24, 2026
c9ccaee
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4
dalexsoto Mar 24, 2026
4533431
[AutomaticAssessmentConfiguration] Update bindings to Xcode 26.4 Rele…
dalexsoto Mar 24, 2026
3098a3a
[xcode26.4] Merge remote-tracking branch 'origin/main' into xcode26.4…
dalexsoto Mar 24, 2026
d9de765
[CoreWlan] Update bindings to Xcode 26.4 Release Candidate (#24995)
dalexsoto Mar 24, 2026
2868d50
[xcode26.4] Update to Xcode 26.4 Stable (#25005)
dalexsoto Mar 25, 2026
04325e3
[main] Merge remote-tracking branch 'origin/xcode26.4' into main
dalexsoto Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion .agents/skills/macios-xcode-beta-update/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,44 @@ Capture resulting `tests/xtro-sharpie/api-annotations-dotnet/*.todo` and `*.igno

## Introspection workflow (all platforms)

Use explicit prebuild + run to avoid mobile run target issues:
Use explicit prebuild + run to avoid mobile run target issues.

**IMPORTANT: Run platforms sequentially, not in parallel.** The shared `obj/` directories
(`tests/common/Touch.Unit/Touch.Client/dotnet/obj` and `tests/common/MonoTouch.Dialog/obj`)
cause NETSDK1005 errors when concurrent restores overwrite `project.assets.json` with
different platform TFMs. Clean shared obj dirs before each platform build:

```bash
rm -rf tests/common/Touch.Unit/Touch.Client/dotnet/obj tests/common/MonoTouch.Dialog/obj
make -C tests/introspection/dotnet build-ios run-ios

rm -rf tests/common/Touch.Unit/Touch.Client/dotnet/obj tests/common/MonoTouch.Dialog/obj
make -C tests/introspection/dotnet build-tvos run-tvos

rm -rf tests/common/Touch.Unit/Touch.Client/dotnet/obj tests/common/MonoTouch.Dialog/obj
make -C tests/introspection/dotnet build-macOS run-macOS

rm -rf tests/common/Touch.Unit/Touch.Client/dotnet/obj tests/common/MonoTouch.Dialog/obj
make -C tests/introspection/dotnet build-MacCatalyst run-MacCatalyst
```

**Desktop test output:** For macOS and Mac Catalyst, `make run-macOS`/`run-MacCatalyst` uses
`dotnet build -t:Run` which launches the app without waiting or capturing stdout. The make
command exits immediately with success even while tests are still running. To get actual test
results, run the executable directly after building:

```bash
# Build first
make -C tests/introspection/dotnet build-macOS
# Then run directly to capture output
NUNIT_AUTOSTART=true NUNIT_AUTOEXIT=true \
tests/introspection/dotnet/macOS/bin/Debug/net10.0-macos/osx-arm64/introspection.app/Contents/MacOS/introspection
```

Same pattern for Mac Catalyst (replace `macOS` → `MacCatalyst`, `net10.0-macos` → `net10.0-maccatalyst`, `osx-arm64` → `maccatalyst-arm64`).

iOS and tvOS simulator tests capture output correctly via `make run-ios`/`run-tvos`.

These runs can take a long time; wait for completion and summarize outcomes per platform.

## Completion checklist
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,29 @@

`make -C tests/introspection/dotnet run-ios` may fail if the app isn't built first.
Prefer `build-ios run-ios` (same for other platforms) in the same command.

## Introspection parallelism gotcha

Running introspection tests for multiple platforms in parallel causes NETSDK1005 errors.
The shared test libraries (`Touch.Unit/Touch.Client/dotnet/` and `MonoTouch.Dialog/`) have
per-platform `.csproj` files that share a single `obj/` directory. When one platform restores,
it writes `project.assets.json` targeting only that platform's TFM, breaking other platforms.

**Fix:** Run sequentially and clean shared obj dirs before each platform:
```bash
rm -rf tests/common/Touch.Unit/Touch.Client/dotnet/obj tests/common/MonoTouch.Dialog/obj
```

## Desktop introspection output capture

For macOS and Mac Catalyst, `make run-macOS`/`run-MacCatalyst` uses `dotnet build -t:Run`
which launches the desktop app and exits immediately without waiting or capturing stdout.
The make target will report success (exit 0) while the test app is still running.

**Fix:** After building, run the executable directly with environment variables:
```bash
NUNIT_AUTOSTART=true NUNIT_AUTOEXIT=true \
tests/introspection/dotnet/macOS/bin/Debug/net10.0-macos/osx-arm64/introspection.app/Contents/MacOS/introspection
```

iOS and tvOS simulator tests do not have this problem — their output is captured correctly.
10 changes: 5 additions & 5 deletions Make.config
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ NUGET_RELEASE_BRANCH=release/10.0.1xx
##
## Note that the prerelease identifier should be as short as possible, because otherwise
## the resulting package name can become too long for MSIs.
NUGET_HARDCODED_PRERELEASE_IDENTIFIER=xcode26.2
NUGET_HARDCODED_PRERELEASE_BRANCH=xcode26.2
NUGET_HARDCODED_PRERELEASE_IDENTIFIER=xcode26.4
NUGET_HARDCODED_PRERELEASE_BRANCH=xcode26.4

# compute the alphanumeric version of branch names
NUGET_RELEASE_BRANCH_ALPHANUMERIC:=$(shell export LANG=C; printf "%s" "$(NUGET_RELEASE_BRANCH)" | tr -c '[a-zA-Z0-9-]' '-')
Expand Down Expand Up @@ -207,10 +207,10 @@ MACCATALYST_NUGET_VERSION_NO_METADATA=$(MACCATALYST_NUGET_VERSION)$(NUGET_PREREL
MACCATALYST_NUGET_VERSION_FULL=$(MACCATALYST_NUGET_VERSION_NO_METADATA)$(NUGET_BUILD_METADATA)

# Xcode version should have both a major and a minor version (even if the minor version is 0)
XCODE_VERSION=26.3
XCODE_URL=https://dl.internalx.com/internal-files/xcodes/Xcode_26.3.xip
XCODE_VERSION=26.4
XCODE_URL=https://bosstoragemirror.blob.core.windows.net/internal-files/xcodes/Xcode_26.4.xip
ifndef IS_LINUX
XCODE_DEVELOPER_ROOT=/Applications/Xcode_26.3.0.app/Contents/Developer
XCODE_DEVELOPER_ROOT=/Applications/Xcode_26.4.0.app/Contents/Developer
XCODE_PRODUCT_BUILD_VERSION:=$(shell /usr/libexec/PlistBuddy -c 'Print :ProductBuildVersion' $(XCODE_DEVELOPER_ROOT)/../version.plist 2>/dev/null || echo " $(shell tput setaf 1 2>/dev/null)The required Xcode ($(XCODE_VERSION)) is not installed in $(basename $(basename $(XCODE_DEVELOPER_ROOT)))$(shell tput sgr0 2>/dev/null)" >&2)

# We define stable Xcode as the Xcode app being named like "Xcode_#.#[.#].app"
Expand Down
9 changes: 4 additions & 5 deletions Make.versions
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
# IMPORTANT: There must be *no* managed API differences unless the two first
# numbers (major.minor) changes.

IOS_NUGET_OS_VERSION=26.2
TVOS_NUGET_OS_VERSION=26.2
MACOS_NUGET_OS_VERSION=26.2
MACCATALYST_NUGET_OS_VERSION=26.2
IOS_NUGET_OS_VERSION=26.4
TVOS_NUGET_OS_VERSION=26.4
MACOS_NUGET_OS_VERSION=26.4
MACCATALYST_NUGET_OS_VERSION=26.4

# The following are the OS versions we first supported with the current .NET version.
# These versions must *not* change with minor .NET updates, only major .NET releases.
Expand Down Expand Up @@ -133,4 +133,3 @@ SUPPORTED_API_VERSIONS_IOS+=$(BETA_API_VERSIONS_IOS)
SUPPORTED_API_VERSIONS_TVOS+=$(BETA_API_VERSIONS_TVOS)
SUPPORTED_API_VERSIONS_MACOS+=$(BETA_API_VERSIONS_MACOS)
SUPPORTED_API_VERSIONS_MACCATALYST+=$(BETA_API_VERSIONS_MACCATALYST)

4 changes: 4 additions & 0 deletions builds/Versions-MacCatalyst.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -64,6 +65,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>MacCatalystVersionMap</key>
Expand Down Expand Up @@ -124,6 +126,8 @@
<string>26.1</string>
<key>26.2</key>
<string>26.2</string>
<key>26.4</key>
<string>26.4</string>
</dict>
<key>RecommendedXcodeVersion</key>
<string>@XCODE_VERSION@</string>
Expand Down
2 changes: 2 additions & 0 deletions builds/Versions-iOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -100,6 +101,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
2 changes: 2 additions & 0 deletions builds/Versions-macOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -62,6 +63,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
2 changes: 2 additions & 0 deletions builds/Versions-tvOS.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>SupportedTargetPlatformVersions</key>
Expand Down Expand Up @@ -90,6 +91,7 @@
<string>26.0</string>
<string>26.1</string>
<string>26.2</string>
<string>26.4</string>
</array>
</dict>
<key>RecommendedXcodeVersion</key>
Expand Down
28 changes: 28 additions & 0 deletions src/AVKit/AVLegibleMediaOptionsMenuState.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#nullable enable

#if !TVOS
namespace AVKit {
[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[UnsupportedOSPlatform ("tvos")]
[StructLayout (LayoutKind.Sequential)]
public struct AVLegibleMediaOptionsMenuState {
#if !COREBUILD
byte enabled;

public bool Enabled {
get => enabled != 0;
set => enabled = value.AsByte ();
}

nint reason;

public AVLegibleMediaOptionsMenuStateChangeReason Reason {
get => (AVLegibleMediaOptionsMenuStateChangeReason) (long) reason;
set => reason = (nint) (long) value;
}
#endif
}
}
#endif
16 changes: 16 additions & 0 deletions src/AVKit/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,20 @@ public enum AVRoutePickerViewButtonState : long {
ActiveHighlighted,
}

[NoTV, Mac (26, 4), iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum AVLegibleMediaOptionsMenuStateChangeReason : long {
None = 0,
LanguageMismatch,
}

[Flags]
[NoTV, Mac (26, 4), iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum AVLegibleMediaOptionsMenuContents : long {
Legible = 1L << 0,
CaptionAppearance = 1L << 1,
All = Legible | CaptionAppearance,
}

}
43 changes: 43 additions & 0 deletions src/Accessibility/AXSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ public enum AXSettingsFeature : long {
[SupportedOSPlatform ("macos26.0")]
[SupportedOSPlatform ("tvos26.0")]
DwellControl,
/// <summary>Jump to the caption styles setting.</summary>
[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("tvos26.4")]
CaptionStyles,
}

public static partial class AXSettings {
Expand Down Expand Up @@ -101,5 +107,42 @@ public static bool ShowBordersEnabled ()
{
return AXShowBordersEnabled () != 0;
}

[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("tvos26.4")]
[DllImport (Constants.AccessibilityLibrary)]
static extern byte AXReduceHighlightingEffectsEnabled ();

/// <summary>Returns whether the system preference for reduce highlighting effects is enabled.</summary>
[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("tvos26.4")]
public static bool IsReduceHighlightingEffectsEnabled {
get {
return AXReduceHighlightingEffectsEnabled () != 0;
}
}

[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("tvos26.4")]
[DllImport (Constants.AccessibilityLibrary)]
static extern byte AXOpenSettingsFeatureIsSupported (nint /* AXSettingsFeature */ feature);

/// <summary>Returns whether the specified settings feature is supported on this device.</summary>
/// <param name="feature">The settings feature to check.</param>
/// <returns><see langword="true" /> if the feature is supported; otherwise, <see langword="false" />.</returns>
[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[SupportedOSPlatform ("macos26.4")]
[SupportedOSPlatform ("tvos26.4")]
public static bool OpenSettingsFeatureIsSupported (AXSettingsFeature feature)
{
return AXOpenSettingsFeatureIsSupported ((nint) (long) feature) != 0;
}
}
}
47 changes: 47 additions & 0 deletions src/CarPlay/CPEnums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,51 @@ public enum CPListImageRowItemImageGridElementShape : long {
RoundedRect = 0,
Circle = 1,
}

[NoTV, NoMac, iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum CPRerouteReason : long {
Unknown = 0,
MissedTurn,
Offline,
AlternateRoute,
WaypointModified,
Mandated,
}

[NoTV, NoMac, iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum CPRouteSource : ulong {
Inactive = 0,
IOSUnchanged = 1,
IOSRouteModified = 2,
IOSRouteDestinationsModified = 3,
IOSDestinationsOnly = 4,
Vehicle = 5,
}

[NoTV, NoMac, iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum CPImageOverlayAlignment : long {
Leading,
Center,
Trailing,
}

[NoTV, NoMac, iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum CPPlaybackPresentation : long {
None = 0,
Audio,
Video,
}

[NoTV, NoMac, iOS (26, 4), MacCatalyst (26, 4)]
[Native]
public enum CPPlaybackAction : long {
None = 0,
Play,
Pause,
Replay,
}
}
24 changes: 24 additions & 0 deletions src/CarPlay/CPLocationCoordinate3D.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#nullable enable

using System.Runtime.InteropServices;
using System.Runtime.Versioning;

namespace CarPlay {

[SupportedOSPlatform ("ios26.4")]
[SupportedOSPlatform ("maccatalyst26.4")]
[UnsupportedOSPlatform ("tvos")]
[UnsupportedOSPlatform ("macos")]
[StructLayout (LayoutKind.Sequential)]
public struct CPLocationCoordinate3D {
double latitude;
double longitude;
double altitude;

#if !COREBUILD
public double Latitude { get => latitude; set => latitude = value; }
public double Longitude { get => longitude; set => longitude = value; }
public double Altitude { get => altitude; set => altitude = value; }
#endif
}
}
Loading
Loading