2026-05-14: Fix release script — add GitHub Release creation
Fix release script — add GitHub Release creation
Section titled “Fix release script — add GitHub Release creation”Problem
Section titled “Problem”scripts/release.mjs creates and pushes a git tag but does not call the GitHub API to create a Release object. As a result:
- Tag appears at
/releases/tag/vX.Y.Z(GitHub auto-links all tags) - But
/releasespage stays empty — no release shows up - Users can’t see changelogs, download assets, or find the release on the Releases page
The v1.1.1 tag was pushed but no Release was created. v1.1.0 has a Release (created manually).
Add gh release create vX.Y.Z --generate-notes --title "vX.Y.Z" at the end of the release script, after git push origin vX.Y.Z.
- Uses
ghCLI (already available, already authenticated) --generate-notesauto-generates markdown changelog from commits since the previous tag--no-gh-releaseflag added as escape hatch for environments withoutgh- Script header comment updated
AGENTS.md Compliance Checklist
Section titled “AGENTS.md Compliance Checklist”| # | Convention | Check |
|---|---|---|
| 1 | Doc update | Plan doc saved; update script header comment |
| 2 | All 4 test gates | No app code changed; script change only |
| 4 | Endpoint coverage | N/A |
| 8 | Plan history | This doc |
| 9 | Infra test gate | Verify npm run release -- X.Y.Z --dry-run still works |
| 12 | Execution Summary | Append after completion |
| 13 | Doc grep | Update docs mentioning the release script behavior |
Files to Modify
Section titled “Files to Modify”| File | Change |
|---|---|
scripts/release.mjs | Add gh release create after tag push; add --no-gh-release flag |
docs/src/content/docs/versioning.md | Note that release script creates GitHub Release |
Acceptance Criteria
Section titled “Acceptance Criteria”npm run release -- X.Y.Z --dry-runprints thegh release createstep- After a real release, the tag appears both as a git tag AND as a GitHub Release on
/releases - v1.1.1 GitHub Release created retroactively
--no-gh-releaseflag skips theghstep cleanly
Execution Summary
Section titled “Execution Summary”Commit: 3ea0b8c
Actual changes
Section titled “Actual changes”scripts/release.mjs: added step 9 (gh release create),--no-gh-releaseflag, updated header + success message +--no-pushinstructionsdocs/src/content/docs/versioning.md: documented step 9 and--no-gh-releaseflaggh release create v1.1.1run retroactively to populate/releasesfor the already-pushed tag
Deviations from plan
Section titled “Deviations from plan”None — implemented exactly as planned.
Test results
Section titled “Test results”| Gate | Result |
|---|---|
| Script dry-run | ✅ shows [dry-run] gh release create v1.2.0 --generate-notes --title "v1.2.0" |
Key discoveries
Section titled “Key discoveries”- The GitHub
/releasespage only shows Release objects, not bare git tags. Tags always appear at/releases/tag/Xbut that page shows a “draft” UI — the proper release page requires a Release object created via API orgh. --generate-notesproduces a markdown changelog from commits between the previous tag and the new one — no manual release notes needed.
Follow-up — Release Notes Quality & Docs Site Integration
Section titled “Follow-up — Release Notes Quality & Docs Site Integration”Problems addressed (follow-up session)
Section titled “Problems addressed (follow-up session)”--generate-notesonly outputs “Full Changelog: X…Y” without PRs → notes were useless/docs/releases/had no v1.1.1 page- Sidebar order was not controlled — newest could appear last
- Release process docs did not tell the developer to create the release notes page
Changes
Section titled “Changes”| File | Change |
|---|---|
scripts/release.mjs | Replaced --generate-notes with local conventional-commit parser (generateReleaseNotes()); added post-release reminder to create release notes doc |
docs/src/content/docs/releases/v1-1-1.md | NEW: v1.1.1 human-readable release notes (sidebar.order: 1) |
docs/src/content/docs/releases/index.md | Added v1.1.1 row; sidebar.order: 0 (always first) |
docs/src/content/docs/releases/v1-1-0.md | Added sidebar.order: 2 |
docs/src/content/docs/releases/v1-0-0.md | Added sidebar.order: 3 |
docs/src/content/docs/versioning.md | Expanded “How to release” with release notes doc step, frontmatter template, commit/push instructions |
Test results
Section titled “Test results”| Gate | Result |
|---|---|
| Docs build | ✅ 67 pages built cleanly |
| GitHub Release | ✅ v1.1.1 visible at /releases |
| Docs release page | ✅ v1.1.1 visible at /docs/releases/v1-1-1 |
Commit
Section titled “Commit”1f920f9