ci: group the generated release notes by category - #47
Merged
Conversation
dims
force-pushed
the
ci/release-notes-config
branch
from
August 7, 2026 15:37
6d19d49 to
8bfc49d
Compare
dims
force-pushed
the
ci/release-notes-config
branch
4 times, most recently
from
August 7, 2026 16:59
1cb835f to
3b38e4c
Compare
release.yml already sets generate_release_notes: true, so GitHub lists every merged pull request. It lists them flat, which means a dependency bump reads the same as a bug fix and a reader has to scan the whole list to find what changed for them. Add .github/release.yml so GitHub groups that list. No change to how a release is cut, no new tooling, no new workflow. Categories match on pull request labels, which is the only thing GitHub's generator can match on. It cannot read a commit or title prefix, so the conventional-commit prefixes this project already uses do not help here. That has a consequence worth stating plainly: most human pull requests carry no labels today, so they will land in Other Changes. That is exactly where they land now, so nothing gets worse, and labelling a pull request starts paying immediately. Two sections work from day one: Dependency Updates, because Dependabot applies the dependencies label itself, and Other Changes. Dependency bumps are grouped rather than excluded. A consumer deciding whether to upgrade wants to see them; the problem was never that they are published, it was that they were interleaved with everything else. Every label referenced here already exists in the repository, and the category order puts the "*" catch-all last so it only claims what nothing above matched. Signed-off-by: Davanum Srinivas <dsrinivas@nvidia.com>
dims
force-pushed
the
ci/release-notes-config
branch
from
August 7, 2026 17:30
3b38e4c to
8b9e46b
Compare
lalitadithya
enabled auto-merge (squash)
August 7, 2026 17:42
lalitadithya
approved these changes
Aug 7, 2026
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
release.ymlalready setsgenerate_release_notes: true, so GitHub lists every merged pull request. It lists them flat. A dependency bump reads the same as a bug fix, and a reader has to scan the whole list to find what changed for them.Change
.github/release.yml, 38 lines with comments. GitHub groups the list it already generates. No change to how a release is cut, no new tooling, no new workflow.Sections: New Features, Bug Fixes, Documentation, Dependency Updates, Other Changes.
The limitation, stated up front
Categories match on pull request labels. That is the only thing GitHub's generator can match on — it cannot read a commit or title prefix, so the Conventional Commit prefixes this project already uses do not help here.
Most human pull requests carry no labels today, so they land in Other Changes. That is exactly where they land now, so nothing gets worse, and labelling a pull request starts paying immediately.
Two sections work from day one: Dependency Updates, because Dependabot applies the
dependencieslabel itself, and Other Changes.Why dependency bumps are grouped rather than excluded
The obvious move is to drop them from the notes entirely, which is what aicr does via GoReleaser's changelog filters. I did not, because a consumer deciding whether to upgrade wants to see them. The problem was never that dependency bumps are published — it was that they were interleaved with everything else. A section at the bottom fixes that without hiding information.
Verification
changelog.exclude.{labels,authors},changelog.categories[].{title,labels,exclude}).enhancement,bug,documentation,dependencies— already exist in the repository."*"catch-all is last, so it only claims what nothing above matched.make verifypasses.Possible follow-up
If you want the categories to fill themselves, a small workflow could apply
enhancement,bugordocumentationfrom the Conventional Commit prefix already in the pull request title. Titles are consistent enough for it — the last 20 merged pull requests break down as 6fix, 4build, 4docs, 2chore, 2feat, 1ci, 1test. Not included here because it is a separate change with its own trade-offs.