Skip to content

ci(release): automate changelog generation - #122

Merged
Ayinkx01 merged 1 commit into
mainfrom
ci/automate-changelog
Sep 22, 2026
Merged

Ayinkx01 merged 1 commit into
mainfrom
ci/automate-changelog

Conversation

@Ayinkx

@Ayinkx Ayinkx commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Closes #113

What

Adds deterministic changelog generation from Conventional Commits.

  • tools/changelog.py: groups commits by type (feat/fix/perf/...), detects breaking changes, fails clearly when a range has no releasable changes, and splices output into CHANGELOG.md between generated markers so hand-written text is preserved.
  • .github/workflows/changelog.yml: dry-run on workflow_dispatch and on release; uploads the generated section as an artifact and never commits on its own.
  • docs/RELEASE.md: release guide documenting the process.
  • tools/tests/test_changelog.py: unit tests and a dry-run on a sample range.

Verification

  • python -m unittest discover -s tools/tests -> 9 passed
  • python tools/changelog.py --version 0.2.0 --to HEAD -> deterministic section
  • python tools/changelog.py --from HEAD --to HEAD -> exits 1 with a clear error
  • --write splices between markers and preserves surrounding text
  • cargo fmt --all -- --check, cargo clippy --all-targets --all-features -- -D warnings, cargo test --all all pass

Generate a deterministic changelog section from Conventional Commits via tools/changelog.py, keeping human edits outside generated markers. Fail clearly when a range has no releasable changes. Add docs/RELEASE.md and a dry-run workflow. Closes #113
@Ayinkx01
Ayinkx01 merged commit f3dc628 into main Sep 22, 2026
5 checks passed
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.

ci(release): automate changelog generation

2 participants