github gsd-build/gsd-2 v2.29.0

latest releases: v2.80.0, v2.79.0, v2.78.1...
one month ago

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 --events flag 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 --answers flag 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, and checks modules (#1096)
  • extract milestone-ids and guided-flow-queue from guided-flow.ts (#1095)
  • decompose preferences.ts, populate skills and models modules (#1091)
  • decompose auto.ts into 6 focused modules (#1088)
  • decompose commands.ts into 5 focused modules
  • remove redundant test file, identify consolidation targets (#1070)
  • batch 2 — consolidate preferences, convert 8 more files to node:test (#1061)
  • consolidate tests by area, standardize on node:test (#1059)
  • skip initResources when version matches, consolidate startup I/O (#1052)
  • centralize magic numbers into constants.ts (#1044)
  • resource-loader: extract syncResourceDir to eliminate triplicated sync logic (#1036)
  • bg-shell: split 1604-line god file into tool, command, and lifecycle modules (#1049)
  • headless: split 772-line god file into events, UI, and context modules (#1047)
  • gsd: extract safeCopy/safeMkdir helpers to replace repetitive try/catch FS patterns (#1043)
  • gsd: extract atomicWriteSync utility to replace 6 duplicate write-tmp-rename patterns (#1046)
  • gsd: unify duplicate padRight/truncate into shared format-utils (#1045)
  • loader: consolidate 5 duplicate package.json version reads into cached helper (#1042)
  • headless: remove duplicate jsonLine, use serializeJsonLine from pi-coding-agent (#1039)
  • fix unicode regex discrepancy and standardize function naming (#1031)
  • fix chalk version mismatch and document pinned dependency rationale (#1030)
  • add concurrency limits to unbounded Promise.all operations (#1029)
  • optimize SSE streaming buffer to avoid quadratic string growth (#1024)
  • reduce makeTreeWritable calls from 6 to 2 on startup (#1023)
  • add domain-grouped re-exports for preferences module (#996)

Don't miss a new gsd-2 release

NewReleases is sending notifications on new releases.