github gsd-build/get-shit-done v1.41.1

latest release: v1.42.0-rc1
15 hours ago

Fixed

Phase planning & state

  • Wave 0 plans no longer collapse into wave 1, and depends_on is honoredphase-plan-index now derives waves from a Kahn topological sort over depends_on (with cycle detection) instead of trusting the wave: frontmatter alone, and a parsed wave: 0 is preserved instead of being coerced by parseInt(...) || 1. A declared wave: that disagrees with the computed level surfaces as a non-fatal warning. CJS and SDK twins fixed identically. (#3276)
  • execute-phase step 5.5 now documents the cross-wave-deviation cleanup tail so deviation cleanup is no longer silently skipped between waves. (#3273)
  • state snapshot prefers YAML frontmatter for canonical fields — body table cells like **Status:** to ✅ COMPLETE no longer override the correct frontmatter value. Numeric frontmatter scalars (current_phase: 19) are preserved instead of dropped. Falls back to body extraction only when the key is absent. (#3275)
  • state.update on body-only changes preserves curated progress.* frontmatter — a "Last Activity" edit no longer tramples manually-curated cross-milestone counters. The progress-percent formula now applies min(plan_fraction, phase_fraction), so 22/22 plans across 6/12 declared phases reports 50%, not a false 100%. (#3252)
  • phase.add honors --dry-run and rejects unknown flags--dry-run was silently absorbed into the phase description; it now returns { dry_run: true, roadmap_entry } and skips disk writes. Any unrecognized --flag raises a validation error. (#3246)

Query dispatch & CLI

  • Native --help is non-mutating — a dispatcher-level guard short-circuits to a help stub whenever --help / -h appears in args destined for a mutating handler, with defense-in-depth in milestoneComplete rejecting --help as a version value. (#3272)
  • CJS dispatcher accepts the canonical dotted command formstate.update, roadmap.analyze, phases.list, etc. now resolve correctly when callers bypass the SDK. Unknown dotted commands suggest the spaced equivalent. (#3248)
  • extractFrontmatter is anchored at file start — the regex no longer matches a frontmatter-shaped block later in the file, fixing fields read off the wrong block. (#3247)

Code review pipeline

  • code-review SUMMARY parser hardened; BL- / blocker: accepted as Critical-tier — fixes three cooperating bugs: compute_file_scope no longer captures prose bullets as file paths (boundary regex widened to [\w-]+, with path-validity guard); present_results grep now accepts both critical: and blocker: keys (and ### BL- headings); gsd-code-fixer treats BL-* findings as Critical-tier-equivalent to CR-* instead of silently dropping them. POSIX [[:space:]] replaces \s so the grep works on BSD grep (macOS). (#3274)

Install

  • Codex install accepts TOML float valuesparseTomlValue now reads TOML 1.0 floats (decimals, exponents, signed, _ separators), so tool_timeout_sec = 20.0 no longer triggers a fatal schema error. The Codex post-install rollback is unified and idempotent: it now reverts config.toml, skills/gsd-*, agents/gsd-*, get-shit-done/VERSION, and orphaned atomic-write temp files together, leaving no hybrid state behind. (#3254)
  • ✓ GSD SDK ready only prints once SDK is genuinely reachable — install now requires a persistent cross-shell PATH probe and filters transient _npx entries from both process.env.PATH and the login-shell PATH before declaring success. Eliminates false-ready signals on Linux. (#3249)
  • config-set model_overrides.<agent-id> accepted — was previously rejected as an unknown key. (#3253)
  • Shared model catalog as the single source of truth for agent profiles and runtime tier defaults (ADR-0003) — replaces four drifting truths (CJS model-profiles, SDK config-query, settings-advanced.md, session-runner) with sdk/shared/model-catalog.json, consumed by both packages via thin adapters. resolve-model now covers all 33 shipped agents; unknown-agent fallback is profile-semantic (quality→opus, budget→haiku, balanced/adaptive→sonnet) instead of hardcoded sonnet. (#3230)

Capture

  • /gsd-capture --seed one-shot contract restored — the workflow now defines $KEYWORD from $IDEA in collect-breadcrumbs, wires --enrich to skip parse-idea and target the resolved seed, and adds language identifiers to plant-seed code blocks. (#3250)

Install/upgrade: npx get-shit-done-cc@latest

Full Changelog: v1.41.0...v1.41.1

Don't miss a new get-shit-done release

NewReleases is sending notifications on new releases.