Implement a public auto-updating Nightly channel - #245
Conversation
|
CI follow-up:
|
|
@ggbond268 Could you please review the proposed Nightly direction and let me know whether it fits your expectations? The proposal now targets one public channel: a signed, notarized MacTools Nightly prerelease that users install once and subsequently update through Sparkle. The existing manual Debug artifact remains unrelated CI output. I don't have access to the repository settings, Developer ID/notarization credentials, Sparkle signing key, or other release secrets. Therefore, I cannot complete or validate the credential-backed publication and N-to-N+1 update flow. Would you be willing to take ownership of the maintainer-only implementation and activation steps? I can continue helping with credential-free code, tests, and documentation if you confirm the direction and indicate which parts you would like me to handle. I'll keep the PR in draft until we have your feedback and the credential-backed steps have an owner. Thank you! |
Thanks, the Nightly direction looks good. Happy to handle signing/notarization and N→N+1 testing on my side — may take a bit since I’m busy lately. |
Thank you so much! |
Tracks #243.
Important
This draft targets one deliverable only: the public, signed/notarized, auto-updating MacTools Nightly channel. The earlier scheduled Debug-snapshot proposal has been removed from the final diff. The existing manual
MacTools-DebugActions artifact remains an ordinary CI debugging tool outside this PR's Nightly scope.Current state
The branch currently documents the intended architecture and maintainer handoff. It does not yet implement or publish Nightly, so this PR must remain draft until the contributor checklist below is complete.
There is one publication gate:
ENABLE_NIGHTLY_RELEASES. It must remain unset until a maintainer completes the credential-backed N-to-N+1 acceptance after merge.Target user experience
No access control, account, invitation, private download service, separate Debug Nightly, or separate marketing website is required.
Implementation required before this PR is ready
The following work can be completed and reviewed without upstream release credentials:
ENABLE_NIGHTLY_RELEASESthat references maintainer Secrets, runs tests, builds with Release settings, signs/notarizes, creates an immutable public GitHub prerelease, puts the instability warning first, and advances the dedicated appcast only after every app/plugin asset is available.docs/appcast.xml,docs/app-release.json, Homebrew, GitHub Latest, and production plugin catalogs cannot be modified by the Nightly path.A new Xcode target is not required if a Nightly configuration provides complete isolation. A separate Nightly Sparkle key is recommended but may reuse the stable key if the maintainer explicitly accepts that tradeoff. A remote Nightly plugin catalog is optional if the app ships and synchronizes a complete matching plugin baseline.
Maintainer activation after merge
Credential-backed acceptance cannot run in the contributor fork. Merge must leave scheduled publication disabled until a maintainer completes:
ENABLE_NIGHTLY_RELEASES=true, verify the next scheduled prerelease/feed update, and confirm the pause/resume and troubleshooting instructions.Deleting or changing
ENABLE_NIGHTLY_RELEASESpauses scheduled publication. Manual validation remains available while paused.Publication invariants
Current branch changes
Validation
actionlint .github/workflows/build.yml/usr/bin/python3 -m unittest discover -s scripts/tests -p 'test_*.py'— 10 testsgit diff --checkNon-goals