关联 RFC
暂无上游 RFC。本 Issue 作为 Electron 新建工作区目录选择修复的实现执行单。
目标问题
Electron 端“新建工作区”弹窗需要支持通过系统资源管理器选择目录,但该目录选择只应作为弹窗内的临时路径输入,不应修改全局运行时工作目录,也不应触发 Gateway 重启或工作区切换。
实现设计
- 在 Web 运行时上下文中新增
pickWorkspaceDirectory(): Promise<string | null>。
pickWorkspaceDirectory() 仅调用 window.electronAPI.pickDirectory()。
- 选择成功返回目录路径;取消、无路径、异常或浏览器模式返回
null。
- 不调用
setWorkdir,不调用 gateway:selectWorkdir,不重启 Gateway。
Sidebar/CreateWorkspaceDialog 使用该方法填充弹窗本地路径输入框。
- 工作区真正创建仍走
gateway.createWorkspace(path, name) -> gateway.switchWorkspace(hash)。
任务清单
测试验证
风险与回滚
风险:
- 运行时上下文新增字段后,测试 mock 需要同步补齐。
- 状态栏工作目录切换与新建工作区目录选择仍需保持语义隔离。
回滚:
- 回滚
pickWorkspaceDirectory 和 Sidebar 调用切换。
- 暂时保留手动输入路径作为新建工作区入口。
关联 RFC
暂无上游 RFC。本 Issue 作为 Electron 新建工作区目录选择修复的实现执行单。
目标问题
Electron 端“新建工作区”弹窗需要支持通过系统资源管理器选择目录,但该目录选择只应作为弹窗内的临时路径输入,不应修改全局运行时工作目录,也不应触发 Gateway 重启或工作区切换。
实现设计
pickWorkspaceDirectory(): Promise<string | null>。pickWorkspaceDirectory()仅调用window.electronAPI.pickDirectory()。null。setWorkdir,不调用gateway:selectWorkdir,不重启 Gateway。Sidebar/CreateWorkspaceDialog使用该方法填充弹窗本地路径输入框。gateway.createWorkspace(path, name)->gateway.switchWorkspace(hash)。任务清单
pickWorkspaceDirectory。selectWorkdir切换到pickWorkspaceDirectory。测试验证
npm test -- RuntimeProvider.lifecycle.test.tsx Sidebar.test.tsxnpm testnpm run verify:electron-preloadnpm run build风险与回滚
风险:
回滚:
pickWorkspaceDirectory和 Sidebar 调用切换。