Skip to content

Releases: gsd-build/gsd-2

v2.77.0

21 Apr 02:26

Choose a tag to compare

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

19 Apr 13:26

Choose a tag to compare

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 debug GitBook 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

15 Apr 22:56

Choose a tag to compare

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

14 Apr 16:01

Choose a tag to compare

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

13 Apr 17:02

Choose a tag to compare

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

13 Apr 13:05

Choose a tag to compare

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

  • pi-ai: regenerate model registry from upstream APIs (#3887)
  • require linked issue in PR template (#4112)

v2.72.0

13 Apr 05:14

Choose a tag to compare

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

11 Apr 23:21

Choose a tag to compare

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

11 Apr 04:24

Choose a tag to compare

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

10 Apr 23:13

Choose a tag to compare

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