Changelog

Unreleased

Fixed

  • Leave fenced code examples unchanged when repairing Markdown release anchors.

  • Match explicit GitHub author credits without case sensitivity and treat GitHub mannequin authors as unavailable accounts.

  • Finalize a CalVer prerelease in the current month before incrementing its patch number.

  • Reject misleading pull request labels and GitHub author links after resolving Markdown references and nested markup.

  • Ignore pull request references inside code when linking changelog fragments.

  • Identify fragment commits by full path so nested files with the same name cannot change pull request attribution.

  • Require the merged pull request author in the fragment’s author list; a later reviewer mention does not count as a credit.

  • Keep generated hook dependency pins with a folded or literal dependency item when another YAML key follows it.

  • Keep direct dependencies in a flow-style list when a trailing comment contains the managed-pin marker.

  • Preserve comments on direct dependencies when updating a flow-style hook mapping.

  • Resolve hook dependencies from PyPI even when the caller sets uv or pip index and resolver environment variables.

  • Resolve Python hook dependencies for the manifest’s language_version when the caller does not override it.

  • Pin ranged and unpinned Python hook dependencies before they run in release preparation. Preserve the caller’s version range across updates and reject YAML aliases that share an edited dependency list.

  • Rerun eligible hook cooldown checks daily so an unchanged bot update can become mergeable after seven days.

  • Keep a numbered issue in a changelog entry when its digits only appear as the start of a longer pull request number.

  • Accept valid YAML comments and quoting in Knope changeset front matter during news validation.

  • Reject unsupported or empty changelog fragments in the pull request news check.

  • Keep fenced package headings inside their changelog section and reject unsupported pending fragment files in documentation previews.

  • Stop package release notes at the next version anchor, even when the following heading is missing.

  • Accept trailing slashes and the www.github.com host in verified release-note author links.

  • Reject raw HTML hyperlinks in release entries so an @handle credit cannot point to another person.

  • Preserve wrapped reStructuredText release notes and verify credits on short, repository-prefixed, and issue-form pull request links. Ignore pull request syntax inside code spans and blocks when checking credits.

  • Ignore numeric fragments of unrelated bare URLs when checking release-note pull request credits.

  • Do not count reviewer mentions as pull request author credits.

  • Escape URL punctuation when converting reStructuredText links to GitHub release Markdown.

  • Keep literal tildes in reStructuredText changelog entries when rendering GitHub Markdown.

  • Apply one author credit to adjacent pull request references separated by whitespace or semicolons.

  • Reject release-note lines that embed markup inside a category anchor.

  • Render package release anchors when the package name contains underscores.

  • Find the introducing commit for renamed fragments and fragments whose filenames contain non-ASCII characters.

Breaking changes

  • release-creator hooks now uses a seven-day package cutoff and each hook’s configured Python version without --exclude-newer or --python-version options.

Security

  • Reject duplicate pre-commit YAML keys so effective hook dependencies cannot bypass cooldown and pin updates.

  • Reject YAML merge keys in hook definitions so shared dependencies cannot bypass exact pin updates.

  • Reject repository-level YAML merge keys before refreshing hook pins, so a merged source cannot hide the hook package.

  • Ignore inherited SSL_CERT_DIR and SSL_CLIENT_CERT when resolving hook pins from PyPI.

0.6.7 (2026-10-23)

