From 1f0f4b17636e445094445b21c90cc62ff5a74772 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:43:26 +0000 Subject: [PATCH 1/8] Update iOS builds to Xcode 26.2 / iOS 26 SDK - Update runner from macos-latest-xlarge to macos-26-xlarge for both mobile-build and testflight-on-comment workflows - Update Xcode version from 16.4 to 26.2 (includes iOS 26 SDK) - Resolves ITMS-90725 SDK version warning from App Store Connect requiring iOS 26 SDK by April 28, 2026 Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 6 +++--- .github/workflows/testflight-on-comment.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index accc127c5..7c757603e 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -8,7 +8,7 @@ on: jobs: build-ios: - runs-on: macos-latest-xlarge + runs-on: macos-26-xlarge steps: - uses: actions/checkout@v4 @@ -109,7 +109,7 @@ jobs: - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '16.4' + xcode-version: '26.2' - name: Install Tauri CLI run: | @@ -163,4 +163,4 @@ jobs: xcrun altool --upload-app --type ios \ --file "$IPA_PATH" \ --apiKey ${{ secrets.APPLE_API_KEY }} \ - --apiIssuer ${{ secrets.APPLE_API_ISSUER }} \ No newline at end of file + --apiIssuer ${{ secrets.APPLE_API_ISSUER }} diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index 92f88191d..5855762fa 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -64,7 +64,7 @@ jobs: deploy-testflight: needs: check-comment if: needs.check-comment.outputs.should-deploy == 'true' - runs-on: macos-latest-xlarge + runs-on: macos-26-xlarge steps: - uses: actions/checkout@v4 with: @@ -167,7 +167,7 @@ jobs: - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: '16.4' + xcode-version: '26.2' - name: Install Tauri CLI run: | From cc5b4eae7c73a66dea1b83cad28b41d50e76b494 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:47:00 +0000 Subject: [PATCH 2/8] Bump ONNX Runtime cache key to force rebuild with Xcode 26.2 Include Xcode version in cache key to avoid reusing stale binaries compiled with the old iOS 18 SDK (Xcode 16.4). Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 4 ++-- .github/workflows/testflight-on-comment.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index 7c757603e..4abfbbc69 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -60,9 +60,9 @@ jobs: path: | frontend/src-tauri/onnxruntime-ios frontend/src-tauri/onnxruntime-build - key: onnxruntime-ios-built-1.22.2-v1 + key: onnxruntime-ios-built-1.22.2-xcode26.2-v1 restore-keys: | - onnxruntime-ios-built-1.22.2- + onnxruntime-ios-built-1.22.2-xcode26.2- - name: Build ONNX Runtime for iOS from source if: steps.cache-onnxruntime.outputs.cache-hit != 'true' diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index 5855762fa..11ae495e8 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -118,9 +118,9 @@ jobs: path: | frontend/src-tauri/onnxruntime-ios frontend/src-tauri/onnxruntime-build - key: onnxruntime-ios-built-1.22.2-v1 + key: onnxruntime-ios-built-1.22.2-xcode26.2-v1 restore-keys: | - onnxruntime-ios-built-1.22.2- + onnxruntime-ios-built-1.22.2-xcode26.2- - name: Build ONNX Runtime for iOS from source if: steps.cache-onnxruntime.outputs.cache-hit != 'true' From 0f94daf5ca6198597c2b337f8e7be7496a5068dd Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:02:05 +0000 Subject: [PATCH 3/8] Bump iOS deployment target from 13.0 to 16.0 for Xcode 26 compatibility Xcode 26.2 no longer ships Swift back-deployment compatibility libraries (swiftCompatibility56, swiftCompatibilityConcurrency, swiftCompatibilityPacks) needed for iOS < 16. Bumping the minimum deployment target to iOS 16.0 resolves the undefined symbol linker errors. Updated in project.yml, project.pbxproj (all 3 build configs), and Podfile. Co-Authored-By: unknown <> --- frontend/src-tauri/gen/apple/Podfile | 2 +- .../src-tauri/gen/apple/maple.xcodeproj/project.pbxproj | 6 +++--- frontend/src-tauri/gen/apple/project.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src-tauri/gen/apple/Podfile b/frontend/src-tauri/gen/apple/Podfile index 98ee0f283..2eab22436 100644 --- a/frontend/src-tauri/gen/apple/Podfile +++ b/frontend/src-tauri/gen/apple/Podfile @@ -1,7 +1,7 @@ # Uncomment the next line to define a global platform for your project target 'maple_iOS' do -platform :ios, '13.0' +platform :ios, '16.0' # Pods for maple_iOS end diff --git a/frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj b/frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj index b26d4c6e4..8760c276f 100644 --- a/frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj +++ b/frontend/src-tauri/gen/apple/maple.xcodeproj/project.pbxproj @@ -350,7 +350,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -407,7 +407,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,7 +521,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; diff --git a/frontend/src-tauri/gen/apple/project.yml b/frontend/src-tauri/gen/apple/project.yml index 8c624f469..e8a0737c0 100644 --- a/frontend/src-tauri/gen/apple/project.yml +++ b/frontend/src-tauri/gen/apple/project.yml @@ -2,7 +2,7 @@ name: maple options: bundleIdPrefix: cloud.opensecret.maple deploymentTarget: - iOS: 13.0 + iOS: 16.0 fileGroups: [../../src] configs: debug: debug @@ -86,4 +86,4 @@ targets: basedOnDependencyAnalysis: false outputFiles: - $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a - - $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a \ No newline at end of file + - $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a From cc428c379e03e3c8fe90779a97e9c01eed132672 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:21:23 +0000 Subject: [PATCH 4/8] Set IPHONEOS_DEPLOYMENT_TARGET env var in Tauri build steps The Rust/Cargo build process compiles Swift bridge code (via swift-rs) using a deployment target derived from the Rust target triple, which defaults to a very old iOS version. This causes the Swift compiler to emit references to swiftCompatibility back-deployment libraries that Xcode 26.2 no longer ships. Setting IPHONEOS_DEPLOYMENT_TARGET=16.0 in the build environment ensures the Swift bridge code is compiled without these back-deployment references. Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 3 +++ .github/workflows/testflight-on-comment.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index 4abfbbc69..70f579e72 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -144,6 +144,9 @@ jobs: VITE_CLIENT_ID: ba5a14b5-d915-47b1-b7b1-afda52bc5fc6 # ONNX Runtime location for ort-sys crate ORT_LIB_LOCATION: ${{ github.workspace }}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64 + # Ensure Swift bridge code is compiled with iOS 16+ deployment target + # to avoid references to removed swiftCompatibility back-deployment libraries + IPHONEOS_DEPLOYMENT_TARGET: '16.0' - name: Upload iOS App uses: actions/upload-artifact@v4 diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index 11ae495e8..4e5bf31d4 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -202,6 +202,9 @@ jobs: VITE_CLIENT_ID: ba5a14b5-d915-47b1-b7b1-afda52bc5fc6 # ONNX Runtime location for ort-sys crate ORT_LIB_LOCATION: ${{ github.workspace }}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64 + # Ensure Swift bridge code is compiled with iOS 16+ deployment target + # to avoid references to removed swiftCompatibility back-deployment libraries + IPHONEOS_DEPLOYMENT_TARGET: '16.0' - name: Submit to TestFlight run: | From 8ea03c8e2dba6b1fc232dd867b6dc9f15be5767b Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:45:48 +0000 Subject: [PATCH 5/8] Add iOS minimumSystemVersion 16.0 to tauri.conf.json for swift-rs deployment target Co-Authored-By: unknown <> --- frontend/src-tauri/tauri.conf.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src-tauri/tauri.conf.json b/frontend/src-tauri/tauri.conf.json index 3fce226d0..ca9b20d36 100644 --- a/frontend/src-tauri/tauri.conf.json +++ b/frontend/src-tauri/tauri.conf.json @@ -85,7 +85,8 @@ "entitlements": "./Entitlements.plist" }, "iOS": { - "developmentTeam": "X773Y823TN" + "developmentTeam": "X773Y823TN", + "minimumSystemVersion": "16.0" }, "android": { "versionCode": 2000018000 From 7a55b57ca0207d392810ebee63b076311eeec3a4 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:49:50 +0000 Subject: [PATCH 6/8] Add Xcode version to DerivedData cache keys to avoid stale cache Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 6 +++--- .github/workflows/testflight-on-comment.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index 70f579e72..998df09a4 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -35,10 +35,10 @@ jobs: - name: Cache Xcode DerivedData and SourcePackages uses: irgaly/xcode-cache@v1 with: - key: xcode-cache-ios-${{ github.workflow }}-${{ hashFiles('**/Cargo.lock') }} + key: xcode-cache-ios-xcode26.2-${{ github.workflow }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - xcode-cache-ios-${{ github.workflow }}- - xcode-cache-ios- + xcode-cache-ios-xcode26.2-${{ github.workflow }}- + xcode-cache-ios-xcode26.2- - name: Cache Cargo bin (Tauri CLI) uses: actions/cache@v4 diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index 4e5bf31d4..bea830658 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -93,10 +93,10 @@ jobs: - name: Cache Xcode DerivedData and SourcePackages uses: irgaly/xcode-cache@v1 with: - key: xcode-cache-testflight-${{ github.workflow }}-${{ hashFiles('**/Cargo.lock') }} + key: xcode-cache-testflight-xcode26.2-${{ github.workflow }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - xcode-cache-testflight-${{ github.workflow }}- - xcode-cache-testflight- + xcode-cache-testflight-xcode26.2-${{ github.workflow }}- + xcode-cache-testflight-xcode26.2- - name: Cache Cargo bin (Tauri CLI) uses: actions/cache@v4 From d0d3f36ac5ea8687802ff046e8f158104be619ed Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:09:30 +0000 Subject: [PATCH 7/8] Add explicit libc++ linking for iOS targets in cargo config When cargo config overrides ort-sys link metadata, the build script's cargo:rustc-link-lib=c++ is suppressed. This adds explicit libc++ linking to resolve C++ stdlib symbol errors from ONNX Runtime. Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 9 +++++++++ .github/workflows/testflight-on-comment.yml | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index 998df09a4..a7e7a60bb 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -101,6 +101,15 @@ jobs: [target.aarch64-apple-ios-sim.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64-simulator"] rustc-link-lib = ["static=onnxruntime"] + + # ONNX Runtime is a C++ library; when overriding ort-sys link metadata via + # cargo config, the build script's cargo:rustc-link-lib=c++ is suppressed, + # so we must link libc++ explicitly. + [target.aarch64-apple-ios] + rustc-link-lib = ["c++"] + + [target.aarch64-apple-ios-sim] + rustc-link-lib = ["c++"] EOF echo "Generated cargo config:" diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index bea830658..98a71003a 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -159,6 +159,15 @@ jobs: [target.aarch64-apple-ios-sim.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64-simulator"] rustc-link-lib = ["static=onnxruntime"] + + # ONNX Runtime is a C++ library; when overriding ort-sys link metadata via + # cargo config, the build script's cargo:rustc-link-lib=c++ is suppressed, + # so we must link libc++ explicitly. + [target.aarch64-apple-ios] + rustc-link-lib = ["c++"] + + [target.aarch64-apple-ios-sim] + rustc-link-lib = ["c++"] EOF echo "Generated cargo config:" From dfd3d2c394b4bbfc80fb0d472d19cd2f23b6dffd Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:14:57 +0000 Subject: [PATCH 8/8] Move libc++ linking into .onnxruntime links-override sections rustc-link-lib is only valid under [target..] sub-tables, not directly under [target.]. Moved c++ into the existing .onnxruntime sections. Co-Authored-By: unknown <> --- .github/workflows/mobile-build.yml | 15 ++++----------- .github/workflows/testflight-on-comment.yml | 15 ++++----------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/.github/workflows/mobile-build.yml b/.github/workflows/mobile-build.yml index a7e7a60bb..e3616f8d4 100644 --- a/.github/workflows/mobile-build.yml +++ b/.github/workflows/mobile-build.yml @@ -96,20 +96,13 @@ jobs: [target.aarch64-apple-ios.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64"] - rustc-link-lib = ["static=onnxruntime"] + # Also link libc++ since ONNX Runtime is C++; overriding ort-sys link metadata + # suppresses the build script's cargo:rustc-link-lib=c++ + rustc-link-lib = ["static=onnxruntime", "c++"] [target.aarch64-apple-ios-sim.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64-simulator"] - rustc-link-lib = ["static=onnxruntime"] - - # ONNX Runtime is a C++ library; when overriding ort-sys link metadata via - # cargo config, the build script's cargo:rustc-link-lib=c++ is suppressed, - # so we must link libc++ explicitly. - [target.aarch64-apple-ios] - rustc-link-lib = ["c++"] - - [target.aarch64-apple-ios-sim] - rustc-link-lib = ["c++"] + rustc-link-lib = ["static=onnxruntime", "c++"] EOF echo "Generated cargo config:" diff --git a/.github/workflows/testflight-on-comment.yml b/.github/workflows/testflight-on-comment.yml index 98a71003a..e2123d862 100644 --- a/.github/workflows/testflight-on-comment.yml +++ b/.github/workflows/testflight-on-comment.yml @@ -154,20 +154,13 @@ jobs: [target.aarch64-apple-ios.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64"] - rustc-link-lib = ["static=onnxruntime"] + # Also link libc++ since ONNX Runtime is C++; overriding ort-sys link metadata + # suppresses the build script's cargo:rustc-link-lib=c++ + rustc-link-lib = ["static=onnxruntime", "c++"] [target.aarch64-apple-ios-sim.onnxruntime] rustc-link-search = ["${WORKSPACE}/frontend/src-tauri/onnxruntime-ios/onnxruntime.xcframework/ios-arm64-simulator"] - rustc-link-lib = ["static=onnxruntime"] - - # ONNX Runtime is a C++ library; when overriding ort-sys link metadata via - # cargo config, the build script's cargo:rustc-link-lib=c++ is suppressed, - # so we must link libc++ explicitly. - [target.aarch64-apple-ios] - rustc-link-lib = ["c++"] - - [target.aarch64-apple-ios-sim] - rustc-link-lib = ["c++"] + rustc-link-lib = ["static=onnxruntime", "c++"] EOF echo "Generated cargo config:"