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 accc127c..7c757603 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 92f88191..5855762f 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 7c757603..4abfbbc6 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 5855762f..11ae495e 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 98ee0f28..2eab2243 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 b26d4c6e..8760c276 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 8c624f46..e8a0737c 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 4abfbbc6..70f579e7 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 11ae495e..4e5bf31d 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 3fce226d..ca9b20d3 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 70f579e7..998df09a 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 4e5bf31d..bea83065 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 998df09a..a7e7a60b 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 bea83065..98a71003 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 a7e7a60b..e3616f8d 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 98a71003..e2123d86 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:"