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

49 lines
3.2 KiB
Markdown
Raw Permalink 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.

# 修复标题显示归属
## 目标
确保会话内标题条显示在目标消息上方,并修复旧标签页继续运行过期前端脚本
导致修复看似失效的问题。
## 验收标准
- 标题显示在 `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 上下文完成逐行差异审计 |