docs(ios): release-readiness truth pass + iOS CI lane#11
Merged
Conversation
From the multi-provider release-readiness review. No code/feature changes — just making the tracked docs match the shipped code, and adding a CI gate. Doc truth pass (these are PUBLIC, tracked files): - AppStorePrivacyNotes.md + ios README: APNs is now honest — Release/TestFlight requests notification permission AFTER pairing; delivery requires the user's Mac to have APNs .p8 credentials (TASKWRAITH_APNS_KEY_PATH/KEY_ID/TEAM_ID/ BUNDLE_ID), else NoopApnsPusher drops (no push); the relay does NOT send push. Dropped the aspirational "developer-controlled push relay owns the key" and the dead TASKWRAITH_ENABLE_APNS_REGISTRATION guard. - ios README: removed "thin UI shell"; removed the stale "Not yet wired — incremental run-event streaming" gap (it shipped); corrected the ATS note (only NSAllowsLocalNetworking, no global ArbitraryLoads); archive step now says trust the EXPORTED IPA entitlements (archive-stage dev is expected); crypto review marked completed (2026-06) with the residual MED disclosed. - root README: iOS status → "in TestFlight beta, Mac companion (not standalone)"; push is opt-in + needs Mac APNs creds. iOS CI lane (.github/workflows/ci.yml): new `ios` job (macos-15) runs `swift test --package-path ios/TaskWraithKit` + an unsigned `xcodebuild` of the app target — catches iOS regressions the Electron matrix can't, before any TestFlight upload. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The first run of the new iOS job failed: TaskWraithUI uses the iOS-26 Liquid
Glass API `.glassEffect(.regular)` (TWSharedViews.swift), which the macos-15
runner's Xcode can't compile ("no member 'glassEffect'"). Point the lane at the
macos-26 runner (matches the local dev toolchain) + print the toolchain.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The new iOS lane surfaced a real but separate issue: the GitHub macos-26 runner ships Xcode 26.5 / Swift 6.3.2, whose region-based isolation rejects `sending 'params'` in RemoteSessionModel.swift (1613, 2620) as an ERROR — while local dev is Xcode 26.0 / Swift 6.2.4, which does not. So the Kit compiles + ships locally but not on the newest CI toolchain. Keep this PR to the doc truth pass (already green) and decide the iOS-lane toolchain approach separately (pin CI Xcode to 26.0 to match local, or make the code Swift-6.3-clean). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
From the multi-provider release-readiness review (dogfooded in TaskWraith). No code/feature changes — this makes the tracked docs match the shipped code and adds a CI gate. The stale docs are public (tracked
ios/+ root README), so this is credibility + App-Store-review hygiene, not just local notes.Doc truth pass — APNs honesty (the load-bearing fix)
The docs claimed Release builds don't request APNs and that a "developer-controlled push relay owns the key." Reality (verified):
TASKWRAITH_ENABLE_APNS_REGISTRATIONcompile-guard is gone..p8credentials (TASKWRAITH_APNS_KEY_PATH/KEY_ID/TEAM_ID/BUNDLE_ID); default isNoopApnsPusher→ no push delivered.AppStorePrivacyNotes.md+ios/TaskWraithApp/README.mdnow describe exactly that (push = post-pairing opt-in, delivery needs Mac creds, document as optional/advanced — don't market as a hero feature).Other stale claims corrected
NSAllowsLocalNetworking, no globalNSAllowsArbitraryLoads).aps-environment=production,get-task-allow=false); archive-stagedevelopmentis expected under automatic signing.iOS CI lane
New
iosjob (macos-15):swift test --package-path ios/TaskWraithKit+ an unsignedxcodebuildof the app target. The Electron matrix couldn't see iOS regressions; this fails CI before a broken iOS build reaches TestFlight. This PR's own CI run is the lane's first live test.🤖 Generated with Claude Code