Conversation
…I gate swift format lint --strict flags real issues the formatter alone never touches: forEach where a for-loop reads better, SCREAMING_SNAKE_CASE constants, static properties that repeat their type name, and Storage's Key/Id fields decoded straight from wire casing. Fixing these now keeps the next commit (which turns the lint gate on) from failing on day one. Also drops an unused, force-try'ing JSONValueView(rendering:) initializer in the Examples app that nothing calls.
* Pin lineLength/indentation explicitly in .swift-format and Tests/.swift-format so a future swift-format default change can't silently shift what CI accepts. * Replace the PR-only "reformat changed files and diff" format-check job with `swift format lint --strict --recursive` over Sources, Tests, Package.swift, and Examples, on every push and PR. * Pin the Linux job to swift:6.2-noble and swift:6.3-noble containers (the two latest Swift.org releases, matching SSWG graduation criteria) plus swift:nightly as an allowed-to-fail leg, instead of whatever Swift ubuntu-latest happens to ship. Also adds --explicit-target-dependency-import-check error to that build. * Add an xcodebuild (build-only) job for watchOS, tvOS and visionOS simulators, mirroring what Swift Package Index already builds. * Declare .visionOS(.v1) in Package.swift's platforms, matching the visionOS 1+ claim already in README.md/AGENTS.md. Skipped the optional Package@swift-6.1.swift shim from the ticket: it's only needed if the main manifest moves to Swift 6.2 for .defaultIsolation/strictMemorySafety, which isn't happening here. Refs SDK-1802
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 4 included reviews per hour; 2 remain after this review. 📝 SummarySummary by CodeRabbit
WalkthroughThe pull request expands CI to cover watchOS, tvOS, visionOS, and multiple Swift Linux containers. It applies shared Swift formatting rules and lints the full project tree. The package declares visionOS support. Source code receives naming, loop, documentation, and decoding updates. Tests update authentication fixtures, integration-test environment properties, and a Realtime polling helper. The removed Priority: ⬇️ Low Change: Other Merge Risk: ⚪ Minimal · up to The changes expand validation and preserve the inspected runtime and test contracts, with no evidenced merge-blocking risk. 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 |
|
There's no swift:nightly tag on the stable swift image — Docker Hub's official swift repo has zero "nightly*" tags. Nightly builds are only published under swiftlang/swift (e.g. nightly-main-noble), confirmed by the first CI run on this branch failing the docker pull.
Coverage Report for CI Build 34896363151Warning No base build found for commit Coverage: 88.324%Details
Uncovered Changes
Coverage RegressionsRequires a base build to compare against. How to fix this → Coverage Stats
💛 - Coveralls |
|
The following capabilities are marked
The following capabilities are marked
These may have been renamed, removed, or never registered. Please update the capability matrix. |
The official swift Docker images run as root, so the .build/Package.swift
files the container writes into the bind-mounted workspace end up
root-owned. actions/cache's post-step re-evaluates hashFiles() from the
runner's own (non-root) context to save the cache, and that's exactly
where the two pinned Linux legs failed just now:
The template is not valid. .github/workflows/ci.yml (Line: 189, Col: 16):
hashFiles('**/Package.resolved') failed. Fail to hash files under
directory '/home/runner/work/supabase-swift/supabase-swift'
Keying on the container name alone avoids the hashFiles() call entirely.
Summary
swift format lint --strict --recursiveover Sources, Tests, Package.swift, and Examples (runs on every push/PR now)..swift-format/Tests/.swift-formatlineLength/indentation explicitly, and fix the ~30 pre-existing lint violations (renames, forEach→for-loop, one dead force-try init in Examples) that would've broken the new gate immediately.swift:6.2-noble/swift:6.3-noblematrix (SSWG's "two latest Swift.org releases") plusswift:nightlyallowed to fail, instead of unpinnedubuntu-latest; add--explicit-target-dependency-import-check errorto that build.xcodebuildCI job for watchOS/tvOS/visionOS simulators, mirroring Swift Package Index..visionOS(.v1)inPackage.swift, matching the visionOS 1+ claim already in README.md/AGENTS.md.Out of scope (see discussion): turning on
NeverForceUnwrap/AllPublicDeclarationsHaveDocumentation/UseEarlyExits(~437 more violations, a much bigger change), and the optionalPackage@swift-6.1.swiftshim (only needed if the manifest moves to Swift 6.2).Test plan
swift build— exit 0swift test --skip IntegrationTests— 1294 tests, 132 suites, all passed (1 known issue, pre-existing)swift test --traits OpenTelemetry --filter SupabaseTests— 29 tests passedxcrun swift-format lint --strict --recursive Sources Tests Package.swift Examples— clean./scripts/spell-check.sh— 0 issuesFixes SDK-1802