Repository navigation
fix(ios): respect app minimum in generated CocoaPods targets - #8379
Conversation
Signed-off-by: Tom Brow <[email protected]>
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c5ae8d091c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🔐 Codex Security Review
Review SummaryOverall Risk: NONE
FindingsNo concrete security, correctness, or reliability findings were identified. Notes
Generated by Codex Security Review | |
Signed-off-by: Tom Brow <[email protected]>
jedwards27
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Reviewed 7852b1670c7588875fc43ef2613c8348893d5ab6..0959d4c58b344135a1c66f504cab130bd040ecbf at exact head 0959d4c58b344135a1c66f504cab130bd040ecbf.
Risk: high — this changes CocoaPods-generated iOS build settings and the checked-in lockfile, so install/native-build compatibility is the material boundary.
Findings: no blocking or non-blocking code defect found. mobile/ios/Podfile:38-48 applies Flutter's settings first, then raises only explicit pod deployment targets below the app's existing iOS 16 minimum. Missing targets remain inherited; 16.0 and newer targets remain unchanged. The follow-up commit changes only mobile/ios/Podfile.lock:230; the new checksum exactly matches the Podfile SHA-1, with no dependency or CocoaPods-version churn. This affects generated-project build compatibility, not the supported-device floor or installed-app runtime behavior.
Author action: none.
Verification owner: CI/release gate for the complete exact-head native jobs; reviewer/tooling or the named release/dependency follow-up for independent Xcode 27 full-build evidence.
Validation at matching head:
- clean immutable checkout; live PR/base/merge-base pinned;
git diff --checkpassed; ruby -c mobile/ios/Podfilepassed;- independent Podfile SHA-1 matched
ed10001903303a0ae660957e1d727012a3136046in the lockfile; - production-Podfile boundary probes passed for inherited/nil, older, equal, and newer targets, and failed causally when the rewrite was removed;
just mobile-installandjust mobile-checkpassed;- exact-head CI passed mobile checks, three mobile test shards, Android, Swift package build/release/test, and the complete unsigned iOS Release build. The parallel native lane was still running its complete simulator build at review submission; merge readiness remains owned by that required gate.
Manual/native evidence: no UI/runtime path changed, so app launch was not material. Reviewer-side pod install --deployment and local native compilation were blocked by this host's unaccepted Xcode 27 license; I am not counting that attempt as product proof. Exact-head CI supplies the native build evidence above.
Residual risk: the PR's stated complete Xcode 27 build remains blocked beyond the deployment-target check by the independent swift-secp256k1 compiler ambiguity. That is release/dependency-gate ownership, not an author-actionable defect introduced here.
…i-bindings * origin/main: feat(mobile): find people by name through the relay's name-only profile search (#8333) fix(ios): respect app minimum in generated CocoaPods targets (#8379) fix(relay): confirm requested channels in one membership query (#8378) fix(mobile): split channel history batches at the relay channel cap (#8342) fix(search): normalize profile name tiers in one place (#8334) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
… into duncan/bbpublic-nip-fi-resolver * origin/duncan/bbpublic-nip-fi-bindings: feat(mobile): find people by name through the relay's name-only profile search (#8333) fix(ios): respect app minimum in generated CocoaPods targets (#8379) fix(relay): confirm requested channels in one membership query (#8378) fix(mobile): split channel history batches at the relay channel cap (#8342) fix(search): normalize profile name tiers in one place (#8334) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…ogging * origin/main: feat(mobile): find people by name through the relay's name-only profile search (#8333) fix(ios): respect app minimum in generated CocoaPods targets (#8379) fix(relay): confirm requested channels in one membership query (#8378) fix(mobile): split channel history batches at the relay channel cap (#8342) Co-authored-by: Will Pfleger <[email protected]> Signed-off-by: Will Pfleger <[email protected]> # Conflicts: # crates/buzz-relay/src/handlers/count.rs # crates/buzz-relay/src/handlers/req.rs
Document Xcode 27.0 as the recommended iOS development toolchain while retaining Xcode 26 compatibility. Explain per-command selection, the known Flutter native-assets compiler/SDK mismatch on hosts with multiple Xcode versions, and where CI and release toolchains are configured. The compatibility changes are already merged in [#8379](#8379) and [#8398](#8398). Related open work is [#8330](#8330); this PR changes documentation only. The release version bump remains separate in [buzz-releases#110](squareup/buzz-releases#110). ### Validation - Ordinary unsigned Release build passed on [main at 7396243](7396243) with exact Xcode 27.0 (27A266a), the pinned Flutter SDK, and normal CocoaPods installation. Buzz.app contains NotificationService.appex. No dependency patches or plugin-validation bypasses were used. - The merged direct-C change passed native tests on Xcode 26.5 and 27.0, full local CI, and hosted Native and unsigned Release validation. This documentation-only follow-up preserves that code. - Documentation diff checks and local pre-push checks passed. --------- Signed-off-by: Tom Brow <[email protected]>
`just mobile-dev` fails on Xcode 27 machines that have DeviceHub instead of Simulator. Resolve the simulator frontend inside the selected Xcode installation: DeviceHub for Xcode 27, or Simulator for Xcode 26. Launch by full path so an older installed or running app cannot determine the choice. This extracts the still-needed DeviceHub portion of Wes's [#8330](#8330). The CocoaPods deployment-target work already landed in [#8379](#8379); this PR does not change Podfile or its lockfile. CI and pre-push mobile selection include the shared Justfile and mobile recipe regression script, so edits to either run the regression in the mobile gate. ### Validation - Nine production-recipe checks pass, covering side-by-side Xcode 26/27 selection with spaces in paths, missing apps, launch failure, and gateway argument forwarding. Mutations reject unqualified Launch Services lookup and removal of DeviceHub selection. - All 39 tests of the pinned paths-filter action pass, including the Justfile and recipe-test selection cases. Mobile formatting, analysis, and the full mobile suite pass. - Native macOS smoke checks exercised launch from the selected Xcode installation and reached the Flutter boundary. Flutter and identity setup were stubbed, so no app was built or installed. - The initial full local CI gate stopped on an unchanged ACP signal-cancellation test; that exact test passed in isolation. The initial pre-push run also hit missing dependencies and two unchanged desktop agent-discovery tests. Desktop lint and TypeScript checks passed after installing pinned dependencies. Publishing used the authorized local-hook exception. - Current-head [CI](https://github.com/block/buzz/actions/runs/38963831198) passed, including all nine recipe cases and native Swift validation. Owner approval and Codex code/security reviews are complete with no unresolved findings. buzz-review-completed --------- Signed-off-by: Tom Brow <[email protected]>
) Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version. On main at 7852b16, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override. The full build remains blocked by the independent swift-secp256k1 0.21.1 `UInt256.words` compiler ambiguity. This PR does not fix or change that dependency. Xcode pin [buzz-releases#110](squareup/buzz-releases#110) remains gated on a complete ordinary release build and its other prerequisites. Related: Wes’s [PR block#8330](block#8330) independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local `just ci` passed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum; `pod install --deployment` succeeds with CocoaPods 1.16.2. --------- Signed-off-by: Tom Brow <[email protected]> (cherry picked from commit 46159fc) Signed-off-by: Ross Hartmann <[email protected]>
) Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version. On main at 7852b16, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override. The full build remains blocked by the independent swift-secp256k1 0.21.1 `UInt256.words` compiler ambiguity. This PR does not fix or change that dependency. Xcode pin [buzz-releases#110](squareup/buzz-releases#110) remains gated on a complete ordinary release build and its other prerequisites. Related: Wes’s [PR block#8330](block#8330) independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local `just ci` passed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum; `pod install --deployment` succeeds with CocoaPods 1.16.2. --------- Signed-off-by: Tom Brow <[email protected]> (cherry picked from commit 46159fc) Signed-off-by: Ross Hartmann <[email protected]>
) Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version. On main at 7852b16, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override. The full build remains blocked by the independent swift-secp256k1 0.21.1 `UInt256.words` compiler ambiguity. This PR does not fix or change that dependency. Xcode pin [buzz-releases#110](squareup/buzz-releases#110) remains gated on a complete ordinary release build and its other prerequisites. Related: Wes’s [PR block#8330](block#8330) independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local `just ci` passed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum; `pod install --deployment` succeeds with CocoaPods 1.16.2. --------- Signed-off-by: Tom Brow <[email protected]> (cherry picked from commit 46159fc) Signed-off-by: Ross Hartmann <[email protected]>
) Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version. On main at 7852b16, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override. The full build remains blocked by the independent swift-secp256k1 0.21.1 `UInt256.words` compiler ambiguity. This PR does not fix or change that dependency. Xcode pin [buzz-releases#110](https://github.com/squareup/buzz-releases/pull/110) remains gated on a complete ordinary release build and its other prerequisites. Related: Wes’s [PR block#8330](block#8330) independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local `just ci` passed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum; `pod install --deployment` succeeds with CocoaPods 1.16.2. --------- Signed-off-by: Tom Brow <[email protected]> (cherry picked from commit 46159fc) Signed-off-by: Ross Hartmann <[email protected]>
Xcode 27 rejects generated CocoaPods targets with deployment versions below iOS 15, even though the app already requires iOS 16. Raise lower explicit pod deployment targets to the existing iOS 16 minimum during installation, preserving targets that require a newer version.
Validation
On main at 7852b16, the ordinary unsigned Release build with exact Xcode 27.0 failed on pod targets set to iOS 9–13. After this change and a normal pod install, none of the 189 generated build configurations specifies a target below iOS 16, and the same build passes deployment-target validation without a command-line override.
The full build remains blocked by the independent swift-secp256k1 0.21.1
UInt256.wordscompiler ambiguity. This PR does not fix or change that dependency. Xcode pin buzz-releases#110 remains gated on a complete ordinary release build and its other prerequisites.Related: Wes’s PR #8330 independently includes a similar Podfile fix alongside DeviceHub changes. This PR contains only the Podfile floor and its lockfile checksum. Full local
just cipassed; focused iOS validation above is complete. The regenerated lockfile changes only the Podfile checksum;pod install --deploymentsucceeds with CocoaPods 1.16.2.