Release Notes - v0.6.0¶
Overview¶
This release introduces TOON output format for LLM-facing commands, achieving ~8x token reduction compared to raw git log. It also adds GitLab repository support, automatic reference linking for issues, PRs, and commits, author attribution for external contributors, and compact maintenance release grouping.
Highlights¶
- TOON output format for LLM commands (~8x token reduction vs raw git log)
- GitLab repository support with automatic reference linking for issues, PRs, and commits
- Author attribution for external contributors and compact grouping of maintenance releases
TOON Output Format¶
TOON (Token-Oriented Object Notation) is now the default output for LLM commands:
# Default: TOON format (~40% fewer tokens than JSON)
schangelog parse-commits --since=v0.5.0
# Explicit JSON for tooling/debugging
schangelog parse-commits --since=v0.5.0 --format=json
Example TOON output:
Repository: github.com/example/project
Range:
Since: v0.5.0
Until: HEAD
CommitCount: 5
Commits[5]{Hash,Author,Date,Type,Scope,Subject,SuggestedCategory}:
abc123d,John Doe,2026-01-04,feat,auth,add OAuth2 support,Added
def456a,Jane Smith,2026-01-03,fix,,resolve memory leak,Fixed
GitLab Support¶
Repository links now work with GitLab URLs, including nested groups:
Generates GitLab-style links:
- Issues:
/-/issues/42 - Merge Requests:
/-/merge_requests/43 - Commits:
/-/commit/abc123d - Compare:
/-/compare/v0.5.0...v0.6.0
Automatic Reference Linking¶
When using FullOptions (or LinkReferences: true), references become clickable:
- Add OAuth2 support ([#42](https://github.com/example/repo/issues/42), [`abc123d`](https://github.com/example/repo/commit/abc123def))
Configurable Header¶
New IR fields control the generated header:
Generates:
The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.
Author Attribution¶
External contributors are now automatically attributed in rendered changelogs:
{
"maintainers": ["grokify"],
"releases": [{
"added": [{
"description": "New feature",
"author": "@contributor"
}]
}]
}
Generates:
Common bots (dependabot, renovate, github-actions, etc.) are auto-detected and excluded from attribution.
External Contributor Detection in parse-commits¶
Use the --changelog flag to mark external contributors in git parsing output:
This reads maintainers and bots from the changelog and adds:
IsExternalfield on each commit (true for non-team members)Contributorssummary with deduplicated author list
Example TOON output:
Contributors[3]{Name,CommitCount,IsExternal}:
John Wang,15,false
Jane Doe,3,true
dependabot[bot],2,false
The matching logic handles:
- Direct username matches (
grokify) - Email matches (
johncwang@gmail.com) - GitHub noreply emails (
12345+grokify@users.noreply.github.com)
Compact Maintenance Releases¶
Consecutive maintenance-only releases (dependencies, documentation, build, tests) are now grouped:
## Versions 0.71.1 - 0.71.10 (Maintenance)
10 releases: 8 dependency update(s), 2 documentation change(s).
This significantly reduces changelog length for projects with many patch releases.
New CLI Flags¶
| Flag | Commands | Description |
|---|---|---|
--format |
parse-commits, suggest-category, validate | Output format: toon (default), json, json-compact |
--changelog |
parse-commits | Path to CHANGELOG.json for external contributor detection |
New IR Fields¶
| Field | Values | Description |
|---|---|---|
versioning |
semver, calver, custom, none |
Versioning scheme for header |
commit_convention |
conventional, none |
Commit convention for header |
maintainers |
["username", ...] |
Team members excluded from attribution |
bots |
["bot-name", ...] |
Custom bots excluded from attribution |
New Renderer Options¶
| Option | Default | FullOptions | Description |
|---|---|---|---|
LinkReferences |
false |
true |
Create hyperlinks for issues, PRs, commits |
IncludeAuthors |
true |
true |
Add attribution for external contributors |
CompactMaintenanceReleases |
true |
false |
Group consecutive maintenance releases |
Breaking Changes¶
This release includes breaking changes to CLI flags:
| Before | After | Migration |
|---|---|---|
--compact |
--format=json-compact |
Use --format=json-compact for minified JSON |
--json |
--format=json |
Use --format=json for JSON output |
| (default JSON) | (default TOON) | Add --format=json if scripts expect JSON |
Example migration:
# Before
schangelog parse-commits --since=v0.5.0 | jq '.commits'
# After
schangelog parse-commits --since=v0.5.0 --format=json | jq '.commits'
Documentation¶
- TOON Integration PRD — Design document
- LLM Guide — Updated with TOON examples
- Specification — Reference linking docs
What's Next¶
v0.7.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
Installation¶
# Via Go
go install github.com/grokify/structured-changelog/cmd/schangelog@v0.6.0
# Via Homebrew
brew install grokify/tap/structured-changelog