# 运行中长气泡前端验收 本轮隔离验收完成,浏览器脚本退出码 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 备份取自后端早期增改时,不宣称为完整未修改基线。