|
|
|
|
@ -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
|
|
|
|
|
|