Commit graph

1 commit

Author SHA1 Message Date
Claude
d34e615b73
feat(release): auto-tag + GitHub Release from CHANGELOG on push to main
Adds end-to-end release automation so every CHANGELOG bump produces a
matching git tag + GitHub Release with notes — no manual `gh release
create` invocations required.

- .github/workflows/release.yml — push to main triggers parse-CHANGELOG
  → check tag exists → create tag → create GH Release with notes. Idempotent
  (existing tags skipped). Manual workflow_dispatch supports targeting a
  specific historical version. Path-filter limits firing to actual release
  pushes (CHANGELOG.md, the parser, or the workflow itself changing).

- scripts/extract_release_notes.py — stdlib-only CHANGELOG.md parser.
  Outputs JSON, plain text, or github-release-formatted markdown.
  Runnable standalone for preview: `python3 scripts/extract_release_notes.py
  --format github-release`. Default extracts the latest entry; --version
  pins to a specific release.

- CHANGELOG.md — new [2.8.0] entry covering the v2.8.0 Sprint 1 work
  (business-operations + commercial domains, #688) plus the #686 plugin.json
  fix (#689) and #690 regression-prevention validator + CI gate. This is the
  entry the release workflow will pick up on first run after this lands on
  main.

When this commit (plus the dev → main sync #692) reaches main, the workflow
fires, parses CHANGELOG, sees v2.8.0 at the top, creates the `v2.8.0` tag
and GitHub Release — automatically. All future releases follow the same
flow: add a CHANGELOG entry, merge to main, done.
2026-05-19 04:00:06 +00:00