fix(chat): 回复完成后保持消息流贴底 - #3731
Conversation
Signed-off-by: WEIWEICurry <2728306174@qq.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/renderer/components/chat/MessageStream.tsx | 将贴底 guard 提前并消费待重锚,使 auto-follow 不再被同次提交中的旧锚点恢复覆盖。 |
| apps/desktop/src/renderer/tests/focusScrollLifecycle.test.ts | 新增源码顺序测试,但未断言修复所依赖的提前返回语义。 |
Prompt To Fix All With AI
### Issue 1
apps/desktop/src/renderer/__tests__/focusScrollLifecycle.test.ts:441-444
**回归测试未约束短路语义**
这些断言只检查 guard、清空语句和后续标记的文本顺序;即使删除关键的 `return`,测试仍会通过,而后续旧锚点恢复逻辑将重新具备覆盖 auto-follow 的条件。请让测试直接约束贴底分支的短路行为或最终滚动位置,避免原问题在测试保持通过时回归。
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "fix(chat): keep bottom pinned when repli..." | Re-trigger Greptile
|
@WEIWEICurry 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/desktop/src/renderer/tests/focusScrollLifecycle.test.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。 如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。 |
|
命中 UI 路径(apps/desktop/src/renderer/components/chat/MessageStream.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范 |
|
这个 PR 会改变消息流在回复完成时的贴底交互,已提交维护者确认。 确认方式:维护者直接在本 PR 上 Approve;如果要求修改,请 Request Changes。讨论 issue:#3740 在维护者确认之前,自动流程不会合并。 |
Signed-off-by: WEIWEICurry <2728306174@qq.com>
f11435c to
5a3ee2a
Compare
这次改了什么
摘要
回复完成时,运行中的工作组会重建为完成态分组。现有的删除/重锚 layout effect 会在贴底状态下先恢复旧视口锚点,覆盖同一提交中的
pinToBottom,因此长对话可能跳回本轮提问位置。本 PR 让贴底 auto-follow 在该时序中拥有最高优先级,并消费已失效的待重锚;用户主动上滚后的既有阅读位置保护保持不变。
变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
MessageStream的贴底与视口重锚优先级;补充回复完成时工作组 key 重建的回归测试。UI 变化
docs/design-rules/DESIGN.md§7(禁止无意的视觉跳变)与 §14.4(交互保持快速、直接,流式内容本身已构成运动)。本修复移除无用户操作的视口跳转,不新增样式、布局、文案或动效,因此无截图差异。怎么验证的
自动验证
手工验证
未执行 Desktop 实机长会话验证;本次通过滚动生命周期的定向回归测试和相关单测覆盖。
未执行的验证
风险
风险分类
影响与回滚
MessageStream贴底状态下的删除/分组重建补偿;非贴底阅读、历史恢复和显式导航仍走原逻辑。提交前检查
git commit -s,见 DCO)