chore: upgrade to Xcode 26.3 and iOS 26.3#209
Conversation
Update deployment targets, Xcode version, and simulator OS across project.yml, Makefile, and CI workflows to use Xcode 26.3 / iOS 26.3. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 32s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — Clean, consistent version bump from 26.2 → 26.3 across all 4 changed files. Changes verified:
Minor nit: |
There was a problem hiding this comment.
LGTM! Clean and consistent version bump across all 4 files. All references to 26.2 have been properly updated to 26.3 in project.yml, Makefile, ci.yml, and scheduled-tests.yml. Minor nit: README.md and Pulse/Documentation.docc/GettingStarted.md still reference 26.2 — see inline comment.
| deploymentTarget: | ||
| iOS: "26.2" | ||
| xcodeVersion: "26.2" | ||
| iOS: "26.3" |
There was a problem hiding this comment.
Nit: The deployment target is now 26.3, but a couple of documentation files still reference 26.2:
README.md(lines 302-303):Xcode 26.2+/iOS 26.2+Pulse/Documentation.docc/GettingStarted.md(lines 12-13):Xcode 26.2 or later/iOS 26.2 SDK
Since the minimum deployment target is now 26.3, these should be updated to match. Not blocking, but worth a follow-up.
|
Claude finished @BrunoCerberus's task in 1m 30s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — Clean, consistent version bump across all 4 files. The new commit ( Commit breakdown:
Changes verified:
The distinction between deployment target ( Nit (still applies from previous review): |
The macos-26 runner with Xcode 26.3 doesn't bundle the iOS simulator runtime. Add xcodebuild -downloadPlatform iOS step and use OS=latest for simulator destinations to avoid version mismatches. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 36s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — The latest commit ( Commit breakdown:
Latest commit analysis ( The
This is applied consistently across all jobs that need a simulator:
Design decision —
The Nit (still applies): |
There was a problem hiding this comment.
LGTM! The latest commit correctly addresses the CI simulator runtime issue. Using OS=latest in CI with explicit xcodebuild -downloadPlatform iOS is a solid approach, and the Makefile keeps the specific 26.3.1 version for local reproducibility. Clean and well-structured changes.
- FeedUITests.testSourceArticleNavigation: replace waitForExistence with safeWaitForExistence to avoid Xcode 26 C++ exception SIGABRT - HomeUITests.testHomeContentInteractionsAndSettingsFlow: add coordinate-based tap for settings back button, recovery via Home tab if navigation fails, and use safeWaitForExistence for scroll assertion to prevent flaky failures on CI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 51s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 4 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
There was a problem hiding this comment.
LGTM! The latest commit correctly fixes UI test crashes and flaky assertions on CI. The targeted migration to safeWaitForExistence(), coordinate-based taps for Liquid Glass, and navigation recovery patterns are all well-implemented. Clean and consistent across all 6 changed files.
xcodebuild -downloadPlatform iOS fails with "Unable to connect to simulator" on fresh macos-26 runners. Initialize the CoreSimulator service first with xcrun simctl list runtimes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 2m 27s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 5 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| File | Jobs | Status |
|---|---|---|
ci.yml |
build, tests |
✅ |
scheduled-tests.yml |
build, tests, auto-fix-tests |
✅ |
The code-quality job in ci.yml correctly omits this step since it only runs linting.
Overall Verification
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all 15 replacements) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
UI test fixes (safeWaitForExistence, coordinate taps, nav recovery) |
✅ |
| All 5 simulator runtime install blocks are identical | ✅ |
Nit (carried over from previous reviews)
README.md (lines 302-303) and Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still reference 26.2 for Xcode/iOS requirements. Worth updating to stay accurate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 29s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 6 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all 15 replacements) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
UI test fixes (safeWaitForExistence, coordinate taps, nav recovery) |
✅ |
| All 5 simulator runtime install blocks are identical | ✅ |
README.md updated to 26.3 |
✅ |
No remaining 26.2 references in config/build/CI files |
✅ |
Remaining Nit
Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references Xcode 26.2 / iOS 26.2 SDK. Worth a follow-up to stay fully consistent. See inline comment.
The CI UI tests failed with "Failed to terminate" when app.launch() tried to kill a lingering app instance from the previous test. This adds explicit termination in tearDown (safe with continueAfterFailure=true) and a retry mechanism in setUp if the first launch fails. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 42s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 7 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all 15 replacements) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
| UI test fixes (safe waits, coordinate taps, nav recovery) | ✅ |
| All 5 simulator runtime install blocks are identical | ✅ |
README.md updated to 26.3 |
✅ |
| tearDown termination + setUp retry logic | ✅ |
Nit (carried over)
Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references Xcode 26.2 / iOS 26.2 SDK. Worth updating to stay fully consistent.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 2m 22s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 8 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all destinations) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
| Pre-boot script used consistently across all CI simulator jobs | ✅ |
| UI test fixes (safe waits, coordinate taps, nav recovery, tearDown/setUp) | ✅ |
README.md updated to 26.3 |
✅ |
boot-simulator.sh has executable permission (100755) |
✅ |
Nit (carried over from previous reviews)
Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references Xcode 26.2 / iOS 26.2 SDK. Worth updating to stay fully consistent. See inline comment.
There was a problem hiding this comment.
LGTM! The latest commit adds a robust simulator pre-boot script that replaces the simple xcrun simctl boot with a full lifecycle (shutdown → UDID lookup → erase → boot → warmup → verify). Applied consistently across all CI jobs. All 8 commits are clean and well-structured. Minor nit: GettingStarted.md still references 26.2 — worth a follow-up.
|
|
||
| - Xcode 26.2+ | ||
| - iOS 26.2+ | ||
| - Xcode 26.3+ |
There was a problem hiding this comment.
Nit (carried over from previous reviews): Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references 26.2:
- Xcode 26.2 or later
- iOS 26.2 SDK
Worth updating to 26.3 to stay consistent with the README and project.yml.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 1m 51s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 9 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all destinations) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
| Pre-boot script with timeout protection across all CI jobs | ✅ |
| UI test fixes (safe waits, coordinate taps, tearDown/setUp) | ✅ |
README.md updated to 26.3 |
✅ |
boot-simulator.sh has executable permission (100755) |
✅ |
Nit (carried over)
Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references Xcode 26.2 / iOS 26.2 SDK. Worth updating to stay fully consistent. See inline comment.
There was a problem hiding this comment.
LGTM! All 9 commits are clean and well-structured. The latest commit correctly adds timeout protection to the simulator pre-boot script. All version references are consistent across project config, Makefile, and CI workflows. Minor nit: GettingStarted.md still references 26.2 — worth a follow-up.
|
|
||
| - Xcode 26.2+ | ||
| - iOS 26.2+ | ||
| - Xcode 26.3+ |
There was a problem hiding this comment.
Nit (carried over from previous reviews): Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references 26.2:
- Xcode 26.2 or later
- iOS 26.2 SDK
Worth updating to 26.3 to stay consistent with the README and project.yml.
…ript macOS does not include the GNU `timeout` command. Use a background process with polling loop instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Claude finished @BrunoCerberus's task in 2m 54s —— View job PR Review: Upgrade to Xcode 26.3 and iOS 26.3
Review SummaryApproved — All 10 commits are clean and well-structured. The latest commit ( Commit Breakdown
Latest Commit Analysis (
|
| Check | Status |
|---|---|
project.yml deployment target 26.3, xcodeVersion 26.3 |
✅ |
Makefile simulator OS 26.3.1 (all destinations) |
✅ |
CI workflows Xcode 26.3 + OS=latest + CoreSimulator init |
✅ |
| Pre-boot script POSIX-compatible with timeout protection | ✅ |
| UI test fixes (safe waits, coordinate taps, tearDown/setUp) | ✅ |
| All 4 CI simulator boot invocations use identical script call | ✅ |
README.md updated to 26.3 |
✅ |
boot-simulator.sh has executable permission (100755) |
✅ |
No remaining 26.2 references in config/build/CI files |
✅ |
Nit (carried over from previous reviews)
Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references Xcode 26.2 / iOS 26.2 SDK. Worth updating to stay fully consistent. See inline comment.
|
|
||
| - Xcode 26.2+ | ||
| - iOS 26.2+ | ||
| - Xcode 26.3+ |
There was a problem hiding this comment.
Nit (carried over from previous reviews): Pulse/Documentation.docc/GettingStarted.md (lines 12-13) still references 26.2:
- Xcode 26.2 or later
- iOS 26.2 SDK
Worth updating to 26.3 to stay consistent with the README and project.yml.
There was a problem hiding this comment.
LGTM! All 10 commits are clean and well-structured. The latest commit correctly replaces GNU timeout with a POSIX-compatible background-process timeout pattern that works on macOS CI runners. All version references are consistent across project config, Makefile, and CI workflows. Minor nit: GettingStarted.md still references 26.2 — worth a follow-up.
Summary
project.ymland all targetsproject.yml,Makefile, and CI workflowsMakefile,ci.yml, andscheduled-tests.ymlTest plan
make clean && make setup && make buildmake test-unitmacos-26with Xcode 26.3🤖 Generated with Claude Code