| @@ -37,10 +37,11 @@ The owner doesn't want GitHub's auto-generated "PR title by @user" list. Release · 36 unmodified lines |
| 37 | **`apps/cli/release-notes/next.md` is the canonical user-facing changelog.** Per-package workspace `CHANGELOG.md` files were removed in late 2026 — they were empty stubs and changesets does not regenerate them under `changelog: false`. Don't create them. | 37 | **`apps/cli/release-notes/next.md` is the canonical user-facing changelog.** Per-package workspace `CHANGELOG.md` files were removed in late 2026 — they were empty stubs and changesets does not regenerate them under `changelog: false`. Don't create them. |
| 38 | | 38 | |
| 39 | ### How it's wired | 39 | ### How it's wired |
| 40 | `apps/cli/src/release.ts:198` picks the notes file in this order: | 40 | `apps/cli/src/release.ts` reads `apps/cli/release-notes/next.md` and uses |
| 41 | 1. `apps/cli/release-notes/v<version>.md` (archived per release) | 41 | its contents as the GitHub Release body. If the file is missing or empty, |
| 42 | 2. `apps/cli/release-notes/next.md` (rolling draft) | 42 | falls back to `gh release create --generate-notes`. There's no |
| 43 | 3. Fall back to `gh release create --generate-notes` | 43 | per-version archive in the repo — historical release bodies live on |
| | 44 | GitHub Releases (durable, indexed, linkable). |
| 44 | | 45 | |
| 45 | ### Writing conventions | 46 | ### Writing conventions |
| 46 | Structure release-notes files as: | 47 | Structure release-notes files as: |
| @@ -83,12 +84,13 @@ Do not `Thanks` maintainers, bots, or the repo owner — the lint script rejects · 36 unmodified lines |
| 83 | - The `.changeset/*.md` body can be a one-liner pointing at the release-notes section it expands; users read the GitHub release body, not the changeset. | 84 | - The `.changeset/*.md` body can be a one-liner pointing at the release-notes section it expands; users read the GitHub release body, not the changeset. |
| 84 | - Frontmatter is `"executor": patch` (or `minor`/`major` if owner says so). | 85 | - Frontmatter is `"executor": patch` (or `minor`/`major` if owner says so). |
| 85 | | 86 | |
| 86 | ### Post-release archival (manual) | 87 | ### Starting a new release cycle |
| 87 | After a release publishes, rename `apps/cli/release-notes/next.md` → `apps/cli/release-notes/v<version>.md` and commit on `main` (or in a small follow-up PR). This: | 88 | There's no post-release rename step. When you start work on the next |
| 88 | - Preserves the historical notes file-by-version (matches `release.ts`'s preferred lookup path). | 89 | release, replace the existing `next.md` content with new entries — the |
| 89 | - Resets `next.md` absence so the next cycle starts from a blank file — no chance of last release's content leaking into the next one. | 90 | previous cycle's content is already preserved on the matching `vX.Y.Z` |
| 90 | | 91 | GitHub Release page, so overwriting locally is safe. If `next.md` content |
| 91 | `release.ts` falls back to `next.md` if `v<version>.md` is missing, so skipping the rename won't break a publish; it just leaves stale content in `next.md` for the next release. | 92 | looks stale (i.e. mentions features already shipped), that's the signal |
| | 93 | to clear it. |
| 92 | | 94 | |
| 93 | ## Beta release flow | 95 | ## Beta release flow |
| 94 | | 96 | |