Skip to content

Merge 27-beta to main - #113

Merged
ryzngard merged 35 commits into
mainfrom
27-beta
Sep 16, 2026
Merged

ryzngard merged 35 commits into
mainfrom
27-beta

Conversation

@ryzngard

Copy link
Copy Markdown
Collaborator

No description provided.

ryzngard and others added 30 commits January 5, 2026 15:10
GKGameActivity has a static initializer that was being called regardless of system support. The static initializer needs to check availability first.
Add the ability to check whether or not Audio Descriptions are enabled
…#95)

GKGameActivityListener requires iOS/macOS/tvOS/visionOS 26.0+, so the
@available attribute must be on the extension declaration rather than
on the individual method to avoid a compile error referencing an
unavailable protocol.
…declarations (#100)

* fix: add [MarshalAs(UnmanagedType.I1)] to bool DllImport declarations (rdar://170262914)

Unity/Mono requires explicit marshaling attributes on bool return types and
parameters in DllImport extern declarations. Without them, the C# bool (1 byte)
may be incorrectly marshaled from the native bool (platform-dependent width),
causing random incorrect values at runtime.
Introduces the Apple.StoreKit Unity Plug-In, which exposes Apple's StoreKit 2
framework to Unity developers with a modern C# API for in-app purchases,
subscriptions, and transaction management on iOS, macOS, tvOS, and visionOS.

See https://developer.apple.com/storekit/ for more details
Co-authored-by: Andrew Hall <ahall32@apple.com>
CTX.build_output_path is used by upi_unity_native_plugin_manager to
determine the pack destination, but the -o argument was being assigned
to CTX.build_path instead, leaving build_output_path pointing to the
default location regardless of what was passed on the command line.
Apple.SpatialController native plugin support for Spatial Stylus controllers

No user facing changes are required, only fixes to internal implementation of native plugin code

Minor changes made to Scripts/AccessoryTrackingHelper.cs to anchor one of the controller axis objects to the stylus and display stylus button info in the textbox

Bumped version from 1.0.4 to 1.0.5
The commanding infra isn't used anywhere and is just dead code.
…rm for RealityKit scenes, various typos and bugfixes. (#110)
Summary

Adds new/missing StoreKit API surface needed by the food truck app. Both the C# runtime bindings and the native Swift wrapper are extended.

Changes

AppStore — new APIs (AppStore.cs / AppStore.swift)
PaymentMethodBinding — new binding (PaymentMethodBinding.cs)
Product — additional product APIs (Product.cs / Product.swift)
RenewalInfo — additional fields (RenewalInfo.cs)
Storefront — new APIs (Storefront.cs / Storefront.swift)
SubscriptionStatus — new APIs (SubscriptionStatus.cs)
Transaction — additional fields (Transaction.cs / Transaction.swift)
…111)

The native Transaction_BeginRefund(WithId) cdecls invoke their success
callback as SuccessTaskRawPtrCallback, passing a heap-allocated
Transaction.RefundRequestStatus via getRawPointer(). The managed side
declared the callback as SuccessTaskCallback<int> and cast the value
straight to the enum, so it read the low 32 bits of a 64-bit pointer as
the status -- producing a garbage RefundRequestStatus -- and never freed
the native allocation.
Fix error Undefined symbol: _GKLocalPlayer_RegisterLocalPlayerListener when running the game on iPhoneSimulator, using IL2CPP in Unity 6000.3.15f1, Xcode 27 / iOS 27 SDK.
…yer-listener

Remove GameKit GKLocalPlayer_RegisterLocalPlayerListener
…ssing (#114)

Same fix as before, reordered to check `if (fallbackLibrary.IsValid)` (warning) / `else` (error) for readability.
ryzngard and others added 5 commits September 10, 2026 10:54
Update for Unity 6 deprecations

Replace APIs deprecated or removed in Unity 6 (GetInstanceID, HierarchyProperty,
EndNameEditAction, FindObjectsOfType, Rigidbody2D.velocity, Resolution.refreshRate)
with version-guarded equivalents. Plug-in source still compiles on the 2022.3 floor.

- Add Apple.Core ObjectExtensions.GetLongId() so call sites don't repeat the #if
- Move plug-in projects to Unity 6000.5.2f1 and refresh package manifests
- Pack from a temp staged copy: hide samples as Demos~ and patch samples[].path
  there, instead of renaming folders in the working tree
- Apple.SpatialController: replace com.unity.textmeshpro with com.unity.ugui, pin
  to the tested editor and xr.visionos 3.1.5, fix the sample path
- PHASE tests assert the PHASE source handle rather than the Unity instance ID
Audit each plug-in against its last release tag and, for everything that
landed since, bump the version and write a CHANGELOG entry. Point every
dependent at Apple.Core 3.3.0.

| Plug-in           | Old -> New      |
|-------------------|-----------------|
| Accessibility     | 1.1.5 -> 1.2.0  |
| BackgroundAssets  | 1.0.0           |
| Core              | 3.3.0           |
| CoreHaptics       | 1.3.2           |
| GameController    | 1.2.4 -> 1.2.5  |
| GameKit           | 4.0.1 -> 4.1.0  |
| PHASE             | 1.2.8           |
| SpatialController | 1.0.6           |
| StoreKit          | 1.0.0           |

Accessibility goes to 1.2.0 rather than the 1.1.5 set by #113, since the
Audio Descriptions API is a new feature.

Gaps this fills beyond the version bumps:

- Apple.StoreKit and Apple.BackgroundAssets shipped in the 27.0 beta
  without a CHANGELOG.md. Both now have one, each a single initial
  release entry. StoreKit stays at 1.0.0: the API added in #112 and the
  Transaction.BeginRefundRequest fix in #111 both landed between the beta
  and now, so they are part of the initial release rather than a delta
  on top of it.
- "Prepare for Xcode 27" raised the native deployment targets to iOS and
  tvOS 15.0 and macOS 12.0 and went undocumented. Now called out in every
  affected plug-in. This matches the floor the README already documented,
  so it is not a change in supported OS versions.
- Every Native/*.xcconfig CURRENT_PROJECT_VERSION had drifted from its
  package.json, some by several releases (CoreHaptics read 1.2.4 against
  a 1.3.1 package). That value feeds MARKETING_VERSION and the generated
  Info.plist, so the binaries would have shipped mislabeled. All are now
  synced.
- SpatialController 1.0.5 listed only stylus support, but also carried a
  native memory leak fix and the PolySpatial/Visual Scripting dependency
  removal. 1.0.5 was never tagged publicly, so the entry is filled out.
- Newly documented: the GKLocalPlayer_RegisterLocalPlayerListener removal
  (IL2CPP link failure against the iOS 27 SDK), Apple.Core's native
  library warning-to-error escalation and dead shell-command removal, and
  the PHASEWrapper update.

External contributions credited in the changelogs:
- CoreHaptics AssetPickerDrawer null fix - @ilterbilguven (#47)
- GameController GCController allocation fix - @HypGamesOrlando (#35)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ryzngard
ryzngard merged commit ffe6174 into main Sep 16, 2026
@ryzngard
ryzngard deleted the 27-beta branch September 16, 2026 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants