Releases: gsd-build/gsd-2
Releases · gsd-build/gsd-2
v2.34.0
Added
Fixed
- release stranded bootstrap locks and handle re-entrant reacquire (#1352)
- add JS fallbacks for wrapTextWithAnsi and visibleWidth when native addon unavailable (#1418) (#1428)
- emit agent_end after abort during tool execution (#1414) (#1417)
- auto-discard bootstrap crash locks and clean auto.lock on exit (#1397)
- harden quick-task branch lifecycle — disk recovery + integration branch guard (#1342)
- skip verification retry on spawn infra errors (ETIMEDOUT, ENOENT) (#1340)
- keep external GSD state stable in worktrees (#1334)
- stop excluding all .gsd/ from commits — only exclude runtime files (#1326) (#1328)
- handle ECOMPROMISED in uncaughtException guard and align retry onCompromised (#1322) (#1332)
v2.33.1
v2.33.0
Added
- add live regression test harness for post-build pipeline validation (#1316)
Fixed
- align retry lock path with primary lock settings to prevent ECOMPROMISED (#1307)
- skip symlinks in makeTreeWritable to prevent EPERM on NixOS/nix-darwin (#1303)
- handle Windows EPERM on .gsd migration rename with copy+delete fallback (#1296)
- add actionable recovery guidance to crash info messages (#1295)
- resolve main repo root in worktrees for stable identity hash (#1294)
- merge quick-task branch back to original after completion (#1293)
Changed
- extract tryMergeMilestone to eliminate 4 duplicate merge paths in auto.ts (#1314)
- dispatch loop hardening — defensive guards, regression tests, lock alignment (#1310)
- extract parseUnitId() to centralize unit ID parsing (#1282)
- extract getErrorMessage() helper to eliminate 65 inline duplicates (#1280)
- consolidate DB-fallback inline functions in auto-prompts (#1276)
v2.32.0
Added
- always-on health widget and visualizer health tab expansion (#1286)
- environment health checks, progress score, and status integration (#1263)
Fixed
- skip crash recovery when auto.lock was written by current process (#1289)
- load worktree-cli extension modules via jiti instead of static ESM imports (#1285)
- gsd: prevent concurrent dispatch during skip chains (#1272) (#1283)
- skip non-artifact UAT dispatch in auto-mode (#1277)
Changed
- deduplicate knownUnitTypes and STATE_REBUILD_MIN_INTERVAL_MS constants (#1281)
- extract prompt builder helpers for inlined context and source file lists (#1279)
- extract createGitService() factory, remove debug logs (#1278)
- extract dispatchUnit helper, inline dead buildDocsCommitInstruction (#1275)
- unify unit-type switch statements into lookup map (#1273)
v2.31.2
v2.31.1
v2.31.0
Added
- add aws-auth extension for automatic Bedrock credential refresh (#1253)
- add -w/--worktree CLI flag for isolated worktree sessions (#1247)
Fixed
- remove stale git-commit assertion in worktree test after commit_docs removal
- remove commit_docs test that broke CI after type removal (#1258)
- replace blanket git clean .gsd/ with targeted runtime file removal (#1252)
- invalidate caches inside discuss loop to detect newly written slice context (#1249)
- robust prose slice header parsing — handle H1-H4, bold, dots, no-separator variants (#1248)
- clean up stranded .gsd.lock/ directory to prevent false lock conflicts (#1251)
Changed
- remove dead commit_docs preference (incompatible with external .gsd/ state) (#1258)
v2.30.0
Added
- add extension manifest + registry for user-managed enable/disable (#1238)
- add model health indicator to auto-mode progress widget (#1232)
- simplify auto pipeline — merge research into planning, mechanical completion (ADR-003) (#1235)
- add create-gsd-extension skill (#1229)
- add built-in skill authoring system (ADR-003) (#1228)
- prefs: two-step provider→model picker in preferences wizard (#1218)
- workflow templates — right-sized workflows for every task type (#1185)
Fixed
- align react-best-practices skill name with directory name (#1234)
- gate slice progression on UAT verdict, not just file existence (#1241)
- invalidate caches before roadmap check in /gsd discuss (#1240)
- use shell: true for LSP spawn on Windows to resolve .cmd executables (#1233)
- increase headless new-milestone timeout and limit investigation scope (#1230)
- clean untracked .gsd/ files before squash-merge to prevent failure (#1239)
- graceful fallback when native addon is unavailable on unsupported platforms (#1225)
- replace ambiguous double-question in discussion reflection step (#1226)
- kill non-persistent bg processes between auto-mode units (#1217)
- Two-column dashboard layout with task checklist (#1195)
Changed
- move .gsd/ to external state directory with symlink (ADR-002) (#1242)
- replace MCPorter with native MCP client (#1210)
- extend json-persistence utility and migrate top JSON I/O callsites (#1216)
- deduplicate dispatchDoctorHeal — keep single copy in commands-handlers.ts (#1211)
- remove facade re-exports from auto.ts — import directly from source modules (#1214)
- extract shared HTTP client for remote-questions adapters (#1212)
v2.29.0
Added
- add searchExcludeDirs setting for @ file autocomplete blacklist (#1202)
- ci: automate prod-release with version bump, changelog, and tag push (#1194)
- auto-open HTML reports in default browser on manual export (#1164)
- upgrade to Node.js 24 LTS across CI, Docker, and package config (#1165)
- add /gsd logs command to browse activity, debug, and metrics logs (#1162)
- browser-tools: configurable screenshot resolution, format, and quality (#1152)
- add pre-commit secret scanner and CI secret detection (#1148)
- mcporter: add .gsd/mcp.json per-project MCP config support (#1141)
- metrics: add API request counter for copilot/subscription users (#1140)
- per-milestone depth verification + queue-flow write-gate (#1116)
- add OSC 8 clickable hyperlinks for file paths in export notifications (#1114)
- park/discard actions for in-progress milestones (#1107)
- ci: implement three-stage promotion pipeline (Dev → Test → Prod) (#1098)
- cache-ordered prompt assembly and dashboard cache hit rate (#1094)
- add comprehensive API key manager (/gsd keys) (#1089)
- ci: add multi-stage Dockerfile for CI builder and runtime images
- gsd: add directory safeguards for system/home paths (#1053)
- enhance HTML report with derived metrics, visualizations, and interactivity (#1078)
- auto-extract lessons to KNOWLEDGE.md on slice/milestone completion (#711) (#1081)
- auto-create PR on milestone completion (#687) (#1084)
- wire semantic chunking, add preferences, metrics, and docs
- add token optimization suite for prompt caching, compression, and smart context selection
- autocomplete: add /thinking completions, GSD subcommand descriptions, and test coverage (#1019)
- add respectGitignoreInPicker setting for @ file picker (#979) (#1016)
- prefs: add search_provider to preferences.md (#1001)
- add
--eventsflag for JSONL stream filtering (#1000) - add 10 bundled skills for UI, quality, and code optimization (#999)
- ux: group model list by provider in /gsd prefs wizard (#993)
- add
--answersflag for headless answer injection (#982) - add project onboarding detection and init wizard
Fixed
- ci: add npm publish to prod-release and prevent mid-deploy cancellation (#1208)
- ci: use env var for Discord webhook secret in if-condition
- complete shared barrel exports and add import-claude to help text (#1198)
- broaden unit-runtime path sanitization to strip all unsafe characters
- detect stale bundled resources via content fingerprint (#1193)
- include promptGuidelines in customPrompt path of buildSystemPrompt (#1187)
- prevent branch-mode merge fallback from firing in worktree isolation (#1183)
- treat auto-discovered verification failures as advisory, not blocking (#1188)
- ci: remove @latest npm promotion from pipeline
- ci: skip GitHub release creation when tag already exists
- handle Windows non-ASCII paths in cpSync with copyFileSync fallback (#1181)
- non-blocking verification gate for auto-discovered commands (#1177)
- add defensive guards against undefined .filter() in auto-mode dispatch/recovery (#1180)
- sync living docs (DECISIONS/REQUIREMENTS/PROJECT/KNOWLEDGE) between worktree and project root (#1173)
- route needs-discussion phase to interactive flow instead of stopping (#1175)
- run resource-skew check before early TTY gate
- move TTY check before heavy initialization to prevent process hang
- ci: skip init smoke test in non-TTY CI environments (#1172)
- ci: skip publish when version already exists on npm (#1166)
- ci: use local binary for pipeline smoke test (#1163)
- prevent concurrent GSD sessions from overlapping on same project (#1154)
- exclude completion-transition errors from health escalation at task level (#1157)
- ci: skip git-diff guard in prepublishOnly during CI (#1160)
- /gsd quick respects git isolation: none preference (#1156)
- text-based fallbacks for RPC mode where TUI widgets produce empty turns (#1112)
- headless-query: use jiti to load extension .ts modules (#1143)
- pause auto-mode when env variables needed instead of blocking (#1147)
- ci: fix dev-publish version stamp and platform sync (#1145)
- google-search: add 30s timeout to Gemini API call (#1139)
- verification-gate: sanitize preference commands with isLikelyCommand (#1138)
- auto-dashboard: show trigger task label for hook units (#1136)
- auto-worktree: detect worktree structurally when originalBase is null (#1135)
- model-resolver: prefer provider's recommended variant over saved base model (#1131)
- auto-worktree: auto-commit project root dirty state before milestone merge (#1130)
- guided-flow: support re-discuss flow for already-discussed slices (#1129)
- dispatch guard skips parked milestones — they no longer block later milestone dispatch (#1126)
- worktree reassess-roadmap loop — existsSync fallback in checkNeedsReassessment (#1117)
- lsp: use where.exe on Windows to resolve command paths (#1134)
- gsd-db: auto-initialize database when tools are called (#1133)
- inline preferences path to fix remote questions setup (#1110) (#1111)
- ci: add safe.directory for containerized pipeline job (#1108)
- remove .gsd/ from tracking, ignore entire directory
- update tests for god-file decomposition
- strip model variant suffix for API key auth (#1097) (#1099)
- match both milestoneId and sliceId when filtering duplicate blocker cards
- add dispatch stall guards to prevent auto-mode pause after slice completion (#1073) (#1076)
- prevent summarizing phase stall by retrying dropped agent_end events (#1072) (#1074)
- use atomic writes for completed-units.json and invalidate caches in db-writer (#1069)
- reject prose Verify: fields from being executed as shell commands (#1066) (#1068)
- restore session model on error instead of reading stale global prefs (#1065) (#1067)
- prevent run-uat re-dispatch loop when roadmap checkbox update fails (#1063) (#1064)
- inline compareSemver in gsd extension to fix broken relative import (#1058)
- disable reasoning for MiniMax-M2.5 in alibaba-coding-plan provider (#1003) (#1055)
- improve LSP diagnostics when no servers detected (#1082) (#1086)
- prevent summarizing phase stall by retrying dropped agent_end events (#1072)
- switch alibaba-coding-plan to OpenAI-compat endpoint with proper compat flags (#1003)
- add barrel files for remote-questions, ttsr, and shared extensions (#1048)
- consolidate frontmatter parsing into shared module (#1040)
- always ensure tasks/ directory exists for slice units (#900) (#1050)
- centralize GSD timeout and cache constants (#1038)
- improve RemotePromptRecord.ref type safety (#1041)
- document silent catch handlers in browser-tools (#1037)
- use literal union types in RuntimeErrorJSON for type safety (#1034)
- extract sanitizeError to shared module and apply to ask-user-questions (#1033)
- deduplicate formatDateShort into shared/format-utils (#1032)
- add error handlers to visualizer overlay promise chains (#1027)
- security: use execFileSync in resolve-config-value to prevent shell operator bypass (#1025)
- security: use execFile for browser URL opening to prevent shell injection (#1022)
- prevent duplicate milestone IDs when generating multiple before persisting (#961) (#1018)
- consolidate duplicate formatting functions (#1011)
- gsd: delete orphaned complexity.ts (#1005)
- search: consolidate duplicate Brave API helpers (#1010)
- merge worktree to main when all milestones complete (#962) (#1007)
- gsd: deduplicate resolveGitHeadPath function (#1015)
- add missing package.json subpath exports and oauth stubs (#1014)
- gsd: consolidate string-array normalizer functions into shared utility (#1009)
- browser-tools: document intentional silent catches, add debug logging for others (#1013)
- consolidate duplicate VerificationCheck/Result type definitions (#1008)
- gsd: add GIT_NO_PROMPT_ENV to gitFileExec and deduplicate constant (#1006)
- remote-questions: add null coalesce for optional threadUrl (#1004)
- auto-resume on transient server errors, not just rate limits (#886) (#957)
- replace ambiguous compound question in reflection step (#963) (#1002)
- gsd: remove STATE.md update instructions from all prompts (#983)
- gsd: clear all caches after discuss dispatch so picker sees new CONTEXT files (#981)
- auto: dispatch retry after verification gate failure (#998)
- enforce GSDError usage and activate unused error codes (#997)
- unify extension discovery logic (#995)
- deduplicate tierLabel/tierOrdinal exports (#988)
- deduplicate getMainBranch implementations (#994)
- add error handling for unhandled promise rejections (#992)
- deduplicate formatTokenCount into shared format-utils (#987)
- add debug logging to silent catch blocks in auto.ts (#986)
- deduplicate formatDuration into shared format-utils (#989)
- add exports fields to pi-tui and pi-agent-core packages (#991)
- remove dead github-client.ts (never imported) (#990)
- deduplicate parseJSONL and unify MAX_JSONL_BYTES constant (#985)
- remove broken ./hooks export path from pi-coding-agent (#984)
- inline bundled extension path parsing in subagent
Changed
- extract numeric validation helpers in prefs wizard (#1205)
- deduplicate projectRoot() and dispatchDoctorHeal() between commands.ts and commands-handlers.ts (#1203)
- extract shared JSON persistence utility, migrate metrics + routing-history + unit-runtime (#1206)
- remove unused preferences-hooks.ts re-export facade (#1207)
- remove commands.ts re-exports, import directly from submodules (#1204)
- extract frontmatter body extraction into shared helper (#1201)
- deduplicate projectRoot() — single source in commands.ts (#1197)
- extract PER_REQUEST_TIMEOUT_MS to shared types (#1196)
- update state — S01 planned, ready for execution
- M001-1ya5a3/S01: auto-commit after state-rebuild
- M001-1ya5a3/S01: auto-commit after research-slice
- decompose doctor.ts into types, format,...
v2.28.0
Added
gsd headless querycommand for instant, read-only state inspection — returns phase, cost, progress, and next-unit as parseable JSON without spawning an LLM session/gsd updateslash command for in-session self-update/gsd export --html --allfor retrospective milestone reports
Fixed
- Failure recovery & resume safeguards: atomic file writes, OAuth fetch timeouts (30s), RPC subprocess exit detection, extension command context guards, bash temp file cleanup, settings write queue flush, LSP init retry with backoff, crash detection on session resume, blob garbage collection
- Consolidated duplicate
mcp-server.tsinto single implementation - Consolidated duplicate
bundled-extension-paths.tsinto single module - Removed duplicate
marketplace-discovery.test.tstest file - Established npm as canonical package manager
- Exported RPC utilities from pi-coding-agent public API
- Prompt system requires grammatical narration for clearer agent output
Changed
- Updated documentation for v2.26 and v2.27.0 features
- Documented all
preferences.mdfields in reference and template - Removed stale
.pi/agents/files superseded by built-in agent definitions
Install/upgrade: npx gsd-pi@latest