Skip to content

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.16.0 - 2026-08-23 (02d2aee)

Highlights

  • Human-facing Markdown now collapses the Dependencies category to a one-line summary by default, keeping generated changelogs readable while the full list stays in the JSON source
  • RMI trailer flow: Refs: git trailers on commits now flow through parse-commits into pre-populated rmis on generated changelog entries
  • CLI binaries now self-identify between releases: version/--version report the module version, commit, build time, and dirty flag from build info

Added

  • Per-category render controls in the renderer: ExcludeCategories (omit a section) and CollapseCategories (render a category as a one-line entry count) (3aa08ca)
  • generate flags --exclude-categories, --collapse-categories, and --expand-categories for per-invocation category control (3aa08ca)
  • Options.WithExcludeCategories, WithCollapseCategories, and WithExpandCategories builder methods (3aa08ca)
  • parse-commits extracts roadmap item IDs from Refs: trailers into a per-commit rmis list (TOON and JSON output) (840489b)
  • Additive rmis []string field on Entry with a WithRMIs builder; the legacy singular rmi is retained and treated as a one-element rmis. New validate warnings: W006 (malformed RMI ID) and W007 (rmi/rmis disagreement) (a7a6237)
  • init --from-tags pre-populates each entry's rmis from the underlying commits' trailers (deduplicated, sorted) (ef9a0be)
  • schangelog version/--version report the real build via runtime/debug.ReadBuildInfo() (module version or (devel), commit SHA, build time, dirty flag, Go version, OS/arch) when goreleaser ldflags aren't stamped; make build stamps a git describe version (57082dc)

Changed

  • BREAKING: The default and standard presets now collapse the Dependencies category to a one-line summary; use --full or --expand-categories Dependencies to restore the full list. Existing CHANGELOG.md output will change on the next generate for projects carrying Dependencies entries (3aa08ca)

Dependencies

  • 2 dependency updates

Documentation

  • Document the rmis-preferred / initiative-only-without-RMI convention and the trailer flow in the PRISM integration guide
  • Add the Generating Changelogs site guide covering generate presets, tiers, notable filtering, and category collapse/exclude (44e4dea)
  • Add the CLI Versioning & Build Provenance guide documenting the build-info + git-describe convention (02d2aee)

v0.15.1 - 2026-08-02 (aa6b1b7)

Highlights

  • Compatibility fix for gogithub v0.16.0: aggregate.DiscoveryClient now uses clientv1.Client instead of a raw *github.Client, dropping the direct github.com/google/go-github dependency

Fixed

  • [aggregate] DiscoveryClient migrated to gogithub/clientv1.Client; discoverSource, FindChangelogPaths, and FetchRemoteChangelog now use stable gogithub.* types instead of go-github types, restoring compatibility with gogithub v0.15+ (aa6b1b7)

Dependencies

  • 1 dependency update

v0.15.0 - 2026-07-26 (1ba70fc)

Highlights

  • Cross-repo highlight extraction for quarterly reports and portfolio summaries
  • PRISM Control metadata fields for linking changelog entries to roadmap items

Added

  • ExtractHighlights() for single-repo extraction of notable releases within a date range (cc33ce7)
  • ExtractMultiRepoHighlights() for multi-repo highlight aggregation across portfolios (cc33ce7)
  • TopProjects() and TopReleases() ranking functions by entry count (cc33ce7)
  • Notable category filtering: highlights, added, changed, fixed, security, breaking (cc33ce7)
  • Maintenance-only release exclusion in highlight extraction (cc33ce7)
  • RMI and Initiative fields in Entry struct for PRISM Control integration (1ba70fc)
  • WithRMI() and WithInitiative() builder methods for entry construction (1ba70fc)

Dependencies

  • 2 dependency updates

v0.14.0 - 2026-04-25 (043b9c2)

Highlights

  • Release-level commit field for tracking tagged commit SHA in changelog entries

