Skip to content

Commit 83d1560

Browse files
committed
feat: overhaul change file format — kind, mandatory, safety, chore, KaC changelog
Replace type/categories frontmatter with semantic kind field (added|changed|deprecated|removed|fixed|security|safety|chore). Bump is now derived (breaking→major, fixed/security/safety/chore→patch, else→minor). Add mandatory flag for must-install versions. CHANGELOG.md now renders KaC-style sections with a Full Changelog comparison link. GitHub Release body gets headline, user-facing sections (chores excluded), notices, and a Contributors heading. release.json gains Repository block, plain-string titles, and structured release note (title + description[]string — no markdown, no injection risk).
1 parent 866ad91 commit 83d1560

30 files changed

Lines changed: 512 additions & 488 deletions

.changes/README.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,33 @@ included in the next release.
77

88
```
99
---
10-
type: minor # major | minor | patch
11-
breaking: false # optional; major defaults to true
12-
categories: [] # optional list of labels
10+
kind: added # added | changed | deprecated | removed | fixed | security
11+
breaking: false # optional; true forces a major semver bump
12+
mandatory: false # optional; true means this version must be installed before newer ones
1313
---
14-
Title of the change (first line, required)
15-
16-
Optional longer description in Markdown.
14+
Technical title (required, one line — appears in CHANGELOG and GitHub Release header)
1715
1816
## Release Note
19-
Optional consumer-facing note included in release.json but not the changelog.
17+
User-facing title line (appears in Discord draft and release.json)
18+
Additional description lines shown in GitHub Release and release.json.
2019
2120
## Notices
2221
- warning: something users must know before upgrading
2322
- info: optional note or migration step
2423
```
2524

25+
## Semver derivation
26+
27+
- `breaking: true` → major bump
28+
- `kind: fixed` or `kind: security` → patch bump
29+
- everything else → minor bump
30+
2631
## File naming
2732

2833
Name the file after the change (e.g. `add-user-auth.md`).
29-
Run `release-tool new "<title>" --type minor` to generate one automatically.
34+
Run `release-tool new "<title>" --kind added` to generate one automatically.
3035

3136
## Special files
3237

33-
- `_headline.md` - optional release headline shown at the top of the changelog entry
38+
- `_headline.md` — optional per-release narrative shown at the top of the GitHub Release
39+
body

.changes/action-three-modes.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [ci]
2+
kind: changed
43
---
54
Action pared down to three modes: `release`, `status`, `check`
65

.changes/branch-release-mode.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli, ci]
2+
kind: added
43
---
54
Branch config now controls release behaviour via a `release` enum
65

.changes/category-allowlist.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli]
2+
kind: added
43
---
54
Optional category allowlist in config.json
65

.changes/changelog-title-only.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli]
2+
kind: changed
43
---
54
Changelog entries show title only; release note gains title and body
65

.changes/check-rejects-pr-field.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli]
2+
kind: changed
43
---
54
PR check rejects change files with explicit `pr:` frontmatter
65

.changes/config.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"tag_prefix": "v",
3-
"categories": ["cli", "ci"],
43
"branches": {
54
"alpha": { "release": "prerelease", "label": "alpha" },
65
"master": { "release": "stable" }

.changes/contributors.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli]
2+
kind: added
43
---
54
Releases record contributors
65

.changes/free-text-prerelease-label.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [ci]
2+
kind: changed
43
---
54
Workflow dispatch accepts any prerelease label as free text
65

.changes/init-scaffolding.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
2-
type: minor
3-
categories: [cli]
2+
kind: added
43
---
54
`init` scaffolds config.json and GitHub Actions workflows
65

0 commit comments

Comments
 (0)