feat(workbench): 支持文件树独立 Pane 与路径拖拽 - #665
Draft
yovinchen wants to merge 9 commits into
Draft
Conversation
…ee-workbench # Conflicts: # crates/agent-gateway/web/src/app/GatewayAppView.tsx # crates/agent-gateway/web/src/app/workbench/useGatewayWorkbench.ts # crates/agent-gui/src/pages/ChatPage.tsx # crates/agent-ui/src/components/project-tools/RightDockPanel.tsx # crates/agent-ui/src/lib/workbench/useWindowWorkbench.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联 Issue
Closes #661
依赖 #659 / #662 提供的 Desktop 与 WebUI Session Workbench 共享多 Pane 基础。本 PR 以
feat/session-workbench-web为 Base,Review 时只展示文件树独立 Pane 与工作区路径拖拽的增量;待 #662 合并后再同步并转向main。功能摘要
fileTreeWorkbench Surface,Desktop 与 WebUI 都可以通过拖拽或菜单将其打开到中央画布,并参与四向分屏、Pane 移动、关闭、聚焦与布局恢复。workspacePath内容拖拽协议,与 Pane 布局拖拽完全隔离,避免文件内容拖放被解释成 Workbench 自动分屏。cmd.exe提供分别对应的安全路径引用规则,覆盖空格、单引号、非 ASCII 字符以及危险控制字符拒绝。pointermove按动画帧合并,同一语义落点内不重复触发页面级 React 渲染,拖拽幽灵改用 compositortranslate3d更新。关键交互与安全边界
File Tree Surface
Composer 引用
file | dir类型。Terminal 路径
Desktop / WebUI 事件适配
dragenter/dragover/drop。enter/over的物理坐标转换为 CSS 坐标,再按data-workspace-path-drop-zone找到 Composer 或终端。File。改动范围
agent-ui、agent-gui、agent-gateway/web、Workbench 设计文档crates/agent-ui/src/components/project-tools/file-tree/**crates/agent-ui/src/components/project-tools/RightDock*crates/agent-ui/src/components/project-tools/XTermViewport.tsxcrates/agent-ui/src/pages/chat/ChatComposerBar.tsxcrates/agent-ui/src/lib/chat/workspacePathDrag.tscrates/agent-ui/src/lib/workbench/**crates/agent-gui/src/pages/ChatPage.tsxcrates/agent-gui/src/pages/chat/hooks/useTauriFileDrop.tscrates/agent-gateway/web/src/app/GatewayAppView.tsxcrates/agent-gateway/web/src/app/workbench/useGatewayWorkbench.tscrates/agent-gui/test/**docs/design/session-workbench-pane-architecture.md截图与运行预览
Desktop:File Tree 作为独立 Workbench Pane
截图展示:
WebUI 使用相同的
@liveagent/uiFile Tree Surface、Workbench 布局与路径拖拽协议。WebUI 多 Pane 运行预览及基础宿主验证见依赖 PR #662;本 PR 没有把 Web 截图冒充 Desktop 原生运行证据。验证结果
git diff --check origin/feat/session-workbench-web...HEAD通过。51c10b1a,不存在剩余冲突。本次增量仅修改 TypeScript/React、测试、文档和截图,没有 Rust、Go、protobuf 或依赖锁文件变化,因此未重复运行依赖 PR #662 已通过的 Rust/Go 全量检查。
依赖关系与合并顺序
feat/session-workbench-web切换到main,同步最新origin/main并重新确认差异与 CI。风险与回退
VITE_LIVEAGENT_SESSION_WORKBENCH开关控制,关闭后回到原单 Pane 路径。提交前检查