每次点击都会先弹出系统文件夹选择器 cc-switch
Quick fix
修改 src/App.tsx 移除 handleOpenTerminal 中的 pickDirectory() 调用,即可解决点击打开终端时强制弹出文件夹选择器的问题。
Symptom
Section titled “Symptom”每次点击都会先弹出系统文件夹选择器,选完目录才打开终端。在 cc-switch 的多个版本中,前端交互逻辑存在冗余。以打开终端为例,src/App.tsx 的 handleOpenTerminal 函数在调用后端 open_provider_terminal 之前,无条件调用了 settingsApi.pickDirectory(),导致每次都必须手动选择目录。而后端 cwd 参数本身是 Option,不传时默认在终端目录打开,因此前端强制弹窗并非必须。
此外,该版本区间还存在其他类似的 UI 状态与事件绑定问题:托盘图标左键点击仅弹出菜单而无法直接打开主界面(需修改 Tauri 托盘事件监听)、从 S3 恢复备份后托盘菜单供应商数据未及时同步,以及 SQL 导入选择文件后需要二次点击确认。这些均属于前端状态管理或事件绑定的遗漏。
打开 src/App.tsx 文件,找到 handleOpenTerminal 函数。
移除 settingsApi.pickDirectory() 的调用及相关的 cwd 参数传递,直接调用 openTerminal。
// src/App.tsxconst handleOpenTerminal = async (provider: Provider) => {const selectedDir = await settingsApi.pickDirectory();if (!selectedDir) return;await providersApi.openTerminal(provider.id, activeApp, { cwd: selectedDir });await providersApi.openTerminal(provider.id, activeApp);...};若需同时修复托盘左键点击无法打开主界面的问题,在 Rust 后端设置 .show_menu_on_left_click(false) 并添加 TrayIconEvent::Click 事件处理。
Affected Versions
Section titled “Affected Versions”Toolcc-switch
Version3.16.2 - 3.19.2
PlatformsWindowsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 3 个真实 issue
- 为什么在 Linux 上修改托盘左键点击行为没有效果?
- 这是 Tauri 和平台的已知限制,TrayIconEvent 在 Linux 上不会触发,因此该改动在 Linux 上是安全的空操作,点击仍会弹出菜单。
- 修复打开终端弹窗后,还能指定工作目录吗?
- 后端 open_provider_terminal 的 cwd 参数本身是 Option,不传时会在终端默认目录打开。若需保留指定工作目录的能力,建议后续将其放入设置项或独立入口,而不是强制弹窗。
- 从 S3 恢复备份后托盘菜单不更新怎么办?
- 这是一个已知的同步 Bug,主界面数据正常但托盘菜单仍显示旧数据,目前需等待官方修复或尝试重启应用以刷新缓存。
原子替换失败 os error 50将 Claude Code 配置目录从 WSL 路径改回 Windows 本地路径,或回退至 v3.19.0。cc-switch 启动白屏 / 黑屏 / 闪退 / 无界面(launch crash)先区分是窗口状态损坏、WebView2/系统兼容问题,还是安全软件拦截;按日志和现象分别处理,必要时改用 CLI 版。Bash(...) Waiting... Claude Code降级 Claude Code 至 v2.1.104 或 v2.0.64(需管理员权限),或切换至阿里云百炼等兼容 provider,因 Nvidia 模型无法正确解析 tool use 格式。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。