Fixed

  • Keep a pull request mentioned in prose from inheriting the author credit of a later pull request (#27) by @gaborbernat.

  • Reject unclosed Markdown code fences and keep indented fences from moving fragment links into code (#27) by @gaborbernat.

  • Report a missing Git, GitHub CLI, or uv executable by name instead of raising a type error (#27) by @gaborbernat.

0.6.6 (2026-10-23)

Fixed

  • Restore draft changelog pages for repositories with several packages in one Markdown changelog (#26) by @gaborbernat.

0.6.5 (2026-10-23)

Changes

  • Accept a symlinked plugin archive when its ZIP members match the Marketplace upload (#25) by @gaborbernat.

Fixed

  • Keep fragment links outside trailing Markdown and RST code blocks (#25) by @gaborbernat.

  • Keep frozen hook dependency pins attached to the correct hook across YAML styles (#25) by @gaborbernat.

  • Reject GitHub release notes whose pull request credits do not match the merged authors (#25) by @gaborbernat.

Removed

  • Stop validating surrounding whitespace in Marketplace plugin IDs and versions and content in ZIP directory entries (#25) by @gaborbernat.

  • Stop validating GitHub author handle syntax and 40-character Git commit IDs before querying GitHub (#25) by @gaborbernat.

  • Remove specific missing Git, GitHub CLI, and uv errors from fragment and hook commands; missing executables surface as a type error (#25) by @gaborbernat.

0.6.4 (2026-10-23)

Changes

  • Remove unused artifact reconciliation, package changelog preview, stable-tag filtering, and numbered-PR fragment options (#22) by @gaborbernat.

Fixed

  • Keep hook dependency pins with their own hook when the pre-commit configuration uses block or flow YAML, and resolve ranged root requirements (#22) by @gaborbernat.

  • Match contributor credits to the final pull request on each generated-notes line, escape RST text in GitHub Markdown, and place fragment links outside trailing code blocks (#22) by @gaborbernat.

0.6.3 (2026-10-23)

Changes

  • Show Full Changelog as a named link in GitHub Release notes and keep release headings nested in the Sphinx changelog (#21) by @gaborbernat.

0.6.2 (2026-10-23)

Documentation

  • Keep the release-creator documentation site and its versioned changelog in reStructuredText (#19) by @gaborbernat.

0.6.1 (2026-10-23)

Fixed

  • Accept Knope changelog sections configured with footers and no changeset types (#18) by @gaborbernat.

  • Apply timeouts to the Git and Towncrier commands used for fragment checks and identify the full command when it times out (#18) by @gaborbernat.

  • Ignore Towncrier guide and marker files in PR news checks, reject malformed fragment suffixes, and report unsupported Towncrier layouts clearly (#18) by @gaborbernat.

  • Reject unknown files and renamed fragments in PR news checks while ignoring editor backup files (#18) by @gaborbernat.

  • Resolve fragment pull requests in bounded batches, reject unmerged numbered requests, and credit deleted GitHub accounts as ghost (#18) by @gaborbernat.

0.6.0 (2026-10-23)

Added

  • Link named changelog fragments to squash-merged pull requests and verified human authors using Git history and GitHub (#14) by @gaborbernat.

  • Render reStructuredText changelog entries as Markdown GitHub Release notes while preserving links and author credits (#14) by @gaborbernat.

  • Return verified PyPI file URLs for trusted-publisher attestation after comparing the complete published release with local distributions (#14) by @gaborbernat.

Changes

  • Read fragment provenance from Git without --git or --commit-map; use Nab in place of the removed locks and build-constraints commands (#14) by @gaborbernat.

Fixed

  • Accept canonical prerelease, postrelease and development tags, and use PEP 440 order when selecting previous releases (#14) by @gaborbernat.

  • Finalize a matching prerelease before applying the next version bump (#14) by @gaborbernat.

  • Fix pull request lookup for named changelog fragments during release preparation (#16) by @gaborbernat.

  • Preview standard Knope changesets without extra section configuration (#14) by @gaborbernat.

  • Read Towncrier defaults and validate fragments from project subdirectories (#14) by @gaborbernat.

  • Reject changelog fragments with the wrong file extension before release (#14) by @gaborbernat.

  • Reject shallow Git histories when attributing changelog fragments to pull requests (#14) by @gaborbernat.

  • Skip non-Python hook dependencies when refreshing pre-commit pins (#14) by @gaborbernat.

Security

  • Use the final credit in generated GitHub notes when a pull request title contains a forged credit (#14) by @gaborbernat.

Packaging

0.5.1 (2026-10-22)

Fixed

  • Refresh transitive pre-commit hook dependencies alongside direct pins, including platform-specific packages (#13) by @gaborbernat.

0.5.0 (2026-10-22)

Added

  • Add a hooks command to refresh exact pre-commit additional_dependencies pins under a release-age cutoff without rewriting the rest of the hook configuration (#11) by @gaborbernat.

  • Allow repositories whose numeric Towncrier fragment stems are pull request numbers to preserve the original pull request link and verified author during historical backfills (#11) by @gaborbernat.

  • Calculate versions from v-prefixed release tags and retain that prefix when requested (#11) by @gaborbernat.

  • Check PyPI filenames and SHA256 digests before retrying a partial upload, stage only missing files, and verify the complete published set afterward (#11) by @gaborbernat.

  • Check a JetBrains Marketplace plugin against its signed ZIP before retrying an upload (#11) by @gaborbernat.

  • Export one selectable pylock.toml for a project’s runtime dependencies, groups, extras, Python range, and platforms (#11) by @gaborbernat.

  • Include YAML support in the base package so every command works without an extra (#11) by @gaborbernat.

  • Include build backend dependencies in the full project lock and select exact, hashed build constraints for the current Python and platform (#11) by @gaborbernat.

  • Link Knope changesets to merged pull requests and repair changelog anchors after release preparation (#11) by @gaborbernat.

  • Render package and Knope draft fragments beside released history in documentation builds without changing the tracked changelog (#11) by @gaborbernat.

  • Select and validate package-prefixed tags from a mixed repository tag list (#11) by @gaborbernat.

  • Select hashed build constraints for named operating systems and Python versions, and reject a shared file when their dependency selections differ (#11) by @gaborbernat.

  • Validate changed pull request fragments with the Towncrier configuration (#11) by @gaborbernat.

Fixed

  • Convert Sphinx PEP references to links in GitHub Release notes rendered from reStructuredText changelogs (#11) by @gaborbernat.

  • Convert reStructuredText links in changelog entries to Markdown links in GitHub Release notes (#11) by @gaborbernat.

  • Credit the merged pull request author for numeric fragments without losing a separate issue link (#11) by @gaborbernat.

  • Keep GitHub first-contributor credits for human pull requests without a changelog entry (#11) by @gaborbernat.

  • Keep explicit display text from reStructuredText links in GitHub Release notes (#11) by @gaborbernat.

  • Keep first-time human contributor credits when GitHub generated notes use a level-three heading (#11) by @gaborbernat.

  • Keep wrapped reStructuredText author credits attached to their release entry (#11) by @gaborbernat.

  • Preserve RST field names inside inline code when rendering GitHub release notes (#11) by @gaborbernat.

  • Preserve each reStructuredText changelog’s configured category heading level when assembling a release (#11) by @gaborbernat.

  • Preserve named historical author credits when GitHub generated notes omit a deleted account’s handle (#11) by @gaborbernat.

  • Preserve nested lists, code blocks, and warnings when rendering reStructuredText release notes for GitHub (#11) by @gaborbernat.

  • Reject named changelog fragments without a + prefix before version selection or release assembly (#11) by @gaborbernat.

  • Render a credited historical pull request when GitHub generated notes omit it (#11) by @gaborbernat.

  • Render historical RST release headings that link to a tag but have no date (#11) by @gaborbernat.

  • Render prerelease and four-part historical version sections in GitHub Release notes (#11) by @gaborbernat.

Documentation

  • Clarify when to keep uv.lock alongside the exported pylock.toml (#11) by @gaborbernat.

0.4.1 (2026-10-19)

Fixed

  • Render historical release notes for two-part version tags such as 0.2 (#10) by @gaborbernat.

0.4.0 (2026-10-19)

Added

  • Render older uncategorized release entries under Other changes without assigning a user-facing category to them (#9) by @gaborbernat.

0.3.0 (2026-10-19)

Added

  • Select one package history from a shared Markdown changelog and keep its package-prefixed comparison tags (#8) by @gaborbernat.

  • Ship a reStructuredText Towncrier template with stable anchors that follows each changelog’s heading style (#8) by @gaborbernat.

Fixed

  • Keep Towncrier’s issue links when a release contains numbered fragments alongside named fragments (#8) by @gaborbernat.

  • Read bracketed and v-prefixed Markdown release headings when rendering GitHub Release notes (#8) by @gaborbernat.

  • Reject uncategorized release items and empty category headings before tagging or publishing a distribution (#8) by @gaborbernat.

  • Replace a changelog’s existing comparison line when rendering GitHub Release notes, so the body contains one link (#8) by @gaborbernat.

  • Select automatic release versions from reStructuredText fragments as well as Markdown fragments (#8) by @gaborbernat.

0.2.0 (2026-10-19)

Added

  • Resolve merged pull request authors for changelog credits and verify them against generated GitHub release notes (#7) by @gaborbernat.

Documentation

  • Document the feature-release policy for Python support changes (#5) by @gaborbernat. Additions and drops use feature fragments and select minor releases. New releases will not install on a dropped Python version; users who need that version can install an older release.

0.1.1 (2026-10-19)

Fixed

  • Keep verified new-contributor credits when GitHub links the contributor’s first pull request with a URL (#4).

0.1.0 (2026-10-19)

Added

  • Add post-merge pull request links to named changelog fragments, allowing contributors to write entries before a PR number exists (#1) by @gaborbernat.

  • Calculate release versions from pending changelog fragments, with explicit bump and CalVer choices (#3) by @gaborbernat.

  • Provide a Towncrier template for Markdown changelogs with stable release and category anchors (#1) by @gaborbernat.

  • Render GitHub Release notes from tagged Markdown and reStructuredText changelogs with user-facing categories, human mentions, contributor credits, and comparison links (#1) by @gaborbernat.

  • Validate numeric release tags and select the previous tag for GitHub comparison links (#1) by @gaborbernat.

Fixed

  • Format the assembled changelog before release validation so added pull request links and author credits pass prek (#2) by @gaborbernat.

Documentation

  • Document the release flow with a tutorial, command guides, input formats, and a draft changelog in PR documentation builds (#1) by @gaborbernat.