From 75895091562d8ef589015d7b65cb9f62b1e2795b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 3 Apr 2026 06:18:06 +0000 Subject: [PATCH] release: v2.59.0 --- CHANGELOG.md | 118 +++++++++++++++++++++++- native/npm/darwin-arm64/package.json | 2 +- native/npm/darwin-x64/package.json | 2 +- native/npm/linux-arm64-gnu/package.json | 2 +- native/npm/linux-x64-gnu/package.json | 2 +- native/npm/win32-x64-msvc/package.json | 2 +- package.json | 2 +- packages/pi-coding-agent/package.json | 2 +- pkg/package.json | 2 +- 9 files changed, 125 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c39890e6a..edef4c9a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,121 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [2.59.0] - 2026-04-03 + +### Added +- **extensions**: add Ollama extension for first-class local LLM support (#3371) +- **doctor**: stale commit safety check with gsd snapshot and auto-cleanup +- **extensions**: wire up topological sort and unified registry filtering (#3152) +- **widget**: add last commit display and dashboard layout improvements (#3226) +- **model-routing**: enable dynamic routing by default (#3120) +- **vscode**: sidebar redesign, SCM provider, checkpoints, diagnostics [3/3] +- **splash**: add remote channel indicator to welcome screen tools row +- stream full text and thinking output in headless verbose mode (#2934) +- **gsd**: add codebase map — structural orientation for fresh agent contexts + +### Fixed +- **worktree**: resolve merge conflict for PR #3322 — adopt comprehensive pre-merge cleanup +- **merge**: clean stale MERGE_HEAD before squash merge (#2912) +- **state**: always run disk→DB reconciliation when DB is available (#2631) +- **git-service**: fix merge-base ancestry check and .gsd/ leakage in snapshot absorption +- **extensions**: update provides.hooks in 7 extension manifests to match actual registrations (#3157) +- surface nativeCommit errors in reconcileMergeState instead of silently swallowing (#3052) +- **parallel**: scope commits to milestone boundaries in parallel mode (#3047) +- add windowsHide to all web-mode subprocess spawns (#2628) (#3046) +- skip auto-mode pause on empty-content aborted messages (#2695) (#3045) +- detect and remove nested .git dirs in worktree cleanup to prevent data loss (#3044) +- prevent data loss when git isolation default changes (#2625) (#3043) +- **read-tool**: clamp offset to file bounds instead of throwing (#3007) (#3042) +- **gsd**: preserve queued milestones with worktrees in ghost detection (#3041) +- **compaction**: add chunked fallback when messages exceed model context window (#3038) +- preserve interactive terminal across tab switches and project changes (#3055) +- call cleanupQuickBranch on turn_end to squash-merge quick branch back (#3054) +- align run-uat artifact path to ASSESSMENT, preventing false stuck retries (#3053) +- replace invalid Discord invite links with canonical URL (#3056) +- add Windows shell guard to remaining spawn sites (#3058) +- route `gsd auto` to headless runner to prevent hang on piped stdin/stdout (#3057) +- respect .gitignore for .gsd/ in rethink prompt (#3059) +- migrate unit ownership from JSON to SQLite to eliminate read-modify-write race (#3061) +- **roadmap**: handle numbered, bracketed, and indented prose H3 headers in slice parser (#3063) +- add worktree-merge to resolveModelWithFallbacksForUnit switch and update KNOWN_UNIT_TYPES (#3066) +- clean up MERGE_HEAD on all error paths in mergeMilestoneToMain (#2912) (#3068) +- prevent LLM from confusing background task output with user input (#3069) +- add openai-codex provider and modern OpenAI models to MODEL_CAPABILITY_TIER and cost tables (#3070) +- preserve active tab when switching projects (#3071) +- include project name in desktop notifications (#3072) +- recover from many-image dimension overflow by stripping older images (#3075) +- resolve bare model IDs to anthropic over claude-code provider (#3076) +- **auto**: move selectAndApplyModel before updateProgressWidget (#3079) +- detect project relocation and recover state without data loss (#3080) +- add free-text input to ask-user-questions when "None of the above" is selected (#3081) +- block work execution during /gsd queue mode (#2545) (#3082) +- detect worktree basePath in gsdRoot() to prevent escaping to project root (#3083) +- invalidate stale quick-task captures across milestone boundaries (#3084) +- defer model validation until after extensions register (#3089) +- repair YAML bullet lists in malformed tool-call JSON (#3090) +- unify SUMMARY.md render paths for projection fidelity (#3091) +- chat mode misrepresents terminal output, looks stuck, omits user messages (#3092) +- resolve 4 state corruption bugs in milestone/slice completion (#2945) (#3093) +- isolate guided-flow session state and key discussion milestone queries (#2985) (#3094) +- **guided-flow**: route dispatchWorkflow through dynamic routing pipeline (#3153) +- skip external state migration inside git worktrees (#2970) (#3227) +- coerce non-numeric strings in DB columns during manifest serialization (#2962) (#3229) +- route allDiscussed and zero-slices paths to queued milestone discussion (#3150) (#3230) +- use loose equality for null checks in secure_env_collect (#2997) (#3231) +- prevent prompt explosion from $' in template replacement values (#2968) (#3232) +- resolve OAuth API key in buildMemoryLLMCall via modelRegistry (#2959) (#3233) +- **forensics**: read completion status from DB instead of legacy file (#3129) (#3234) +- use camelCase parameter names in execute-task and complete-slice prompts (#2933) (#3236) +- check bootstrap completeness in init wizard gate, not just .gsd/ existence (#2942) (#3237) +- specify write tool for PROJECT.md in milestone/slice prompts (#3238) +- widen completing-milestone gate to accept "None required" and similar phrasings (#2931) (#3239) +- prevent ask_user_questions from poisoning auto-mode dispatch (#2936) (#3240) +- guard null s.currentUnit in runUnitPhase closeout after stopAuto race (#2939) (#3241) +- replace `web_search` with `search-the-web` in prompts and agent frontmatter (#2920) (#3245) +- preserve milestone title in upsertMilestonePlanning when DB row pre-exists (#2879) (#3247) +- invalidate stale milestone validation on roadmap reassessment (#2957) (#3242) +- **discuss**: add roadmap fallback when DB is open but empty (#2892) (#3244) +- integrate Codex & Gemini CLI into provider routes and rate-limit handling (#2922) (#3246) +- **error-classifier**: widen STREAM_RE to cover all 7 V8 JSON parse error variants (#2916) (#3243) +- prevent git stash from destroying queued milestone CONTEXT files (#2505) (#3273) +- skip staleness rebuild in npm tarball installs (#2877) (#3250) +- **parallel**: check worktree DB for milestone completion in merge (#2812) (#3256) +- make claude-code provider stateful with full context and sidechain events (#2859) (#3254) +- **worktree**: preserve non-empty gsd.db during sync to prevent truncation (#2815) (#3255) +- align @gsd/native module type with compiled output (#3253) +- parse hook/* completed-unit keys correctly in forensics + doctor (#2826) (#3252) +- copy mcp.json into auto-mode worktrees (#2791) (#3251) +- add gsd_requirement_save and upsert path for requirement updates (#3249) +- handle pause_turn stop reason to prevent 400 errors with native web search (#2869) (#3248) +- use authoritative milestone status in web roadmap (#2807) (#3258) +- classify long-context entitlement 429 as quota_exhausted, not rate_limit (#2803) (#3257) +- **docs**: use ~/.pi/agent/extensions/ for community extension install path (#3131) (#3259) +- add disk→DB slice reconciliation in deriveStateFromDb (#2533) (#3262) +- run forensics duplicate detection before investigation (#2704) (#3260) +- skip TUI render loop on non-TTY stdout to prevent CPU burn (#3095) (#3263) +- persist forensics report context across follow-up turns (#2941) (#3261) +- invalidate workspace state on turn_end so milestones list stays current (#2706) (#3266) +- eliminate 3 recurring doctor audit false positives (#3105) (#3264) +- **web**: reconcile auto-mode state with on-disk lock in dashboard (#2705) (#3265) +- treat ghost milestones as ineligible for parallel execution (#2501) (#3268) +- redirect auto-mode to headless when stdout is piped (#2732) (#3269) +- attempt VACUUM recovery when initSchema fails with corrupt freelist (#2519) (#3270) +- resolve db_unavailable loop in worktree/symlink layouts (#2517) (#3271) +- correct OAuth fallback request shape for google_search (#2963) (#3272) +- prevent UAT stuck-loop and orphaned worktree after milestone completion (#3065) +- **mcp**: handle server names with spaces in mcp_discover (#3037) +- **gsd**: detect markdown body verdicts and guard plan-milestone against completed slices (#2960) (#3035) +- **error-classifier**: replace STREAM_RE whack-a-mole with catch-all V8 JSON.parse pattern +- type _borderColorKey as 'dim' | 'bashMode' to match ThemeColor +- **tui**: comprehensive TUI review — layout, flow, rendering, and state fixes +- **gsd**: harden codebase-map — bug fixes, UX polish, and expanded tests + +### Changed +- **state**: centralize pipeline logging through workflow logger (#3282) +- **gitignore**: exclude src/ build artifacts, scratch files, and .plans/ +- **complexity**: reclassify planning phases from standard to heavy tier + ## [2.58.0] - 2026-03-28 ### Added @@ -2154,7 +2269,8 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ### Changed - License updated to MIT -[Unreleased]: https://github.com/gsd-build/gsd-2/compare/v2.58.0...HEAD +[Unreleased]: https://github.com/gsd-build/gsd-2/compare/v2.59.0...HEAD +[2.59.0]: https://github.com/gsd-build/gsd-2/compare/v2.58.0...v2.59.0 [2.58.0]: https://github.com/gsd-build/gsd-2/compare/v2.57.0...v2.58.0 [2.57.0]: https://github.com/gsd-build/gsd-2/compare/v2.56.0...v2.57.0 [2.56.0]: https://github.com/gsd-build/gsd-2/compare/v2.55.0...v2.56.0 diff --git a/native/npm/darwin-arm64/package.json b/native/npm/darwin-arm64/package.json index ac07f8a64..0d5a8c47d 100644 --- a/native/npm/darwin-arm64/package.json +++ b/native/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@gsd-build/engine-darwin-arm64", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD native engine binary for macOS ARM64", "os": [ "darwin" diff --git a/native/npm/darwin-x64/package.json b/native/npm/darwin-x64/package.json index ef645779c..752bb7992 100644 --- a/native/npm/darwin-x64/package.json +++ b/native/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@gsd-build/engine-darwin-x64", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD native engine binary for macOS Intel", "os": [ "darwin" diff --git a/native/npm/linux-arm64-gnu/package.json b/native/npm/linux-arm64-gnu/package.json index dea68fe25..8ddd95630 100644 --- a/native/npm/linux-arm64-gnu/package.json +++ b/native/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@gsd-build/engine-linux-arm64-gnu", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD native engine binary for Linux ARM64 (glibc)", "os": [ "linux" diff --git a/native/npm/linux-x64-gnu/package.json b/native/npm/linux-x64-gnu/package.json index 043a52165..6fc0507e1 100644 --- a/native/npm/linux-x64-gnu/package.json +++ b/native/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@gsd-build/engine-linux-x64-gnu", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD native engine binary for Linux x64 (glibc)", "os": [ "linux" diff --git a/native/npm/win32-x64-msvc/package.json b/native/npm/win32-x64-msvc/package.json index 4f56ea3c7..b748effb3 100644 --- a/native/npm/win32-x64-msvc/package.json +++ b/native/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@gsd-build/engine-win32-x64-msvc", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD native engine binary for Windows x64 (MSVC)", "os": [ "win32" diff --git a/package.json b/package.json index fd99a34e9..534981159 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gsd-pi", - "version": "2.58.0", + "version": "2.59.0", "description": "GSD — Get Shit Done coding agent", "license": "MIT", "repository": { diff --git a/packages/pi-coding-agent/package.json b/packages/pi-coding-agent/package.json index 70eb8c1ed..4a0a40892 100644 --- a/packages/pi-coding-agent/package.json +++ b/packages/pi-coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@gsd/pi-coding-agent", - "version": "2.58.0", + "version": "2.59.0", "description": "Coding agent CLI (vendored from pi-mono)", "type": "module", "piConfig": { diff --git a/pkg/package.json b/pkg/package.json index d0c190750..74008559f 100644 --- a/pkg/package.json +++ b/pkg/package.json @@ -1,6 +1,6 @@ { "name": "@glittercowboy/gsd", - "version": "2.58.0", + "version": "2.59.0", "piConfig": { "name": "gsd", "configDir": ".gsd"