bulletins
Modular changelogs from bulletins.
A developer-friendly tool for managing changelogs as individual Markdown files, then compiling them into a single CHANGELOG.md.
✨ Features
- Add individual change bulletins (
.mdfiles) per feature, fix, or update - Automatically compile all bulletins into a formatted
CHANGELOG.md - Semantic versioning using Git tags
- Can be applied retroactively by providing commit SHA in bulletin metadata
- Organizes changes under sections and subheadings
- Works well with branches and collaborative workflows
🚀 Getting Started
pip install bulletins
bulletins add # create a new bulletin describing a change
bulletins compile # compile all bulletins into a CHANGELOG.md
📁 Bulletin Format
Each bulletin is a .md file stored in the bulletins folder by default. For example:
---
sha: abc1234 <!-- Optional: Commit SHA -->
---
# Added
- Add support for multiline bulletin descriptions
# Fixed
## Tests
- Fix typo in unit test
When the commit SHA is not specified in the bulletin metadata, the commit in which the file was created is used.
Bulletin files are automatically grouped by headings when compiled into a single CHANGELOG.md file.
🏷️ Version Detection
bulletins determines versions from Git tags following semantic versioning to group changes under section in the CHANGELOG.md file. The default behavior is:
- Released versions from tags like
v1.0.0→ shown as1.0.0 (2025-06-18) - Unreleased versions from the branch name, e.g.
develop→ shown asdevelop (Unreleased)
It is also possible to configure bulletins to determine the beginning point and name of unreleased versions from git tags, such as v1.0.1-pre, shown as 1.0.1 (Unreleased).
The version is determined from the closest matching tag to the bulletin's commit.
📦 Project Status
This tool is under active development. Contributions and feedback welcome.
📝 License
MIT License
Metadata
Release files for bulletins 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bulletins-0.1.0.tar.gz | 2.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bulletins-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.0 kB
Release files / bulletins-0.1.0.tar.gz
| Download URL | bulletins-0.1.0.tar.gz |
|---|---|
| Size | 2.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5aa89de91fb2603312951946a05b8cefda9b7e595c95bee249ab0c93cc58cc6a
|
|
BLAKE2b-256 checksum How to use checksums |
af5a7662f627a4a6d52f96313cf9b26c646b83153901029b4116be39041fd4de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2025.
Transparency logRelease files / bulletins-0.1.0-py3-none-any.whl
| Download URL | bulletins-0.1.0-py3-none-any.whl |
|---|---|
| Size | 2.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
345e918253a27ab2bddbe03959182f5ee57dba3cb179dac2ac93b4d10ec9e6c3
|
|
BLAKE2b-256 checksum How to use checksums |
0e337716b11b1178643aa04a78a8c77af126271651260221c792f40a6b55c0b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 18, 2025.
Transparency log