Changelog¶
All notable changes to this project will be documented in this file.
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.
Unreleased¶
v0.13.0 - 2026-03-15¶
Highlights¶
- New
mergecommand for combining multiple CHANGELOG.json files with deduplication and metadata preservation --skip-invalidflag forinit --from-tagsto gracefully handle non-semver tags
Added¶
mergecommand for combining releases from multiple CHANGELOG.json files (6bb2a16)--releaseflag formergeto prepend a single release file (6bb2a16)--dedupflag formergeto skip versions that already exist in base (6bb2a16)--prepend-onlyflag formergeto only add releases newer than base's latest (6bb2a16)--skip-invalidflag forinit --from-tagsto skip non-semver tags (ede207f)IsValidSemVer()function exported from changelog package for semver validation (ede207f)
Tests¶
- Comprehensive tests for
compareSemver,semverRegex, and tag list structures (af49a84) - Tests for
DefaultDiscoveryOptions,ParseRollupRules,ProjectPaths,ParsePortfolio(af49a84) - Tests for
DefaultMetricsOptionsandnormalizeDateedge cases (af49a84) - Coverage improvement: aggregate 74.4% → 77.4%, gitlog 63.6% → 68.4%, overall 85.1% (
af49a84)
v0.12.0 - 2026-02-28¶
Highlights¶
- Multi-project changelog aggregation with
schangelog portfoliocommands for tracking releases across 100s of repositories - GitHub-style activity heatmap and velocity dashboard generation for development metrics
Added¶
portfoliocommand group for multi-project changelog operations (a0a36d7)portfolio discovercommand to scan GitHub orgs/users for repositories with CHANGELOG.json (a0a36d7)portfolio aggregatecommand to combine changelogs from multiple projects into a unified portfolio (a0a36d7)portfolio metricscommand to generate time-series metrics and dashboard data (a0a36d7)aggregatepackage with manifest, resolver, portfolio, metrics, and dashboard types (6b9f28d)- Manifest schema for defining projects to aggregate (similar to go.mod but for changelogs) (
6b9f28d) - Local-first resolution searching ~/go/src and $GOPATH/src for project changelogs (
6b9f28d) - Remote changelog fetching from GitHub with HITL approval flow (--pending/--approve flags) (
6b9f28d) - Category roll-up rules mapping 20 categories to 6 groups: Features, Fixes, Improvements, Breaking, Maintenance, Community (
6b9f28d) - Time-series metrics with day/week/month granularity for release velocity tracking (
6b9f28d) - Daily activity data for GitHub-style contribution heatmaps (
6b9f28d) - Dashboard export in dashforge-compatible JSON format with widgets for metrics, charts, and tables (
6b9f28d) --dashboardflag for metrics command to generate dashboard-ready data (a0a36d7)--template velocityoption for generating complete dashboard definitions (a0a36d7)
Dependencies¶
- Add
github.com/google/go-github/v84for GitHub API access in discovery and remote fetch (72ae60c) - Add
github.com/grokify/gogithubv0.10.0 for GitHub utilities (72ae60c)
Tests¶
- Comprehensive tests for aggregate package: manifest, rollup, resolver, portfolio, metrics, dashboard (
6b9f28d)
v0.11.0 - 2026-02-22¶
Highlights¶
- Notable-only filtering now the default - maintenance-only releases excluded from generated changelogs
- New
--all-releasesflag to include all releases when needed
Breaking¶
- Default output now excludes maintenance-only releases (use
--all-releasesto include them)
Upgrade Guide¶
- If you need all releases in output, add
--all-releasesflag to yourschangelog generatecommands - The
--fullpreset now implies--all-releasesautomatically
Added¶
--all-releasesflag forgeneratecommand to include maintenance-only releases--notable-categoriesflag to customize which categories are considered notableNotabilityPolicytype for programmatic control over release filteringDefaultNotabilityPolicy()function returning default notable categoriesRelease.IsNotable()method to check if a release has user-facing changesRelease.HasCategory()helper method to check for entries in a specific categoryOptions.NotableOnlyandOptions.NotabilityPolicyrenderer fieldsConfig.AllReleasesandConfig.NotableCategoriesfor CLI configuration
Changed¶
- BREAKING: Default rendering now filters to notable releases only (inverse of previous behavior)
--fullpreset now includes all releases (setsNotableOnly=false)
Documentation¶
- Updated CLI help text with notable-only default behavior explanation
- Added notable vs non-notable category reference to generate command help
v0.10.0 - 2026-02-08¶
Highlights¶
- Localization support for rendered Markdown output in 6 languages
- Header text fully localized including versioning and convention references
- JSON schema migrated to camelCase for ecosystem consistency
Breaking¶
- All JSON property names changed from snake_case to camelCase (e.g.,
irVersioninstead ofir_version) (adc355c)
Upgrade Guide¶
- Update existing CHANGELOG.json files to use camelCase property names (
adc355c) - Re-run
schangelog validateto check for any issues (adc355c)
Added¶
--localeflag forgeneratecommand to output in different languages (64edc2e)--locale-fileflag for custom translation overrides (64edc2e)- Built-in translations for 6 locales: English, German, Spanish, French, Japanese, Chinese (
64edc2e) LocaleandLocaleOverridesrenderer options (64edc2e)- Header text localization for Keep a Changelog, versioning, and generator references (
19b3f06) --require-commitsflag forvalidatecommand to require commit hashes on entries (12ac69f)- W005 warning code for missing commit hashes (shown by default) (
12ac69f) - E010 error code for missing commits when
--require-commitsis set (12ac69f) - Exempt categories for commit validation: highlights, upgradeGuide, knownIssues (
12ac69f)
Dependencies¶
- Add
github.com/grokify/structured-localev0.1.0 for localization support (64edc2e)
Tests¶
- Add localization unit tests for message loading and translation (
c56fe84)
v0.9.0 - 2026-02-02¶
Highlights¶
- New CLI commands for changelog backfilling:
list-tags,init --from-tags, andparse-commits --all-versions
Added¶
list-tagscommand to list semver tags with dates and commit counts between versions (e0ff0e0)init --from-tagscommand to generate skeleton CHANGELOG.json from git tag history (e0ff0e0)--all-versionsflag forparse-commitsto parse all version ranges at once for backfilling (c293a4d)parse-commits --untilwithout--sinceto parse from first commit to specified ref (c293a4d)gitlog.GetTags()function returning semver tags sorted by version with dates and commit counts (460bc6f)gitlog.GetAllVersionRanges()function for retrieving version ranges for parsing (460bc6f)gitlog.GetFirstCommit()function to get the initial commit hash (460bc6f)
Documentation¶
- Moved MkDocs source from
docsrc/todocs/, HTML now published togh-pagesbranch (9df3505)
v0.8.0 - 2026-01-18¶
Highlights¶
- Monorepo tag path support for repositories using path-prefixed version tags (e.g.,
sdk/go/v1.0.0)
Added¶
tagPathfield in changelog IR for specifying version tag prefixes in monorepos (7761ead)- Automatic path prefixing for compare and tag links when
tagPathis set (7761ead) tagPathproperty in JSON schema with documentation (7761ead)
Tests¶
- Comprehensive tests for tag path functionality including GitHub, GitLab, unreleased links, and edge cases (
25a3190)
v0.7.0 - 2026-01-11¶
Highlights¶
- CLI renamed from
sclogtoschangelogfor naming consistency with sibling tools (sroadmap, sprd, strd)
Changed¶
- BREAKING: CLI binary renamed from
sclogtoschangelogfor consistency with sibling structured document tools (e58d452)
Documentation¶
- Updated all documentation, examples, and help text to use
schangelog(e58d452) - Added git log alternatives section to project CLAUDE.md recommending
schangelogover raw git commands (e58d452)
v0.6.0 - 2026-01-10¶
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
Added¶
- TOON (Token-Oriented Object Notation) as default output format for
parse-commits,suggest-category, andvalidate --format(2be0cc0) --formatflag for LLM commands supportingtoon(default),json, andjson-compact(2be0cc0)- GitLab repository support for reference links and version comparisons (
be9b3b0) - Automatic reference linking: issues, PRs, and commits become clickable links when repository URL is provided (
be9b3b0) LinkReferencesrenderer option (now enabled by default) for hyperlinking references (be9b3b0)IncludeUnreleasedLinkrenderer option (enabled by default) for always showing compare link to HEAD (d4b3e90)versioningfield in changelog IR:semver,calver,custom, ornone(93b8da1)commitConventionfield in changelog IR:conventionalornone(93b8da1)- Dynamic header generation based on versioning scheme and commit convention (
be9b3b0) - Validation error codes E008 (invalid versioning) and E009 (invalid commit convention) (
93b8da1) maintainersandbotsfields in changelog IR for identifying team members (91e788f)- Auto-detection of common bots (dependabot, renovate, github-actions, etc.) (
91e788f) IsTeamMember()method for checking if author is maintainer or bot (91e788f)IncludeAuthorsrenderer option for external contributor attribution (a2c86cb)- Automatic author attribution with linked GitHub/GitLab profiles (
a2c86cb) - Inline attribution stripping to avoid duplicate attribution when author field matches (
b5e8f34) CompactMaintenanceReleasesrenderer option for grouping maintenance-only releases (f7cdb02)IsMaintenanceOnly()method to detect dependency/documentation-only releases (824a075)--changelogflag forparse-commitsto auto-detect external contributors (817fa7f)IsExternalfield in commit output marking external contributors (8e1ab0a)Contributorssummary inparse-commitsoutput with deduplicated author list (8e1ab0a)IsTeamMemberByNameAndEmail()for matching by git author name, email, or GitHub noreply username (5169681)
Changed¶
- BREAKING: LLM commands now output TOON format by default for ~40% token reduction vs JSON (
2be0cc0) - BREAKING:
parse-commitsandsuggest-category:--compactflag replaced with--formatflag (2be0cc0) - BREAKING:
validate:--jsonflag replaced with--formatflag (2be0cc0) - Commit references displayed as short hash (7 chars) with backticks in linked output (
be9b3b0) - Consecutive maintenance releases grouped into compact sections by default (
f7cdb02) - Version strings now used as-is in headers and links (no automatic
vprefix) (9e17c24)
Documentation¶
- TOON integration design document (
f5850bf) - Updated LLM guide with TOON examples and ~8x token efficiency (
f5850bf) - Reference linking documentation in specification (
f5850bf) - Claude Code project configuration with
/changelogslash command (8d4cf61)
v0.5.0 - 2026-01-04¶
Highlights¶
- LLM-assisted changelog generation with optimized git parsing (~5x token reduction) and automatic commit classification
Added¶
parse-commitscommand for LLM-optimized git history output (~5x token reduction vs raw git log) (4503119)suggest-categorycommand for commit classification with confidence levels (1432b6e)--jsonflag forvalidatecommand with structured error output, line numbers, and fix suggestions (1c705e9)- MkDocs documentation site with Material theme (
c8b280d) - LLM integration guide with prompts and workflows (
178f6a0) - PRD documents for planned localization and rendering features (
20c1f7f)
Documentation¶
- Release notes consolidated in
docsrc/releases/for MkDocs site (cac7f70)
v0.4.0 - 2026-01-04¶
Highlights¶
- Extend Keep a Changelog with 13 additional change types organized into tiers for flexible filtering and validation
Added¶
- Tier-based change type system with 4 levels: core (KACL standard), standard (common extensions), extended (docs/build/acknowledgments), optional (operations/internal) (
b185758) - 19 change types in canonical order (see
CHANGE_TYPES.json) (b185758) - New change types beyond Keep a Changelog: Highlights, Breaking, Upgrade Guide, Performance, Dependencies, Documentation, Build, Infrastructure, Observability, Compliance, Internal, Known Issues, Contributors (
b185758) - CLI flags:
--max-tierfor generate,--min-tierfor validate (b185758) - Library functions:
Summary(),ValidateMinTier(),ParseTier(),OptionsFromConfig()(b185758) - Canonical ordering documentation in README.md (
fd7312c)
Changed¶
- Change types now support tier-based filtering for validation and generation (
b185758) - CLI refactored to use library functions for better testability (
b185758)
Tests¶
- Comprehensive unit tests achieving 98%+ library coverage (changelog: 98.2%, renderer: 98.9%) (
da9559e)
v0.3.0 - 2026-01-04¶
Highlights¶
- Install via Homebrew or download pre-built binaries for Linux, macOS, and Windows - no Go toolchain required
Added¶
- GoReleaser configuration for multi-platform binary releases (Linux, macOS, Windows × amd64, arm64) (
5f2adeb) - GitHub Actions release workflow triggered by version tags (
5f2adeb) - Homebrew tap distribution via
brew install structured-changelog(5f2adeb) - Binary symlink: both
sclogandstructured-changelogcommands available (5f2adeb)
v0.2.0 - 2026-01-03¶
Highlights¶
- Generated changelogs now include clickable version comparison links for easy navigation on GitHub
Added¶
- GitHub version reference links at bottom of rendered Markdown (
b810bf0) - Auto-detect GitHub repository from
repositoryfield (b810bf0) - First release links to
/releases/tag/vX.Y.Z(b810bf0) - Subsequent releases link to
/compare/vA...vB(b810bf0) - Unreleased section links to
/compare/vLatest...HEAD(b810bf0) - Dependabot configuration for Go modules and GitHub Actions (
36ee0c5)
Changed¶
- Add Structured Changelog attribution to rendered Markdown header (
7c18e7b)
v0.1.0 - 2026-01-03¶
Highlights¶
- Machine-readable JSON changelog with deterministic Markdown generation following Keep a Changelog format
Added¶
- JSON IR schema for structured changelogs (v1.0) (
0ba99fc) changelogpackage with IR types, parsing, and validation (0ba99fc)rendererpackage with deterministic Markdown generation (0ba99fc)sclogCLI withvalidateandgeneratesubcommands (0ba99fc)- Support for Keep a Changelog categories: added, changed, deprecated, removed, fixed, security (
0ba99fc) - Optional security metadata: CVE, GHSA, severity, CVSS, CWE (
0ba99fc) - Optional SBOM metadata: component, version, license (
0ba99fc) - JSON Schema for IR validation (
0ba99fc) - Example changelogs: basic, security, full (
0ba99fc) - Documentation: spec, security guide, SBOM guide (
0ba99fc)