Files
pad/scripts
xarmian 2d8aedc9a4 fix(release): the changelog starts at the previous stable release by version, and its exclude filters match GitHub's hash-prefixed entries (TASK-3268) (#1626)
* fix(release): the changelog starts at the previous stable release by version, and its exclude filters match GitHub's hash-prefixed entries (TASK-3268)

Two release-notes defects, measured with the pinned GoReleaser (v2.15.4) in a
changelog-only dry run whose output for v0.16.0 is byte-identical to the
published notes.

Base: GoReleaser took the previous tag from git describe on the new tag's
parent, which sees only tags on that ancestry. Releases are cut on
release-X.Y.x branches, so v0.16.0 was built from v0.15.0-rc.1, and a tag cut
from main now would describe back past v0.16.0: GitHub's compare reports 547
commits from there against 301 from v0.16.0, re-listing all of v0.16.0.
release.yml now pins GORELEASER_PREVIOUS_TAG through
scripts/release-previous-tag.sh (the highest stable tag below the current one
by version; an RC gets the previous stable) and fails the run if none exists.

Filters: with `use: github` every entry is "<sha>: <message>", so the
message-anchored excludes never matched and v0.16.0 shipped 30 docs, test, ci
and chore lines. The rule now allows the prefix, a scope, and a type list made
only of excluded types (`docs,test(store):`).

Dry run of v0.16.0 with both fixes: 230 entries become 200. Every one of the 30
removed is an excluded type, and nothing is added.

Claude-Session: https://claude.ai/code/session_016PXRzXhokr61CLbbu3Txj9

* fix(release): a breaking change stays in the notes whatever its type (TASK-3268 codex r1)

The exclude accepted `!` before the colon, so `chore!: ...` would have been
dropped. Codex round 1, P2. The v0.16.0 dry run is unchanged at 200 entries;
an RE2 matrix of 15 messages, each with and without the hash prefix, answers
as intended.

Claude-Session: https://claude.ai/code/session_016PXRzXhokr61CLbbu3Txj9
2026-09-27 19:10:20 -04:00
..