Added

  • commit field at release level in JSON schema for tracking the commit SHA a release tag points to (3db6403)
  • Commit field in Release struct for programmatic access (9df5ce5)
  • Release commit displayed in Markdown heading when IncludeCommits option is enabled (9df5ce5)

v0.13.0 - 2026-03-15 (8295e4a)

Highlights

  • New merge command for combining multiple CHANGELOG.json files with deduplication and metadata preservation
  • --skip-invalid flag for init --from-tags to gracefully handle non-semver tags

Added

  • merge command for combining releases from multiple CHANGELOG.json files (6bb2a16)
  • --release flag for merge to prepend a single release file (6bb2a16)
  • --dedup flag for merge to skip versions that already exist in base (6bb2a16)
  • --prepend-only flag for merge to only add releases newer than base's latest (6bb2a16)
  • --skip-invalid flag for init --from-tags to 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 DefaultMetricsOptions and normalizeDate edge cases (af49a84)
  • Coverage improvement: aggregate 74.4% → 77.4%, gitlog 63.6% → 68.4%, overall 85.1% (af49a84)

v0.12.0 - 2026-02-28 (4817698)

Highlights

  • Multi-project changelog aggregation with schangelog portfolio commands for tracking releases across 100s of repositories
  • GitHub-style activity heatmap and velocity dashboard generation for development metrics

Added

  • portfolio command group for multi-project changelog operations (a0a36d7)
  • portfolio discover command to scan GitHub orgs/users for repositories with CHANGELOG.json (a0a36d7)
  • portfolio aggregate command to combine changelogs from multiple projects into a unified portfolio (a0a36d7)
  • portfolio metrics command to generate time-series metrics and dashboard data (a0a36d7)
  • aggregate package 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)
  • --dashboard flag for metrics command to generate dashboard-ready data (a0a36d7)
  • --template velocity option for generating complete dashboard definitions (a0a36d7)

Dependencies

  • 2 dependency updates

Tests

  • Comprehensive tests for aggregate package: manifest, rollup, resolver, portfolio, metrics, dashboard (6b9f28d)

v0.11.0 - 2026-02-22 (20e09fc)

Highlights

  • Notable-only filtering now the default - maintenance-only releases excluded from generated changelogs
  • New --all-releases flag to include all releases when needed

Breaking

  • Default output now excludes maintenance-only releases (use --all-releases to include them)

Upgrade Guide

  • If you need all releases in output, add --all-releases flag to your schangelog generate commands
  • The --full preset now implies --all-releases automatically

Added

  • --all-releases flag for generate command to include maintenance-only releases
  • --notable-categories flag to customize which categories are considered notable
  • NotabilityPolicy type for programmatic control over release filtering
  • DefaultNotabilityPolicy() function returning default notable categories
  • Release.IsNotable() method to check if a release has user-facing changes
  • Release.HasCategory() helper method to check for entries in a specific category
  • Options.NotableOnly and Options.NotabilityPolicy renderer fields
  • Config.AllReleases and Config.NotableCategories for CLI configuration

Changed

  • BREAKING: Default rendering now filters to notable releases only (inverse of previous behavior)
  • --full preset now includes all releases (sets NotableOnly=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 (c48c3a6)

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., irVersion instead of ir_version) (adc355c)

Upgrade Guide

  • Update existing CHANGELOG.json files to use camelCase property names (adc355c)
  • Re-run schangelog validate to check for any issues (adc355c)

Added

  • --locale flag for generate command to output in different languages (64edc2e)
  • --locale-file flag for custom translation overrides (64edc2e)
  • Built-in translations for 6 locales: English, German, Spanish, French, Japanese, Chinese (64edc2e)
  • Locale and LocaleOverrides renderer options (64edc2e)
  • Header text localization for Keep a Changelog, versioning, and generator references (19b3f06)
  • --require-commits flag for validate command 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-commits is set (12ac69f)
  • Exempt categories for commit validation: highlights, upgradeGuide, knownIssues (12ac69f)

