From 206bc80e4e36431ce8d2422b7070cca8a952319d Mon Sep 17 00:00:00 2001 From: claude-code-best Date: Sun, 14 Jun 2026 14:19:13 +0800 Subject: [PATCH] =?UTF-8?q?docs(effort):=20plan=20=E8=A1=A5=20q/ctrl+c=20?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E7=BB=91=E5=AE=9A=EF=BC=8C=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=20spec=20=C2=A75=20=E7=8A=B6=E6=80=81=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit verifier 抓到的 gap:spec §5 写明 Esc / Ctrl+C / q 都是取消事件, 但 plan Task 2.3 只绑了 escape。补上 q 和 ctrl+c → effortPanel:cancel。 同时把 Step 2.2 直接写成 6 个 action 版本(home/end),删除迂回表达。 Co-Authored-By: glm-5.2 --- .../plans/2026-06-14-effort-panel-basic.md | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/superpowers/plans/2026-06-14-effort-panel-basic.md b/docs/superpowers/plans/2026-06-14-effort-panel-basic.md index 65c7933c8..a8f60d661 100644 --- a/docs/superpowers/plans/2026-06-14-effort-panel-basic.md +++ b/docs/superpowers/plans/2026-06-14-effort-panel-basic.md @@ -255,7 +255,7 @@ EOF ## Task 2:注册 EffortPanel keybinding context **Files:** -- Modify: `src/keybindings/schema.ts`(在 `KeybindingAction` 联合类型追加 4 个 action) +- Modify: `src/keybindings/schema.ts`(在 `KeybindingAction` 联合类型追加 6 个 action) - Modify: `src/keybindings/defaultBindings.ts`(追加 `EffortPanel` context 块) - [ ] **Step 2.1: 检查 schema.ts 现有结构与校验测试** @@ -266,7 +266,7 @@ Expected: 看到三行 `modelPicker:decreaseEffort/increaseEffort/toggle1M`, Run: `ls src/keybindings/__tests__/ 2>/dev/null` Expected: 查看是否有 schema/defaultBindings 的回归测试文件(决定是否需要补断言)。 -- [ ] **Step 2.2: 在 schema.ts 追加 4 个 action** +- [ ] **Step 2.2: 在 schema.ts 追加 6 个 action** 打开 `src/keybindings/schema.ts`,找到 `// Model picker actions (ant-only)` 块(约 line 153-156),在它**后面**追加: @@ -274,6 +274,8 @@ Expected: 查看是否有 schema/defaultBindings 的回归测试文件(决定 // Effort panel actions (slash /effort without args) 'effortPanel:decrease', 'effortPanel:increase', + 'effortPanel:home', + 'effortPanel:end', 'effortPanel:confirm', 'effortPanel:cancel', ``` @@ -295,21 +297,16 @@ Expected: 查看是否有 schema/defaultBindings 的回归测试文件(决定 end: 'effortPanel:end', enter: 'effortPanel:confirm', escape: 'effortPanel:cancel', + q: 'effortPanel:cancel', + 'ctrl+c': 'effortPanel:cancel', }, }, ``` -注意:这里多绑了 `home/end` 两个 action,所以 schema 也要追加。回到 Step 2.2 把那段改成: - -```ts - // Effort panel actions (slash /effort without args) - 'effortPanel:decrease', - 'effortPanel:increase', - 'effortPanel:home', - 'effortPanel:end', - 'effortPanel:confirm', - 'effortPanel:cancel', -``` +注意: +- `q` 与 `escape` / `ctrl+c` 都映射到 `effortPanel:cancel`,与 spec §5 状态机一致。 +- Ink 的 useInput 默认在 ctrl+c 时退出进程;但项目 useKeybindings 系统会先拦截 ctrl+c(参考 `useInput` 源码中 `if (!(input === 'c' && key.ctrl) || !internal_exitOnCtrlC)` 分支)。若实施时发现 ctrl+c 仍直接退出进程,**降级为只绑 q + escape**,并在 commit message 里注明。 +- Step 2.2 的 6 个 action(含 `home/end`)与此处的 8 个绑定一一对应。 - [ ] **Step 2.4: 类型 + lint 检查**