Release Notes - v0.10.0¶
Overview¶
This release adds localization support for rendered Markdown output in 6 languages, and migrates the JSON schema to camelCase for consistency with the broader JSON ecosystem.
Highlights¶
- Localized changelog output in English, German, Spanish, French, Japanese, and Chinese
- Header text fully localized (Keep a Changelog, SemVer, Conventional Commits references)
- JSON schema migrated from snake_case to camelCase (breaking change)
- Custom locale override support for tailored translations
- Commit hash validation with
--require-commitsflag
Breaking Changes¶
camelCase Migration¶
All JSON property names have been changed from snake_case to camelCase:
| Old (snake_case) | New (camelCase) |
|---|---|
ir_version |
irVersion |
tag_path |
tagPath |
commit_convention |
commitConvention |
generated_at |
generatedAt |
compare_url |
compareUrl |
upgrade_guide |
upgradeGuide |
known_issues |
knownIssues |
component_version |
componentVersion |
cvss_score |
cvssScore |
cvss_vector |
cvssVector |
affected_versions |
affectedVersions |
patched_versions |
patchedVersions |
Migration: Update your CHANGELOG.json files to use camelCase property names, then run schangelog validate to verify.
Added¶
Localization Support¶
Generate changelogs in multiple languages:
# Generate in French
schangelog generate CHANGELOG.json --locale=fr -o CHANGELOG.md
# Generate in Japanese
schangelog generate CHANGELOG.json --locale=ja -o CHANGELOG.md
# Use custom translation overrides
schangelog generate CHANGELOG.json --locale=fr --locale-file=./custom-fr.json
Built-in Languages¶
| Code | Language | Example Headers |
|---|---|---|
en |
English | Changelog, Added, Breaking |
de |
German | Änderungsprotokoll, Hinzugefügt, Breaking Changes |
es |
Spanish | Registro de cambios, Añadido, Cambios importantes |
fr |
French | Journal des modifications, Ajouté, Changements majeurs |
ja |
Japanese | 変更履歴, 追加, 破壊的変更 |
zh |
Chinese | 变更日志, 新增, 破坏性变更 |
Custom Overrides¶
Create a JSON file to override specific translations:
{
"messages": [
{"id": "changelog.title", "translation": "Release Notes"},
{"id": "category.added", "translation": "New Features"},
{"id": "marker.breaking", "translation": "⚠️ BREAKING:"}
]
}
See the Localization Guide for all 50 customizable message IDs.
Commit Validation¶
Validate that changelog entries include commit hashes:
# Default: W005 warnings for missing commits (valid=true)
schangelog validate CHANGELOG.json --format=json
# Require commits: W005 becomes E010 errors (valid=false)
schangelog validate CHANGELOG.json --format=json --require-commits
# Strict mode also converts warnings to errors
schangelog validate CHANGELOG.json --format=json --strict
Exempt categories (don't require commit hashes):
highlights— Human-readable summariesupgradeGuide— Documentation/guidanceknownIssues— Ongoing issues
| Mode | Missing Commit | Result |
|---|---|---|
| Default | W005 warning | valid=true |
--require-commits |
E010 error | valid=false |
--strict |
W005 as error | valid=false |
Library Additions¶
Renderer Options¶
import "github.com/grokify/structured-changelog/renderer"
// Built-in locale
opts := renderer.DefaultOptions().WithLocale("fr")
// With custom overrides
opts := renderer.DefaultOptions().
WithLocale("fr").
WithLocaleOverrides("./custom-fr.json")
md, err := renderer.RenderMarkdown(changelog, opts)
New Options¶
| Option | Description |
|---|---|
Locale |
BCP 47 locale code (e.g., "en", "fr", "ja") |
LocaleOverrides |
Path to custom translation JSON file |
Dependencies¶
- Added
github.com/grokify/structured-localev0.1.0 for localization support
Examples¶
See examples/l10n/ for rendered changelogs in all 6 languages:
What's Next¶
Future releases may include:
- Additional languages (Portuguese, Russian, Korean, etc.)
- RTL language support
- Date format localization