Skip to content

feat(input): 支持顶部拖拽缩放输入框【已审核 PR】 - #2033

Draft
Andreaseszhang wants to merge 1 commit into
proma-ai:mainfrom
Andreaseszhang:feat/resizable-chat-composer-202609091551
Draft

feat(input): 支持顶部拖拽缩放输入框【已审核 PR】#2033
Andreaseszhang wants to merge 1 commit into
proma-ai:mainfrom
Andreaseszhang:feat/resizable-chat-composer-202609091551

Conversation

@Andreaseszhang

Copy link
Copy Markdown
Contributor

概述

为 Agent 与 Chat 的输入框增加仅通过顶部边缘进行的拖拽缩放能力。高度按 Agent 会话与 Chat 对话分别持久化;输入框总高度始终受真实可用空间与对话 viewport 60% 的较小值限制,避免挤压消息区。

改动

  • apps/electron/src/renderer/components/ai-elements/composer-resize.ts — 新增共享的高度上限、拖拽高度、持久化键和安全 localStorage 读写逻辑。
  • apps/electron/src/renderer/components/ai-elements/resizable-composer.tsx — 新增 useComposerResize,处理顶部 Pointer 拖拽、Pointer Capture、失焦/取消/卸载清理、ResizeObserver 重约束与拖后 TipTap 焦点恢复。
  • apps/electron/src/renderer/components/agent/AgentView.tsx — 接入 Agent 会话级 composer 拖拽、内部 chrome 滚动和实际消息视图区测量。
  • apps/electron/src/renderer/components/chat/ChatInput.tsxapps/electron/src/renderer/components/chat/ChatView.tsx — 接入 Chat 对话级 composer 拖拽及 viewport / 消息区域标记。
  • apps/electron/src/renderer/components/ai-elements/rich-text-input.tsx — 增加显式 fillHeight 高度链,确保放大后 TipTap 的可见编辑区均可点击落光标。
  • docs/plans/2026-09-09-resizable-chat-composer.md — 记录实现边界与验证路径。

测试方法

  1. 运行 bun run --cwd apps/electron typecheck
  2. 运行 bun run --cwd apps/electron build:renderer
  3. 手测 Chat 和 Agent:顶部边缘向上/向下拖拽、会话切换后的独立高度恢复、窗口缩小与 chrome 溢出滚动。
  4. 手测 Agent 的 AskUser / ExitPlan 横幅消失后首次挂载、拖拽中 viewport 变化、TipTap 编辑区上下区域点击落光标。

备注

  • 按需求移除了本次新增的 focused test 文件;本 PR 不新增测试文件。
  • 已完成只读本地准 PR 审核;未发现确定性 blocker。GPU / compositor 仍建议在长会话流式输出时以 Chromium Performance + Layers 做运行时 profile。

Made with Proma · GitHub

@Andreaseszhang
Andreaseszhang marked this pull request as draft September 9, 2026 07:57
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