From 916cb7af200fc46810e453149750dfcad1ec4325 Mon Sep 17 00:00:00 2001 From: Dave Robertson Date: Sun, 16 Aug 2026 06:41:41 -0400 Subject: [PATCH 1/2] ci: add iOS simulator build workflow (ios-build.yml) Modeled on prompt-lab's ipad-prototype.yml. Path-filtered to the iOS subtree; build-only where the scheme has UI tests only, build + unit tests where a unit test target exists. Part of the 2026-08-16 iOS build hardening sweep. --- .github/workflows/ios-build.yml | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/workflows/ios-build.yml diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml new file mode 100644 index 0000000..157fc26 --- /dev/null +++ b/.github/workflows/ios-build.yml @@ -0,0 +1,50 @@ +name: iOS Build + +# Modeled on prompt-lab/.github/workflows/ipad-prototype.yml. +# Builds the native iPad app (PlotForgeNative scheme, which pulls in the +# PlotForgeNative Swift package) for the iOS Simulator. The scheme has UI +# tests only, so this is build-only. +# +# Runner note: the app targets Swift 6 (SWIFT_VERSION = 6.0), which needs +# Xcode 16+, so this uses macos-15 rather than the macos-14 image the +# prompt-lab (Swift 5) workflow uses. + +on: + push: + branches: + - main + paths: + - native/** + - .github/workflows/ios-build.yml + pull_request: + paths: + - native/** + - .github/workflows/ios-build.yml + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ios-build-${{ github.ref }} + cancel-in-progress: true + +jobs: + native-build: + name: Native build (iOS Simulator, iPad) + runs-on: macos-15 + timeout-minutes: 25 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Toolchain + run: xcodebuild -version + + - name: Build PlotForgeNative + run: >- + xcodebuild build + -project native/PlotForgeNativeApp/PlotForgeNative.xcodeproj + -scheme PlotForgeNative + -destination "generic/platform=iOS Simulator" + CODE_SIGNING_ALLOWED=NO From 5440c05e957a3629fd23a16bf731f10e8ab35ff2 Mon Sep 17 00:00:00 2001 From: Dave Robertson Date: Sun, 16 Aug 2026 06:45:21 -0400 Subject: [PATCH 2/2] =?UTF-8?q?ci(ios):=20run=20on=20macos-26=20=E2=80=94?= =?UTF-8?q?=20Xcode=2016.4=20type-checker=20times=20out=20on=20PlotForgeSh?= =?UTF-8?q?ellView.swift:544?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ios-build.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ios-build.yml b/.github/workflows/ios-build.yml index 157fc26..5118f72 100644 --- a/.github/workflows/ios-build.yml +++ b/.github/workflows/ios-build.yml @@ -5,9 +5,12 @@ name: iOS Build # PlotForgeNative Swift package) for the iOS Simulator. The scheme has UI # tests only, so this is build-only. # -# Runner note: the app targets Swift 6 (SWIFT_VERSION = 6.0), which needs -# Xcode 16+, so this uses macos-15 rather than the macos-14 image the -# prompt-lab (Swift 5) workflow uses. +# Runner note: the app targets Swift 6 (SWIFT_VERSION = 6.0). On Xcode 16.4 +# (macos-15 default) the Swift type-checker times out on +# PlotForgeShellView.swift:544 ("unable to type-check this expression in +# reasonable time"), while Xcode 26.x compiles it, so this uses macos-26 +# (Xcode 26.6 default) rather than the macos-14/15 images the Swift 5 +# workflows use. First attempt on macos-15: run 31942344241. on: push: @@ -32,7 +35,7 @@ concurrency: jobs: native-build: name: Native build (iOS Simulator, iPad) - runs-on: macos-15 + runs-on: macos-26 timeout-minutes: 25 steps: - name: Checkout