Yet another commandline changelog tool
Find a file
Andrew Cassidy 78bf20bed4
All checks were successful
build / Test on Python 3.11 (push) Successful in 53s
build / Test on Python 3.12 (push) Successful in 48s
build / Test on Python 3.14 (push) Successful in 45s
build / Test on Python 3.13 (push) Successful in 47s
build / Test on Python 3.10 (push) Successful in 1m0s
build / Test action (push) Successful in 1m1s
build / Build and Publish (push) Successful in 58s
Fix broken commands documentation
2025-10-31 00:29:37 -07:00
.forgejo/workflows CI fixes 2025-10-21 22:40:09 -07:00
docs Fix broken commands documentation 2025-10-31 00:29:37 -07:00
tests Include tag name in annotations 2025-10-21 22:56:06 -07:00
yaclog Include tag name in annotations 2025-10-21 22:56:06 -07:00
.gitignore Rework CI for forgejo actions 2025-10-19 16:45:27 -07:00
action.yaml Fix action with markdown=false on forgejo runners 2025-10-22 00:11:04 -07:00
CHANGELOG.md Fix broken commands documentation 2025-10-31 00:29:37 -07:00
LICENSE.md Relicense under Apache-2.0 license 2024-10-15 22:30:21 -07:00
logo.png Add logo 2021-04-18 16:57:55 -07:00
pyproject.toml add note about extra index 2025-10-29 00:26:49 -07:00
README.md Update installation instructions 2025-10-21 00:02:05 -07:00
uv.lock Update sphinx-gha, use own index for it 2025-10-29 00:25:25 -07:00

Yaclog: Yet Another Commandline Changelog Tool

Documentation Status CI Status PyPI version

Yaclog is a python library and command line tool to make it easier to keep track of changes to your projects. It includes commands for appending new changes to a markdown changelog file, as well as releasing new versions for deployment via git tags.

a yak who is a log

Logo by Erin Cassidy

Installation

Install and update with pip:

$ pip install -U yaclog

Or with uv:

$ uv tool install yaclog

Usage

For usage from the command line, yaclog provides the yaclog command:

Usage: yaclog [OPTIONS] COMMAND [ARGS]...

  Manipulate markdown changelog files.

Options:
  --path FILE  Location of the changelog file.  [default: CHANGELOG.md]
  --version    Show the version and exit.
  --help       Show this message and exit.

Commands:
  entry    Add entries to the changelog.
  format   Reformat the changelog file.
  init     Create a new changelog file.
  release  Release versions.
  show     Show changes from the changelog file
  tag      Modify version tags

Example workflow

Create a new changelog:

$ yaclog init

Add some new entries to the current unreleased version:

$ yaclog entry -b 'Introduced some more bugs'
$ yaclog entry -b 'Introduced some more features'

Show the current version:

$ yaclog show
Unreleased

- Introduced some more bugs
- Introduced some more features

Release the current version and make a git tag for it

$ yaclog release 0.0.1 -c
Renamed version "Unreleased" to "0.0.1".
Commit and create tag for version 0.0.1? [y/N]: y
Created commit a7b6789
Created tag "0.0.1".