Skip to content

fix(release): group multi-scope commits and exclude scoped types in changelog#260

Merged
upsetbit merged 1 commit into
masterfrom
fix/goreleaser-changelog-scopes
Jun 22, 2026
Merged

fix(release): group multi-scope commits and exclude scoped types in changelog#260
upsetbit merged 1 commit into
masterfrom
fix/goreleaser-changelog-scopes

Conversation

@upsetbit

Copy link
Copy Markdown
Contributor

Summary

The goreleaser changelog mis-categorized commits in the v0.26.0 release: the
headline fix(cli,server,store): honor remote device filters landed under
Others instead of Bug Fixes, and scoped docs(...)/chore(...)
commits leaked into the changelog instead of being excluded.

Two root causes in .goreleaser.yaml:

  • Group regexps used [[:word:]-]+ for the commit scope, which does not
    match commas — so multi-scope commits like fix(cli,server,store): failed
    the Features/Bug Fixes patterns and fell through to Others. Single-scope
    commits (fix(panel):) matched fine, which is why prior releases looked
    correct.
  • Exclude filters (^docs:, ^test:, ^chore:, ^ci:) matched only
    unscoped commits, so docs(proto):, chore(deps):, etc. were never
    excluded.

Changes

  • Allow commas in the group scope class: [[:word:]-]+[[:word:],-]+.
  • Match an optional scope in the exclude filters: ^docs:
    ^docs(\([^)]+\))?!?: (and the same for test/chore/ci).

Validation

  • goreleaser check — config is valid (the only reported issue is a
    pre-existing homebrew_casks.binary deprecation, unrelated to this change).
  • Verified the grouping/exclude logic against the actual commit subjects
    using Go's regexp (the same RE2 engine goreleaser uses). All cases
    classify correctly: multi-scope fix(a,b,c): → Bug Fixes, single-scope
    still works, fix:/fix(a,b)!: handled, scoped docs/chore/ci/test
    excluded, merge commits excluded, refactor/perf → Others.

Affects future releases only; the v0.26.0 notes are already published and
unchanged.

The changelog group regexps used `[[:word:]-]+` for the commit scope,
which excludes commas, so multi-scope commits like
`fix(cli,server,store):` fell through to "Others" instead of "Bug
Fixes". The exclude filters (`^docs:` etc.) likewise matched only
unscoped commits, leaking `docs(...)`/`chore(...)` into the changelog.

Allow commas in the group scope class and match an optional scope in
the exclude filters.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@upsetbit upsetbit merged commit b6f1c75 into master Jun 22, 2026
5 checks passed
@upsetbit upsetbit deleted the fix/goreleaser-changelog-scopes branch June 22, 2026 17:24
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