perf(desktop): 优化流式正文动画与渲染 - #3402
Conversation
Signed-off-by: DavidShen <david@xd.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 03c9661bef
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
| Filename | Overview |
|---|---|
| apps/desktop/src/renderer/components/chat/MarkdownRenderer.tsx | 接入流式 Markdown 分片渲染,并在非流式终态继续使用普通整篇解析。 |
| apps/desktop/src/renderer/components/chat/StreamingMarkdownChunk.tsx | 新增可记忆的分片渲染组件,并协调分片级淡入状态与整篇回退。 |
| apps/desktop/src/renderer/components/chat/streamingMarkdownChunks.ts | 实现稳定前缀分片及引用定义、标题和 HTML 块的全局上下文保护。 |
| apps/desktop/src/renderer/components/chat/rehypeStreamWordFade.ts | 将逐词动画调整为消息级共享时间线,并增加突发等待上限。 |
| apps/desktop/src/renderer/components/chat/StreamFadeSpan.tsx | 在 DOM 提交阶段调度词段和列表标记动画,并轻量化已完成节点。 |
| apps/desktop/src/renderer/components/chat/tests/streamingMarkdownChunks.test.tsx | 覆盖分片边界、全局上下文回退、DOM 复用和共享动画时间线。 |
Reviews (4): Last reviewed commit: "docs(design): align stream fade timing" | Re-trigger Greptile
Signed-off-by: DavidShen <david@xd.com>
反馈已处理已处理:
变更:
验证:
备注:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d840f926e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@DavidShenXD 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/desktop/src/renderer/components/chat/streamingMarkdownChunks.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。 如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。 |
Signed-off-by: DavidShen <david@xd.com>
反馈已处理已处理:
变更:
验证:
备注:
|
|
命中 UI 路径(apps/desktop/src/renderer/components/chat/MarkdownRenderer.tsx / apps/desktop/src/renderer/components/chat/StreamFadeSpan.tsx / apps/desktop/src/renderer/components/chat/StreamingMarkdownChunk.tsx 等)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范 |
MagicLizi
left a comment
There was a problem hiding this comment.
流式淡入的节奏已经改成了 16ms / 96ms / 160ms,但权威规范还写着「普通聊天禁止跨段 stagger、新段一律 0ms」。
- [P1] docs/design-rules/DESIGN.md:689
§14.4 红线仍是 ordinary chat no cross-segment stagger,同一 render 新到的段从0ms起。实现(rehypeStreamWordFade.ts53-57、202-215)和测试锁的是消息级 16ms 节奏、96ms 后压到 4ms、可见等待封顶 160ms。Windows 上的观感可以接受,但必须先改 §14.4 承认 16/96/160(inline code 与 list marker 走同一时间线),不能让红线和已上船的节奏互相打架。不要只改注释。
Signed-off-by: DavidShen <david@xd.com>
反馈已处理已处理:
变更:
验证:
备注:
|
这些问题已在当前 head 的后续 commit 中修复(格式门/安全门已通过),自动 dismiss 旧的 CHANGES_REQUESTED 以解除合并阻塞。
这次改了什么
摘要
承接 #3204 的流式正文淡入能力,优化消息级动画节奏和长回答的 Markdown 渲染成本,并为高速突发增加有界等待,避免正文已经占位却长时间透明。
变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
UI 变化
docs/design-rules/DESIGN.md §14.4 Motion & Transitions / Stream-word fade。本 PR 已将权威规范更新为经实机验收的消息级连续时间线:正常间隔 16ms、透明积压达到 96ms 后步长压缩为 4ms、透明等待封顶 160ms;继续遵守“仅流式助手正文、150ms opacity-only、reduced-motion 降级、终态无包装节点”的边界怎么验证的
自动验证
手工验证
earnest-lederberg-c2de6cDESKTOP_DEV_VERDICT=ready未执行的验证
pnpm test:unit:仓库工作流要求本地运行相关单测,完整单测由 CI 执行风险
风险分类
影响与回滚
prefers-reduced-motion会自动禁用动画apps/mobile原生配置、原生依赖或 runtime fingerprint提交前检查
git commit -s,见 DCO)DESIGN.md §14.4并附隔离实机连续帧证据)