### 反馈类别 桌面客户端 / 聊天输入框交互 ### 环境 - ZCode 桌面版 v3.14.3(Linux X11,源码仓库 zai-org/ZCode @ 29628c9) ### 问题描述 在会话 pane 里必须精确点中输入框本体的文字带才能打字。输入框外壳的 12px 内边距、输入框与工具栏之间的 12px 间隙、工具栏两侧按钮之间的空白区,以及**上方整个时间线输出区域**,点击后都不会把光标交还输入框 —— 这些区域都是纯展示 div,点击被吞掉。 日常影响:想先看看上面的输出再补充一句话时,每次都要重新瞄准输入框那一窄条,非常打击输入体验。 ### 原因定位(源码分析) 1. 可聚焦面只有 Lexical `ContentEditable` 本体(`packages/ui/src/LexicalChatInput.tsx`,`min-h-10 max-h-40`)。 2. 壳层 div(`packages/ui/src/prompt-editor/ChatPromptEditor.tsx`,`p-3` + `gap-3`)只有拖拽处理器,没有任何点击→聚焦转发;程序性聚焦只在切会话/草稿恢复时触发。 3. pane 级别也没有兜底(`packages/ui/src/v4/SessionPane.tsx` 根节点无聚焦逻辑)。 ### 建议方案(已在本地实现并验证) - **ChatPromptEditor 壳层**:`onMouseDown` 把非控件区域(padding/gap/工具栏空白)的按下转发为编辑器聚焦,`preventDefault` 后下一帧 `editor.focus()`,控件与编辑器本体保持原生行为。 - **ConversationComposer**:暴露 `focusHandleRef` 句柄路由到现有 `requestComposerFocus`,复用 `resolveComposerAutoFocus` 门控(竖切后台 pane 不抢焦点、连接中 defer)。 - **SessionPane**:pane 根节点点击兜底 —— 非交互目标一律聚焦输入框,跳过按钮/链接/表单/composer form 区域,且 selection 非折叠时跳过(保护拖选/双击选词复制)。 - 不复用 `draftFocusVersion` store 通道:`App.tsx` 对该版本号有"收起右侧面板"副作用,pane 点击会误触发。 ### 验证情况 dev 构建(`pnpm dev:desktop:prod`)手动验证:点击时间线空白/输出区域、壳层 padding、工具栏空白区均聚焦输入框;按钮/链接/拖选/双击选词行为不变。改动通过 `pnpm typecheck`、`pnpm lint`(0 errors)、`pnpm architecture:check --changed`(0 violations)。 如实说明:本问题由用户在日常使用中提出;上述源码定位、修复实现与验证均由 ZCode AI 编码代理(用 ZCode 修 ZCode)完成,用户在 dev 构建中人工确认了修复后的行为。 如果这个方向被接受,我可以提交 PR(改动 3 个文件 +74 行)。
Activity
github-actions commentedon Sep 24, 2026
👋 感谢你的反馈,我们已经收到。
status: 待评估,你可以随时补充信息。needs: 更多信息标签并 @ 你。👋 Thanks — we've received your issue.
status: 待评估(Triage); feel free to add context.needs: 更多信息and ping you.pjgmobile commentedon Sep 24, 2026
完整补丁与提交:
zai-org/ZCode@main...pjgmobile:ZCode:fix/pane-click-focus
完整 patch(git apply 可直接应用)
pjgmobile commentedon Sep 24, 2026
相关 issue:#801、#242(权限/提问弹窗抢走输入焦点)—— 方向相反,但同属 composer 焦点体验问题。
本 issue 的修复恰好补齐了「焦点被抢走后快速回焦」的路径:弹窗打断后,点击 pane 内任意空白处(包括上方输出区域)即可把光标交还输入框,无需精确瞄准输入带。
pjgmobile commentedon Sep 30, 2026
友好跟进一下状态 —— 这个 issue 提交已 6 天,目前仍在「待评估」,想确认是否在团队计划内。
补充两点可能有用的信息:
如需其他信息请随时告知,谢谢!