CHANGELOG promotion was a manual operator step that was never run, so 463 fragments for work already shipped in <=1.3.1 accumulated in .changeset/. Their notes were already hand-curated into the dated [1.2.0]/[1.3.0]/[1.3.1] CHANGELOG sections (#690 backfill, PR #694). Rendering them now would duplicate and mis-attribute shipped work. Move them to .changeset/archived/ (read non-recursively by all changeset tooling, so never rendered), keeping only the 3 genuinely-unreleased fragments at the top level. Prep for wiring `render` into the release finalize job (#690 follow-up). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
2.1 KiB
Markdown
49 lines
2.1 KiB
Markdown
# Changeset Fragments
|
|
|
|
This directory holds **per-PR CHANGELOG fragments**. Every PR with user-facing changes drops one (or more) `<random-name>.md` files here describing its CHANGELOG entry. Fragments are consolidated into the top-level `CHANGELOG.md` at release time.
|
|
|
|
## Why
|
|
|
|
Two PRs that both edit the `### Fixed` block of `CHANGELOG.md` always conflict on merge — git can't pick a serialization order without human input. Two PRs that each add a fresh `.changeset/<unique-name>.md` never conflict because they don't share lines.
|
|
|
|
See [#2975](https://github.com/open-gsd/get-shit-done-redux/issues/2975) for the full rationale.
|
|
|
|
## Adding a fragment
|
|
|
|
```bash
|
|
node scripts/changeset/new.cjs \
|
|
--type Fixed \
|
|
--pr 1234 \
|
|
--body "fix the thing — explain the user-visible change in one sentence"
|
|
```
|
|
|
|
This writes `.changeset/<adjective>-<noun>-<noun>.md` with frontmatter and a body. Three random words → concurrent PRs don't collide.
|
|
|
|
## Format
|
|
|
|
```md
|
|
---
|
|
type: Fixed
|
|
pr: 1234
|
|
---
|
|
**`/gsd-foo` no longer drops trailing slashes** — explain the user-visible change.
|
|
```
|
|
|
|
Allowed `type:` values follow [Keep a Changelog](https://keepachangelog.com/): `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`.
|
|
|
|
## Opting out
|
|
|
|
PRs that legitimately have no user-facing impact can add the `no-changelog` label. CI honors it. When unsure, add the fragment.
|
|
|
|
## At release time
|
|
|
|
```bash
|
|
node scripts/changeset/cli.cjs render --version vX.Y.Z --date YYYY-MM-DD
|
|
```
|
|
|
|
Reads every fragment, groups bullets by `type:`, replaces `## [Unreleased]` with a new `## [vX.Y.Z] - YYYY-MM-DD` block, opens a fresh `## [Unreleased]` above, deletes consumed fragments. Idempotent.
|
|
|
|
## Archived fragments
|
|
|
|
`.changeset/archived/` holds fragments for already-shipped releases (≤ 1.3.1), retained for provenance. Their content was hand-curated into the dated `## [1.x.y]` sections of `CHANGELOG.md` during the #690 backfill — they were never consumed by `render`. All changeset tooling enumerates `.changeset/` non-recursively, so archived fragments are never picked up or rendered. Do not move them back to the top level.
|