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 Untested ⚠️

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.5-py3-none-win_arm64.whl (618.1 kB view details)

Uploaded Python 3Windows ARM64

changenog-2.0.5-py3-none-win_amd64.whl (662.5 kB view details)

Uploaded Python 3Windows x86-64

changenog-2.0.5-py3-none-manylinux_2_39_x86_64.whl (767.4 kB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

changenog-2.0.5-py3-none-manylinux_2_39_aarch64.whl (727.8 kB view details)

Uploaded Python 3manylinux: glibc 2.39+ ARM64

changenog-2.0.5-py3-none-macosx_11_0_arm64.whl (665.0 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

changenog-2.0.5-py3-none-macosx_10_12_x86_64.whl (717.9 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for changenog-2.0.5-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 b549ac18aacbadf2792771dfc25b66d54b568ebbc0f88b6eb86c5484202dd9d4
MD5 bd5a61079c1ea1469691998580b90ca4
BLAKE2b-256 25cebe4a23a77c0c7fb6151bf1831aacd1e23174a190a49756251bf87a136621

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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.5-py3-none-win_amd64.whl.

File metadata

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

File hashes

Hashes for changenog-2.0.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b0c316813813dea127792936eafa2ed254300e7c00526cd96509ab6a2419c562
MD5 e1eb44e6f722fda2770e9837e58e830b
BLAKE2b-256 da651233a2f3a4a5b2298e43268aadb3939c071af7347619e214aac0daf23b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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.5-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for changenog-2.0.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 02af8c2cc3ad814144057980602456eb0df6e502fdf8e901b01f7f1cc310cd97
MD5 fc6f3c35babbbf0bf0f2586f9264a342
BLAKE2b-256 44f0347ba730dd988812f926c57f0e7d092c06720c52bc0b494dec3707cb8ae7

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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.5-py3-none-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for changenog-2.0.5-py3-none-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 f8d998c72d02ab5872c8b6bf7892504c14bb1b61c0832d43ccd9ff400afeb455
MD5 cec4927ccd0231a01926917b3879b285
BLAKE2b-256 77f8910603d2f7c8f9a54eea3ed01b7196dddd8dca1f208b0b2a897376460e29

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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.5-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changenog-2.0.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9aec9c1320df6f1afb445c72ed6e184ef9de703418055e6894f1bfc9bbc69e0d
MD5 ba1288dc1d61a544cefdd2d48d93fdbf
BLAKE2b-256 2b3751aa01abc89695521eafd5ed67da5e592f29adff03a3c56433e5be101b2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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.5-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changenog-2.0.5-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2e0fa563a8b8af0079082dfd10937c60e49847ed3a1fabb8b47b231b037d0d23
MD5 e9e4d2898bc3eee69004e13e62a6bb46
BLAKE2b-256 62907897fc3b24d87c7a1b770badf416daf1ded9de828cec2c8dd102386bc0cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for changenog-2.0.5-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