Skip to main content

Python package allowing you to manage your CHANGELOG.md files

Project description

(Keep a) Changelog Manager

Python tool to

  • initialize a CHANGELOG.md
  • backfill it with commits, PRs, etc
  • CLI and GUI to edit and update entries
  • Validate
  • Create a Github or Gitlab release page with CHANGLOG.md as note.

It supports these standards

  • Keep a Changelog
  • Semantic Version, PEP 440, Calver
  • Conventional Commits, Gitmoji (for backfill from commit messages)

This is a fork of keepachangelog-manager, originally mostly written by KevinDeJong at TomTom International, but now archived.

Install

uv tool install keepachangelog-manager-fork

The package name on PyPI is keepachangelog-manager-fork. The installed command is changelogmanager with legacy alias of keepachangelog-manager.

Supports pre-commit, CLI, and GitHub Actions workflows.

GUI

changelogmanager gui

The GUI now includes four screens: a live [Unreleased] editor, an initialize/backfill screen, a release publishing screen for GitHub/GitLab, and a components screen for batch validation and from-commits --all.

gui

What it does

keepachangelog-manager helps you:

Edit entries

  • create and validate changelogs
  • add, edit, list, and remove [Unreleased] entries
  • work with multi-component repositories (multiple changelog) via TOML config files

Flip Unreleased Changelog to a Released Changelog

  • infer the next release from change types for SemVer, PEP 440, or CalVer projects
  • release [Unreleased] with an optional confirmation guard

Initialize or bulk update Changelog

  • seed [Unreleased] from git history using Conventional Commit subjects
  • backfill missing released versions from local git tags

Many features for bash scripting ergonomics.

Online integration with Git Forge Release pages

  • create or update GitHub and GitLab releases
  • open or update a GitHub pull request for release automation

Commands

Commands are grouped below by what they do.

File editing

Commands that read and rewrite your CHANGELOG.md.

create        Create a new (empty) CHANGELOG.md
add           Add an entry to [Unreleased]
edit          Edit an existing [Unreleased] entry
remove        Remove an [Unreleased] entry (or --list them)
from-commits  Seed [Unreleased] from git commit history
backfill      Backfill missing released versions from local git tags

Exports and scripting

Commands that produce structured output or integrate with CI:

version       Print previous/current/future version
to-json       Export the changelog as JSON
to-html       Export the changelog as HTML
skill export  Export the bundled CLI skill for Copilot or Claude

For --json, --quiet, jq patterns, exit codes, and full release.yml examples, see Scripting and CI integration.

Repo release tools

Commands that cut a release and publish it to a forge.

release         Release [Unreleased] into a versioned section
github-release  Create/update a GitHub release from the changelog
github-pr       Open/update a GitHub pull request for a changelog branch
gitlab-release  Create/update a GitLab release from the changelog

Validation & setup

validate      Validate the CHANGELOG.md (use --fix to autofix)
config        Show or initialize configuration (config init)
gui           Launch the optional Tkinter GUI

Quick examples

Add an entry:

changelogmanager add --change-type added --message "Document the new release flow"

Edit or remove an existing [Unreleased] entry:

changelogmanager remove --list
changelogmanager edit --change-type added --index 0 --message "Document the guarded release flow"
changelogmanager remove --change-type added --index 0

Seed [Unreleased] from commit history:

changelogmanager from-commits

Backfill an existing repo from local git history:

changelogmanager backfill --source all --dry-run
changelogmanager backfill --source all

Validate and autofix common issues:

changelogmanager validate --fix

Release non-interactively:

changelogmanager release --yes

Publish a forge release from [Unreleased]:

changelogmanager github-release --repository owner/name
changelogmanager gitlab-release --project group/name

GitLab note: the default CI_JOB_TOKEN usually cannot create releases — use a project/group/personal access token via GITLAB_TOKEN. See docs/gitlab.md.

Export structured output:

changelogmanager to-json
changelogmanager to-html

Export the bundled CLI skill:

changelogmanager skill export

Configuration

Use --config to set switch defaults and --component for multi-component repositories:

[versioning]
scheme = "semver"

[validation]
enforce_preamble = false

[[components]]
name = "Service"
changelog = "service/CHANGELOG.md"
match = ["service/**"]

[[components]]
name = "Client"
changelog = "client/CHANGELOG.md"
match = ["client/**"]
changelogmanager --config changelogmanager.toml --component Service validate
changelogmanager config
changelogmanager config init
changelogmanager skill export

If --config is omitted, the CLI auto-detects changelogmanager.toml, .changelogmanager.toml, or [tool.changelogmanager] in pyproject.toml from the current directory.

changelogmanager config init is the quickest way to bootstrap config. It defaults to pyproject.toml and semver, then prompts for preamble enforcement and the default component/changelog path. Re-running it updates the active config instead of starting from scratch.

CLI Visuals

gif

Credits

Vendored

Documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keepachangelog_manager_fork-6.1.1.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keepachangelog_manager_fork-6.1.1-py3-none-any.whl (126.1 kB view details)

Uploaded Python 3

File details

Details for the file keepachangelog_manager_fork-6.1.1.tar.gz.

File metadata

File hashes

Hashes for keepachangelog_manager_fork-6.1.1.tar.gz
Algorithm Hash digest
SHA256 373438920e15f179926674872753e39dcf4bf5288dcdf77cb2d73de074c4c46d
MD5 37a7cf9ebcfbe7d06b30eeac5f8438fc
BLAKE2b-256 75ac5e2b60578b4550b2c8909359af5640c31644e540b347e436524fa235c5b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for keepachangelog_manager_fork-6.1.1.tar.gz:

Publisher: release.yml on matthewdeanmartin/keepachangelog-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file keepachangelog_manager_fork-6.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for keepachangelog_manager_fork-6.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f6f3923164d1520cdb2c93ed6e307730fc743637cd4fc689998f8a96fd439eea
MD5 e425931f04185b4b7fb1ca776051d346
BLAKE2b-256 9ec686ee3dadab934b77757852c9b6a3332ea4df867d238da9263326403d9ef5

See more details on using hashes here.

Provenance

The following attestation bundles were made for keepachangelog_manager_fork-6.1.1-py3-none-any.whl:

Publisher: release.yml on matthewdeanmartin/keepachangelog-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page