Release Notes - v0.9.0¶
Overview¶
This release adds changelog backfilling tools to streamline creating structured changelogs for existing projects. New CLI commands make it easy to extract version history from git tags and generate a skeleton CHANGELOG.json.
Highlights¶
- New
list-tagscommand for viewing release history - New
init --from-tagscommand for generating CHANGELOG.json from git tags - New
--all-versionsflag for parsing commits across all versions at once
Added¶
list-tags Command¶
List all semver tags in your repository with dates and commit counts:
Output (TOON format by default):
tags[
{name:v0.1.0 date:2026-01-03 commit_count:15 is_initial:true}
{name:v0.2.0 date:2026-01-03 commit_count:8}
{name:v0.3.0 date:2026-01-04 commit_count:12}
]
total_tags:3
Use --format=json for JSON output.
init --from-tags Command¶
Generate a skeleton CHANGELOG.json from your git tag history:
# Create skeleton from git tags
schangelog init --from-tags
# Specify project name and output file
schangelog init --from-tags --project=myproject -o CHANGELOG.json
# Set versioning and commit convention
schangelog init --from-tags --versioning=semver --convention=conventional
This creates a CHANGELOG.json with:
- All semver tags as releases with correct dates
- Placeholder entries based on commit analysis
- Proper conventional commit categorization (feat → Added, fix → Fixed, etc.)
--all-versions Flag for parse-commits¶
Parse commits for all version ranges at once, useful for backfilling:
schangelog parse-commits --all-versions
schangelog parse-commits --all-versions --no-files # Compact output
Output includes commits grouped by version with summaries.
--until Without --since¶
Parse all commits from the beginning of the repository to a specific tag:
Library Additions¶
New functions in the gitlog package:
| Function | Description |
|---|---|
GetTags() |
Returns all semver tags sorted by version with dates and commit counts |
GetAllVersionRanges() |
Returns version ranges for parsing commits between each release |
GetFirstCommit() |
Returns the hash of the first commit in the repository |
Workflow: Backfilling a Changelog¶
For projects without a structured changelog:
# 1. View release history
schangelog list-tags
# 2. Generate skeleton CHANGELOG.json
schangelog init --from-tags -o CHANGELOG.json
# 3. Parse all commits for reference
schangelog parse-commits --all-versions --no-files > commits.toon
# 4. Refine CHANGELOG.json entries manually or with LLM assistance
# 5. Validate and generate
schangelog validate CHANGELOG.json
schangelog generate CHANGELOG.json -o CHANGELOG.md
Documentation¶
- MkDocs source moved from
docsrc/todocs/(standard MkDocs layout) - HTML documentation now published to
gh-pagesbranch viamkdocs gh-deploy
What's Next¶
v0.10.0 will focus on Localization:
- Localized section headers (Added → Ajouté, Fixed → Corrigé)
- 25+ language support matching Keep a Changelog translations
- Embedded locale files via
//go:embed