Skip to content

fix(ci): generate release notes from CHANGELOG.md instead of develop range#283

Merged
eyelock merged 2 commits into
developfrom
fix/release-notes-from-changelog
May 5, 2026
Merged

fix(ci): generate release notes from CHANGELOG.md instead of develop range#283
eyelock merged 2 commits into
developfrom
fix/release-notes-from-changelog

Conversation

@eyelock
Copy link
Copy Markdown
Owner

@eyelock eyelock commented May 5, 2026

Summary

The release-notes generator in .github/workflows/release.yml ranged commits over ${PREV_TAG}..origin/develop and filtered by feat: / fix: prefixes. That works for stable releases promoted via develop → main, but fails for hotfixes: a hotfix is tagged off main, and develop contains every commit that wasn't backported. v0.9.6 manifested this — its release page listed SourcePicker, harness management, ynh 0.3 envelope, and other commits that aren't actually in the tag (manually corrected post-hoc).

Approach

Switch to extracting the matching ## [$VERSION] section from CHANGELOG.md. CHANGELOG is already the human-curated source of truth for what shipped — using it directly is:

  • Correct for every release type (stable, beta, hotfix) — the section reflects the tagged commit, not branch state.
  • Author-controlled — release wording matches what's checked in.
  • Resilient to squash-merge — no dependency on commit prefixes surviving the merge style.

If the section is empty (CHANGELOG not maintained for that version), fall back to a stub pointer instead of producing wrong content.

Test plan

  • Local awk extraction verified for 0.9.6 and 0.9.5 against current CHANGELOG.md — scoped correctly to each section.
  • Next release (any type) — verify release page matches the CHANGELOG section verbatim.

🤖 Generated with Claude Code

…range

The previous generator ranged over `${PREV_TAG}..origin/develop` and
filtered by `feat:`/`fix:` commit prefixes, on the assumption that all
features land on develop. That assumption breaks for hotfixes: a
hotfix is tagged off `main`, and `develop` contains every commit that
wasn't backported. v0.9.6's release notes ended up listing SourcePicker,
harness management, ynh 0.3 envelope, and other develop-only commits
that aren't actually in the v0.9.6 tag.

Switch to extracting the section header `## [$VERSION]` from
CHANGELOG.md. CHANGELOG is already the human-curated source of truth
for what shipped — using it directly is correct for every release type
(stable, beta, hotfix) and gives release-author control over wording.

If the section is empty (CHANGELOG not maintained for that version),
fall back to a stub pointer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@eyelock eyelock enabled auto-merge (squash) May 5, 2026 06:44
@eyelock eyelock disabled auto-merge May 5, 2026 06:44
@eyelock eyelock enabled auto-merge (squash) May 5, 2026 06:45
@eyelock eyelock merged commit ba27803 into develop May 5, 2026
7 checks passed
@eyelock eyelock deleted the fix/release-notes-from-changelog branch May 5, 2026 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant