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-releasesflag to include all releases when needed - Customizable notability policy via
--notable-categories --fullpreset 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):
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:
- Add
--all-releasesto yourschangelog generatecommands - Or use the
--fullpreset 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:
--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:
Complete Archive¶
For complete history including all maintenance releases:
Security-Focused¶
Generate changelog highlighting only security-relevant releases: