Skip to main content

Generate Beautiful Changelogs using Conventional Commits

Project description

Table of Contents
  1. About
  2. Quick Start
  3. Usage
  4. Development
  5. Contributing
  6. License

About

usechange is a Python CLI for generating changelogs and release notes from Conventional Commits. It reads git history between refs, groups commits by type, renders Markdown release notes, and can update version numbers based on semantic versioning rules.

It gives you:

  • Changelog generation - Render release notes and optionally write to CHANGELOG.md.
  • Semver bumping - Determine version bumps from commit types and breaking changes.
  • Release workflows - Tag and publish using uv and gh.
  • GitHub sync - Sync release notes to GitHub releases.
  • Repo metadata - Create commit and compare links automatically.

(back to top)

Quick Start

usechange provides a short alias and command shortcuts:

  • usechange and change are equivalent.
  • changelog also supports the log alias.

Install usechange with uv (recommended)

uv add usechange

Install with pip (alternative)

pip install usechange

Generate a changelog

change log --write

Interactive release workflow

change release

Sync the latest release to GitHub

change github release

Interactive changelog preview

Example prompt for selecting optional changelog flags:

Select optional flags (space to select, enter to confirm):
> [ ] --from - Start commit reference
  [ ] --to - End commit reference
  [ ] --dir - Path to a git repository
  [ ] --clean [bool] - Ensure working directory is clean
  [ ] --output - Changelog file to write
  [ ] --write [bool] - Write changelog to CHANGELOG.md
  [ ] --no-output [bool] - Do not write a changelog file
  [ ] --noAuthors [bool] - Skip contributors section
  [ ] --noDate [bool] - Omit date from header
  [ ] --noEmojis [bool] - Omit emojis from headers
  [ ] --hideAuthorEmail [bool] - Hide author email if no username is found
  [ ] --bump [bool] - Determine and update version
  [ ] -r - Release as a specific version
  [ ] --release [bool] - Bump, tag, and release
  [ ] --no-commit [bool] - Skip release commit
  [ ] --no-tag [bool] - Skip release tag
  [ ] --push [bool] - Push commits and tags
  [ ] --no-github [bool] - Skip GitHub release sync
  [ ] --publish [bool] - Publish after generating
  [ ] --publishTag - Publish with a custom tag
  [ ] --nameSuffix - Append suffix to package name
  [ ] --versionSuffix - Append suffix to version
  [ ] --canary - Shortcut for --bump and --versionSuffix
  [ ] --major [bool] - Force major bump
  [ ] --minor [bool] - Force minor bump
  [ ] --patch [bool] - Force patch bump
  [ ] --premajor - Force premajor bump
  [ ] --preminor - Force preminor bump
  [ ] --prepatch - Force prepatch bump
  [ ] --prerelease - Force prerelease bump
Press <space>, <tab> for multi-selection and <enter> to accept

(back to top)

Usage

Generate changelog

change log --from v0.1.0 --to HEAD --output CHANGELOG.md

Version bumping

change log --bump --write
change log --major --write

Release workflow

change release --yes

GitHub release sync

change github release 0.2.0
change gh release all

Configuration

usechange reads configuration from one of the following:

  • changelog.config.json
  • .changelogrc
  • changelog.config.toml
  • pyproject.toml under [tool.changelog]

(back to top)

Development

Common tasks:

uv run poe test
uv run poe lint
uv run poe format
uv run poe typecheck
uv run poe clean-full

(back to top)

Contributing

Quick workflow:

  1. Fork and branch: git checkout -b feature/name
  2. Make changes
  3. Run checks: uv run poe clean-full
  4. Commit and push
  5. Open a Pull Request

(back to top)

License

License not yet specified in this repository.

(back to top)


Built by thememium

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

usechange-0.1.33.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

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

usechange-0.1.33-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

Details for the file usechange-0.1.33.tar.gz.

File metadata

  • Download URL: usechange-0.1.33.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for usechange-0.1.33.tar.gz
Algorithm Hash digest
SHA256 d1f89992e5c298ec5439012a5751d307646b3e41ae57b2db55f463123b8cf7a7
MD5 b4329e576f55e26ce86f8860269b5626
BLAKE2b-256 fc9eb9e770001bc36a2a0dff1a1337233fd90774e6d8e65328db855a0c426072

See more details on using hashes here.

File details

Details for the file usechange-0.1.33-py3-none-any.whl.

File metadata

  • Download URL: usechange-0.1.33-py3-none-any.whl
  • Upload date:
  • Size: 26.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for usechange-0.1.33-py3-none-any.whl
Algorithm Hash digest
SHA256 060509b8d5641d08e9bb4e5dd424f4bb79b7299807d90e5cd10a1dedae461d15
MD5 05d549ae52a3285f363d46efdaea233b
BLAKE2b-256 a5e78490943d1a797d3e6c5d9baf8cbb6ea8a10d30f8e7016fe247f693557e84

See more details on using hashes here.

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