Conversation
…hangelog
Adds a Keep-a-Changelog-style CHANGELOG.md as the source of per-release
narrative notes, wires goreleaser to prepend that narrative above its
auto-generated commit changelog, and groups the commit changelog by
conventional-commit type so future releases read as Features / Bug fixes /
Other instead of one flat list.
- CHANGELOG.md: new file, backfilled with a 0.0.1 section covering the
gate/trace/replay primitives, approval workflow, MCP server, VS Code
extension, SDKs, and release pipeline that shipped in v0.0.1.
- .goreleaser.yaml: add release.header pulling from {{ .Env.RELEASE_NOTES }},
expand changelog.groups with feat/fix/other buckets (existing docs/chore/ci
filters preserved).
- .github/workflows/release.yml: add a pre-goreleaser step that extracts the
section matching the pushed tag from CHANGELOG.md and exports it as
RELEASE_NOTES. Fails fast with a clear error if no matching section exists,
so we can't accidentally tag a release with an empty summary.
The extractor uses $GITHUB_REF_NAME via an explicit env: block (not
${{ }} interpolation into the run script) to stay out of the workflow
injection footgun.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
CHANGELOG.md(Keep-a-Changelog format) as the source of per-release narrative notes, backfilled with a[0.0.1]section covering what shipped in the first tagged release.goreleaserto prepend that narrative above its auto-generated commit changelog viarelease.header: {{ .Env.RELEASE_NOTES }}.Features/Bug fixes/Other) so future release pages read cleanly instead of one flat list.CHANGELOG.mdand exports it asRELEASE_NOTES. Fails fast with a clear error if no matching section exists — no more accidentally tagging a release with an empty summary.Why
v0.0.1was released with a commit changelog but no human-written "what's in this release" summary. This PR fixes that for all future releases while preserving the auto-generated commit list below the summary.How the extractor works
The workflow step uses
awkto extract the lines between the## [X.Y.Z]heading and either the next##heading or a reference-link definition line. Reference-link definitions ([text]: url) at the bottom of CHANGELOG.md are skipped rather than treated as terminators — verified against both the current single-section CHANGELOG and a synthetic multi-version file (newest, middle, oldest).$GITHUB_REF_NAMEis passed into therun:block via an explicitenv: TAG_NAME: ${{ github.ref_name }}mapping, not interpolated via${{ }}into the shell script — the safe pattern that keeps us out of the workflow injection footgun.What this does NOT do
v0.0.1GitHub Release page. That release already shipped with just the commit changelog. If we want to backfill it,gh release edit v0.0.1 --notes-file <extracted section>would do it in a follow-up.feat:orfix:falls into "Other").Test plan
make cipasses locally (fmt, lint 0 issues, tests, build)CHANGELOG.mdproduces clean output (no leading blank line, no trailing reference links, stops correctly on##boundaries)v0.0.2) — should produce a release page with the CHANGELOG narrative on top and the grouped commit list belowFollow-ups (not in this PR)
releaseskill's Go pre-flight to remind the user to add a## [VERSION]section toCHANGELOG.mdbefore tagging.v0.0.1GitHub Release page with the new summary.🤖 Generated with Claude Code