Metadata-Version: 2.4
Name: changelg
Version: 0.1.0
Summary: Generate a CHANGELOG from your git history (Conventional Commits). Zero dependencies — no Rust, no config file, no GitHub token.
Author: yyfjj
License: MIT
Project-URL: Homepage, https://github.com/jjdoor/changelg-py
Project-URL: Repository, https://github.com/jjdoor/changelg-py
Project-URL: Issues, https://github.com/jjdoor/changelg-py/issues
Keywords: changelog,conventional-commits,git,release,release-notes,semver,changelog-generator,keep-a-changelog,cli,devtools
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Version Control :: Git
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# 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.

```bash
changelg --release v1.2.0
```

```markdown
## 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](https://www.conventionalcommits.org/), it groups them
into sections and writes the Markdown. That's it.

## Usage

```bash
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

```bash
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)](https://github.com/jjdoor/changelg)

## License

MIT
