Skip to content

修复 Electron 新建工作区目录选择的副作用 #697

@Yumiue

Description

@Yumiue

关联 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)

任务清单

  • 新增运行时上下文方法 pickWorkspaceDirectory
  • 将新建工作区弹窗从 selectWorkdir 切换到 pickWorkspaceDirectory
  • 保持浏览器模式手动输入路径,不显示系统目录选择按钮。
  • Electron 选择目录后只填入弹窗路径输入框。
  • Electron 取消目录选择时不回填旧路径、不关闭弹窗。
  • 补齐 RuntimeProvider 与 Sidebar 单元测试。

测试验证

  • npm test -- RuntimeProvider.lifecycle.test.tsx Sidebar.test.tsx
  • npm test
  • npm run verify:electron-preload
  • npm run build

风险与回滚

风险:

  • 运行时上下文新增字段后,测试 mock 需要同步补齐。
  • 状态栏工作目录切换与新建工作区目录选择仍需保持语义隔离。

回滚:

  • 回滚 pickWorkspaceDirectory 和 Sidebar 调用切换。
  • 暂时保留手动输入路径作为新建工作区入口。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions