Publish changelog entries as release notes - #34
Merged
Merged
Conversation
The release workflow created GitHub releases with a fixed boilerplate sentence and never read CHANGELOG.md, so entries parked under "## Unreleased" silently missed every release and nothing failed when a tagged version had no changelog entries at all. The changelog is now the single source of the release body. A new scripts/changelog.sh extracts and verifies one section, the metadata job gates the release on the tagged version having entries and on no entries being left unreleased, and the publish job uses that section as the release notes. bump-version.sh promotes the unreleased entries into the dated section it creates, and CI verifies documentation, script syntax, and changelog consistency on every run. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 193fe4f0-675a-4655-8754-3b20d216f398
Adapts the changelog gate to the Repository Quality Standard layout that landed on main: the release and changelog rules move into AGENTS.md, CLAUDE.md stays a pointer, the changelog checks join the existing documentation checks that the CI lint job already runs, and bump-version.sh keeps the site version markers while promoting the unreleased entries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 193fe4f0-675a-4655-8754-3b20d216f398
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.
Problem
CHANGELOG.mdhad an empty## Unreleasedsection and was completely disconnected from the release pipeline:publishjob created the GitHub release with a fixed sentence ("Signed, notarized, stapled, and verified macOS release artifacts.") and never read the changelog.## Unreleased— those entries silently never reached any release notes.bump-version.shbumped the project and website version but left the changelog untouched, so drifting apart was the default outcome.R06of the Repository Quality Standard was recorded aspasson exactly this evidence, which shows how weak the criterion is when nothing consumes the changelog. A matching change to the standard is being prepared intrsdn/.github.Change
The changelog is now the single source of the release body.
scripts/changelog.sh(new):section <version|unreleased>prints one section,release-notes <version> [--output FILE]verifies release readiness and emits the notes. It fails when the version has no dated section, when that section is empty, or when entries are still parked under## Unreleased.release.yml: themetadatajob checks out the tooling, readsCHANGELOG.mdfrom the tag itself, and gates the release before any test, build, or signing work happens. The published notes come from that section (gh release create/edit --notes-file).bump-version.sh: promotes the## Unreleasedentries into the new dated## X.Y.Z - YYYY-MM-DDsection and refuses to bump when there is nothing to release. It keeps updating the project and site version markers.check-documentation.sh: additionally verifies that the changelog keeps an## Unreleasedsection and describes the currentMARKETING_VERSION. The existing CI lint job already runs this script andbash -n scripts/*.sh.AGENTS.md/README.md: document the convention;CLAUDE.mdstays a pointer.CHANGELOG.md: the user-facing work merged with Apply Repository Quality Standard v1.5.1 #33 is described as well, so the next release notes are complete.Verification
bash -n scripts/*.sh,scripts/check-documentation.sh, andscripts/verify-version.shpass.softwareVersion, both visible site markers, and the review date are updated, and the resulting tag passes the gate.## Unreleased.v1.1.0–v1.2.0), soworkflow_dispatchre-runs of older tags still work;v1.0.0predates the changelog entirely.