Files
2026-08-07 14:22:52 +08:00

3.2 KiB
Raw Permalink Blame History

修复标题显示归属

目标

确保会话内标题条显示在目标消息上方,并修复旧标签页继续运行过期前端脚本 导致修复看似失效的问题。

验收标准

  • 标题显示在 anchorMessageIndex 指向的消息上方;示例事件中应显示在 数组索引 0 的目标消息上方,而不是按 messageIndex = 1 插在其后。
  • 同一份标题事件在实时追加和会话重载后得到相同位置。
  • 缺少新锚点字段的历史标题事件仍按兼容规则稳定显示。
  • 已加载本次版本自检逻辑的页面,在后续服务升级后能检测资源版本不一致并 自动刷新一次;机制上线前已打开的旧页面需要手动刷新一次。
  • 相关定向测试及项目质量检查通过。

阶段计划

  1. DONE — 初始化任务并记录现象与验收条件
  2. DONE — 追踪标题事件生成、持久化与渲染链路
  3. DONE — 编写失败回归测试锁定旧前端版本刷新
  4. DONE — 实现前端版本自检并保持标题锚点兼容
  5. DONE — 运行标题与版本链路定向测试
  6. DONE — 运行前端相关质量检查
  7. DONE — 审查差异并完成任务记录

决策

  • 不以 CSS 位移掩盖问题,优先统一标题事件的语义锚点。
  • 标题锚点源码、数据与运行态静态文件均已正确,不重复改写排序算法。
  • 以当前 app.js 内容指纹作为前端资源版本,由服务端动态注入页面并在 WebSocket 鉴权成功时下发;客户端版本不一致时只触发一次刷新。
  • 先补失败测试再修改实现,锁定版本注入、握手与单次刷新契约。

已遇到错误

错误 尝试 处理
Trellis 新建任务后没有自动生成 prd.md 1 已按工作流要求显式创建需求文档
codebase-memory-mcp search_code 返回 Transport closed 3 停止重复调用,使用已取得的函数级结果并降级到 rg 补查静态资源与事件路径
运行态静态文件比对命令因包含 rm -f 被安全策略拒绝 1 改用纯管道读取与哈希,不创建或删除临时文件
首个失败回归实现代理运行超过 6 分钟且未产生差异或测试进程 1 已中断,改派更窄的最小可执行专项测试任务
第二个窄化实现代理仍未进入编辑阶段且无差异 2 已中断Trellis 实现代理通道不可用,主线程加载同一上下文后降级实施
首次绿灯运行仅“服务端入口注入”静态契约失败 1 实现使用占位符常量而测试要求字面量;改为字面量替换,保持行为不变并对齐可审计契约
首次运行态专项未读到注入后的全局版本 1 发现占位符与全局属性名相同,replaceAll 同时改坏属性名;改用不含占位符的 window.ccWebFrontendAssetVersion
首次全量回归的外层执行提前返回,无法取得子进程退出码 1 用直接 Node 调用并通过 write_stdin 等待会话,取得 REGRESSION_EXIT=0
Trellis 质量复核代理超过 5 分钟未回传、无新增差异或测试进程 1 已中断,主线程按同一 check 上下文完成逐行差异审计