release: cut v0.2.0-beta CHANGELOG section + inject into release body#57
Merged
Conversation
Two changes that ship together because they both prepare the upcoming v0.2.0-beta tag: 1. **CHANGELOG**: `[Unreleased]` (190 lines, multiple duplicate Added/Changed sections) is consolidated and renamed to `[0.2.0-beta] — 2026-05-25`. Missing entries for the recent #53–#56 (URL cleanup, auto-deploy + domain fix + env.example inline-comment fix) are added. A fresh `[Unreleased]` placeholder sits above. Link references at the bottom updated: [Unreleased]: ...compare/v0.2.0-beta...HEAD [0.2.0-beta]: ...compare/v0.1.0-beta...v0.2.0-beta 2. **release.yml**: adds an "Extract CHANGELOG section for this release" step before softprops/action-gh-release. It uses awk's `index()` (not regex) so awk-implementation differences over `\[` escaping can't break it, then writes the matching section to `release-body.md`. The action's `body_path:` prepends that to the auto-generated PR list — best of both: hand-curated narrative + complete commit/PR audit trail. The step also logs a `::warning::` and falls through to auto-only if the CHANGELOG has no matching section, so a future tag with no curated notes still produces a release. Verified locally with `awk -v marker="## [0.2.0-beta]" '...' CHANGELOG.md` — 53 lines extracted, no leakage from neighbouring sections. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Musiker15 <info@musiker15.de>
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.
Summary
Pre-tag prep for v0.2.0-beta. Two coupled changes:
1. CHANGELOG:
[Unreleased]→[0.2.0-beta] — 2026-05-25The Unreleased section had grown to 190 lines with multiple duplicate Added/Changed sections (one per PR sweep). Consolidated into a single coherent
[0.2.0-beta]release block with the canonical Keep-a-Changelog structure:@vitest/coverage-v8peer-match@otplib/core.env.exampleinline comments (fix(env): move inline comments off value lines in .env.example #56)otplib12→13,@simplewebauthn11→13.gitattributesfor LF on.sh/.serviceAlso caught up the missing entries for #53–#56 (URL cleanup + auto-deploy + domain fix + env-example fix) that landed after the last CHANGELOG sweep.
Link references at the bottom updated:
[Unreleased]: …compare/v0.2.0-beta...HEAD+ new[0.2.0-beta]entry.2.
release.yml: inject CHANGELOG section into the GitHub Release bodyThe workflow used to call
softprops/action-gh-releasewithgenerate_release_notes: trueonly → a flat "What's Changed" PR list, no narrative. For a 28-PR release that's not enough.New step "Extract CHANGELOG section for this release" runs before softprops:
Uses
index()(substring match), not regex, because awk implementations disagree on whether\[is literal or a metachar — we hit that locally during testing. Substring match is unambiguous.Then
softprops/action-gh-releaseis called with bothbody_path: release-body.mdandgenerate_release_notes: true→ the action prepends the hand-curated narrative to the auto-generated PR list. Best of both worlds.Fail-soft: if the CHANGELOG has no matching section for the tag, a
::warning::is logged and the release ships with auto-generated notes only.Verification
Next steps after merge
git tag -s v0.2.0-beta -m "v0.2.0-beta"(or unsigned with-a)git push origin v0.2.0-betarelease.yml→ multi-arch GHCR push + cosign sign + SBOMs + GitHub Release with the curated body + auto PR listTest plan
pnpm typecheckcleanpnpm lintclean🤖 Generated with Claude Code