Files
cc-web/.trellis/tasks/10-10-streaming-retry-history/research/frontend-result.md
shiyue 69b6db0f5b 修复完整会话历史与长气泡交互并更新 CentOS 7 发布包
提交当前工作区全部源码、回归脚本、任务记录及重新构建的 Bun baseline 发布包。发布单文件 MCP 初始化及前端资源一致性验证通过。
2026-10-10 23:40:16 +08:00

61 lines
4.5 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.

# 运行中长气泡前端验收
本轮隔离验收完成,浏览器脚本退出码 0。证据目录:`/dev/shm/ccweb-streaming-retry-browser-G8wkN6`。
## 变更行为
- 正文超过 6000 字或达到 24 个文本块时显示折叠入口。多原生回复默认只显示最后回复,较早正文保留在 DOM,展开后完整显示。
- 无原生分界的单条长回复以 420px 高度收起,展开解除裁剪。既有定位入口先展开,再定位到末段。
- 复制入口与定位、分支控件放在现有工具行。复制取原始 Markdown 的最后原生回复;无原生分界时取完整回复。保留首行缩进和行末空格,过滤工具文本与真实回复分界。
- 围栏内同名分界 HTML 不作为原生回复分界。半截分界流式到达时仍复制上一完整回复。
- 使用原生按钮的 Enter、Space 操作;手机复制、定位、分支和折叠入口均至少 44px。
- 展开状态按会话和稳定消息 ID 在本页保存,切换/完成保留,刷新重新采用默认折叠。
## 验证结果
真实 Chromium 149.0.7827.55,真实生产 server.js、app.js、CSS,门控 Codex mock A/B/C;测试使用独立临时会话、配置、日志及原生历史目录。服务正文长度阈值设为 4096,实际第一段 128000 字以上。
8 个阶段全部通过:初始 A、切换返回 A、等待重试刷新 A、等待重试重连 A、续跑 AB、续跑 ABC、完成 ABC、完成刷新 ABC。最终 DOM 136748 字、一个稳定助手消息 ID、3 个完整工具结果。A/B/C 首尾各一次、中间长度及顺序完整;下一用户轮次创建独立气泡且保留旧气泡。
单条长回复定位检查记录 `expanded:true,visible:true`,裁剪区末段实际出现在视口。单条 Enter 展开、多条 Space 展开、较早 DOM 显隐、复制原始完整末回复(代码、列表、多自然段)、手机无额外水平溢出、editorial/nocturne 主题均通过。
前端控件单测 8 组、流式恢复单测 5 组、现有历史前端回归均退出 0。app.js 和全部新脚本语法检查、所改文件 `git diff --check` 均通过。
## 截图
- `desktop-collapsed-top.png`:桌面折叠,较早两段隐藏,末回复开头、列表与代码完整显示。
- `desktop-latest-reply.png`:桌面末尾,复制与定位、分支同排,3 个工具结果保留。
- `completed-earliest-text.png`:展开后最早第一段正文实际可见。
- `mobile-collapsed-top.png`:390px 手机折叠开头及代码,44px 展开入口。
- `mobile-latest-reply.png`:手机末尾三控件同排,44px 复制按钮。
以上 5 张截图均已实际查看。
## 来源和版本
浏览器脚本记录 `sourceFingerprints` 与 `sourceFingerprintsAfter`,本轮 `sourcesChangedDuringRun:[]`。
```text
server.js c964060ad121bf16edd44caf94226455cf8a434bb8b14b9f5c434a3215d6b404
public/app.js 433b4e68a9e91440eada679199a86ca7a84cf28b0f979eb3f46044be99fe757e
public/style.css 1dc679c46b8d26947d3489851ec0058e61b35ada23ac4cd2089f38999a773f6c
scripts/assistant-bubble-controls-unit.js f60bb8c1c393503c461885fd2ee7ef7636dacd2a94c3654ddcac470dc449ca63
scripts/streaming-retry-frontend-unit.js ea085438474e436d3f47f9d3c92afd5bb4fa0ea2b3f72252e52126e902c9f262
scripts/streaming-retry-browser-check.js 02a5a1afc5cb3d7329c10165b14aba1923903c734d32ae8835b7503b0c917a2f
```
外部 CDN 直连与 proxyd 下载超时后,按 proxyd-accelerator 技能降级到已有局域网代理下载相同版本库。marked 12.0.1、highlight.js 11.9.0、mermaid 10.9.1 与样式使用完整真实字节;无渲染桩。缓存目录 `/dev/shm/ccweb-streaming-browser-assets`,来源 URL、字节长度和 SHA256 记录在 evidence.json 的 assets 字段。
复跑命令(上限 60 秒):
```bash
timeout --signal=TERM --kill-after=5s 60s env TMPDIR=/dev/shm CC_WEB_STREAMING_BROWSER_ENGINE=chromium CC_WEB_STREAMING_BROWSER_ASSET_DIR=/dev/shm/ccweb-streaming-browser-assets node scripts/streaming-retry-browser-check.js
```
## 生产边界
本前端代理仅修改 UI 源码和隔离验证脚本,未写入真实会话、rollout 或运行态,未重启生产进程。父代理已确认生产静态资源按请求读取,刷新可加载新显示控件;完整正文恢复仍依赖后端修复的部署。不能据本隔离验收声称目标真实旧气泡已经恢复。
修复前隔离证据 `/tmp/ccweb-streaming-retry-browser-1XV24a`:初始 A 完整,切换返回 A 时 attach 裁剪使尾段丢失。最终本轮相同链路完整通过。该修复前 server 备份取自后端早期增改时,不宣称为完整未修改基线。