From f8052870dffd7e907a060e5ff07e5f0eeb2fb4a9 Mon Sep 17 00:00:00 2001 From: Lex Christopherson Date: Wed, 11 Mar 2026 16:26:07 -0600 Subject: [PATCH] feat: add CHANGELOG.md and project-local publish-version command CHANGELOG.md covers v0.1.6 through v0.3.3 with curated entries. Publish command uses manual npm publish instead of GitHub Action. Co-Authored-By: Claude Opus 4.6 --- .claude/commands/publish-version.md | 223 ++++++++++++++++++++++++++++ CHANGELOG.md | 119 +++++++++++++++ 2 files changed, 342 insertions(+) create mode 100644 .claude/commands/publish-version.md create mode 100644 CHANGELOG.md diff --git a/.claude/commands/publish-version.md b/.claude/commands/publish-version.md new file mode 100644 index 000000000..41bb85fc1 --- /dev/null +++ b/.claude/commands/publish-version.md @@ -0,0 +1,223 @@ +--- +description: Publish GSD updates to npm and GitHub +--- + +Publish GSD updates with automatic changelog generation. + + + + +## 1. Check for Uncommitted Changes + +```bash +git status --short +``` + +If uncommitted changes exist: +- Ask: "Uncommitted changes detected. What commit message should I use?" +- Commit with provided message +- Continue to next step + + + +## 2. Get Commits Since Last Version + +```bash +LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") +if [ -n "$LAST_TAG" ]; then + git log ${LAST_TAG}..HEAD --oneline --no-merges +else + echo "No previous tags found" +fi +``` + +Capture the commit list for changelog generation. + + + +## 3. Check Documentation Currency + +Review the commits captured above and check if README.md needs updates. + +**Check for commits that require README updates:** +- New commands or features +- Changed command behavior or flags +- New configuration options +- New workflows or processes +- Deprecations or removals + +**Review README.md against commits:** +1. Read README.md +2. For each significant commit, verify the feature/change is documented +3. Check command tables match actual commands +4. Check configuration tables match actual options + +**If updates needed:** +1. Draft specific README changes +2. Present changes for approval +3. Apply approved changes +4. Commit: `git add README.md && git commit -m "docs: update README for vX.Y.Z"` + +**If no updates needed:** +- State: "README is current with all changes" +- Continue to next step + + + +## 4. Generate Changelog Entry Draft + +Analyze the commits and draft a curated changelog entry. + +**Grouping rules:** +- **Added** — New features, commands, capabilities +- **Changed** — Modifications to existing behavior +- **Fixed** — Bug fixes +- **Removed** — Deprecated/removed features +- **BREAKING:** prefix for breaking changes + +**Writing rules:** +- Write human-readable descriptions, not raw commit messages +- Focus on user impact, not implementation details +- Group related commits into single entries +- Flag breaking changes prominently with **BREAKING:** prefix + +**Example draft:** +```markdown +## [X.Y.Z] - YYYY-MM-DD + +### Added +- New `/gsd:whats-new` command for version awareness + +### Changed +- Improved parallel execution performance + +### Fixed +- STATE.md progress bar calculation + +### Removed +- **BREAKING:** Removed deprecated ISSUES.md system +``` + +Present the draft for review. + + + +## 5. Review Changelog Draft + +**Drafted changelog entry:** +[Show the generated draft] + +**Verify:** +1. Categories are correct (Added/Changed/Fixed/Removed) +2. Descriptions are clear and user-focused +3. Breaking changes are marked with **BREAKING:** prefix +4. Nothing important is missing from commits + +**Resume signal:** Type "approved" or provide edits + + + +## 6. Update CHANGELOG.md + +After approval: + +1. **Read current CHANGELOG.md** +2. **Insert new version section** after [Unreleased] header +3. **Update version links** at bottom: + - Add new version link: `[X.Y.Z]: https://github.com/gsd-build/gsd-2/releases/tag/vX.Y.Z` + - Update [Unreleased] comparison: `[Unreleased]: https://github.com/gsd-build/gsd-2/compare/vX.Y.Z...HEAD` + +```bash +# Stage changelog +git add CHANGELOG.md +git commit -m "docs: update changelog for vX.Y.Z" +``` + + + +## 7. Bump Version + +Ask which version bump type: +- `npm version patch` — Bug fixes (default) +- `npm version minor` — New features +- `npm version major` — Breaking changes +- `npm version prerelease --preid=alpha` — Experimental features + +```bash +npm version patch # or minor/major/prerelease +``` + +This creates a version commit and tag. + + + +## 8. Push and Publish + +```bash +git push && git push --tags +``` + +Then publish to npm: + +```bash +npm publish --access public +``` + +Verify the publish succeeded by checking the output for the package URL. + + + +## 9. Create GitHub Release + +Create a GitHub Release from the tag. + +```bash +gh release create vX.Y.Z --title "vX.Y.Z" --notes "[changelog content]" --latest +``` + +Use the approved changelog content as the release notes. + + + +## 10. Post to Discord Changelog + +Post the changelog entry to the GSD Discord community. + +Use the Discord MCP server: +``` +discord_execute("messages.send", { + "channel_id": "1464128246290579469", + "content": "**vX.Y.Z Released** \n\n[changelog content here]\n\nInstall/upgrade: `npx gsd-pi@latest`" +}) +``` + +Format the message with: +- Version number as header +- The approved changelog content (Added/Changed/Fixed/Removed sections) +- Install command at the bottom + + + +## 11. Report Success + +``` +Published vX.Y.Z + +- npm: https://www.npmjs.com/package/gsd-pi +- GitHub: https://github.com/gsd-build/gsd-2/releases/tag/vX.Y.Z +``` + + + + + +- README.md checked against commits and updated if needed +- Changelog entry drafted from commits +- User reviewed and approved entry +- CHANGELOG.md updated and committed +- Version bumped via npm version +- Pushed to GitHub with tags +- Published to npm via `npm publish` +- GitHub Release created with `gh release create` +- Changelog posted to Discord #changelog channel + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..5c1ce215a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,119 @@ +# Changelog + +All notable changes to GSD are documented in this file. + +Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## [Unreleased] + +## [0.3.3] - 2026-03-11 + +### Added +- `/gsd next` step mode — walk through units one at a time with a wizard between each +- `/gsd` bare command defaults to step mode +- `/exit` command to kill the GSD process immediately +- `/clear` as alias for `/new` (new session) +- MCPorter extension for lazy on-demand MCP server integration +- `/voice` extension for real-time speech-to-text +- Pi global install scripts +- Post-hook bookkeeping: auto-run doctor + rebuild STATE.md after each unit + +### Changed +- Improved worktree merge, create, remove, and reload resilience +- Discuss prompt rewritten with reflection step and depth enforcement + +### Fixed +- Idle watchdog false-firing on active agents — tasks >10min no longer get incorrectly skipped (#52) +- Browser screenshots constrained to 1568px max dimension (#56) +- Pi extensions loaded from `~/.pi/agent/extensions/` (#51) + +### Removed +- `/gsd-run` command (replaced by `/gsd` and `/gsd next`) + +## [0.3.1] - 2026-03-11 + +### Fixed +- Windows VT input restored after child processes exit (#41) +- Print/JSON mode in cli.js so subagents don't hang +- Discuss prompt loop prevention +- Managed tools bootstrap and gh auth +- Session list scoped to current working directory +- Bash/bg_shell hang and kill issues on Windows (#40) +- `/gsd-run` hardcoded `~/.pi/` path (#38) +- Windows backspace in masked input + custom browser path support (#36, #34) + +### Changed +- Renamed "Get Stuff Done" to "Get Shit Done" + +## [0.3.0] - 2026-03-11 + +### Added +- `/worktree` (`/wt`) — git worktree lifecycle management (#31) +- `/gsd migrate` — `.planning` to `.gsd` migration tool (#28) + +### Fixed +- Skipped API keys now persist so wizard doesn't repeat on every launch (#27) +- Scoped models restored from settings on new session startup (#22) +- Startup fallback no longer overwrites user's default model with Sonnet (#29) + +## [0.2.9] - 2026-03-11 + +### Fixed +- Idle recovery skips stuck units instead of silently stalling (#19) +- `pkg/package.json` version synced with pi-coding-agent to prevent false update banner +- Milestones with summary but no roadmap treated as complete (#13) + +## [0.2.8] - 2026-03-11 + +### Added +- Mac-tools extension (macOS native automation) + +## [0.2.6] - 2026-03-11 + +### Fixed +- Default model validated against full registry on every startup + +## [0.2.5] - 2026-03-11 + +### Fixed +- Circular self-dependency removed, default model set to anthropic/claude-sonnet-4-6 with thinking off + +## [0.2.4] - 2026-03-11 + +### Added +- Branded setup wizard UI with visual hierarchy, descriptions, and status feedback +- Branded banner on first launch +- Postinstall banner with version and next-step hint + +### Fixed +- All `.pi/` paths updated to `.gsd/` +- Default model matching by `id.includes('sonnet')` for dated API IDs +- Circular gsd-pi self-dependency removed +- Pi SDK version check suppressed +- Selected options stay lit when notes field is focused + +## [0.1.6] - 2026-03-11 + +### Added +- GitHub extension tool suite with confirmation gate +- Bundled skills: frontend-design, swiftui, debug-like-expert +- Skills trigger table in system prompt +- Resource loader syncs bundled skills to `~/.gsd/agent/skills/` + +### Fixed +- `~/.gsd/agent/` paths in prompt templates instead of `~/.pi/agent/` (#10) +- Guard against re-injecting discuss prompt when session already in flight + +### Changed +- License updated to MIT + +[Unreleased]: https://github.com/gsd-build/gsd-2/compare/v0.3.3...HEAD +[0.3.3]: https://github.com/gsd-build/gsd-2/compare/v0.3.1...v0.3.3 +[0.3.1]: https://github.com/gsd-build/gsd-2/compare/v0.3.0...v0.3.1 +[0.3.0]: https://github.com/gsd-build/gsd-2/compare/v0.2.9...v0.3.0 +[0.2.9]: https://github.com/gsd-build/gsd-2/compare/v0.2.8...v0.2.9 +[0.2.8]: https://github.com/gsd-build/gsd-2/compare/v0.2.6...v0.2.8 +[0.2.6]: https://github.com/gsd-build/gsd-2/compare/v0.2.5...v0.2.6 +[0.2.5]: https://github.com/gsd-build/gsd-2/compare/v0.2.4...v0.2.5 +[0.2.4]: https://github.com/gsd-build/gsd-2/compare/v0.1.6...v0.2.4 +[0.1.6]: https://github.com/gsd-build/gsd-2/releases/tag/v0.1.6