chore: rebuild release package

This commit is contained in:
shiyue
2026-07-24 08:00:31 +08:00
parent e5059e97c4
commit 4ab02ae33b
15 changed files with 778 additions and 73 deletions

View File

@@ -0,0 +1,18 @@
# 发现记录
## 2026-07-24
- `processCcwebMcpChildNotification` 当前仅处理子线程 turn 和 agent message忽略计划通知。
- `processCodexAppNotification` 已兼容 `plan/updated``turn/plan/updated``item/plan/updated``item/todoList/updated`
- `planUpdateItemFromParams``normalizeTodoListFromPlanItem``isTodoListPlanDone` 可作为纯解析链路复用。
- 子代理公开状态通过 `ccwebMcpChildPublicState``mergeCcwebMcpChildIntoTool` 和现有 child update 事件传给前端,适合承载精简计划字段。
- 前端已有 `createPlanProgressElement`,可抽出由 `{ completed, total }` 直接渲染的基础函数。
- 当前工作区已有未提交改动和用户自有 CSV必须保留且不能误清理。
- 子代理恢复路径当前只从原始 `subAgentActivity` input 恢复;精简计划应写进工具 `input.agentsStates[threadId]`,并在恢复时读取对应 agent state。
- `rememberCollabAgentStateFromChild` 会 spread 子代理公开状态,字段可进入缓存;但 `mergeCollabAgentTaskState` 需要确认不会在卡片工具合并时丢失计划字段。
- 现有 Plan List 进度点只在总数超过 12 时显示计数;子代理卡片需求明确要求始终展示 `completed/total`,基础渲染函数需要可配置计数显示。
- 样式文件实际为 `public/style.css`,后续 CSS 契约应使用现有 `PUBLIC_STYLE_PATH`
- `normalizeIdentifier` 会把 `inProgress` / `in_progress` 都归一为 `inprogress` / `in_progress`;当前完成状态判断已经兼容多种形状。
- 纯解析 API 适合返回 `{ item, todoList, progress, currentStep, done }`:父线程用 `todoList` 更新工具,子线程只保留 `progress/currentStep`
- 现有 Plan List 回归只断言 items 的 `completed` 和 progress可以在不改变 todo payload 形状的前提下从原始 entries 提取当前步骤。
- Plan List 的桌面进度点单点实际占用约 22px在 220px 子卡片内最多 12 点会溢出,因此子卡片保留同一语义和主题色,但将点尺寸收敛为 8px。

View File

@@ -0,0 +1,25 @@
# 进度日志
## 2026-07-24T06:22:38+08:00
- 恢复前一轮上下文并核对工作区状态。
- 完整读取 `planning-with-files``todo-list-csv` 技能说明。
- 已建立 7 步实施计划;当前执行失败回归阶段。
- 本地审查计划通过:范围和验收项完整,无需调整步骤。
- 已确认父计划解析、子通知处理、子状态恢复和前端卡片的精确修改点。
- 新增运行时纯解析 API 和前端简版进度的契约断言。
- `npm run regression -- --target subagent-card-metadata` 按预期失败:当前缺少 `createPlanProgressElementFromProgress`
- 已在 `codex-app-runtime` 暴露 `planUpdateFromNotification`,并将父线程计划通知改为复用该纯解析 API。
- 纯解析验证通过:三步计划得到 `1/3` 且当前步骤为“同步”。
- 子通知处理器已识别计划更新,并将 `planProgress` / `planCurrentStep` / `planUpdatedAt` 同步到公开状态和持久化工具结果。
- 持久化恢复现在优先读取工具 result 中的最新 agent state可恢复计划摘要。
- 已抽取 `createPlanProgressElementFromProgress`,子代理卡片复用进度点并始终显示计数。
- 卡片新增当前步骤单行省略展示;定向 `subagent-card-metadata` 回归通过。
- 首次全量回归在旧 Plan List DOM 契约处失败:断言仍提取 wrapper已改为检查抽取后的基础渲染函数。
- V2 mock 现在由子线程发送三步 `turn/plan/updated`;集成断言验证父卡片收到 `1/3` 和当前步骤。
- 新增前端行为断言3 个进度点、`1/3` 计数与当前步骤均正确渲染。
- 全量 `npm run regression` 在 60 秒限制内通过,包含 V2 计划状态持久化验证。
- 差异审查发现 Plan List 原 14px 点在子卡片中可能溢出,已添加高优先级 8px 卡片内覆盖,不影响原 Plan List。
- 当前修订已通过全量回归、`subagent-card-metadata` / `plan-list-progress` 定向回归、全部改动 JS 语法检查和 `git diff --check`
- 重启前 ccweb running 列表仅有当前会话,安全门禁通过。
- `pm2 restart ccweb --update-env` 已执行;命令回传因服务自身重启中断,事后验收确认 ccweb online、8002 返回 200、线上 `app.js` 包含新进度函数。

View File

@@ -0,0 +1,30 @@
# 子代理卡片计划进度
## 目标
当子代理通过 `update_plan` 更新计划时,把精简进度同步到父会话的子代理卡片;页面刷新后仍可恢复,并在完成回归后安全重启 ccweb。
## 阶段
| 阶段 | 状态 | 验收标准 |
|---|---|---|
| 1. 补充子代理计划进度失败回归 | complete | 回归能证明当前缺少子代理计划同步与卡片展示 |
| 2. 暴露并复用计划通知解析 | complete | 子代理和父代理使用同一套计划通知解析逻辑 |
| 3. 实现子代理计划状态同步与持久化 | complete | 子代理公开状态、工具状态、恢复状态都包含精简计划 |
| 4. 实现卡片简版进度渲染 | complete | 卡片显示进度点、完成数和当前步骤 |
| 5. 更新 V2 mock 与集成断言 | complete | mock 子代理发送计划通知,集成回归验证父会话收到状态 |
| 6. 运行回归和静态检查 | complete | JS 语法、diff 检查和 60 秒内全量回归通过 |
| 7. 检查运行会话、重启并验收 | complete | 无其他运行会话时重启PM2、HTTP 和线上资源正常 |
## 关键决策
- 继续复用 `ccweb_mcp_child_agent_update`,不新增 WebSocket 消息类型。
- 子代理只向父卡片暴露 `{ completed, total }` 与当前 `in_progress` 步骤,不复制完整计划项。
- 计划事件解析集中在 `codex-app-runtime`,避免父、子线程各维护一套协议兼容逻辑。
- 保留工作区中用户和上一任务的既有改动,仅在相关区域增量修改。
## 错误记录
| 错误 | 尝试 | 处理 |
|---|---|---|
| Plan List 回归仍从 wrapper 提取 DOM 契约,抽取 helper 后断言失败 | 1 | 契约改为检查 `createPlanProgressElementFromProgress` |