Skip to main content

Zero-config changelog generator with monorepo support.

Project description

changenog

GitHub Tag Crates.io Version NPM Version PyPI Version GitHub Actions Test Workflow Status

Zero-config changelog generator with monorepo support.

Parses Git tags and commits since last entry, restricts them by current working directory, and adds any missing entries to the changelog.

See this repo's changelog for example output.

Usage

Rust

https://crates.io/crates/changenog

cargo install changenog
changenog

JS

https://www.npmjs.com/package/changenog

pnpm i -D changenog
{
  "scripts": {
    "changenog": "changenog"
  }
}

Python

https://pypi.org/project/changenog/

pip install changenog
changenog

Manual

Binaries are available on the releases page.

Supported Platforms

Platform Architecture Notes
Linux x86_64 Tested on Ubuntu latest
Linux aarch64 Tested on Ubuntu 22.04
MacOS x86_64 Tested on MacOS 15
MacOS aarch64 Tested on MacOS latest
Windows x86_64 Tested on Windows 11
Windows aarch64 Tested on Windows 11

Options

Option Type Description
--overwrite boolean overwrite existing changelog
--root string root dir relative to the current working directory. default: current working directory
--output string output of the generated changelog. one of ['file', 'stdout']. default: 'file'
--no-links boolean disable links
--remote-url string remote URL to use for links. default: origin
--max-entries number maximum number of entries to process. default: '100'
--tag-filter-regex regex regex pattern(s) that each tag must match to be included
--commit-filter-regex regex regex pattern(s) that each commit must match to be included
--commit-filter-preset string filter preset(s) to use. one of ['angular', 'angular-readme-only-docs', 'no-changelog', 'no-semver']

Filters

Multiple --tag-filter-regex, --commit-filter-preset and --commit-filter-regex options can be passed. A tag/commit must match all filters to be included.

For example:

changenog --commit-filter-preset=angular --commit-filter-regex='^(?!.*changelog).*$'

Would filter:

✅
docs(readme): update usage
feat: add new feature
fix: fix bug
perf: improve performance

❌
chore: update dependencies
ci(release): release version
docs(changelog): v0.1.0
my commit message

Presets

  • angular - include only feat, fix, perf, and docs commits that match the Angular commit message convention
  • angular-readme-only-docs - exclude Angular docs commits unless they have a scope of readme
  • no-changelog - exclude all commits with changelog in the subject
  • no-semver - exclude all commits that match the semver format, specifically, this regex

Entry Strategy

This is the general strategy for building and filtering entries:

  1. All entries are processed, restricted by --max-entries
  2. Commits are filtered to only include those with changes in --root
  3. If <tag a>..<tag b> have no commits, the tags are made part of the same entry
  4. Commit filters are applied
  5. If an entry has no commits, the entry is excluded
  6. Tag filters are applied
  7. If an entry has no tags, all commits are merged into the next entry

Monorepo Support

If the git root is in a parent directory, changenog will filter commits to only include those that have changes within the subdirectory.

To include only the tags that apply to that subdirectory, you can provide a --tag-filter-regex option, e.g. --tag-filter-regex='my-package/.*'. This is assuming you have a convention for tagging that scopes to that subdirectory.

Known Limitations

Cross-Branch Tag Ranges (Rebase/Squash Workflows)

When using rebase or squash merge workflows, the commits merged into the main branch are new commits, and any tag created on the merged branch remains pointing at their original commit. There's no way to link the new commits back to the original ones, so the changelog entry for a new tag will include the commits associated with the previous entry.

Workarounds:

  • Manually delete the entries for these newer commits in the changelog
  • Only create tags after merging to your target branch
  • Use merge commits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

changenog-2.0.7-py3-none-win_arm64.whl (627.4 kB view details)

Uploaded Python 3Windows ARM64

changenog-2.0.7-py3-none-win_amd64.whl (668.4 kB view details)

Uploaded Python 3Windows x86-64

changenog-2.0.7-py3-none-manylinux_2_39_x86_64.whl (775.7 kB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

changenog-2.0.7-py3-none-manylinux_2_39_aarch64.whl (738.5 kB view details)

Uploaded Python 3manylinux: glibc 2.39+ ARM64

changenog-2.0.7-py3-none-macosx_11_0_arm64.whl (674.8 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

changenog-2.0.7-py3-none-macosx_10_12_x86_64.whl (725.6 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file changenog-2.0.7-py3-none-win_arm64.whl.

File metadata

  • Download URL: changenog-2.0.7-py3-none-win_arm64.whl
  • Upload date:
  • Size: 627.4 kB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for changenog-2.0.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7ad76bf2a9133d62b093fb6d8310f12d3f5a719c6f79b5e86efa593cf0516e85
MD5 fd9b18919ffedacf71d749852d50f83c
BLAKE2b-256 cba2274078569fa35e0ed04cb25af177ca20ecc6331d203c09d3819f6fe9ec62

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-win_arm64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changenog-2.0.7-py3-none-win_amd64.whl.

File metadata

  • Download URL: changenog-2.0.7-py3-none-win_amd64.whl
  • Upload date:
  • Size: 668.4 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for changenog-2.0.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ffc51478a4542c99d2b49c72fb9c773de282960aa4b2a61009b4575ae7a77266
MD5 2adc957d57a2e3068bae712a10435c53
BLAKE2b-256 01a9b6dc8580e97ec7d171702cd77624634e6630371dd33f958e7f703d507eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-win_amd64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changenog-2.0.7-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for changenog-2.0.7-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 935d8e6d7f7b45b7bd46bd3adfb82a9659ee8f10c83515259463b3d12f682515
MD5 dc11f1c5a437bd824b2c9e2c8e1981c9
BLAKE2b-256 55e76a29089d757a83a57d6e0f7bbb499ec4793b766023a6d4832f665e2350bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-manylinux_2_39_x86_64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changenog-2.0.7-py3-none-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for changenog-2.0.7-py3-none-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 97d7a06127a79c06984ad3fbb2602d3ca5c90aaafa3939a52cfd49a6ac6cf0a5
MD5 50bf541b61e41e00572bc1657a0b3691
BLAKE2b-256 49611517473bf48ee915f364729493c97c9f775b740dda8798554bdc1bae3d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-manylinux_2_39_aarch64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changenog-2.0.7-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changenog-2.0.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0459142b23a8ab009ca09af884a171c7e020e4fdd7d0a4c34fe2171a9b03f67a
MD5 b89841ce370606c96f9eb3abe3b065cf
BLAKE2b-256 1e82c5925131bdaae849c3fa0d3b5a2e5e173dc0c679b07f4770c1c7715bc98c

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changenog-2.0.7-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changenog-2.0.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c667a4f34524ef50ff377dca406df63fc47f2ffb96112eba7fddc5dd1fdee0ea
MD5 6655becad3e8ade8d275083dec4b0b6e
BLAKE2b-256 f4dee1f9b5b8ec1f885c3d80702f8b7898642308fc57740cd97d52b4cc6a9011

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.7-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on Daniel-Knights/changenog

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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