diff --git a/README.md b/README.md index 8c45403..8c1fc06 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ CLI 有两类用途,本文档按此组织: ### 新机器:一条命令装好整个生态 ```bash -curl -fsSL https://raw.githubusercontent.com/stack-wuh/shadow-dev-cli/v1.4.0/scripts/bootstrap.sh | bash -s claude-code +curl -fsSL https://raw.githubusercontent.com/stack-wuh/shadow-dev-cli/v1.5.0/scripts/bootstrap.sh | bash -s claude-code ``` 这条命令做三件事: diff --git a/package.json b/package.json index 1c2e310..cc52ca7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shadow-dev-cli", - "version": "1.4.0", + "version": "1.5.0", "description": "Deterministic scaffolding CLI for the Shadow dev workflow: brief lifecycle, plan/execute with plan hashes, git and GitHub operations.", "type": "module", "engines": { diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 494906b..c644649 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -11,7 +11,7 @@ # SHADOW_WORKFLOW_HOME 宿主 home 根(bind 域,~/.claude/skills 等由此解析) set -euo pipefail -TAG="v1.4.0" +TAG="v1.5.0" HOST="${1:-claude-code}" BIN="${SD_BIN:-$HOME/.local/bin}" TMP="$(mktemp -d)" diff --git a/shadow-docs/changes/20261009-chore-release-v150/brief.md b/shadow-docs/changes/20261009-chore-release-v150/brief.md new file mode 100644 index 0000000..938b534 --- /dev/null +++ b/shadow-docs/changes/20261009-chore-release-v150/brief.md @@ -0,0 +1,89 @@ +--- +{ + "schema": "shadow-dev/v1", + "name": "20261009-chore-release-v150", + "type": "chore", + "scope": "packaging,install", + "status": "published", + "baseBranch": "main", + "branch": "chore/20261009-chore-release-v150", + "files": [ + "README.md", + "package.json", + "scripts/bootstrap.sh" + ], + "github": { + "repository": null, + "issue": null, + "issueUrl": null, + "pullRequest": 48, + "pullRequestUrl": "https://github.com/stack-wuh/shadow-dev-cli/pull/48" + }, + "review": { + "conclusion": "passed", + "verifiedCommit": "0be15e953ca8a8bc943667e3e860470f0382e2ec", + "verifiedAt": "2026-10-09T14:11:37.246Z" + }, + "workflow": { + "operation": null, + "checkpoint": "pr:48", + "planHash": "1ad4d8dcd1b91d0179f0a924dd70d5a0f5fdbe1e3419050ebce7f663a8272762", + "updatedAt": null, + "lastError": null, + "release": { + "files": [ + "shadow-docs/changes/20261009-chore-release-v150/brief.md" + ], + "message": "docs(shadow): review passed(S 级:diff 走查 + 结构扫描 + version 冒烟)", + "title": "chore(release): v1.5.0 发版准备(版本号三处同源 bump)", + "body": "" + } + }, + "knowledge": { + "action": "无需变更", + "target": null, + "reason": "纯版本号与安装 URL/TAG 三处同源同步,未产生新的长期事实;发布动作按 release 第 4 步委托用户/CI" + } +} +--- + +# 发版准备:v1.5.0 版本号与安装面三处同源 bump + +## 动机 +PR #47 已把「产物能力契约(requiresCommands 落盘前断言)+ worktree 域 + `.shadow-dev` 配置域 + blog publish 域」合入 main,但最新 release 仍是 v1.4.0——用户侧与 workflow 仓 pin 拿不到这些能力,change 2(workflow 仓删 `cliVersion` pin / SessionStart hook)也就没有地基。本 change 只做发版前的版本号同步,发布动作本身按 release 第 4 步委托执行。 + +## 复杂度评级 +- **评级:** S +- **理由:** 三要素——①契约变更:无(版本号与安装 URL/标签字符串,行为已由 PR #47 定稿并有 CI 9/9 背书);②触及面:纯声明式资产(package.json、README 安装段、bootstrap.sh 的 TAG);③可发现性:装错版本立刻可见。 +- **期望验证深度:** code-read(diff 走查 + 结构/残留扫描 + 两条冒烟) + +## 引用规范 +- `shadow-docs/knowledge/install-distribution.md` + - 当前结论: 命令面/options/退出码与布局在两处同源登记,改行为必须同步改注释;bootstrap.sh 编排三段装机(CLI → workflow → bind);跨仓演进顺序=消费方先行兼容、生产方随后声明(本 change 正是「发布」这一环)。 + - 适用 scope: package.json, README.md, scripts/bootstrap.sh +- `norms/tdd-verification.md` + - 当前结论: S 级不创建测试,验证=diff 走查 + 结构/引用/残留扫描;进度可见性仍适用。 + - 适用 scope: 全流程 + +## 决策 +- **选型:** 三处一起 bump(`1.4.0 → 1.5.0`),不留版本号分裂面。 +- **对比方案:** 只改 package.json、让 bootstrap 的 `TAG` 继续指 v1.4.0——未选,那会让「一键装机」永远装到旧版,正是本项目反复出现的漂移形状;把 tag/release 也塞进本 change——未选,release 不作为 brief task(既有教训:会造成机械门禁死锁),且发布执行权在用户/CI。 +- **理由:** 版本号唯一事实源是 package.json,README 安装 URL 与 bootstrap TAG 是它的两处投影,必须在同一提交里同步。 + +## 任务 +### Phase 1 +- [x] 版本号三处同源 bump — `package.json`, `README.md`, `scripts/bootstrap.sh` — 1.4.0→1.5.0;随后 grep 扫描全仓(排除 changes/archive 历史记录)确认无 v1.4.0 残留 +- [x] 冒烟与结构验证 — `scripts/bootstrap.sh` — `bash -n` 语法过;`node cli.mjs version --json` 回 1.5.0;`node cli.mjs workflow status --json` 与 `help workflow --json` 结构正常 + +## 非目标 +- 不执行 `git tag` / `gh release create`(合并后由用户按 release 第 4 步执行) +- 不动 workflow 仓(删 pin/hook/vendored installer、`adapters/codex.json`、`requiresCommands` 声明)——下一个 change + +## 结果 +- 实际耗时: — +- 验证: — + +## 知识评估 +- **预期影响:** 无需变更 +- **候选卡片:** 无 +- **理由:** 版本号与安装 URL 属一次性发布事实,卡片承载的是稳定机制(双轨/断言/同源登记),已在 PR #47 更新到位;把「v1.5.0 已发布」写进 Knowledge 就是把变更历史塞进执行真相源。