Add changelog-driven release notes - #36
Conversation
adopt keep a changelog for release notes. entries accumulate under [unreleased] with pr references, the release command and workflow refuse to tag or publish a version without a dated changelog section, and the github release body is extracted from that section instead of generated from pr titles.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 525342b88b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| dist/SHA256SUMS dist/spotuify.rb \ | ||
| --draft \ | ||
| --generate-notes \ | ||
| --notes-file dist/release-notes.md \ |
There was a problem hiding this comment.
Update notes when reusing an existing draft
When a draft already exists for the tag—for example, one prepared manually or left by an earlier publication path—--notes-file is used only by gh release create; the existing-draft branch merely uploads assets and then publishes the old body. The resulting release can therefore retain generated or manual notes instead of the current changelog section. gh release edit --help explicitly supports --notes-file, so update the existing draft's notes before publishing it.
AGENTS.md reference: AGENTS.md:L56-L59
Useful? React with 👍 / 👎.
Summary
CHANGELOG.mdin Keep a Changelog 1.1.0 format, backfilled for v0.1.0 and v0.1.1 from their published release notes, with all merged work since v0.1.1 curated under[Unreleased]with PR referencesscripts/changelog.ts, a strict parser andrelease:changelog check|extractCLI validating structure: title heading,[Unreleased]first, datedX.Y.Zheadings, the six standard categories, newest-to-oldest ordering, non-empty sections, and link referencesbun run releaserefuses to tag, and the workflow's validate job refuses to build, a version without a dated changelog section--notes-file, replacing--generate-notesdocs/releasing.mdandAGENTS.mdWhy
Release notes were auto-generated from PR titles. Curating them in-repo gives users a readable history, keeps notes accurate through the released-user lens, and guarantees the GitHub release body always matches the curated notes for exactly the tagged version.
Validation
bun run typecheckbun test— 1024 passed, including 17 new changelog parser tests, a create-release gate test, and workflow assertionsrelease:changelog check/extractverified for 0.1.1;check 0.1.2correctly refuses while entries remain in[Unreleased]