Modular changelogs using Markdown bulletins
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bulletins-0.1.0.tar.gz.
File metadata
- Download URL: bulletins-0.1.0.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5aa89de91fb2603312951946a05b8cefda9b7e595c95bee249ab0c93cc58cc6a
|
|
| MD5 |
a355cd67a80df952ba609179f278a36d
|
|
| BLAKE2b-256 |
af5a7662f627a4a6d52f96313cf9b26c646b83153901029b4116be39041fd4de
|
Provenance
The following attestation bundles were made for bulletins-0.1.0.tar.gz:
Publisher:
python-publish.yml on aleixpinardell/bulletins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bulletins-0.1.0.tar.gz -
Subject digest:
5aa89de91fb2603312951946a05b8cefda9b7e595c95bee249ab0c93cc58cc6a - Sigstore transparency entry: 242888748
- Sigstore integration time:
-
Permalink:
aleixpinardell/bulletins@5a8f08d3559fdfc5303b6ea0d728df03eebfc371 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/aleixpinardell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5a8f08d3559fdfc5303b6ea0d728df03eebfc371 -
Trigger Event:
release
-
Statement type:
File details
Details for the file bulletins-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bulletins-0.1.0-py3-none-any.whl
- Upload date:
- Size: 2.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
345e918253a27ab2bddbe03959182f5ee57dba3cb179dac2ac93b4d10ec9e6c3
|
|
| MD5 |
af47fab6f606f7b83b6edfe08f42ad25
|
|
| BLAKE2b-256 |
0e337716b11b1178643aa04a78a8c77af126271651260221c792f40a6b55c0b8
|
Provenance
The following attestation bundles were made for bulletins-0.1.0-py3-none-any.whl:
Publisher:
python-publish.yml on aleixpinardell/bulletins
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bulletins-0.1.0-py3-none-any.whl -
Subject digest:
345e918253a27ab2bddbe03959182f5ee57dba3cb179dac2ac93b4d10ec9e6c3 - Sigstore transparency entry: 242888751
- Sigstore integration time:
-
Permalink:
aleixpinardell/bulletins@5a8f08d3559fdfc5303b6ea0d728df03eebfc371 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/aleixpinardell
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5a8f08d3559fdfc5303b6ea0d728df03eebfc371 -
Trigger Event:
release
-
Statement type: