github open-gsd/gsd-core v1.20.1

6 hours ago

Install

npm i @opengsd/gsd-core@1.20.1
# or
npm i @opengsd/gsd-core@latest

What's Changed

Fixed

  • The fork-probe cache stays inside the project and out of git — the cache no longer writes through a symlinked .gsd that points outside the project, and a fresh project no longer shows .gsd/ as untracked or sweeps it into git add -A. (#5757) (#5908)
  • Installs into a nested or unusually named config directory keep correct paths on every runtime — the installer rewrote ~/.claude references in several passes, and the converters that run afterwards (agents, the gsd-core/ spec tree, OpenCode and Kilo commands and skills, command bodies, the Codex agent TOML) scanned the emitted prefix again, so a --config-dir such as ~/.claude/profiles/work, ~/.claude.d or ~/.copilot/work was rewritten inside its own output, and $& in a config dir was expanded into the text around it. A Kilo install wrote paths like .../profiles/work/profiles/work/gsd-core, an OpenCode install wrote paths like .claude/~/.config/opencode/x, and a Codex agent TOML got ~/.codex in place of $&. Each reference is now rewritten once and the emitted prefix is shielded from every later converter, for Kilo, OpenCode, Codex, Cline, CodeBuddy, Hermes, Qwen, Windsurf, Kimi, Trae agents and spec tree, Augment commands, and the Copilot and Antigravity @ includes for a config dir under their own default home. Intentional changes to default-install output: (1) Windsurf global installs turned ~/.devin/skills/x and $HOME/.devin/skills/x into ~/$HOME/.codeium/windsurf/skills/x and $HOME/$HOME/...; they now give $HOME/.codeium/windsurf/skills/x. (2) Claude Code's own files such as ~/.claude.json, $HOME/.claude.json, ~/.claude-plugin and ./.claude-plugin were rewritten into nonexistent names like $HOME/.cline.json; they now stay unchanged. (3) A Trae local install wrote $HOME/.trae/... and ~/.trae paths, including @$HOME/.trae/gsd-core/... includes, into its skills, which point at the global directory; they now point at the project's .trae/. A comparison of real default installs of all 18 installable runtimes, global and local, against the previous build found no other difference in the installed files. (#5715) (#5906)
  • effort sync --apply no longer makes the next install back up synced agents as local patches — the sync rewrote agent files without updating gsd-file-manifest.json, so the next install treated every synced agent as a local modification; the manifest now records the synced files. (#5683) (#5899)
  • Two orchestrators in one checkout no longer deny each other's sequential dispatches — when parallel workstreams ran execute-phase in the same checkout, each recorded isolation decision overwrote the other's, so a plan resolved to run without a worktree was refused by the isolation guard; each dispatch's decision is now kept for its own phase and plan. (#5682) (#5891)
  • drift-guard phase-status and workstream progress read milestone-prefixed phases correctly — under phase_id_convention: milestone-prefixed every M-NN phase named in ROADMAP Progress rows or STATE.md read as the bare milestone, so phase-status compared STATE against the milestone's first phase and reported a false drift, and workstream progress collapsed the milestone's phases into one. (#5675) (#5887)
  • phase insert names the milestone when the phase belongs to another one — inserting after a phase that lives in a different milestone than the current one reported Phase N not found in ROADMAP.md, the same text as a phase missing from the file; the error now names the milestone that holds it and the current one. (#5679) (#5893)
  • new-project and new-milestone point to the right next step — the closing hand-off said /gsd-plan-phase starts execution; it now recommends /gsd-discuss-phase, with /gsd-plan-phase to plan directly and /gsd-execute-phase to execute. (#5723) (#5905)
  • phase complete, state sync and init progress read milestone-prefixed phase ids correctly — under phase_id_convention: milestone-prefixed, re-completing a phase such as 3-01 while STATE.md was at 3-02 rewound STATE to the completed phase, a first-time completion advanced STATE to phase 3 named "02: beta", and roadmap checklist rows, phase headings and phase directories such as 03-02-beta were not recognised by init progress, init manager (its checked-phase fallback), find-phase (which reported phase 03 named "02-beta") and the planning snapshot. (#5676) (#5896)

Full Changelog: v1.20.0...v1.20.1

Don't miss a new gsd-core release

NewReleases is sending notifications on new releases.