Skip to content

Release Notes - v0.11.0

Overview

This release changes the default behavior of schangelog generate to output notable releases only. Maintenance-only releases (those containing only dependency updates, documentation, build, tests, etc.) are now excluded by default, making generated changelogs more focused on user-facing changes.

Highlights

  • Notable-only filtering is now the default behavior
  • New --all-releases flag to include all releases when needed
  • Customizable notability policy via --notable-categories
  • --full preset automatically includes all releases

Breaking Changes

Default Output Now Notable-Only

Previously, schangelog generate included all releases. Now it excludes maintenance-only releases by default.

Before (v0.10.0):

# Included ALL releases
schangelog generate CHANGELOG.json -o CHANGELOG.md

After (v0.11.0):

# Default: notable releases only
schangelog generate CHANGELOG.json -o CHANGELOG.md

# Explicit: include all releases
schangelog generate CHANGELOG.json -o CHANGELOG.md --all-releases

Migration

If your workflow requires all releases in the output:

  1. Add --all-releases to your schangelog generate commands
  2. Or use the --full preset which now implies --all-releases

Notable vs Non-Notable Categories

A release is notable if it contains at least one entry in a notable category:

Notable Categories Non-Notable (Maintenance)
Highlights Dependencies
Breaking Documentation
Upgrade Guide Build
Security Tests
Added Infrastructure
Changed Observability
Deprecated Compliance
Removed Internal
Fixed Contributors
Performance
Known Issues

New CLI Flags

--all-releases

Include all releases, overriding the default notable-only behavior:

schangelog generate CHANGELOG.json --all-releases

--notable-categories

Customize which categories make a release notable:

# Only include releases with Security or Fixed entries
schangelog generate CHANGELOG.json --notable-categories "Security,Fixed"

Library Additions

NotabilityPolicy Type

import "github.com/grokify/structured-changelog/changelog"

// Use default policy
policy := changelog.DefaultNotabilityPolicy()

// Custom policy
policy := changelog.NewNotabilityPolicy([]string{"Security", "Added", "Fixed"})

// Check if a release is notable
if release.IsNotable(policy) {
    // Has user-facing changes
}

Renderer Options

import "github.com/grokify/structured-changelog/renderer"

// Default: notable only
opts := renderer.DefaultOptions()

// Include all releases
opts := renderer.DefaultOptions().WithNotableOnly(false)

// Custom notability
opts := renderer.DefaultOptions().
    WithNotabilityPolicy(changelog.NewNotabilityPolicy([]string{"Security"}))

New Methods

Method Description
Release.IsNotable(policy) Returns true if release has entries in notable categories
Release.HasCategory(name) Returns true if release has entries in the named category
DefaultNotabilityPolicy() Returns policy with default notable categories
NewNotabilityPolicy(cats) Creates policy with custom notable categories

Config Changes

Field Description
Config.AllReleases Set to true to include all releases
Config.NotableCategories Custom list of notable category names

Preset Behavior

Preset Notable Only? Description
default Yes Standard output, notable releases only
minimal Yes Minimal output, notable releases only
core Yes KACL types only, notable releases
standard Yes Standard tier, notable releases
full No Maximum detail, all releases

Use Cases

User-Facing Changelog

The default behavior now produces a changelog focused on what users care about:

# Generate user-facing changelog (default)
schangelog generate CHANGELOG.json -o CHANGELOG.md

Complete Archive

For complete history including all maintenance releases:

# Generate complete changelog
schangelog generate CHANGELOG.json -o CHANGELOG.md --all-releases

Security-Focused

Generate changelog highlighting only security-relevant releases:

schangelog generate CHANGELOG.json --notable-categories "Security"