Releases: gsd-build/gsd-2
Releases · gsd-build/gsd-2
v2.77.0
Added
- ci: dynamic system-specific verification checklists in pr-risk-check
- gsd-exec: add clean-root preflight gate + auto-stash to milestone completion (#4604)
- prefs: expose all KNOWN_PREFERENCE_KEYS through /gsd prefs wizard
- gsd: default context_mode to ON (opt-out via enabled:false)
- gsd: add gsd_exec_search, gsd_resume, and compaction snapshot (slice 2)
- gsd: add gsd_exec sandboxed tool-output execution (context-mode slice 1)
- tui: render skill invocations in purple chat-frame style
- add Layer 0 shell hooks + new Layer 2 events
- skills: add 9 gap-closing skills for GSD workflow coverage
- gsd: cutover to memories table as single source of truth (ADR-013 step 6)
- gsd: backfill decisions table into memories (ADR-013 step 5)
- gsd: memory-store auto-injection parity (ADR-013 step 4)
- skills: bundle 6 planning/design skills and surface hidden ones
- mcp: expose memory tools to external clients (ADR-013 step 3)
- gsd: add structured_fields column to memories table (ADR-013 step 2)
- gsd: wire new memory tools across agents and extract-learnings (Option A' dual-write)
Fixed
- gsd-db: writeBlockerPlaceholder DB update for plan-milestone + saveStuckState in standard path (#4634)
- gsd: add .mcp.json to ensureGitignore baseline
- worktree-resolver: re-throw all errors, not just MergeConflictError (#4633)
- run-unit: discard late-resolving newSession() after timeout to prevent root cwd tool runtime (#4632)
- auto-resume: use existing milestone worktree as dispatch context during crash recovery (#4628)
- gsd-db: prevent milestone status downgrade in reconcileWorktreeDb (#4372) (#4625)
- mcp-server: gsd_cancel falls back to milestone/process lookup for sessions without sessionId (#4618)
- worktree: prevent double-nested artifact paths when constructing paths inside worktree context (#4635)
- gsd-db: stamp SCHEMA_VERSION=21 inside v21 migration block (#4627)
- gsd-db: move memories.scope index creation inside v18 migration guard (#4630)
- auto-start: await showSmartEntry dispatch before checking milestone context in bootstrapAutoSession (#4631)
- register-hooks: pass toolName from tool_execution_start event to markToolStart (#4626)
- gsd-exec: derive artifact paths from meta file location, not JSON content (#4619)
- pre-execution-checks: strip backtick/quote annotation from input/output values before path check (#4623)
- dispatcher: guard SUMMARY.md write with existence check on re-dispatch (#4598) (#4622)
- ci: wrap agent prompt as numbered list in GitHub PR summary
- gsd: add doctor heal suggestion to plan gate failed error
- pi-coding-agent: apply redaction before file entry serialization in _rewriteFile() (#4617)
- welcome-screen: truncate Active row text to prevent terminal overflow
- gsd: handle worktree context fallback and sanitize paused session paths
- gsd: resolve three safety harness false-positive sources (#4576)
- gsd-exec: inject pre-exec gate failure context into re-dispatched plan-slice prompt (#4603)
- pi-ai: ensure tool function names non-empty for MiniMax (#4538) (#4602)
- mcp: add 10-minute timeout to ask_user_questions and secure_env_collect elicitation (#4597)
- db: repair invalid quality_gates DDL and add artifact-retry journal event (#4583)
- skills: quote descriptions containing colon-space in YAML frontmatter (#4595)
- auto-worktree: reorder shelter-before-stash and drop stash pathspec (#4600)
- safety: add file_change_allowlist to suppress false-positive unexpected-change warnings (#4596)
- gsd: parallel-research timeout no longer causes infinite dispatch loop (#4570)
- skills: quote SKILL.md description values containing ': '
- auto: pre-check provider request-readiness before unit dispatch (#4578)
- gsd: exempt completed-task outputs from ordering checks (#4071) (#4572)
- pi-ai: cap tool count at 128 for Groq provider (fixes #4376) (#4575)
- gsd: use cl100k_base encoding and provider-aware fallback in token counter (#4569)
- gsd: clear HARD BLOCK when write-gate state file is deleted (#4343) (#4577)
- gsd-extension: default permission mode to acceptEdits to prevent silent tool denial (#4383) (#4584)
- gsd-extension: wire tryRemoteQuestions into MCP ask_user_questions handler (#4585)
- model-routing: remove 32k cap for custom models and allow capabilities.supportsXhigh in models.json (#4587)
- tests: mark context_mode as exposed-outside-wizard
- gsd: update #3628 regression test anchor for multiple triggerTurn sites
- health-widget: guard requestRender after widget disposal
- auto: keep footer identical between normal and auto mode
- model-routing: probe claude.exe on Windows and guard OAuth routing for externalCli providers
- gsd: recover silent 'ready' signals and empty-intent turns in discuss flow
- pre-execution-checks: require import keyword before from-clause to prevent prose false positives (#4561)
- error-classifier: classify stream idle timeout and context overflow as transient (#4559)
- key-manager: add claude-code as first-class LLM provider in PROVIDER_REGISTRY
- gsd-exec: address adversarial review findings
- gsd: preserve slice parallel preferences
- gsd: strip stray backticks from annotated inputs
- gsd-exec: fix five code-review findings
- workflow-logger: add context-mode to LogComponent union
- pi-agent-core: cover sk-proj- and sk-admin- OpenAI key shapes
- db: guard idx_memories_scope on legacy schema (#4545)
- gsd: migrate legacy db before bootstrap indexes
- pi-agent-core: redact known secret shapes before persisting session log
- gsd: classify extra usage errors as rate limits
- gsd: load preferences from auto-start base path
- mcp: address CodeRabbit round-2 review on #4477 — 3 findings + regression test
- db: address review findings — closeDatabase resets unconditionally; add getDbStatus tests
- db: surface structured error on SQLite open failure; add open-time provider fallback
- file-change-validator: handle repos with single commit (no HEAD~1)
- resource-loader: sync bundled skills to ~/.agents/skills/ on launch
- init-wizard: create initial commit after git init (#4530)
- models: discover openai-compatible custom providers and parse think tags
- gsd: classify complete-slice as standard for routing
- gsd: preserve session model/thinking in auto mode
- mcp: address review feedback on #4477 — 4 bugs from Jeremy + CodeRabbit
- mcp: address CodeRabbit nitpicks on #4477
- mcp: rename details to structuredContent across MCP handlers
- gsd: classify complete-slice as standard for routing
- gsd: preserve session model/thinking in auto mode
- gsd: prefer valid user-local templates dir in prompt loader
- install: link @gsd-build/mcp-server workspace package
- search: narrow native web_search injection to providers that accept it
- gsd: preserve transient session-start reason
- blocklist account-unsupported models across auto restarts (#4513)
- gsd: pin explicit phase models
- gsd: pause transient session-start failures
- pi-ai: honor bearer auth for custom providers
- ci: address review findings and cross-platform hook tests
- ci: export hook event types and wire emitExtensionEvent in GSD wrapper
- gsd: return blocked instead of validating-milestone on stuck needs-remediation (#4506)
- gsd: bump remaining schema-version assertions to 21 after main merge
- gsd: second-round inline review fixes for ADR-013 migration
- gsd: honor models.json keys in provider doctor
- gsd: peer-review fixes for ADR-013 migration + CI failures
- skills: address PR 4505 inline review findings
- claude-code: preserve win32 claude.cmd selector in readiness check
- claude-code: fallback to claude shim when claude.cmd spawn fails on Windows
- gsd: detect Claude CLI on Windows PATH for provider doctor (#4503)
- gsd: migrate legacy db before bootstrap indexes
- gsd: require terminal milestone for doctor cleanup
- serialize saveDecisionToDb with async mutex to prevent file race condition
- prevent race condition in parallel decision saves
Changed
- skills: rename 4 skills to match GSD naming conventions
- consolidate OAuth provider tests into individual files and remove legacy test suite
- use regex patterns in .secretscanignore for OAuth credentials
- allowlist public Google OAuth credentials in secret scanner
- remove base64 obfuscation from Google OAuth credentials
v2.76.0
Added
- gsd: memory maintenance \u2014 cap cascade, decay observability, export/import (Phase 5)
- gsd: memory relationships / knowledge graph (Phase 4)
- gsd: hybrid keyword + semantic memory retrieval (Phase 3)
- gsd: memory ingestion + scope/tags (Phase 2)
- gsd: memory tools — capture_thought, memory_query, gsd_graph (Phase 1)
- web: surface CLI onboarding completion record in settings
- gsd: /gsd onboarding re-entry + setup hub disambiguation
- tui: refresh chat, footer, and welcome screen
- models: add gpt-5.4-mini to openai-codex list (#1215)
- gsd: ADR-011 Phase 2 mid-execution escalation (#3789)
- gsd: ADR-011 Phase 1 progressive planning (sketch-then-refine) (#3789)
- routing: add allow_flat_rate_providers opt-in (#4386)
- workflow: unified plugin system with modes and remote install
- pi-ai: add claude-opus-4-7 for Bedrock, Antigravity and OpenRouter (#4348)
- pi-ai: add claude-opus-4-7 model support
- remote: add Telegram command interface for auto-mode control
- theme: add tui-classic and web classic/vivid palettes (#4301)
- Added
/gsd debugGitBook and Mintlify feature pages, wired both… - Added specialistContext to debug-session-manager template and wir…
- Wired checkpoint and TDD gate logic into the continue handler: di…
- Extended session artifact with DebugCheckpoint/DebugTddGate inter…
- Wired diagnose-only and continue flows to prompt dispatch with ex…
- Implemented a V2 debug session store with atomic JSON persistence…
- gsd: add /gsd scan command for rapid codebase assessment
- pi-ai: support ANTHROPIC_BASE_URL env var for custom proxy endpoints (#4140)
- ask-user-questions: add optional markdown preview panel with side-by-side layout
Fixed
- extensions: widen emitBeforeProviderRequest model param with api
- search: gate native web_search on api shape, not provider ID (#4478)
- mcp: extend non-empty validation across all schema-loose/executor-strict tools
- mcp: reject empty slice fields in gsd_plan_milestone at schema layer
- gsd: normalize doctor worktree cwd paths
- gsd: skip dashboard git log outside repos
- gsd: handle symlinked gsd stash pathspec
- pi-coding-agent: preserve subagent tool list when --tools uses casing or extension names
- mcp: address peer review — narrow realpath catch, guard prefs throw, document queue race
- mcp: schema parity, guard hardening, queue timeout, session eviction (#4475)
- gsd: register memory-* LogComponent variants
- gsd: thread modelRegistry and sessionContextWindow through dispatch (#4142)
- gsd: /gsd onboarding no longer hangs the TUI on re-entry
- gsd: address #4468 CodeRabbit review — mention same-task outputs in blocking message
- gsd: exempt task's own output from pre-exec input check (#4459)
- gsd: address #4463 CodeRabbit review — preserve error text, guard DB, test 'done'
- onboarding: suppress duplicate intro banner on /gsd onboarding re-entry
- gsd: preserve dynamic routing provider prefixes
- gsd: resolve onboarding wizard module from deployed package root
- gsd: wrap notifications with column-aware wrapper (#4465)
- gsd: cascade skipped-slice status to its tasks (#4375)
- gsd: forbid drafting tests that reference gitignored paths
- gsd: address #4456 nitpicks — thread pi to setup hub, dedupe + O(1) step lookup
- gsd: honor 'not_yet' defer + use basePath for prefs path (#4457 review)
- gsd: promote CONTEXT-DRAFT.md in gsd_summary_save tool path
- gsd: use workflow-logger in onboarding-state catch (silent-catch test)
- gsd: respect resources rootDir in onboarding handler + state
- gsd: re-normalize separators after tilde expansion in normalizeFilePath
- gsd: pre-exec checks false-positive on directory inputs and ~/ paths
- gsd: confirm projection file exists before reporting success
- gsd: address CodeRabbit review on #4402 roadmap fix
- gsd: preserve ROADMAP.md sections after projection hook
- tui: CI green + apply review findings
- remote-questions: normalize remote answers to RoundResult shape
- gsd: reactivate deferred slice on plan-slice
- gsd: block code-extension fallback for non-JS explicit imports
- gsd: resolve asset imports in post-execution checks (#4411)
- tui: skip pinned Latest Output when text still on-screen (#4440)
- gsd: honour git.snapshots preference in doctor snapshot paths (#4420)
- ci: make version-check workflow parse cleanly + harden to issues-only
- gsd: cap dep summaries + scale preamble to context_window (#4435)
- ci: move @next dist-tag when version already published
- gsd: use path.relative() for LEARNINGS.md relative path (#4433 review)
- gsd: wire /gsd extract-learnings into the cross-session knowledge workflow (#4429)
- gsd: normalize python commands with leading whitespace (#4416)
- gsd: rewrite full 'py -N' token in normalizePythonCommand (#4416)
- gsd-db: add gsd_checkpoint_db tool to flush WAL during active session
- gsd: heal .gsd.migrating on resume path in startAuto (#4416)
- gsd: normalize python invocations on Windows in verification gate (#4416)
- gsd: remove hardcoded rg guidance from planning prompt fallback (#4416)
- gsd: self-heal symlinked .gsd staging to prevent silent data loss (#4423)
- gsd: pre-exec checks false-positive on URL and prose-annotated inputs (#4421)
- gsd: flip uok.gitops.turn_action default to "commit" (#4419)
- claude-code-cli: extract test bodies to documented functions
- claude-code-cli: address CodeRabbit review on #4425
- claude-code-cli: detect Windows .cmd shim in CLI readiness checks
- gsd: auto-mode stuck loop on research dispatch (#4414)
- gsd: compensating rollback on escalation write failure (pause-required)
- gsd: ADR-011 code-review findings — reconcile/restore state preservation, strict validation
- pi-ai: address coderabbit review comments on #4392
- pi-ai: wire thinking:{type} field and extend adaptive-thinking model coverage (#4392)
- gsd: preserve ADR-011 P2 columns through reconcileWorktreeDb
- gsd: post-ship review findings for ADR-011 Phase 2
- gsd: add missing TaskRow escalation fields to tests + paramsToTaskRow
- gsd: use valid LogComponent for escalation warnings
- auth: self-heal stale Anthropic OAuth credential (#4399)
- gsd: invalidate caches after branch-mode checkout and validate main_branch pref
- test: add getIsolationMode override in worktree-skip journal test
- gsd: create milestone branch on entry in isolation:branch mode (#4389)
- gsd: handle auto-mode limit errors with model fallback (#4373)
- ci: remove duplicate tmpdir import in journal-integration test
- workflow: path containment, direct-dispatch overrides, gist ext fallback
- pi-ai: pass xhigh effort natively for opus-4-7; fix Bedrock mapping; bump SDK to 0.90.0
- notifications: fire remote notification before desktop guard
- notifications: call sendRemoteNotification from sendDesktopNotification
- gsd-scan: use .gsd/codebase/ instead of .planning/codebase/
- gsd: redispatch active custom workflow steps
- remove Claude Code reference from forensics comment
- dispatch: reconcile DB when SUMMARY exists on disk (#4324)
- gsd: stage untracked files on symlink add fallback
- gsd: ignore glob-like plan inputs in pre-exec checks
- ci: rewrite version-check comment as array join to fix YAML syntax
- gsd: pause on complete-milestone disk/db mismatch
- gsd: detect repeated units across the stuck window
- dispatch: skip complete-milestone for DB-complete milestones (#4324)
- gsd: restore slice parallel guard nesting
- gsd: repair execute-task plan recovery checkboxes
- gsd: fail closed on finalize timeouts
- gsd: persist active custom workflow steps before dispatch
- gsd: increment unit dispatch counts on dispatch
- gsd: treat workflow validate and list as quick commands
- gsd: treat unexpected eof as transient network error
- gsd: preserve legacy cmux preference writes
- gsd: track queued wrapup skips before execution
- gsd: enable structured milestone questions in auto mode
- gsd: prefer canonical preferences paths
- gsd: cancel auto unit when model restore fails
- gsd: suppress built-in footer on session_start when auto-mode is active
- ci: resolve YAML syntax error in version-check workflow
- pi-ai: remove decommissioned Groq models
- ci: make rtk shared shim work in dist-test
- ci: keep resource extension types self-contained
- ci: avoid RpcClient private process type intersection
- ci: import isTruthy in rtk runtime
- doctor: suppress false Anthropic key missing warning when using claude-code
- ci: add strip-types shim for rtk-shared
- ci: restore canonical AssistantMessageEventStream export
- update: detect bun install via argv[1] path (#4145)
- gitignore: restore baseline ignore rules
- tests: isolate ExternalCli provider check in web onboarding tests
- web: add claude-code ExternalCli provider to onboarding catalog
- agent-session: call abort() before _disconnectFromAgent() in newSession/resumeSession (#4243)
- pi-ai: hide unsupported ChatGPT codex oauth models
- test: add test environment isolation for worktree and RTK tests
Changed
- gsd: route /gsd init preferences through unified writer
- remove accidentally-committed .mcp.json and .worktrees/
- gsd: address CodeRabbit review on #4433
- code quality cleanup and contract hardening
- remove local test.cmd helper from feature branch
- auto-commit after complete-milestone
- extract splitCompletedKey() helper, remove duplication (per review)
v2.75.0
Added
- tui: render compaction notice in the shared chat-frame style
- prefs: add persistent language preference via /gsd language
- tui: align tool execution cards with chat frame styling
- tui: blend chat frame with shared timestamp and model header
- extensions: add GSDExtensionAPI for .gsd/extensions/ (#3338)
- graph: parse LEARNINGS.md into knowledge graph and rebuild after extraction
- gsd: add /gsd extract-learnings command
- gsd-uok: flip default to UOK with emergency legacy fallback
- gsd-uok: enforce plan-v2 compile gates and graph metadata
- gsd-uok: unify audit envelopes across logger metrics and activity
- gsd-uok: add turn-level git transaction modes and closeout gates
- gsd-uok: unify reactive and parallel scheduling via execution graph
- gsd-uok: enforce model policy filtering before routing
- gsd-uok: unify gate plane across pre/post validation checks
- graph: implement knowledge graph system (closes #4202)
- gsd: add v1→v2 command parity — 12 missing commands
Fixed
- ci: stage all workspace package.json files in release commit
- tui: pin rendered block to terminal bottom on clear
- gsd: silence benign auto-mode warnings and bind getProviderAuthMode correctly
- gsd: stop wiping the artifacts table on every cache invalidation
- tui: unstick tool cards after compaction and promote success notifications
- mcp: route tool writes to active worktree when milestone has one
- mcp: make projectDir optional in workflow tool schemas
- mcp: allow external-state worktree paths in workflow project root guard
- gsd: stop .mcp.json churn in auto-worktrees and fix evidence id matching
- auto: reset session timeout counter on auto-resume
- auto: schedule auto-resume timer for session creation timeouts
- agent-session: call abort() before _disconnectFromAgent() in newSession/resumeSession (#4243)
- gsd: checkpoint all session phases during compaction, not just executing (#4258)
- gsd: expand pre-execution check notification with details + evidence path (#4259)
- chat: replay final assistant content on message end
- interactive: preserve assistant-tool ordering on chat rebuild
- chat: preserve claude MCP thinking visibility during tool windows
- chat: cap claude reasoning blocks to keep chat visible
- chat: prune orphaned claude MCP provisional sub-turn text
- chat: prune orphaned claude MCP provisional sub-turn text
- chat: prune claude MCP provisional text above tool output
- ci: harden graph fallback and update regression guards
- gsd: restore autoCommit import after rebase conflict
- gsd: align ADR-009 integration with type-safe builds
- ci: remove unsound tsbuildinfo cache causing TS2307 on fresh runners
- pi-coding-agent: remove explanatory comment from agent_end handler
- pi-coding-agent: finalize streaming component on agent_end instead of removing it
- release: sync all workspace versions and harden release scripts
- ci: run CI on pipeline.yml changes
- ci: install web host deps in dev-publish job
- gsd: harden pr-branch/ship argv-safety and canonical artifact paths
- align v1→v2 commands with upstream types, remove engine-dependent slice mutations
- ci: disable incremental resources build cache state
- gsd: open project DB in headless query
- gsd: preserve quoted workflow run overrides
- gsd: replace execSync with execFileSync in nativeCommit, nativeIsRepo, nativeResetHard fallbacks
- ci: cache dist alongside tsbuildinfo and use workflow-logger in catch blocks
- gsd: isolate /gsd command registration from extension bootstrap failures
- gsd: close out cancelled auto units
- pi-coding-agent: fall back to env keys for built-ins
Changed
- gsd: remove /gsd map-codebase command
- gsd: enforce single-writer invariant for engine DB
v2.74.0
Added
- gsd: extend flat-rate provider detection to custom/externalCli providers
- claude-code: pass thinking level as effort
Fixed
- claude-code-cli: forward image blocks in SDK query prompt (#4183)
- keep assistant text visible when thinking traces are long
- state: DB-authoritative milestone completeness (#4179)
- auto-mode: prevent false milestone merge after complete-milestone failure (#4175)
- auto: pause on validate-milestone needs-remediation without slices (#4094)
- gsd: notify users what to do next after /gsd step finishes
- cli: restore --help handling when it follows a subcommand or unknown flag
- tui: eliminate pinned output duplication and reduce render overhead
- auto: prevent premature auto-mode stops on blocked phase + missing reassessment
- cli: use junction symlinks in merged node_modules path
- tui: reset segment state on claude-code sub-turn shrink
- gsd: set completed_at when reconciling task status to complete
- tui: keep AUTO-mode widgets alive and drop duplicate health panel
- gsd: use bun for update when installed via Bun (#4145)
- tui: render assistant tool calls inline with text instead of grouped at end
- gsd: restore isAutoMode plumbing and workflow-logger catch in auto-model-selection
- gsd: preserve custom-model selection on /gsd auto bootstrap (#4122)
- pi-coding-agent: use safe compaction role markers
- pi-ai: detect claude-code overflow text
Changed
- remove stale src/app-paths.js leftover
- cli: slim down top-level src/ — dedup, unused fallbacks, onboarding
v2.73.1
Fixed
- gsd: address 3 silent-crash secondary issues from #3348 post-#3696 (#4133)
- gsd: tolerate corrupt task arrays (#4056)
- gsd: discard milestone DB and worktree state (#4065)
- model-resolver: gate saved default restore on provider readiness
- tui: stop pinned latest-output mirror from duplicating streaming text
- gsd: wire subagent_model preference through to dispatch prompt builders
- ci: address 5 pipeline integrity issues from release audit (#4119)
- ci: regenerate package-lock.json during version bump (#4116)
- pi-coding-agent: skip localhost dummy key when fallback resolver provides a configured key
Changed
- gsd: delete 3 unreferenced dead files and orphaned test (#3728)
v2.73.0
Added
- pi-ai: add Alibaba DashScope as standalone provider (#3891)
- gsd: add layered depth enforcement to discuss.md (#4079)
Fixed
- gsd: reconcile stale slice rows and rebuild STATE.md before DB close (#3658)
- gsd: block direct writes to gsd.db via hooks to prevent corruption (#3674)
- gsd: break 3 circular dependencies in extension modules (#3730)
- claude-code: default GSD subagents to bypassPermissions and pre-authorize safe built-ins (#4099 follow-up)
- gsd: add memory pressure watchdog and persist stuck detection state (#3708)
- state: prevent false degraded-mode warning when DB not yet initialized (#3922)
- async-jobs: suppress stale follow-up for jobs consumed by await_job (#3787) (#3788)
- gsd: rebuild STATE.md after unit completion (#3876)
- gsd: let doctor heal dispatch fixable warnings (#3875)
- gsd: preserve experimental preferences in merges (#3847)
- gsd: heal legacy task arrays and evidence rows (#4027)
- gsd: unlock depth verification outside guided flow (#4058)
- gsd: preserve paused auto badge after provider pause (#4062)
- ollama: add cloud auth support and resolve real context window via /api/show (#4017)
- security: activate auth middleware and harden shutdown/update routes (#4023)
- gsd: normalize workingDirectory prompt paths (#4057)
- claude-code: pre-authorize workflow MCP tools so interactive acceptEdits mode stops blocking GSD commands
- cli: resolve duplicate validateConfiguredModel and missing getPiDefaultModelAndProvider import
- update GSD runtime ignore patterns for team mode (#2824)
- gsd: prevent double frontmatter in task SUMMARY.md from projection re-render (#2818)
- flush extension provider registrations before model resolution (#1923)
- gsd: reset db-open attempted flag on close (#4024)
- gsd: unblock mixed-dependency zero-dep slices (#4025)
- pi-tui: filter kitty keypad private-use input (#4026)
- gsd: disable db mmap on darwin (#4029)
- gsd: reject empty roadmap stubs as milestone plans (#4063)
- persist defaultProvider when user selects Claude Code CLI in onboarding (#4104)
- pi-ai: filter unavailable github copilot models (#4031)
- claude-code: wrap prompt history in XML tags to stop transcript fabrication
- clean up MCP tool rendering in Claude Code CLI stream
Changed
v2.72.0
Added
- agents: add GSD phase guard to prevent subagent/phase conflicts
- agents: add 8 specialist subagents and slim pro agents
- tui: improve gsd overlays, shortcuts, and notification flows
Fixed
- ci: build artifacts in integration-tests job
- auto: recover from OpenRouter credit affordability errors
- gsd: cast unknown gate id in test to satisfy GateId type
- gsd: route quality gates through a per-turn registry
- mcp: expose every registered tool and fix SDK subpath resolution
- mcp: resolve rebase regressions in stream-adapter
- mcp: thread abort signals, restore tool fidelity, and fix subpath imports
- doctor: skip key check for CLI-authenticated providers
- tui: overlay subscription + Ctrl+Shift+P shortcut conflict
- models: block unconfigured models from selection surfaces
- ollama: clear footer status when provider unavailable
- gsd: guard model override in minimal command contexts
- model: require provider readiness for saved default selection
- gsd: honor /gsd model as session override across dispatch
- gsd: use milestone branch for merged worktree cleanup
- pi-coding-agent: show full OAuth login URLs
- auto: add structured cooldown error and bounded retry budget
- auto: survive transient 429 credential cooldown in auto sessions
- pi-coding-agent: match renderable tools case-insensitively
- headless: keep idle timeout off during interactive tools
- claude-code-cli: surface result text for success errors
- pi-ai: use bearer auth for MiniMax Anthropic API
- gsd: scope stuck-loop forensics to auto sessions
- gsd: repair DB-only milestone unpark state
- gsd: detach auto start from active turns
- cli: include all internal node_modules entries in pnpm merged dir
- gsd: enforce anti-fabrication turn-taking in discuss prompts
- cli: address review findings for pnpm merged node_modules
- cli: handle pnpm global installs by merging both node_modules roots
- gsd: keep project db path after worktree enter
- gsd: ignore prose inputs in pre-exec checks
- gsd: read existing artifacts before write
- mcp-server: use explicit sdk js subpaths
- cli: preserve anthropic api provider
- gsd: document flat task summary layout
- gsd: require verification classes in validation prompts
- mcp-server: open the DB for inline workflow tools
- gsd: ignore pre-existing files in task ordering
- gsd: detect property-value JSON invocation errors
- cli: honor custom-provider defaults before onboarding
- gsd: dedupe repeated notifications
- gsd: open DB before bootstrap deriveState
- cli: clean up stdin after sessions command readline interface closes
- gsd: skip reverse dependents in dispatch fallback
- gsd: classify plain connection-error as transient
- cli: resolve hoisted node_modules for global installs
- pi-ai: cast test tool fixtures to any for TSchema compatibility
- commands: use specific validation reason in blocked-directory warning
- commands: show friendly message when /gsd runs from $HOME instead of unhandled error
Changed
- ci: run integration tests in parallel with build
- ci: cache Next.js build artifacts with Blacksmith cache
- sync package-lock.json version fields to 2.68.0
- pi-ai: add cache_control breakpoints to tool definitions
v2.71.0
Added
- mcp-server: add secure_env_collect tool via MCP form elicitation
Fixed
- tui: clear pinned output on message_end to prevent duplicate display
- tui: clear pinned latest output on turn completion
- tui: restore pinned output above editor during tool execution
- TOCTOU file locking race conditions in event log and custom workflow graph
- tui: mask secure extension input values in interactive mode
- claude-code: harden MCP elicitation schema handling
- claude-code: accept secure_env_collect MCP elicitation forms
- interactive: keep MCP tool output ordered and restore secure prompt fallback
- interactive: preserve MCP tool output stream ordering
- gsd: resolve workflow MCP test typing regressions
- mcp: return isError flag on workflow tool execution failures
- discuss: add structuredQuestionsAvailable conditional to all gates
- discuss: add multi-round questioning to new-project discuss phase
- gsd: harden claude-code workflow MCP bootstrap
- web: drop provisional pre-tool question text
Changed
- extract deriveStateFromDb logic into composable helpers
- pr: drop web-layer changes from MCP stream-order fix
v2.70.1
Fixed
- routing: address codex review — complete interactive bypass and accurate banner
- routing: skip dynamic routing for interactive dispatches, always show model changes (#3962)
- ci: trim windows portability integration load
- ci: narrow windows portability coverage
- ci: skip validate-pack in windows portability job
- ci: unblock windows portability follow-up
- windows: harden portability across runtime and tooling
- auto: use pathToFileURL for cross-platform import and reconcile regression test
- auto: resolve resource-loader.js from GSD_PKG_ROOT on resume (#3949)
- mcp-server: importLocalModule resolves src/ paths from dist/ context
- gsd: surface scoped doctor health warnings
- gsd: skip skipped slices in milestone prompts
- gsd: handle doubled-backtick pre-exec paths
- update: fetch latest version from registry
v2.70.0
Added
- mcp-server: expose ask_user_questions via elicitation
Fixed
- pi-ai: remove Anthropic OAuth flow for TOS compliance
- mcp-server: hydrate model credentials into env
- mcp-server: hydrate stored tool credentials on startup
- gsd: auto-enable cmux when detected instead of prompting
- mcp-server: URL scheme regex no longer matches Windows drive letters