• v0.33.0 f38267ec8f

    Release v0.33.0
    All checks were successful
    changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 4s
    check-self-bootstrap / check (pull_request) Has been skipped
    changelog-body-check / check (pull_request) Successful in 0s
    fragment-check / changelog fragment-kind (pull_request) Successful in 4s
    fragment-check / check (pull_request) Successful in 0s
    manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
    manifest-check / check (pull_request) Successful in 0s
    register-check / register-drift check (pull_request) Successful in 5s
    register-check / check (pull_request) Successful in 0s
    tests / bats (pull_request) Successful in 1m58s
    tests / shellcheck (pull_request) Successful in 8s
    check-self-bootstrap / check (push) Successful in 3s
    release / decide + act (push) Successful in 7s
    release / release (push) Successful in 0s
    tests / bats (push) Successful in 1m58s
    tests / shellcheck (push) Successful in 8s
    mirror-on-cut / mirror-1 (release) Successful in 1s
    mirror-on-cut / mirror (release) Successful in 0s
    Stable

    release-bot released this 2026-07-24 01:28:56 +02:00 | 1034 commits to main since this release

    Added

    • build-c4 workflow: LikeC4 static-site build for docs/architecture/c4/**/*.likec4, deployed to arch.saratow.net LAN-only (alcatraz-infra#128 substrate). Consumes tmux-tell#617 forgejo-runner /output bind-mount; served RO via ingress nginx. Refs release-toolkit#367.

    • fragment style guide + length-warn CI signal — new docs/fragment-style.md codifies the skim-scan shape a good changelog fragment takes (six rules + before/after examples grounded on the ember v0.3.0/v0.5.0/v0.6.0 recoveries); reusable-changelog-fragment-check.yml gains a fragment_length_warn_chars input (default 500) that emits a non-blocking ::warning:: for fragments exceeding the threshold and points contributors at the guide (#488)

    Changed

    None.

    Fixed

    • PREP_SUBJECT_RE now accepts the Forgejo squash-merge subject suffix (#NN). A prep-PR squash-merged on Forgejo produces the commit subject chore(release): vX.Y.Z (#NN) (PR-number appended to the title); the $ anchor previously rejected it, silently skip-gating the cut. #331 made prepare optional for squash-merge but missed the suffix half — measured on ember v0.1.0 (chore(release): v0.1.0 (#37)). The trailing group is added at the end, so BASH_REMATCH[2] version extraction is unaffected. Closes #487.

    • Let the changelog fragment PR gate accept a consumer-provided valid-kind list so it can match the repository's release-time assembler instead of hardcoding release-toolkit's own internal convention (#489).

    • release-prep no longer emits conventional-commit summary bullets that duplicate an authored changelog fragment. cc_categorize_commits_since now takes an optional fragments-directory argument and suppresses the CC subject bullet of any commit that itself added a fragment in the same range (git log --diff-filter=A), keyed on git commit identity rather than on a shared #NNN prose reference. This catches the ref-absent and ref-mismatched duplicates that changelog_dedup_cc_by_fragment_refs (which keys on the fragment filename id) structurally cannot, and it cannot silently drop genuinely-new content: a change with no fragment sits on a commit the suppression set never contains. The ref-based dedup is retained for the complementary separate-commit-same-ref case. Refs release-toolkit#493 (Bug 2).

    • release-prep no longer drops the ### Upgrade section or concatenates a stray None. placeholder onto real content when composing a release over pre-existing ## [Unreleased] content. changelog_merge_sections now sources its section order from the single-source-of-truth CHANGELOG_STANDARD_SECTIONS (so no hand-maintained order list can drift and drop a section) and treats the scaffold None. as a soft-empty sentinel that yields to real content but persists when a kind is empty in every input. Refs release-toolkit#493 (Bug 1).

    • fragment-style: scrub '[reviewer]' invented-jargon per register-check gate

    • fragment-style: scrub 3 chamber-name attributions per register-check gate

    Removed

    None.

    Deprecated

    None.

    Upgrade

    None.

    Downloads