What problem does it solve?
Releasing a Swift macOS app involves coordinating version tags, categorized changelogs, GitHub Releases, and Sparkle appcast updates across beta and stable channels, and doing any step wrong leaves blank release notes or broken update feeds.
Core Features & Use Cases
- Channel-aware changelog generation: Collects commits since the previous release in the same channel (stable rolls up the whole beta series) and categorizes them into New Features, Bug Fixes, Refactor, and Chores with author attribution via the GitHub CLI.
- Tag-driven release workflow: Creates annotated
v* tags on main that trigger CI to build, sign, notarize, and attach the DMG, then publishes the approved notes onto the release.
- Release verification: Confirms the release is non-draft, has the correct prerelease flag and DMG asset, and that the Sparkle
appcast.xml on gh-pages and the live site contain the new version, with recovery steps for stuck Pages deployments and leftover drafts.
- Use Case: After merging a week of fixes, ask the assistant to cut
v0.7.1; it drafts the changelog for your approval, commits it to CHANGELOG.md, pushes the tag, and publishes the release notes once CI finishes.
Quick Start
Cut a new stable release of OpenUsage by generating the changelog since the last stable tag, then tag and publish the GitHub Release with notes.