From 0a4ba236580df6e6cbb0faa28e48d1e66ff7dfff Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Wed, 14 Oct 2026 07:25:14 +0800 Subject: [PATCH] docs(tasks): home sidebar rerender fix brief (agent loop, issue #59, bounce 1) Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3 --- docs/tasks/README.md | 1 + ...TASK-home-sidebar-rerender-fix-20261014.md | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 docs/tasks/TASK-home-sidebar-rerender-fix-20261014.md diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 3e103a35..469c0162 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -471,6 +471,7 @@ | `TASK-node-runtime-resources-20261013.md` | — | 报告 worker abort 监听泄漏、本地 PG 适配层往返与元数据缓存、无上限内存表、用户端会话读缓存(BUG-1326~1328、1346,PG 与缓存部分 A/B) | 待领取 | `codex/node-runtime-resources-20261013` | | `TASK-node-runtime-resources-fix-20261014.md` | — | **#58 第 1 次打回**:`4c3485bc` 其余全过;压测脚本放在 `frontend/scripts/` 却从 `frontend/tests/` 导入,镜像构建会失败(BUG-1140 形状,任务书指定的路径有误)。挪到 `frontend/tests/` 下非 `.test` 文件名 | 待领取 | `codex/node-runtime-resources-20261013` | | `TASK-home-sidebar-rerender-20261013.md` | — | 流式回答时侧栏每帧整栏重渲染(BUG-1329,A/B) | 待领取 | `codex/home-sidebar-rerender-20261013` | +| `TASK-home-sidebar-rerender-fix-20261014.md` | — | **#59 第 1 次打回**:`63509431` 其余全过;`chat-navigation-a11y-contract` 按源码文本断言 `onOpenBilling` 旧写法未跟改(§7.8) | 待领取 | `codex/home-sidebar-rerender-20261013` | | `TASK-api-disk-cache-retention-20261013.md` | — | API 磁盘缓存只进不出、VedAstro 审计文件留存出生资料、失败快照久缓存、缓存键规范化(BUG-1330~1332,A/B) | 待领取 | `codex/api-disk-cache-retention-20261013` | | `TASK-report-reference-perf-20261013.md` | — | 长报告出稿提速:术语替换命中预检、哈希单次遍历、同盘复用(BUG-1335~1336,A/B) | 待领取 | `codex/report-reference-perf-20261013` | | `TASK-consult-prep-parallel-20261013.md` | — | 普通对话发问前准备步骤并行、模型版本短缓存、多领域并发开关(BUG-1337~1339,A/B) | 待领取 | `codex/consult-prep-parallel-20261013` | diff --git a/docs/tasks/TASK-home-sidebar-rerender-fix-20261014.md b/docs/tasks/TASK-home-sidebar-rerender-fix-20261014.md new file mode 100644 index 00000000..b6dbdb76 --- /dev/null +++ b/docs/tasks/TASK-home-sidebar-rerender-fix-20261014.md @@ -0,0 +1,36 @@ +# TASK · 侧栏重渲染修复单(issue #59,第 1 次打回) + +- 日期:2026-10-14 +- 原任务书:`docs/tasks/TASK-home-sidebar-rerender-20261013.md` +- 被验 SHA:`63509431529d212c7847371e7717660d823b40e6`(`codex/home-sidebar-rerender-20261013`) +- 执行方:Grok,同一分支续做(落后 staging 时用 merge,不改写已推历史) +- BUG 编号:沿用 BUG-1329 + +## 1. 验收结论:一项未通过,其余全部通过 + +| 检查 | 结果 | 证据 | +| --- | --- | --- | +| 前端全量 `npm test`(与 staging 基线逐名比对) | **未通过:新增 1 条失败** | `frontend/tests/chat-navigation-a11y-contract.test.ts`「in-app destinations navigate client-side so the chat survives the round trip」:`The input did not match the regular expression /onOpenBilling: \(\) => openAccountDialog\("billing", \{ source: "account-menu" \}\)/` | +| T1 稳定包装 + 比较后发布 | 通过 | 逐行看过:`latestRef` 在无依赖 effect 里写,发布 effect 在其后;未冻结首次闭包;`HomeProbe` 的故意不稳定输入未改 | +| T2 `visibleSessions` 记忆化 | 通过 | — | +| T3 `SidebarProvider` context 记忆化 | 通过 | — | +| 改既有断言 | 通过 | `session-list-lifecycle` 三栏齐全,且加强了(再改一版后仍调到最新) | +| tsc / lint | 通过 | 0 错 / 0 error | + +**根因**:`use-home-shell-registration.ts` 把 `onOpenBilling` 从 `() => openAccountDialog("billing", { source: "account-menu" })` 改成了 `() => { latestRef.current?.openAccountDialog("billing", { source: "account-menu" }); }`,而 `chat-navigation-a11y-contract.test.ts` 第 42 行按源码文本断言旧写法(AGENTS.md §7.8:改写语句前要 grep 按源码文本断言的合同测试,同一轮跟着改)。 + +## 2. 修法要求 + +1. 只改 `frontend/tests/chat-navigation-a11y-contract.test.ts` 第 42 行这条断言,按 §7.3 写「原值 / 新值 / 原因」三栏。新正则要**仍然锁住意图**:账户菜单里的「充值」打开 billing 且 `source: "account-menu"`。例如匹配 `onOpenBilling: \(\) => \{ latestRef\.current\?\.openAccountDialog\("billing", \{ source: "account-menu" \}\); \}`;不得放宽成只查 `"billing"`。 +2. 再 grep 一遍:`grep -rn "onOpenProfile\|onOpenGeneral\|onOpenLogout\|onNewChat\|onSelectSession\|onLoadMore" frontend/tests`,有按旧写法断言源码文本的同样处理(本次全量里只红了这一条,但要确认)。 +3. 业务代码不改。先把最新 `origin/staging` 合并进分支(用 merge)。 +4. PROGRESS 末尾记一行。 + +## 3. 验收标准 + +- 前端全量 `npm test` 失败清单与 staging 基线逐名相同; +- `git diff 63509431..<新 SHA> -- frontend/src` 为空。 + +## 4. 让步顺序 + +无。第 1 次打回;再打回会停下等产品负责人。