* Initial plan * fix: add discardUntrackedRuntimeFiles to handle STATE.md checkout conflicts Co-authored-by: glittercowboy <186001655+glittercowboy@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TÂCHES <afromanguy@me.com> Co-authored-by: glittercowboy <186001655+glittercowboy@users.noreply.github.com>
24 KiB
24 KiB
Changelog
All notable changes to GSD are documented in this file.
Format based on Keep a Changelog.
Unreleased
Fixed
- Fixed residual
gsd autobranch-switch failure:git checkout -- .gsd/only reverts tracked runtime files; a newdiscardUntrackedRuntimeFilesstep (git clean -fdx) now also removes untracked runtime files (e.g.STATE.md) that would otherwise trigger "The following untracked working tree files would be overwritten by checkout" when the target branch still has them committed
2.10.8 - 2026-03-14
Fixed
- Publish verification checks
dist/loader.jsis non-empty (-s) and uses--ignore-scriptsonnpm pack --dry-runto match actual publish behaviour (#298)
2.10.7 - 2026-03-14
Added
- GitHub Workflows skill with CI workflow template and
ci_monitortool (#294) - Auto-resolve merge conflicts via LLM-powered fix-merge session
- Auto-update integration branch when user starts auto-mode from a different branch (#300)
Changed
- Secrets manifest is re-checked before every dispatch, not just at auto mode start
- Replaced TS parameter properties with explicit fields for Node strip-types compatibility
- Hardened CI publish pipeline to prevent broken releases (#304)
Fixed
- Unresolvable artifact paths now correctly treated as stale completion state, preventing OOM crashes (#313)
- Eliminated branch checkout during slice merge that caused STATE.md conflicts (#307)
- Removed infinite delivery retry loop for background job completions (#301)
- Display ⌥ instead of Alt for keybindings on macOS (#299)
Removed
- Deprecated legacy dead code from OAuth module
2.10.6 - 2026-03-13
Added
- Native Rust output truncation module for efficient large-output handling (#268)
- Native Rust xxHash32 hasher for hashline IDs — faster line hashing (#272)
- Native Rust bash stream processor for single-pass chunk processing (#271)
- Memory extraction pipeline (#261)
claude-opus-4-6model with 1M context window (#288)
Fixed
- Oversized TUI lines now truncated instead of crashing (#287)
- Anthropic rate limit backoff now respects server-requested retry delay
- CI publish guard: skip main package publish if already on npm
2.10.5 - 2026-03-13
Fixed
optionalDependenciesin publishedgsd-pi@2.10.4were still pinned to2.10.2, causing users to install the broken engine binaries that 2.10.4 was meant to fix (#276)
2.10.4 - 2026-03-13
Fixed
- Native binary distribution —
.nodebinaries were missing from the npm tarball, causing startup crashes on all platforms since v2.10.0 - Native loader resolution chain: tries
@gsd-build/engine-{platform}npm package first, then local dev build, with clear error messages listing supported platforms
Added
- Per-platform optional dependency packages (
@gsd-build/engine-*) for macOS (ARM64/x64), Linux (x64/ARM64), and Windows (x64) - Cross-platform native binary CI build and publish workflow
- Version synchronization script for lock-step platform package releases
2.10.2 - 2026-03-13
Added
- Native Rust TTSR regex engine — pre-compiles all stream rule conditions into a single
RegexSetfor one-pass DFA matching instead of O(rules × conditions) JS regex iteration - Native Rust diff engine — fuzzy text matching (
fuzzyFindText,normalizeForFuzzyMatch) and unified diff generation (generateDiff) via thesimilarcrate, replacing thediffnpm package - Native Rust GSD file parser — frontmatter parsing, section extraction, batch
.gsd/directory parsing, and structured roadmap parsing with transparent JS fallback
2.10.1 - 2026-03-13
Fixed
@gsd/nativepackage ships pre-compiled JavaScript instead of raw TypeScript, fixing startup crashes on Node.js 20, 22, and 24 (#248)
2.10.0 - 2026-03-13
Added
- Native Rust engine with high-performance N-API modules replacing JS/WASM dependencies:
- grep — ripgrep-backed content and filesystem search
- glob — gitignore-aware file discovery with scan caching
- ps — cross-platform process tree management
- clipboard — native clipboard access via arboard (text + image)
- highlight — syntect-based syntax highlighting (replaces
cli-highlight) - ast — structural code search and rewrite via ast-grep (38+ languages)
- html — HTML-to-Markdown conversion
- text — ANSI-aware text measurement, wrapping, truncation, and slicing
- fd — fuzzy file path discovery for autocomplete
- image — decode, encode, and resize images (PNG, JPEG, GIF, WebP)
- Background shell
envaction to query shell session environment state - Background shell
runaction for blocking command execution on persistent sessions - Background shell
sessionprocess type for persistent interactive sessions - Hashline edits — line-hash-anchored file editing
- Universal config discovery extension
Changed
- Find tool uses native Rust glob instead of
fdCLI binary - Syntax highlighting uses native syntect instead of
cli-highlightnpm package - Autocomplete uses native fd module instead of
fdCLI subprocess - Text utilities (visible width, wrapping, truncation, slicing) use native Rust instead of JS
- Clipboard operations use native arboard instead of platform-specific CLI tools
- Image processing uses native Rust
imagecrate instead of Photon WASM
Fixed
- Prevent move operation from silently overwriting existing files
- Separate access/unlink error handling in delete path
- Untrack runtime files from slice branch before squash-merge
- Copy LSP defaults.json to dist during build
- Native module test assertions
2.9.0 - 2026-03-13
Added
- LSP tool — full Language Server Protocol integration with diagnostics, go-to-definition, references, hover, document/workspace symbols, rename, code actions, type definition, and implementation support
/thinkingslash command for toggling thinking level during sessions- Interactive wizard mode for
/gsd prefswith guided configuration - Startup update check with 24-hour cache — notifies when a new version is available
Fixed
- TypeScript type errors across gsd, browser-tools, search-the-web, and misc extension files
- Milestone ID generation uses max-based approach instead of length+1 (prevents ID collisions)
- Non-thinking models handled correctly in
/thinkingcommand - Auto-mode pauses on provider errors to prevent reassess-roadmap loop
- TAB hint displayed for notes input in discuss-mode survey
- Slice branches merge to integration branch instead of main
- Prefs wizard audit findings addressed
- Deduplicated maxNum logic with test coverage
- Command injection eliminated in LSP config
which()function - Unhandled JSON.parse in LSP message reader wrapped with error handling
2.8.3 - 2026-03-13
Fixed
ask_user_questionshandles undefinedcustom()result in RPC mode- Provider-aware model resolution for per-phase preferences (respects
providerfield instead of parsing model name prefixes) - Execute-task artifact verification aligned with
deriveState— adds self-repair for missing artifacts - Research phase infinite loop broken; state synced on stop
- Auto-resolve merge conflicts on
.gsd/runtime files - Auto-switch model after
/loginand/logoutto prevent API key errors - Anthropic provider detection uses
providerfield instead of model name prefix matching
2.8.2 - 2026-03-13
Fixed
- Path operations use
node:pathstdlib instead of hardcoded forward slashes, fixing cross-platform compatibility - Prompts use relative paths to prevent Windows drive letter mangling
- Runtime files already in the git index are untracked to prevent merge conflicts
- HTTP_PROXY and HTTPS_PROXY environment variables respected for all outbound requests
- Windows NUL redirects sanitized to /dev/null in Git Bash environments
Changed
.claude/and.gsd/directories untracked from repo,*.tgzgitignored
2.8.1 - 2026-03-13
Added
- Discussion depth verification and context write-gate for richer milestone discussions
- TTSR + blob/artifact storage (ported from oh-my-pi)
- Skip/discard escape hatches in no-roadmap wizard
- Configurable
merge_strategypreference for slice completion
Fixed
fseventsbumped to ~2.3.3 for Node 25 compatibility; added as optional dep for Linux installs- Observability warnings injected into agent prompt for enforcement
- Auto-detect headless environment for Playwright browser launch
- UAT artifact verified before marking complete-slice done
- Prior slices must complete on main before next slice dispatches
- smartStage fallback bypasses runtime exclusions when
.gsd/is gitignored /exituses graceful shutdown instead of hard kill
2.8.0 - 2026-03-13
Added
- Browser tools:
browser_analyze_formandbrowser_fill_form— form field inventory and intelligent filling by label/name/placeholder - Browser tools:
browser_find_best— scored element candidates for semantic intents - Browser tools:
browser_act— execute common browser micro-tasks in one call - Browser tools: 108 unit and integration tests covering all new components
Changed
- Browser tools: decomposed 5000-line monolithic
index.tsinto focused modules (state, capture, settle, lifecycle, refs, utils) with 11 categorized tool files - Browser tools: consolidated state capture reduces evaluate round-trips per action
- Browser tools: zero-mutation settle short-circuit for faster page interaction
- Browser tools: conditional body text capture — low-signal tools skip it for smaller token payloads
- Browser tools: screenshot resizing uses
sharpinstead of canvas evaluate calls - Browser tools: screenshots opt-in on navigate (no longer sent by default)
2.7.1 - 2026-03-13
Added
- Model fallback support for auto-mode phases — if the configured model fails, GSD tries alternate models before stopping
/killcommand for immediate process termination
Fixed
npm install -g gsd-pinow works — workspace packages bundled in npm tarball viabundleDependencies- External PI ecosystem packages (pi-rtk, pi-context, etc.) can now resolve
@mariozechner/*imports through jiti aliases - Missing
export-htmlvendor files (marked.min.js, highlight.min.js) restored - Skipped API keys now persist so the setup wizard doesn't repeat on every launch
- Provider config and extension loading reused correctly
Changed
/exituses graceful shutdown (saves session state);/killreplaces the old immediate-exit behavior
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-packagefrom devDependencies and postinstall.
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/-cCLI flag to resume the most recent session
Fixed
- Doctor post-hook no longer preempts
complete-slicedispatch main_branchpreference restored;runPreMergeCheckimplemented 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
2.5.1 - 2026-03-12
Added
secure_env_collectnow 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
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_KEYis set - Restore notifications suppressed on session resume to reduce UX noise
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.themeis undefined (#121)
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 configsubcommand to re-run the setup wizard anytime- Shared
src/logo.tsmodule as single source of truth for ASCII banner
Fixed
- Parallel subagent results no longer truncated at 200 characters
Changed
wizard.tstrimmed to env hydration only — onboarding logic moved toonboarding.ts- First-launch banner removed from
loader.ts(onboarding wizard handles branding)
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)
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
execFileto avoid single-quote shell issues (#103) - Broken
read @GSD-WORKFLOW.mdreferences replaced with/gsdcommand (#88) - Google Search extension updated to use
gemini-2.5-flash(#83) - Duplicate
getCurrentBranchimport in auto.ts (#87) formatCostcrash on non-number cost values (#74)- Avoid
sudoprompts in postinstall script (#73) .gsd/folder removed from git tracking; consolidated.gitignore(#78)- Multiple community-reported bugs across CLI, auto-mode, and extensions
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-sliceis bypassed (#71)
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
updatedAtinstead of filename - TypeScript parameter properties desugared for
--experimental-strip-typescompatibility
Changed
- Remote question result details use discriminated union type
2.3.6 - 2026-03-11
Fixed
- Postinstall no longer triggers hidden
sudoprompt on Linux — Playwright's--with-depsflag is no longer run automatically, preventingnpm install -gfrom 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
2.3.5 - 2026-03-11
Fixed
- Voice extension: transcription no longer lost when pausing and resuming recording
2.3.4 - 2026-03-11
Added
- CHANGELOG.md with curated history from v0.1.6 onwards
- Project-local
/publish-versioncommand for npm releases - GitHub Sponsors funding configuration
- npm publish and install smoke test
0.3.3 - 2026-03-11
Added
/gsd nextstep mode — walk through units one at a time with a wizard between each/gsdbare command defaults to step mode/exitcommand to kill the GSD process immediately/clearas alias for/new(new session)- MCPorter extension for lazy on-demand MCP server integration
/voiceextension 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-runcommand (replaced by/gsdand/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-runhardcoded~/.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—.planningto.gsdmigration 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.jsonversion 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