画布agent交互优化 #105
Reference in New Issue
Block a user
Delete Branch "editor-agent-improve-interaction"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
输入框尺寸根据输入内容调整高度,达到最大高度后再出现翻页条。



before:
after:
调整对话切换角标样式


before:
after:
新建对话按钮禁用 当已在一个新对话中
前端修改可以加点图片看看改动前后的差异
[P1] 创建或切换会话未完成时仍能发送。发送按钮 (line 716) 未检查 isCreatingConversation / isLoadingMessages:
新建 pending 时会把草稿发进旧会话,随后又切到新空会话。
历史会话加载时,hook 会静默跳过发送 (line 410),但面板已清空草稿和附件,内容直接丢失。
[P2] 新建期间下拉仍可操作。禁用条件 (line 313) 未包含 isCreatingConversation;用户后选的历史会话会被迟到的创建回包再次覆盖。
[P2] 输入框没有旧浏览器降级。实现 (line 700) 仅依赖 field-sizing: content。默认 Browserslist 仍包含 Safari/iOS 18.5–18.7,而 WebKit 到 Safari 26.2 才加入该属性。模拟不支持时,五行草稿始终只有 40px 高,与 PR 文档要求的自动增长不符。
EditorAgentDraftTextareacomponent for unified handling of auto-sizing and add fallback behavior[P2] 静默 refresh 仍可能覆盖新建会话
useEditorAgentConversation.ts (line 237) 的 loadConversation 只校验自己的 request id;createConversation (line 329) 成功后不会让旧 load 失效。路径还是:A 会话 job 完成触发 silent refresh,用户新建 B,B 先返回切 active,A 的 refresh 后返回又 applyConversationDetail(A) 把 active 改回 A。会话刷新是否传递会话ID?
[P2] textarea fallback 仍少算 2px border
EditorAgentDraftTextarea.tsx (line 20) 仍把 scrollHeight 直接写到 border-box 的 style.height。真实 Chromium 复测两行:styleHeight=56px / clientHeight=54 / scrollHeight=56 / overflowY=hidden,底部仍会被裁 2px。应把 offsetHeight - clientHeight 的边框差计入高度,测试也该断 overflowY=hidden 时 scrollHeight <= clientHeight。
[P2] 请求 ID 会碰撞,旧刷新可能提前结束新会话切换的加载态。useEditorAgentConversation.ts (line 237) 在 refresh 被 activation 压制时生成 ID 却不登记;紧接着再次切换会复用这个 ID。旧 refresh 返回后,第 278 行 (line 278) 会把仍在进行的切换错误地标记为加载完成。顺序是:A → 切 B → 刷新 A → 切 C → 刷新先返回。此时用户可以发送,消息仍会发到旧会话 A。现有测试只覆盖两请求,没有覆盖这组三请求交错。
IME 还有旧版 Safari/WebKit 兼容缺口:EditorAgentDraftTextarea.tsx (line 89) 只检查 isComposing。旧 WebKit 在候选词确认时可能返回 false,通常还需兼容 keyCode === 229。该行为原本就在 master,不算 PR 105 引入的回归;WebKit 已于 2026 年 4 月修复并回灌 Safari 分支,但旧客户端仍受影响。WebKit 165004、修复 311717。