changelg
Generate a CHANGELOG from your git history. Point it at a range of Conventional Commits and it prints a clean, grouped, Markdown changelog. Zero dependencies — no Rust to install, no config file, no GitHub token, no CI integration. One command, on your machine.
changelg --release v1.2.0
## v1.2.0 (2026-06-15)
### ⚠ BREAKING CHANGES
- **auth:** existing tokens are invalidated on deploy. (6667b72)
### Features
- **api:** add cursor pagination (a1b2c3d)
- **auth:** switch to short-lived tokens (6667b72)
### Bug Fixes
- handle an empty response body (e4f5a6b)
Why
You finish a release, mean to write the changelog "later," and three weeks on
you're squinting at git log trying to remember what changed. The existing
tools each ask for something:
- git-cliff is excellent — but it's a Rust binary you have to install via cargo or a release download, with a config file to learn.
- standard-version is deprecated.
- release-please is powerful but wants GitHub Actions and a workflow.
changelg is the small one. If your commits roughly follow
Conventional Commits, it groups them
into sections and writes the Markdown. That's it.
Usage
changelg # changes since the latest tag → HEAD
changelg v1.2.0 # changes since v1.2.0 (→ HEAD)
changelg v1.2.0..v1.3.0 # an explicit range
changelg --release v1.3.0 # set the heading version
changelg -o CHANGELOG.md # write to a file (otherwise: stdout)
| Option | |
|---|---|
--since <ref> |
start ref (instead of a range argument) |
--release <name> |
heading version (default: target tag, else "Unreleased") |
--all |
include docs/refactor/build/ci/test/style/chore + other commits |
--repo-url <url> |
base repo URL for commit links (auto-detected from origin) |
--no-links |
plain short hashes instead of links |
-o, --output <file> |
write to a file instead of stdout |
Sections
feat → Features, fix → Bug Fixes, perf → Performance, and a
! or a BREAKING CHANGE: footer surfaces a ⚠ BREAKING CHANGES section
(showing the breaking note). By default the noisier types
(docs/chore/refactor/...) are hidden; --all brings them in. Commit hashes
become links when an origin remote is detected.
Install
pip install changelg # Python >= 3.8
npx changelg # Node >= 18 (byte-for-byte port)
- PyPI: https://pypi.org/project/changelg/
- npm: https://www.npmjs.com/package/changelg
- GitHub: https://github.com/jjdoor/changelg-py · changelg (Node)
License
MIT
Release files for changelg 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| changelg-0.1.0.tar.gz | 9.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| changelg-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.9 kB
Release files / changelg-0.1.0.tar.gz
| Download URL | changelg-0.1.0.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67bec765fb139fe55963396d1527fd3f9663e643572cf8efdf81e6d5b2b40b91
|
|
BLAKE2b-256 checksum How to use checksums |
adeffea9bf65e880e74051b875d87cb06ed0fd5dd38684d32c8c39162a85a668
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.7
|
Release files / changelg-0.1.0-py3-none-any.whl
| Download URL | changelg-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9b4cbda7e016314886ff6de8e573b33b14e7c6dc96f042c9d8f4d8bb18da0f8c
|
|
BLAKE2b-256 checksum How to use checksums |
3bb01cd23672e0b6e22e460aed9f2f3cb7b06d446c0518450e74e2ae0377c7d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.7
|