Files
ycode/docs/协作/B05-交付-01.md
T

4.6 KiB
Raw Blame History

B05 / YC-009:TodoWrite 交付记录 01

日期:2026-10-21。状态:开发实现与离线验证完成,待验收;不预填验收通过。

  • 需求来源:9069c604e03505b91b5b9731d11d47727b168635,B05-需求.md。
  • 开发基线:8d10743fb2643b8e0aaf4495b38eb84f71b1e7f7。
  • 完整代码提交:d423d59b08395360cd7263709d4560ab436d7c0c。
  • 本批不发布安装包,不调整模型桥、权限策略、项目数据库或其他计划卡设计。

实现与关键决定

  1. 新增 TodoWriteView.tsx:只读规范化 args / _rawInput,兼容既有 todos / steps 及历史工具别名;保留 task ID、content、activeForm 和状态。完成数和总数按规范化列表计算。
  2. 使用现代 cr-tool-plan-task* 结构与专用头部,去掉重复标题。merge 显示“进度 completed/total”;空与错误仅显示相应头部,运行中空列表附接收中状态。
  3. 复用既有 selectPlanTasks 纯窗口算法,默认最多五项。优先第一个进行中任务,否则最后一个已完成任务,再否则从首项开始;不新增分页或更多按钮。
  4. 完成项删除线并弱化,进行中使用 activeForm 和加粗,状态使用 SVG / 圆点,不再使用 OK / > / - / x 占位。样式按照需求提供的 REA 静态契约实现。
  5. SourceToolExpandable 增加仅 Todo 使用的 retained expand-signal 开关和独立 disclosure key。真实 isLastContent 边沿控制展开;同值重挂载保留手动选择;session / tool / part 身份隔离。其他工具默认行为不变。
  6. 不向普通列表追加 SDK 原始成功文本;不改写持久化结果、不合并历史工具快照。
  7. 增加专用可选 onTodoTaskClick,字段为 toolCallId / toolName / taskId,支持点击、Enter、Space。当前没有证实的应用宿主目标,因此默认不传回调、不显示按钮角色或动作箭头,不复用计划预览冒充待办操作。

变更文件

  • src/renderer/src/workbuddy/conversation/TodoWriteView.tsx(新增)
  • src/renderer/src/workbuddy/conversation/todo-write.css(新增)
  • src/renderer/src/workbuddy/conversation/ToolCallRenderer.tsx
  • src/renderer/src/workbuddy/conversation/SourceToolHeader.tsx
  • src/renderer/src/workbuddy/conversation/source-labels.ts
  • scripts/todo-write-regression.tsx(新增)
  • scripts/todo-write-dom-regression.tsx(新增)
  • scripts/conversation-renderer-regression.tsx
  • scripts/run-alignment-regression.mjs

验证

以下命令在 Linux 开发环境执行,没有启动真实 Claude SDK、外部模型服务或用户电脑,没有加载用户发布会话。

命令 结果 证据
npm run build exit 0,类型检查与生产构建通过 evidence/b05-01/build.log
npm run test:conversation exit 0 evidence/b05-01/conversation.log
npm run test:alignment exit 0,12 个离线套件;此单独运行明确跳过 DOM evidence/b05-01/alignment.log
YCODE_TEST_DOM_MODULE=/tmp/ycode-b01-dom/node_modules/jsdom npm run test:alignment:dom exit 0,12 个离线套件与 10 个 DOM 套件 evidence/b05-01/alignment-dom.log

新增聚焦测试已接入上述 alignment 入口,共 29 项投影/SSR 检查与 42 项 DOM 断言:投影/SSR 覆盖窗口夹具、状态、标题、空/失败、别名、原始输入与非突变;DOM 覆盖真实 TodoWriteView 和 CompletedFold 组合、位置边沿、手动选择、相同信号重挂载、会话/工具隔离、合法历史快照和可选回调键盘事件。使用合成数据,不修改真实会话。

测试依赖按项目既有外置 jsdom 约定提供;上述绝对路径是本次环境路径,其他环境需替换为其已安装的 jsdom 模块路径。严格 DOM 入口缺少依赖会失败,不将跳过当通过。

剩余风险与验收边界

  • AC9.8:组件可选回调已验证,但实际应用宿主任务点击目标未实现,不能宣称完整业务交互通过。默认非交互是刻意避免伪导航。
  • AC9.9:真实 Electron 浅色、深色、窄屏、长文本及七项任务截图未完成;DOM 不测真实像素、文本溢出和动画过程。当前浏览器执行环境受限,不绕过安全限制;由具备环境的验收端补测。
  • 复用了现有 recovered CheckIcon / LoaderIcon / FailedIcon。没有独立确认名为 TaskCheckIcon 的精确原版资产;不能声称图标逐像素一致。
  • 新 CSS 来自需求中已留存的 REA 静态数值,不代表当前原版 CSS 激活分支与实时动效已复核。仍需补原版 REA 运行证据。
  • 交付没有修改验收记录;验收端应固定完整代码 SHA 后记录实际结果。