Self-polling release automation + version-lock to daemon v1.12.5 - #14
Merged
Merged
Conversation
sdk-swift was a dead distribution channel: stale at v0.2.0 (2026-05-27), with no release-watch/publish workflow, so Swift consumers were stuck on May binaries while the daemon shipped through v1.12.5. This adds the same self-polling pattern the npm/PyPI SDKs use: - release-watch.yml: polls pilot-protocol/pilotprotocol every 30 min and, when the daemon is newer than the latest sdk-swift release, dispatches publish.yml at that version (same-repo, built-in token). - publish.yml (macos-latest): builds Pilot.xcframework from the libpilot cgo bindings pinned to the requested daemon version, computes its SHA-256, rewrites Package.swift's binaryTarget url + checksum, commits + tags, pushes the tag, best-effort syncs main, and creates the release with the xcframework attached. Idempotent. - Package.swift + CHANGELOG rebased onto daemon v1.12.5 (checksum matches the v1.12.5 Pilot.xcframework.zip release asset). Co-Authored-By: Claude Opus 4.8 <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.
Why
sdk-swiftwas a dead distribution channel — stale atv0.2.0(2026-05-27).Package.swiftpinnedPilot.xcframework.zipfrom that May release, and the repo had no release-watch and no publish workflow, so Swift consumers were frozen on May binaries while the daemon shipped throughv1.12.5.What this does
Gives sdk-swift the same self-polling pattern the npm/PyPI SDKs use:
release-watch.yml— pollspilot-protocol/pilotprotocolevery 30 min (+ manual dispatch). When the daemon release is newer than the latest sdk-swift release, it dispatchespublish.ymlat that version. Same-repo, built-inGITHUB_TOKEN, no new secrets.publish.yml(macos-latest) — buildsPilot.xcframeworkfrom thepilot-protocol/libpilotcgo bindings pinned to the requested daemon version (iOS device + iOS simulator + macOS arm64 slices viaxcodebuild -create-xcframework), computes its SHA-256, rewritesPackage.swift'sbinaryTargeturl + checksum, commits + tagsvX.Y.Z, pushes the tag (tags aren't branch-protected), best-effort fast-forwardsmain, and creates the GitHub Release with the xcframework attached. Idempotent (skips mutating steps if the release exists).Package.swift+CHANGELOGrebased onto daemonv1.12.5. ThebinaryTargetchecksum matches thev1.12.5Pilot.xcframework.ziprelease asset.Note the deliberate
0.2.0 -> 1.12.5version-lock bump (mirrors what the npm SDK did): the SDK now tracks the daemon version.Verified end-to-end
libpilot(deps public,pilotprotocol v1.12.5) on darwin/Xcode 26.swift buildagainst the freshly-built framework: Build complete.swift package compute-checksum==shasum -a 256== the value baked intoPackage.swift.swift package dump-package).🤖 Generated with Claude Code