Dependencies

  • 1 dependency update

Tests

  • Add localization unit tests for message loading and translation (c56fe84)

v0.9.0 - 2026-02-02 (46c0ba9)

Highlights

  • New CLI commands for changelog backfilling: list-tags, init --from-tags, and parse-commits --all-versions

Added

  • list-tags command to list semver tags with dates and commit counts between versions (e0ff0e0)
  • init --from-tags command to generate skeleton CHANGELOG.json from git tag history (e0ff0e0)
  • --all-versions flag for parse-commits to parse all version ranges at once for backfilling (c293a4d)
  • parse-commits --until without --since to 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/ to docs/, HTML now published to gh-pages branch (9df3505)

v0.8.0 - 2026-01-18 (ccba9a6)

Highlights

  • Monorepo tag path support for repositories using path-prefixed version tags (e.g., sdk/go/v1.0.0)

Added

  • tagPath field in changelog IR for specifying version tag prefixes in monorepos (7761ead)
  • Automatic path prefixing for compare and tag links when tagPath is set (7761ead)
  • tagPath property 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 (fc3eb01)

Highlights

  • CLI renamed from sclog to schangelog for naming consistency with sibling tools (sroadmap, sprd, strd)

Changed

  • BREAKING: CLI binary renamed from sclog to schangelog for 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 schangelog over raw git commands (e58d452)

v0.6.0 - 2026-01-10 (67e310a)

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, and validate --format (2be0cc0)
  • --format flag for LLM commands supporting toon (default), json, and json-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)
  • LinkReferences renderer option (now enabled by default) for hyperlinking references (be9b3b0)
  • IncludeUnreleasedLink renderer option (enabled by default) for always showing compare link to HEAD (d4b3e90)
  • versioning field in changelog IR: semver, calver, custom, or none (93b8da1)
  • commitConvention field in changelog IR: conventional or none (93b8da1)
  • Dynamic header generation based on versioning scheme and commit convention (be9b3b0)
  • Validation error codes E008 (invalid versioning) and E009 (invalid commit convention) (93b8da1)
  • maintainers and bots fields 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)
  • IncludeAuthors renderer 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)
  • CompactMaintenanceReleases renderer option for grouping maintenance-only releases (f7cdb02)
  • IsMaintenanceOnly() method to detect dependency/documentation-only releases (824a075)
  • --changelog flag for parse-commits to auto-detect external contributors (817fa7f)
  • IsExternal field in commit output marking external contributors (8e1ab0a)
  • Contributors summary in parse-commits output 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-commits and suggest-category: --compact flag replaced with --format flag (2be0cc0)
  • BREAKING: validate: --json flag replaced with --format flag (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 v prefix) (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 /changelog slash command (8d4cf61)

v0.5.0 - 2026-01-04 (d21c28c)

Highlights

  • LLM-assisted changelog generation with optimized git parsing (~5x token reduction) and automatic commit classification

Added

  • parse-commits command for LLM-optimized git history output (~5x token reduction vs raw git log) (4503119)
  • suggest-category command for commit classification with confidence levels (1432b6e)
  • --json flag for validate command 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 (ace9de6)

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-tier for generate, --min-tier for 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 (5f2adeb)

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 sclog and structured-changelog commands available (5f2adeb)

v0.2.0 - 2026-01-03 (518e956)

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 repository field (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 (e6993da)

Highlights

  • Machine-readable JSON changelog with deterministic Markdown generation following Keep a Changelog format

Added

  • JSON IR schema for structured changelogs (v1.0) (0ba99fc)
  • changelog package with IR types, parsing, and validation (0ba99fc)
  • renderer package with deterministic Markdown generation (0ba99fc)
  • sclog CLI with validate and generate subcommands (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)