docs(release): backfill CHANGELOG with 17 RC-train entries before v1.39.0 final cut (#2854)
Adds [Unreleased] entries for PRs that landed between v1.39.0-rc.4 and v1.39.0-rc.6 but were missing from CHANGELOG.md. One bullet per PR, grouped Added (#2828) and Fixed (16 entries: #2788, #2791, #2794, #2796, #2798, #2801, #2803, #2805, #2808, #2829, #2831, #2832, #2835, #2836, #2838, #2839). Closes #2853
This commit is contained in:
68
CHANGELOG.md
68
CHANGELOG.md
@@ -29,6 +29,11 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
`.planning/config.json` is loaded first and deep-merged with the workstream config
|
||||
(workstream wins on conflict). Explicit `null` in a workstream config now correctly
|
||||
overrides a root value. (#2714)
|
||||
- **Manual canary release workflow** — `.github/workflows/canary.yml` publishes
|
||||
`{base}-canary.{N}` builds of `get-shit-done-cc` and `@gsd-build/sdk` under the
|
||||
`canary` dist-tag on demand via `workflow_dispatch` (manual trigger only — auto-publish
|
||||
on every push to main was rejected because submission rate is too high). Includes an
|
||||
optional `dry_run` boolean and the same publish-verification gate as `release.yml`. (#2828)
|
||||
|
||||
### Changed
|
||||
- **Skill descriptions trimmed to ≤ 100 chars across all `commands/gsd/*.md`** — three
|
||||
@@ -150,6 +155,69 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
include an explicit `ORCHESTRATOR RULE` blockquote immediately after every `Task()`
|
||||
spawn, preventing the Codex parallel-work anti-pattern where the parent continues
|
||||
reading files and producing conflicting output. (#2729)
|
||||
- **`audit-uat` parser reads `human_verification:` from frontmatter array** — the
|
||||
previous body-only regex was too strict and missed valid UAT items declared in YAML
|
||||
frontmatter, surfacing false-positive open gaps at every `/gsd-complete-milestone`
|
||||
audit. (#2788)
|
||||
- **`gsd-sdk` binary collision with `@gsd-build/sdk` resolved** — workstream-aware
|
||||
query registry now respects `GSD_WORKSTREAM` env var; `gsd-tools` bin alias added so
|
||||
the two SDK packages no longer fight over the `gsd-sdk` name in `node_modules/.bin`.
|
||||
(#2791)
|
||||
- **OpenCode generated agents embed `model_profile_overrides.opencode.<tier>`** —
|
||||
per-tier model overrides set via `/gsd-settings-advanced` are now propagated into the
|
||||
generated agent files instead of being silently ignored. (#2794)
|
||||
- **`roadmap update-plan-progress` accepts `--phase` flag form** — SDK arg-parsing
|
||||
regression in v0.1.0 silently dropped `--phase`/`--name`/`--plans` flags, causing
|
||||
`state.begin-phase` and `roadmap update-plan-progress` to corrupt STATE.md. (#2796)
|
||||
- **`context_window` added to `VALID_CONFIG_KEYS` allowlist** — `/gsd-settings-advanced`
|
||||
could not set `context_window` because the key was missing from the allowlist used by
|
||||
`config-set` validation. (#2798)
|
||||
- **`gsd-tools init` dispatches `ingest-docs` handler** — `/gsd-ingest-docs` was broken
|
||||
in v1.38.5 because the workflow called `gsd-sdk` (now `gsd-tools`) but no
|
||||
`ingest-docs` init handler was registered. (#2801)
|
||||
- **`config-get` honors `--default <value>` flag** — fallback for missing keys was
|
||||
ported from the CJS implementation (#1893) into the SDK. (#2803)
|
||||
- **`find-phase` returns `null` for archived phases** — when the current-milestone
|
||||
phase had no directory yet, `init.plan-phase` / `init.execute-phase` returned the
|
||||
archived prior-milestone directory instead of `null`, causing wrong-phase work. (#2805)
|
||||
- **SKILL.md frontmatter `name:` migrated to hyphen form** — files that still used the
|
||||
deprecated colon form (`gsd:cmd`) caused autocomplete to suggest `/gsd:command`.
|
||||
Frontmatter now uses canonical `gsd-cmd` hyphen names. (#2808)
|
||||
- **`gsd-sdk` resolvable in local-mode installs** — the previous `isLocal` short-circuit
|
||||
in `installSdkIfNeeded()` returned before the PATH probe + self-link path could run
|
||||
(the same path that fixed npx-cache global installs in #2775). When `sdk/dist/cli.js`
|
||||
is present, local installs now run the same probe-and-link flow as global installs.
|
||||
(#2829)
|
||||
- **OpenCode `@file` references use absolute paths on all platforms** — OpenCode does
|
||||
not shell-expand `$HOME` in `@file` references on any platform, but the Windows-only
|
||||
guard from #2376 left macOS/Linux producing literal `@$HOME/...` strings that resolved
|
||||
to `command/$HOME/...` (file not found). Guard now applies to OpenCode unconditionally.
|
||||
(#2831)
|
||||
- **`gsd-sdk auto` detects Codex runtime correctly** — `auto` mode ignored
|
||||
`runtime: codex` and routed through `@anthropic-ai/claude-agent-sdk`, producing the
|
||||
`[FAILED] $0.00 0.1s` symptom on autonomous runs. New `runtime-gate` raises a clear
|
||||
error for non-Claude runtimes; `resolveModel()` is now runtime-aware (honours
|
||||
`GSD_RUNTIME` env precedence) and never injects a Claude profile id under non-Claude
|
||||
runtimes. (#2832)
|
||||
- **CR-INTEGRATION tests aligned with hyphen-form skill names** — tests previously
|
||||
asserted `gsd:code-review` (colon) against `autonomous.md` which now uses the canonical
|
||||
hyphen form. Tests now parse `Skill(skill="...")` invocations structurally and reject
|
||||
the legacy colon form. (#2835)
|
||||
- **`audit-open` quick-task scanner accepts `${quick_id}-SUMMARY.md`** — the previous
|
||||
bare-`SUMMARY.md` filename check produced false-positive `status: missing` for every
|
||||
documented quick task. UAT terminal-status enum also adds `resolved` (matches
|
||||
`execute-phase.md`'s post-gap-closure terminal); `help.md` one-liner reconciled with
|
||||
the canonical `quick.md` workflow. (#2836)
|
||||
- **`quick.md` / `execute-phase.md` SUMMARY rescue handles gitignored `.planning/`** —
|
||||
rescue blocks used `git ls-files --exclude-standard` which honoured `.gitignore`,
|
||||
silently no-op'ing when `.planning/` was excluded; the worktree was then deleted with
|
||||
the SUMMARY. Replaced with filesystem-level `find` + idempotent `cp` that bypasses git
|
||||
entirely. (#2838)
|
||||
- **`/gsd-code-review-fix` cleanup tail is transactional** — JSON recovery sentinel at
|
||||
`${phase_dir}/.review-fix-recovery-pending.json` is written after `git worktree add`
|
||||
succeeds and removed only after `git worktree remove` returns. A new run that finds a
|
||||
pre-existing sentinel force-removes the orphan worktree before starting fresh, making
|
||||
the agent self-healing across crashes. (#2839)
|
||||
|
||||
### Performance
|
||||
- **`discuss-phase` lazy file loading** — entry-point `@file` directives replaced with
|
||||
|
||||
Reference in New Issue
Block a user