chore: rebuild release package and commit updates

This commit is contained in:
shiyue
2026-07-13 10:13:04 +08:00
parent dd466a69b5
commit 141a266f34
19 changed files with 1066 additions and 35 deletions

View File

@@ -0,0 +1,17 @@
# 发现记录
- 前端 `collabAgentStateEntries` 已读取 `label/title/name` 和 `description/summary/message`。
- 当前渲染层仅把任务提示词和结果简介写入 DOM `title`,卡片正文没有显示简介。
- 真实 Codex App `spawnAgent` 记录通常提供 `prompt`,但 `agentsStates` 在启动时为空,完成时 `name` 常为线程 ID。
- 当前 `mergeCollabAgentTools` 只保留一个全局 `prompt`,需要把各次 spawn 的 prompt 写入对应代理状态。
- 工作树开始时干净;已有 `.planning/codex-app-worker-timeout` 和根目录规划文件,不能覆盖。
- Trellis 前端规范目前大多是模板,因此实施以现有 `public/app.js` / `public/style.css` 约定和回归测试为主要依据。
- 原 Trellis 当前任务是 `00-bootstrap-guidelines`,本任务结束后需要恢复。
- 样式集中在 `public/style.css` 的 `.collab-agent-*` 区块;需补齐 `min-width: 0` / `max-width: 100%` 收缩链,并为新增简介采用两行 clamp。
- 回归入口是 `scripts/regression.js` 的 Codex App 子代理端到端段;现有测试验证事件链但未覆盖标题/简介展示语义。
- mock 已提供两个子代理及不同 `name/role/summary`,可扩展为通用名称 + 不同 prompt,验证前端合并不串任务上下文。
- 计划复审通过;实现范围保持前端与回归测试,不改后端协议、不重启服务。
- 独立质量检查发现 UUID 正则仅覆盖 v1-v5,会漏掉 UUID v7;需要改为通用 UUID 形状判断。
- 静态源码契约不足以证明多 spawn 行为;需要提取并执行实际纯函数源码,覆盖独立 prompt 与 wait/close 保留。
- 后续状态会携带归一化空标题字段;合并时只有新状态含可读标题才允许覆盖旧标题。
- 归一化 `entry.label` 可能由 prompt 派生,必须携带 `hasReadableSourceTitle` 标记区分协议标题和派生标题。

View File

@@ -0,0 +1,16 @@
# 进度记录
- 2026-07-11:完成现状定位与真实会话载荷核验。
- 2026-07-11:确定紧凑双层卡片方向,开始计划审查。
- 2026-07-11:创建 Trellis 任务、PRD,并配置实现/检查上下文。
- 2026-07-11:首次计划审查发现标题优先级、空 prompt、悬浮信息共存和范围约束缺口,已修订并提交复审。
- 2026-07-11:计划复审通过,进入回归断言设计。
- 2026-07-11:并行完成样式和回归入口研究,准备交给 Trellis 实现代理测试先行落地。
- 2026-07-11:实现标题选择、每代理 taskDescription、可见简介节点与窄屏样式,进入独立验证。
- 2026-07-11:完整回归通过;独立检查提出 UUID v7 与行为测试覆盖问题,进入修正循环。
- 2026-07-11:行为测试首次运行被多行源码契约误报阻断,已改用跨行正则。
- 2026-07-11:复核发现状态更新覆盖可读标题边界,已改为条件更新并补回归。
- 2026-07-11:进一步区分协议原生标题与 prompt 派生标题,避免派生 label 覆盖稳定协议标题。
- 2026-07-11:语法、diff、完整 regression 和独立复核全部通过;进入交付清理。
- 2026-07-11:最终 diff 与行号核验完成。实时服务在线但两次 5 秒请求无响应,环境无 Playwright/Chromium,因此未截图且未重启服务。
- 2026-07-11:Trellis 规范沉淀判断:本次为局部子代理卡片行为,核心边界已固化在行为回归中,没有形成跨模块通用约定,不更新 `.trellis/spec/`。

View File

@@ -0,0 +1,78 @@
# 子代理标题与简介展示计划
## 目标
在协作子代理卡片中稳定展示可读标题和任务简介,并确保多子代理合并、运行中与完成态都不丢失各自的任务上下文。
## 视觉与交互方向
- 视觉主张:延续现有深色紧凑工具卡,以清晰文字层级替代额外装饰。
- 内容计划:第一行标题与状态,第二层展示两行任务简介,角色作为低权重辅助信息,结果继续保留在悬浮详情中。
- 交互主张:保留卡片点击复制线程 ID、关闭按钮状态反馈和现有折叠行为,不新增装饰性动效。
## 当前阶段
已完成
## 阶段
### Phase 1: 建立实施计划并完成独立审查
- **Status:** complete
### Phase 2: 补充标题与简介的数据归一化回归断言
- **Status:** complete
### Phase 3: 实现每个子代理独立的标题与简介合并
- **Status:** complete
### Phase 4: 实现紧凑双层卡片渲染与样式
- **Status:** complete
### Phase 5: 运行语法检查与自动化回归测试
- **Status:** complete
### Phase 6: 检查真实页面效果并完成交付清理
- **Status:** complete
## 完成标准
- 按 `label → title → nickname → name` 选择第一个非通用、非线程 ID 的协议标题。
- 仅有线程 ID 或 `子代理` / `子代理 N` 等通用名称时,从该子代理自己的任务提示词生成稳定标题。
- 每个子代理保留自己的简介,多子代理合并不会共用第一个提示词。
- 无 prompt 时回退为短线程 ID,空字段不会导致异常。
- 简介最多显示两行,完整简介挂在简介 DOM 的悬浮提示;运行结果保留在卡片容器的独立悬浮详情,两者不互相覆盖。
- 现有状态、关闭、复制线程 ID 功能不回退。
- 窄屏下标题、状态和关闭按钮不横向溢出。
- 相关回归测试通过。
## 回归场景
1. 可读协议标题按字段优先级展示。
2. 通用标题从各自 prompt 提炼。
3. 多代理不同 prompt 的标题和简介不串联。
4. 无 prompt 时回退短线程 ID。
## 范围约束
- 不新增依赖。
- 不改变后端协议。
- 不重启服务。
## 错误记录
| 错误 | 尝试 | 处理 |
|---|---:|---|
| 暂无 | 0 | - |
| UUID v7 未被识别为线程式标题 | 1 | 扩展为通用 UUID 形状判断并补行为测试 |
| 回归仅验证源码字符串契约 | 1 | 提取实际纯函数源码执行多 spawn / wait / close 用例 |
| 新增集成契约按单行字符串匹配多行调用 | 1 | 改为允许空白与换行的正则匹配 |
| 后续空标题字段覆盖首次可读协议标题 | 1 | 合并时无可读新标题则保留旧标题字段,并补行为回归 |
| 多文件补丁缺少合法 hunk 边界 | 1 | 拆分为独立小补丁应用 |
| prompt 派生 label 被误判为协议标题 | 1 | 归一化阶段携带标题来源标记并补行为回归 |
| 规划文档阶段格式未被完成检查器识别 | 1 | 改为标准 Phase 三级标题与完成状态字段格式 |