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.
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
Credits
Vendored
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file keepachangelog_manager_fork-6.1.1.tar.gz.
File metadata
- Download URL: keepachangelog_manager_fork-6.1.1.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
373438920e15f179926674872753e39dcf4bf5288dcdf77cb2d73de074c4c46d
|
|
| MD5 |
37a7cf9ebcfbe7d06b30eeac5f8438fc
|
|
| BLAKE2b-256 |
75ac5e2b60578b4550b2c8909359af5640c31644e540b347e436524fa235c5b7
|
Provenance
The following attestation bundles were made for keepachangelog_manager_fork-6.1.1.tar.gz:
Publisher:
release.yml on matthewdeanmartin/keepachangelog-manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
keepachangelog_manager_fork-6.1.1.tar.gz -
Subject digest:
373438920e15f179926674872753e39dcf4bf5288dcdf77cb2d73de074c4c46d - Sigstore transparency entry: 1739571919
- Sigstore integration time:
-
Permalink:
matthewdeanmartin/keepachangelog-manager@595d770ed4b43be5ec8b3b896695b952d6e30f1f -
Branch / Tag:
refs/tags/v6.1.1 - Owner: https://github.com/matthewdeanmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@595d770ed4b43be5ec8b3b896695b952d6e30f1f -
Trigger Event:
release
-
Statement type:
File details
Details for the file keepachangelog_manager_fork-6.1.1-py3-none-any.whl.
File metadata
- Download URL: keepachangelog_manager_fork-6.1.1-py3-none-any.whl
- Upload date:
- Size: 126.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6f3923164d1520cdb2c93ed6e307730fc743637cd4fc689998f8a96fd439eea
|
|
| MD5 |
e425931f04185b4b7fb1ca776051d346
|
|
| BLAKE2b-256 |
9ec686ee3dadab934b77757852c9b6a3332ea4df867d238da9263326403d9ef5
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
keepachangelog_manager_fork-6.1.1-py3-none-any.whl -
Subject digest:
f6f3923164d1520cdb2c93ed6e307730fc743637cd4fc689998f8a96fd439eea - Sigstore transparency entry: 1739571926
- Sigstore integration time:
-
Permalink:
matthewdeanmartin/keepachangelog-manager@595d770ed4b43be5ec8b3b896695b952d6e30f1f -
Branch / Tag:
refs/tags/v6.1.1 - Owner: https://github.com/matthewdeanmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@595d770ed4b43be5ec8b3b896695b952d6e30f1f -
Trigger Event:
release
-
Statement type: