chore: collapse stable + nightly into one rolling auto-ship lane - #49
Merged
Conversation
Delete the nightly channel entirely (no users) and make `release.yml` the single lane: every commit on `main` that passes the `CI` workflow auto-builds, signs, notarizes, and publishes to a single reused `rolling` GitHub release that is overwritten each ship and marked "latest". Fix-forward on `main`. - `workflow_run` trigger on `CI` success (branches: main), gated on conclusion == success; checkout pins the tested head_sha. - Build number (CFBundleVersion / sparkle:version) is now ALWAYS the monotonic GitHub run ID for both auto-ship and milestone `v*` tags, so a milestone tag can never fail the monotonic guard behind an auto-ship's larger build number. - Auto-ship skips the immutable-asset guard and overwrites the rolling release; the guard still protects milestone `v*` tags from clobbering signed artifacts. - `workflow_dispatch` stays a dry-run (artifact only, no publish, no tag move). - Remove nightly Sparkle feed detection from UpdateDelegate, the nightly bug report dropdown, the CLI's dead nightly.yml signer reference, and stale nightly refs across CI guard tests and daemon docs.
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.
What this does
Programa now ships on a single lane instead of two. Every commit on
mainthat passes CI is automatically built, signed, notarized, and published — no more separate nightly channel, no manual tagging to ship. If something breaks, we fix it forward onmainand the next green build ships the fix.To keep the releases page clean, auto-ship publishes to one reused
rollingrelease that's overwritten each time (rather than a new release per commit). PermanentvX.Y.Zmilestone tags still work for marking versions.Summary
release.ymlnow runs onworkflow_runafter theCIworkflow succeeds onmain(gated onconclusion == success), and pins checkout to the exact commit CI validated (head_sha). Thev*tag push andworkflow_dispatchdry-run paths are kept.rollingrelease — force-moves the tag to the shipped commit, overwrites assets, marks it "latest" soreleases/latest/download/*always resolves to the newest green build. Milestonev*tags publish permanent releases and remain protected by the immutable-asset guard (auto-ship skips that guard on purpose).sparkle:versionis now always the monotonic GitHub run ID for both auto-ship and milestone tags. Previously milestone tags used the small committed build number, which would have silently failed the monotonic guard (and Sparkle) once auto-ship published run-ID-scale numbers.nightly.yml+ the nightly command files, removed nightly Sparkle-feed detection fromUpdateDelegate, the nightly bug-report dropdown, the CLI's deadnightly.ymlsigner reference, and stale nightly refs in CI guard tests + daemon docs. No nightly users existed, so it was deleted outright.Test plan
release.ymlviaworkflow_dispatch— it should build + notarize and upload an artifact without publishing a release or moving any tag.ci.yml) green on this branch (unit, workflow-guard tests, ui-regressions).mainpublishes/overwrites therollingrelease, marked latest, with a run-ID build number.