2026-03-11 16:26:07 -06:00
# 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]
2026-03-12 22:06:44 -06:00
## [2.7.0] - 2026-03-12
### Changed
- Vendor Pi SDK source (tui, ai, agent-core, coding-agent) into workspace monorepo under `packages/` , replacing the compiled npm dependency and patch-package workflow. Pi internals are now directly modifiable as TypeScript source.
- Existing patches (setModel persist option, Windows VT input caching) applied as source edits.
- Build pipeline runs workspace packages in dependency order before GSD compilation.
- Removed `patch-package` from devDependencies and postinstall.
2026-03-12 21:38:19 -06:00
## [2.6.0] - 2026-03-12
### Added
- Proactive secret management — planning phase forecasts required API keys into a manifest; auto-mode collects pending secrets before dispatching the first slice
- `--continue` / `-c` CLI flag to resume the most recent session
### Fixed
- Doctor post-hook no longer preempts `complete-slice` dispatch
- `main_branch` preference restored; `runPreMergeCheck` implemented for merge safety
- Recovery/retry prompt injection capped to prevent V8 OOM on large sessions
- `.gsd/` excluded from pre-switch auto-commits to prevent squash merge conflicts
2026-03-12 15:32:20 -06:00
## [2.5.1] - 2026-03-12
### Added
- `secure_env_collect` now auto-detects existing keys, destination files, and provides guidance field for better onboarding UX
### Changed
- Right-sized pipeline for simple work — single-slice milestones skip redundant research/plan sessions, reducing 9-10 sessions to 5-6
- Heavyweight plan sections (Proof Level, Integration Closure, Observability) are now conditional, omitted for simple slices
### Fixed
- Squash-merge now aborts cleanly on conflict and stops auto-mode instead of looping with corrupted state
- Resolved baked-in merge conflict markers in loader.ts, logo.ts, and postinstall.js
2026-03-12 13:24:20 -06:00
## [2.5.0] - 2026-03-12
### Added
- Native Anthropic web search — Claude models get server-side web search automatically, no Brave API key required
- GitService fully wired into codebase — programmatic git operations replace shell-based git commands in prompts
- Merge guards prevent slice completion when uncommitted changes or conflicts exist
- Snapshot support for saving and restoring `.gsd/` state
- Auto-push after slice squash-merge to main
- Rich commit messages with structured metadata
### Fixed
- State machine deadlock when units fail to produce expected artifacts — retry and cross-validation now gate completion
- Duplicate Brave search tools when toggling providers repeatedly
- Windows test glob patterns (single quotes → unquoted for shell expansion)
- Conversation replay error caused by thinking blocks in stored history
- Brave search tools removed from API payload when no `BRAVE_API_KEY` is set
- Restore notifications suppressed on session resume to reduce UX noise
2026-03-12 11:16:12 -06:00
## [2.4.0] - 2026-03-12
### Added
- Automatic migration of provider credentials from existing Pi installations — skip re-authentication when switching to GSD
- Pi extensions from `~/.pi/agent/extensions/` discoverable in interactive mode
- GitService core implementation for programmatic git operations
### Changed
- System prompt compressed by 48% (360 → 187 lines) for better context efficiency
- Refined agent character and communication style prompts
- Added craft standards, self-debugging awareness, and work narration to agent prompts
### Fixed
- RPC mode crash when `ctx.ui.theme` is undefined (#121 )
2026-03-12 10:06:13 -06:00
## [2.3.11] - 2026-03-12
### Added
- Branded clack-based onboarding wizard on first launch — LLM provider selection (OAuth + API key), optional tool API keys, and setup summary (#118 )
- `gsd config` subcommand to re-run the setup wizard anytime
- Shared `src/logo.ts` module as single source of truth for ASCII banner
### Fixed
- Parallel subagent results no longer truncated at 200 characters
### Changed
- `wizard.ts` trimmed to env hydration only — onboarding logic moved to `onboarding.ts`
- First-launch banner removed from `loader.ts` (onboarding wizard handles branding)
2026-03-12 09:21:33 -06:00
## [2.3.10] - 2026-03-12
### Added
- Branded postinstall experience with animated spinners, progress indicators, and clean summary (#115 )
### Fixed
- Ctrl+Alt shortcuts (dashboard, bg manager, voice) now show slash-command fallback in terminals that lack Kitty keyboard protocol support — macOS Terminal.app, JetBrains IDEs (#100 , #104 )
2026-03-12 09:08:40 -06:00
## [2.3.9] - 2026-03-12
### Added
- Tavily as alternative web search provider alongside Brave Search (#102 )
- Auto-mode progress widget now shows all stats; footer hidden during auto-mode (#75 )
### Fixed
- Auto-mode infinite loop and closeout instability — idempotent unit dispatch, retry caps, and atomic closeout (#96 , #109 )
- Migration no longer requires ROADMAP.md — milestones inferred from phases/ directory when missing (#93 , #90 )
- Worktree branch safety — proper namespacing and slice branch base selection (#92 )
- Windows: use `execFile` to avoid single-quote shell issues (#103 )
- Broken `read @GSD-WORKFLOW.md` references replaced with `/gsd` command (#88 )
- Google Search extension updated to use `gemini-2.5-flash` (#83 )
- Duplicate `getCurrentBranch` import in auto.ts (#87 )
- `formatCost` crash on non-number cost values (#74 )
- Avoid `sudo` prompts in postinstall script (#73 )
- `.gsd/` folder removed from git tracking; consolidated `.gitignore` (#78 )
- Multiple community-reported bugs across CLI, auto-mode, and extensions
2026-03-11 18:12:53 -06:00
## [2.3.8] - 2026-03-11
### Fixed
- Worktree file operations (Write, Read, Edit) now resolve paths against the active working directory instead of the launch directory (#72 )
- Auto-mode merge guard handles all slice completion paths, preventing infinite dispatch loops when `complete-slice` is bypassed (#71 )
2026-03-11 17:43:00 -06:00
## [2.3.7] - 2026-03-11
### Added
- Remote user questions via Slack/Discord for headless auto-mode sessions
### Fixed
- Auto-mode model switches no longer persist as the user's global default (#30 )
- Auto-mode resume now rebuilds disk state and runs doctor before dispatching, preventing inline execution after pause (#16 )
- Silent dispatch failure when command context is null now surfaces an error notification
- Race condition between timeout handlers and prompt dispatch in auto-mode
- Remote questions: validate IDs before test-send, sanitize error messages to prevent token leakage
- Remote questions: cap user_note at 500 chars to prevent LLM context injection
- Remote questions: validate channel ID format to prevent SSRF
- Remote questions: add 15s per-request fetch timeout to adapters
- Remote questions: distinguish Discord 404 from auth errors in reactions
- Prompt store sorting uses `updatedAt` instead of filename
- TypeScript parameter properties desugared for `--experimental-strip-types` compatibility
### Changed
- Remote question result details use discriminated union type
2026-03-11 17:23:02 -06:00
## [2.3.6] - 2026-03-11
### Fixed
- Postinstall no longer triggers hidden `sudo` prompt on Linux — Playwright's `--with-deps` flag is no longer run automatically, preventing `npm install -g` from appearing to hang (#67 )
- Auto-commit dirty files before branch switch to prevent lost work during slice transitions
### Changed
- Updated README to reflect current commands, extensions, and step mode workflow
2026-03-11 16:58:57 -06:00
## [2.3.5] - 2026-03-11
### Fixed
- Voice extension: transcription no longer lost when pausing and resuming recording
2026-03-11 16:44:24 -06:00
## [2.3.4] - 2026-03-11
### Added
- CHANGELOG.md with curated history from v0.1.6 onwards
- Project-local `/publish-version` command for npm releases
- GitHub Sponsors funding configuration
- npm publish and install smoke test
2026-03-11 16:26:07 -06:00
## [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
2026-03-12 22:06:44 -06:00
[Unreleased]: https://github.com/gsd-build/gsd-2/compare/v2.7.0...HEAD
[2.7.0]: https://github.com/gsd-build/gsd-2/compare/v2.6.0...v2.7.0
2026-03-12 21:38:19 -06:00
[2.6.0]: https://github.com/gsd-build/gsd-2/compare/v2.5.1...v2.6.0
2026-03-12 15:32:20 -06:00
[2.5.1]: https://github.com/gsd-build/gsd-2/compare/v2.5.0...v2.5.1
2026-03-12 13:24:20 -06:00
[2.5.0]: https://github.com/gsd-build/gsd-2/compare/v2.4.0...v2.5.0
2026-03-12 11:16:12 -06:00
[2.4.0]: https://github.com/gsd-build/gsd-2/compare/v2.3.11...v2.4.0
2026-03-12 10:06:13 -06:00
[2.3.11]: https://github.com/gsd-build/gsd-2/compare/v2.3.10...v2.3.11
2026-03-12 09:21:33 -06:00
[2.3.10]: https://github.com/gsd-build/gsd-2/compare/v2.3.9...v2.3.10
2026-03-12 09:08:40 -06:00
[2.3.9]: https://github.com/gsd-build/gsd-2/compare/v2.3.8...v2.3.9
2026-03-11 18:12:53 -06:00
[2.3.8]: https://github.com/gsd-build/gsd-2/compare/v2.3.7...v2.3.8
2026-03-11 17:43:00 -06:00
[2.3.7]: https://github.com/gsd-build/gsd-2/compare/v2.3.6...v2.3.7
2026-03-11 17:23:02 -06:00
[2.3.6]: https://github.com/gsd-build/gsd-2/compare/v2.3.5...v2.3.6
2026-03-11 16:58:57 -06:00
[2.3.5]: https://github.com/gsd-build/gsd-2/compare/v2.3.4...v2.3.5
2026-03-11 16:44:24 -06:00
[2.3.4]: https://github.com/gsd-build/gsd-2/compare/v0.3.3...v2.3.4
2026-03-11 16:26:07 -06:00
[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