fix(ci): disable SPM at CI level instead of via pubspec flag#2675
Conversation
The `flutter > config > enable-swift-package-manager: false` pubspec key introduced in #2672 was only added in Flutter ~3.38, so the sample_app's pubspec failed to parse under Flutter 3.27.4 — the legacy floor pinned by `legacy_version_analyze.yml`. Bootstrap failed with: Unexpected child "config" found under "flutter". Drop the pubspec key and instead run `flutter config --no-enable-swift-package-manager` in the two codesigned-iOS workflows that actually need it (distribute_internal, distribute_external). The PR-validation `build (ios) no_codesign:true` path doesn't hit SPM signing errors and doesn't need the disable. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughConfiguration for disabling Swift Package Manager is migrated from the ChangesSwift Package Manager Configuration Migration
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2675 +/- ##
=======================================
Coverage 65.27% 65.27%
=======================================
Files 423 423
Lines 26622 26622
=======================================
Hits 17377 17377
Misses 9245 9245 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Audit by a second Claude agent surfaced four real gaps from the merge. Closes them. 1. **#2672 / #2675 — iOS SPM disable + dSYM upload** - Add `upload_dsyms_to_crashlytics` private lane to `sample_app/ios/fastlane/Fastfile` and wire it into `distribute_to_firebase` and `distribute_to_testflight` before the Firebase/TestFlight upload. Without this lane the release Fastfile never uploads Crashlytics symbol files, so iOS crash reports stay unsymbolicated. Master moved this into the Fastfile itself. - Add `flutter config --no-enable-swift-package-manager` step to all three iOS install blocks in `distribute_external.yml` and `distribute_internal.yml`. This follows master's #2675 pattern (disable SPM at CI level, not via the now-removed `pubspec.yaml` `flutter.config` knob). 2. **#2653 — `maximumMessageLimit` API surface on the public view** - `MessageListCore` already exposed `maximumMessageLimit` / `retentionTrimBuffer`, but the public `StreamMessageListView` constructor did not forward them, so consumers couldn't enable trim without dropping down to `MessageListCore`. Add both parameters to `StreamMessageListView` and forward them at the `MessageListCore(...)` call site. Default for `retentionTrimBuffer` is inlined (`30`) because the canonical constant on `MessageRetentionGate` is `@visibleForTesting`. 3. **#2653 — `pruneOldest` LLC tests** - Port master's `group('\`.state.pruneOldest\`', ...)` (7 tests) into `channel_test.dart`. v10's `ChannelClientState.pruneOldest` was already present from the merge; only the regression tests were missing. Not ported (intentionally): - #2667's two duplicate-id regression tests (`should not duplicate when server echoes back…` and `should not duplicate when the locally-sent message is no longer the latest`). v10's `_updateMessages` keyed-map merge can't produce the duplicate shape these tests guard against, and porting them would require splicing into a v10 group with a different setUp. - Master's `scrollPhysics` nullable default — v10's `ClampingScrollPhysics()` default is the documented v10 contract. - Master's `updateMessage`-side `lastIndexWhere` fast path — v10 rewrote the state-update path to a keyed-map merge (O(N+M)) which is functionally equivalent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Drop the
flutter > config > enable-swift-package-manager: falsekey added tosample_app/pubspec.yamlin chore(samples): disable Swift Package Manager for sample_app #2672. That key was introduced in Flutter ~3.38, so it fails to parse under our legacy floor (Flutter 3.27.4 pinned bylegacy_version_analyze.yml), breaking master right after chore(samples): disable Swift Package Manager for sample_app #2672 merged with:Instead, run
flutter config --no-enable-swift-package-managerin the two workflows that actually produce codesigned IPAs (distribute_internal,distribute_external) — the only place SPM signing errors bite. The PR-validationbuild (ios) no_codesign:truepath instream_flutter_workflow.ymldoesn't need it (no signing → no SPM signing failures).Failing master run for context: https://github.com/GetStream/stream-chat-flutter/actions/runs/26162346822
Test plan
legacy_version_analyzepasses on this PR (sample_app's pubspec is parseable on Flutter 3.27.4 again).distribute_internal(ios) on this branch succeeds end-to-end, with the newDisable Swift Package Managerstep taking effect.🤖 Generated with Claude Code
Summary by CodeRabbit