Skip to content

[codex] Drive changelog releases from towncrier#34

Merged
adamtheturtle merged 1 commit into
mainfrom
codex/towncrier-changelog
May 20, 2026
Merged

[codex] Drive changelog releases from towncrier#34
adamtheturtle merged 1 commit into
mainfrom
codex/towncrier-changelog

Conversation

@adamtheturtle
Copy link
Copy Markdown
Owner

@adamtheturtle adamtheturtle commented May 20, 2026

Summary

This switches release changelog handling to the same towncrier-based flow used by literalizer:

  • replace the manual Next changelog section update with towncrier build
  • generate GitHub release notes from the same news fragments
  • add the towncrier config, template, and newsfragments/ directory
  • render unreleased fragments in docs where the project has Sphinx docs
  • migrate any existing Next entries into initial news fragments

Validation

  • uv run --extra=release towncrier build --draft --version 2099.01.01
  • uvx --from actionlint-py actionlint .github/workflows/release.yml
  • uv run --extra=dev pyproject-fmt --check --no-print-diff pyproject.toml where the repo has a dev extra
  • repo pre-commit / pre-push hooks run by git commit and git push

Note

Medium Risk
Release automation now builds both CHANGELOG.rst and GitHub release bodies from Towncrier fragments, which can affect tagging/publishing if the new workflow or templates mis-render or fail in CI.

Overview
Switches the release workflow from manually editing a Next section to running towncrier build to both generate GitHub release notes (bodyFile: release-notes.md) and update CHANGELOG.rst, committing the consumed newsfragments/ in the same bump commit.

Adds Towncrier into the project via new [tool.towncrier] config and a custom template (docs/towncrier_template.rst.jinja), introduces an unreleased docs page rendered from draft fragments during Sphinx builds (sphinxcontrib.towncrier.ext), and updates manifest tooling to ignore newsfragments/**.

Reviewed by Cursor Bugbot for commit b11fad6. Bugbot is set up for automated code reviews on this repo. Configure here.

@adamtheturtle adamtheturtle marked this pull request as ready for review May 20, 2026 11:29
@adamtheturtle adamtheturtle merged commit d1406ab into main May 20, 2026
14 checks passed
@adamtheturtle adamtheturtle deleted the codex/towncrier-changelog branch May 20, 2026 11:29
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b11fad6. Configure here.

exit 1
fi
RELEASE: ${{ steps.calver.outputs.release }}
run: uv run --extra=release towncrier build --yes --version "$RELEASE"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Towncrier not in release extra, workflow will fail

High Severity

The workflow runs uv run --extra=release towncrier build but towncrier is only declared under optional-dependencies.dev, not optional-dependencies.release (which only contains check-wheel-contents). On a clean CI runner, uv will only install the release extra's dependencies, so the towncrier CLI won't be available and both changelog steps will fail.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b11fad6. Configure here.

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.

1 participant