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.13.0 - 2026-03-15

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

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

  • Add github.com/google/go-github/v84 for GitHub API access in discovery and remote fetch (72ae60c)
  • Add github.com/grokify/gogithub v0.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-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

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

  • Add github.com/grokify/structured-locale v0.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, 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

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

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

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

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

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

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

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

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)