Skip to content

feat(stability): stream text batching, bounded file preview, CI chromium smoke, and offline terminal indicator - #5

Merged
Bluuok merged 2 commits into
mainfrom
codex/final-stability
Sep 29, 2026
Merged

Bluuok merged 2 commits into
mainfrom
codex/final-stability

Conversation

@Bluuok

@Bluuok Bluuok commented Sep 22, 2026

Copy link
Copy Markdown
Owner

Summary

小型稳定性 PR,完成以下四项改进:

  1. 流式 text_delta 40ms 合并刷新 (Task A):

    • 新增纯函数 helper streamBatcher.ts,以 ~40ms 窗口合并来自多个 messageId 的 text_delta/textSnapshot,减少 DOM 滚动抖动和高频 re-render。
    • 在 text_complete、run_status、错误或用户取消/发送前立即同步 flush。
    • 切换会话、断线、组件卸载时取消过期定时器并清空待处理增量,避免上一会话内容泄漏。
    • 保留并增强 revision / loadSequence 竞争防护,历史异步加载不会覆盖正在流入的新文本。
    • Conversation 抽取 memo MessageItem 组件,稳定历史消息引用与 onCopyError 回调。
  2. 大文件预览上限与安全截断 (Task B):

    • files.READ 不再对超大文件无界全量读取。保留 resolveSessionFilePath 路径穿越与链接保护。
    • 新增 packages/shared/src/sessions/preview.ts:使用同一打开文件句柄 fstatSync/readSync/closeSync,拒绝非普通文件。
    • <= 1MiB 全量预览;> 1MiB 仅读取前 256KiB;多字节 UTF-8 边界安全截断,防止伪造末尾字符 (\uFFFD);磁盘原文件完全保留。
    • 更新 FileReadResult / FilePreviewState,并在 DetailsPanel 提示“文件较大,仅显示前 256 KiB”。
  3. Chromium 动效 Smoke Test 加入 CI (Task C):

    • scripts/verify-ui.cjs 增加 --web-only 入口,纯 Web 流程完整覆盖 verify-map-motion.cjs、verify-run-motion.cjs 及大文件截断、断线终态断言,不初始化 Electron。
    • 更新根目录 package.json 添加 test:ui:web。
    • 更新 .github/workflows/validate.yml:增加 Node setup、安装 Playwright Chromium 及系统依赖、构建后执行 web-only 动效 smoke,失败时上传 QA 产物。
    • 说明:本次测试运行于真实浏览器环境 + 本地模型 fixture(THREADCOVE_PROVIDER=deepseek + 本地 mock HTTP 响应),不读取个人 Go 密钥或发真实模型请求,亦非重新验证真实 Go 接口。
  4. 离线终态显示修复 (Task D):

    • RunIndicator 在离线状态下完整保留 completed、cancelled、failed、interrupted 终态。
    • 仅当研究未结束且离线时显示“连接中断,执行状态待同步”;空闲/无任务离线不显示多余提示。
    • 记录已播放完成态 token,连接恢复时不重复播放完成动画。

Verification

  • bun test: 178 passed, 0 failed across 26 test files (含新增的 streamBatcher.test.ts, preview.test.ts, RunIndicator.test.tsx)。
  • bun run typecheck: 0 errors across all workspace packages。
  • bun run lint: 0 errors。
  • bun run build: WebUI 与 Electron 构建成功。
  • node scripts/verify-ui.cjs --web-only: PASSED (verification.json 生成,passed=true, requests=4, webOnly=true)。
  • node scripts/verify-ui.cjs: PASSED (Web + Electron 完整运行通过,passed=true, requests=6)。

@Bluuok
Bluuok merged commit 3dc1dd7 into main Sep 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant