Files
ycode/docs/复刻待办清单-2026-10-17.md
T
xiaohan.yuan e335588826 feat(sidebar): replicate WorkBuddy task context menu (TODO 01)
Replace the sidebar delete button with the original task menu: pin/unpin,
rename, open in a separate window, open folder, archive and delete.

Source: REA ev_f5e9d71a676c453daab40928acfb33aeabae68ba57ffda342380cead7f1a1fe2
(WorkBuddy 5.8.3 task menu, open state) supplies the container/item geometry,
the two dividers, danger colour and every item icon.

Verified by scripts/verify-task-menu.cjs: 33 assertions in a real isolated
Electron app (real preload/IPC/filesystem), including menu geometry, anchor
offset, pin/rename/archive persistence, open-folder target and the separate
window query. typecheck, test:conversation and build pass.
2026-10-17 04:43:56 +08:00

219 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WorkBuddy 复刻 TODO(2026-10-17)
本清单记录用户最初提出的 20 项问题及后续追加项,作为后续逐项拆解、实现和验收的工作入口。原始编号保持不变,新增需求顺延编号。本清单的建立与追加仅记录需求,不代表已完成对应采集或实现。
## 执行约定
- 查看 WorkBuddy 的源码、CSS、资源、页面及交互行为一律使用 REA。
- 已有内容沿用 WorkBuddy 5.8.2 的有效 REA 证据;此前未覆盖的内容再采集,并注明实际版本、Evidence ID、观察范围及限制。
- 每项依次记录:证据整理 → 差异与方案 → 实现 → 功能验证 → 视觉/交互验收。实现或构建通过不等于完成 1:1 验收。
- 只有全部验收点通过才勾选完成;记录待拆解的模块保持未完成状态。
- 优先保留用户会话、草稿、空间、模型配置和已有产物。回退、归档、删除应分别建模,不混用同一操作。
- 消息时间沿用已确认规则:当天 `HH:mm`;本年非当天 `M月D日 HH:mm`;非本年 `YYYY年M月D日 HH:mm`。显示消息时间,不显示实时钟表时间。
## 对话与侧栏
### 01. 任务操作菜单
- [x] 将侧栏对话条目后的直接删除按钮替换为原版任务操作入口。
- [x] 通过 REA 对齐菜单的入口、位置、顺序、图标、文案、悬停、关闭、禁用和确认状态。
- [x] 接入:置顶、取消置顶、重命名、独立窗口中打开、打开文件夹、归档、删除任务。
- [ ] 验收:置顶顺序和重命名持久化;独立窗口打开正确任务;文件夹指向正确工作目录;归档与删除行为独立;涉及运行中任务时有明确处理。
状态:主体已实现;运行中任务的处理与逐像素截图比对未完成。
原版证据:WorkBuddy 5.8.3,REA Evidence `ev_f5e9d71a676c453daab40928acfb33aeabae68ba57ffda342380cead7f1a1fe2`(任务菜单打开态),归档 `.tmp/rea-css-evidence/ev_f5e9d71a….json`。观察范围:任务列表首条任务的菜单容器、9 个条目、2 条分隔线、逐项 SVG 图标、几何与 computed style;未覆盖:菜单在窗口边缘翻转、运行中任务状态、分享/保存到工作空间/批量操作三类条目的行为。
原版菜单为 9 项:置顶(已置顶时为“取消置顶”)、重命名、分享任务、在独立窗口中打开、保存到工作空间、打开文件夹、批量操作、归档、删除任务。其中分享任务、保存到工作空间、批量操作依赖云端或尚未实现的能力,按“不渲染无效入口”的原则暂不列出,YCode 当前渲染 6 项。
原版实测数值:容器 170×352、`left = 按钮 left − 17`、`top = 按钮 bottom + 4`、padding 8、圆角 16、最小宽度 160;条目 32 高 / 14px / 22px 行高 / 圆角 8 / 图标 16×16;分隔线 1px、margin 6px 0;危险色 `#b42c3f`、普通文字 `rgba(0,0,0,0.9)`;卡片内“更多”按钮 16×16 且默认 `display:none`,悬停时替换时间显示。
实现:`Sidebar.tsx`(行结构、置顶排序、行内重命名、菜单挂载)、`task-menu.tsx`(菜单容器与条目)、`task-menu.css`(原版规则与深浅色取值)、`task-menu-icons.tsx`(逐项 SVG 原样复刻)、`stores/chat.ts`(setPinned / setArchived / renameSession)、`main/sessions.ts`(pinnedAt / archivedAt 持久化与排序)、`main/ipc.ts`(pin / archive / openFolder / openWindow)、`main/index.ts`(任务独立窗口)、`shared/types.ts`+`shared/ipc.ts`+`preload/index.ts`(契约)。
验证:`scripts/verify-task-menu.cjs` 在真实隔离 Electron(真实 preload / IPC / 文件系统)中 33 项断言全部通过,覆盖菜单文案与顺序、两条分隔线、逐项几何与配色、锚点偏移、遮罩关闭、置顶与取消置顶持久化、行内重命名持久化、归档保留会话与消息、删除真正移除、打开文件夹指向真实 cwd、独立窗口创建且携带 `window=task&taskId=…`。报告与截图:`.tmp/task-menu-Moulvm/`。`npm run typecheck`、`npm run test:conversation`、`npm run build` 通过;`npm run test:sessions` 在干净 HEAD 上同样报 `yaml` 动态 require 失败,与本次改动无关。
遗留:未覆盖运行中任务的置顶/归档/删除副作用与提示;未做原版逐像素截图比对;置顶标识图标取自同批归档的成员图标,原版置顶行的独立截图证据未采集。
### 02. 表格“添加到对话”及引用结果
- [ ] 对齐表格上方“添加到对话”按钮的字体、图标、背景、边距、出现条件及交互。
- [ ] 对齐点击后输入区内引用表格的呈现,包括结构、预览、移除和与已有草稿的组合方式。
- [ ] 对齐发送后用户消息中的表格引用显示。
- [ ] 验收:引用正确表格内容,不丢失已有草稿;输入区、发送结果及历史重载三种状态一致。
状态:待 REA 对照。
### 03. 编辑已发送消息
- [ ] 拆解原版编辑入口、编辑容器、文本排版、按钮、焦点与键盘交互。
- [ ] 对齐进入编辑、修改、取消、提交及失败状态。
- [ ] 验收:编辑正确消息;取消恢复原内容;提交后的消息分支与产物处理符合已确认行为。
状态:待 REA 对照。
### 04. 用户消息悬停时间
- [ ] 为已发送用户消息补齐悬停显示时间。
- [ ] 对齐出现位置、间距、字体、颜色和与操作图标的关系。
- [ ] 复用三档时间格式;验证当天、同年异日、跨年、历史重载。
状态:待 REA 对照;时间格式已确定。
### 05. 用户消息回退操作与图标
- [ ] 移除已发送用户消息上的“重新发送”按钮。
- [ ] 替换为“将对话及产物回退到此消息前”操作,图标、提示及交互通过 REA 对照。
- [ ] 明确回退边界:该消息之前,而非该消息之后;对话记录与对应产物修改一起处理。
- [ ] 验收:多轮对话、文件创建/修改、无产物、运行中禁用、取消确认、回退失败和重启后状态;不得只删除可见消息而保留应回退的文件修改。
状态:待 REA 对照与现有回退链路审查。
### 06. 对话区域滚动条
- [ ] 对齐宽度、颜色、轨道、圆角、悬停显隐、与内容边缘的间距。
- [ ] 检查滚动条占位、长内容、流式跟随底部及用户手动上滚的行为。
- [ ] 验收:浅色、深色、短对话、长对话、流式输出与不同窗口尺寸。
状态:待 REA 对照。
### 07. 侧栏最下一行
- [ ] 移除最下方不应存在的“收起菜单”入口。
- [ ] 对齐最下一行的布局、高度、内边距、字体、头像、当前图标与悬停状态。
- [ ] 验收:普通/窄侧栏、浅色/深色下均无残留入口或空白占位。
状态:待 REA 对照。
### 08. 新建任务发送后的立即切页与占位
- [ ] 盘点发送到创建会话、准备环境、接收首个事件之间的阻塞位置。
- [ ] 对照原版发送后的页面切换时机与等待状态。
- [ ] 发送后立即进入消息页面并显示用户消息;启动较慢时显示合适的助手占位/准备状态。
- [ ] 验收:慢启动、正常启动、发送失败、停止、切换任务;不等到模型输出后才切页,不重复创建会话或丢失草稿。
状态:待 REA 对照与发送状态链路排查。
### 09. 账户菜单与页面
- [ ] 通过 REA 对齐点击当前登录账户后的入口、弹层位置、布局、交互及页面风格。
- [ ] 内容按用户指定范围:头像与名称、套餐、余额、升级套餐、购买积分、设置、外观、记忆与进化、检查更新、退出登录。
- [ ] 逐项盘点现有数据和功能,区分可直接接入、待实现与依赖服务端;不以虚构余额、套餐或成功提示代替真实能力。
- [ ] 验收:已接功能实际生效,弹层关闭与导航返回正常,浅色/深色一致;内容不要求逐项照搬原版账户菜单。
状态:待 REA 拆解;菜单内容范围已确定。
## 设置
### 10. 通用
- [ ] 拆解原版通用设置页面的布局、控件和交互。
- [ ] 将 YCode 当前已经支持的内容接入对应控件,记录暂未支持的差异。
- [ ] 验收:控件反映真实配置;修改即时生效或明确提示生效时机,重启后持久化正确。
状态:待 REA 拆解与能力盘点。
### 11. 外观与浅色/深色主题
- [ ] 对齐原版外观页面及主题切换交互;当前只保留浅色、深色两种选择。
- [ ] 梳理原版主题切换会改变的 token、样式、资源和组件状态。
- [ ] 统一主窗口、设置窗口、独立任务窗口、弹层、输入区、对话、代码/表格/工具结果和右侧栏的主题响应。
- [ ] 验收:即时切换、跨窗口同步、重启持久化;所有已接页面无浅深混色和不可读内容。
状态:待 REA 对照与主题覆盖审计。
### 12. 快捷键页面与真实功能
- [ ] 拆解页面布局、分组、按键显示、编辑/恢复默认等实际存在的交互。
- [ ] 建立快捷键 → 命令 → 实际动作映射,按 REA 证据确认支持范围。
- [ ] 验收:展示按键与实际绑定一致;输入框、编辑器、弹层、独立窗口中的作用域和冲突处理正确;可修改项持久化。
状态:待 REA 拆解与命令绑定盘点。
### 13. 个性化页面与真实功能
- [ ] 拆解原版页面、字段、说明、保存/启停等交互。
- [ ] 将支持的个性化配置接入实际运行链路,确认在哪些新建/既有会话中生效。
- [ ] 验收:修改与持久化有效;界面显示与实际行为一致;未接能力明确记录,不用占位控件宣称完成。
状态:待 REA 拆解。
### 14. 记忆与进化
- [ ] 记录待拆解:入口、页面、数据、读写机制、会话生效方式及生命周期。
状态:待拆解,本轮不自动展开实施。
### 15. 智能体页面:团队管理
- [ ] 拆解原版智能体设置页面,本轮仅对接“智能体团队管理”。
- [ ] 根据 REA 证据梳理团队列表、详情及管理操作,将需要的真实存储/配置链路接入。
- [ ] 验收:仅展示已确定范围;管理操作实际生效、重启后可恢复;团队管理与真实子代理调度的完成度分别记录。
状态:待 REA 拆解;范围限定为团队管理。
### 16. 移除助理与设备连接
- [ ] 移除设置中的“助理”“设备连接”导航和页面入口。
- [ ] 清理默认选中、内部导航、深链接/旧配置回退中的无效目标。
- [ ] 验收:设置中不再出现这两项,旧导航目标不会导致空白页。
状态:待实施;范围仅为用户指定的设置入口,不据此删除其他模块功能。
### 17. 移除数据管理与应用管理
- [ ] 移除设置中的“数据管理”“应用管理”导航和页面入口。
- [ ] 清理相关无效导航与页面占位。
- [ ] 验收:入口完全移除且其余设置导航正常;不删除已有用户数据或已安装内容。
状态:待实施。
### 18. 安装中心
- [ ] 记录待拆解:入口、页面结构、安装来源、安装/更新/卸载流程及与其他能力中心的关系。
状态:待拆解,本轮不自动展开实施。
### 19. 关于与获取帮助
- [ ] 通过 REA 复刻“关于”“获取帮助”的布局、字体、图标、间距和交互外观。
- [ ] 不复制原版跳转链接;逐项标注 YCode 自有入口或尚未配置的跳转。
- [ ] 验收:本应用版本等信息真实;没有误跳 WorkBuddy 官方账户、帮助或其他服务地址。
状态:待 REA 对照;布局纳入范围,原版链接排除。
## 后续模块
### 20. 定时任务、资料库、更多中的项目
- [ ] 定时任务:待拆解入口、页面、任务配置、触发/执行记录及生命周期。
- [ ] 资料库:待拆解入口、资料组织、添加/读取/检索及会话引用方式。
- [ ] 更多 → 项目:待拆解入口、项目组织、工作区/任务关系及管理操作。
状态:三个模块均待拆解,本轮不自动展开实施。
## 追加需求
### 21. 对话框 Git 分支检测与会话上下文信息
- [ ] 通过 REA 拆解 WorkBuddy 对话框中 Git 分支和会话上下文信息的显示位置、图标、字体、间距、提示及交互。
- [ ] 根据当前任务绑定的工作目录检测 Git 仓库和实际分支;核对原版对非 Git 目录、未产生首次提交、detached HEAD、检测失败等状态的处理。
- [ ] 明确原版“上下文信息”的实际字段、数据来源、更新时机和展示方式,再接入 YCode 的真实会话数据;上下文用量等字段如存在,必须区分真实统计与估算。
- [ ] 验收:新建任务、已有会话、切换空间/任务、外部切换 Git 分支后的信息归属与刷新正确;无仓库时不显示虚构分支;浅色/深色及窄窗口布局与原版对齐。
状态:待 REA 拆解与现有能力盘点;本项仅加入 TODO,尚未实施。
## 推进顺序
1. 对话与侧栏:01 → 02 → 03 → 04 → 05 → 06 → 07 → 08 → 09 → 21。
2. 设置:先落实 16、17 的入口范围,再依次推进 10 → 11 → 12 → 13 → 15 → 19。
3. 14、18、20 保留为待拆解,后续单独展开。
## 每项交付记录模板
- 当前状态:待拆解 / 证据已齐 / 方案已明确 / 实现中 / 已实现未验收 / 已验收 / 有阻碍。
- 原版证据:版本、REA Evidence ID、观察范围、未覆盖状态。
- YCode 差异与方案:具体问题、涉及模块、数据与交互边界。
- 实现:修改文件、真实功能、占位或未接部分。
- 验证:功能回归、实际窗口交互、浅色/深色、相关截图/几何/像素结果及限制。
- 遗留:尚未解决的差异与下一步所需证据。