Skip to main content

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

featFeatures, fixBug Fixes, perfPerformance, 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)

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)

Source distribution for changelg 0.1.0
File Size Uploaded
changelg-0.1.0.tar.gz 9.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for changelg 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page