Skip to content

feat(desktop): 添加在文件管理器中打开入口 - #3

Open
XDoldyuan wants to merge 1 commit into
xindong:mainfrom
XDoldyuan:feat/local-project-show-in-explorer
Open

feat(desktop): 添加在文件管理器中打开入口#3
XDoldyuan wants to merge 1 commit into
xindong:mainfrom
XDoldyuan:feat/local-project-show-in-explorer

Conversation

@XDoldyuan

Copy link
Copy Markdown

这次改了什么

摘要

为本地项目增加“在文件管理器中打开”入口,方便从项目菜单、对话列表/卡片和顶部对话菜单直接打开当前项目目录;远程项目不会显示该入口,避免在控制端误打开同名路径。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:无
  • 本 PR 包含:本地项目菜单入口;Windows/Linux Ctrl+Shift+S、macOS ⌘⇧S 快捷键;四语言文案;回归测试
  • 明确不包含:远程 SSH / Device Link 项目;快捷键自定义;服务端改动
  • 用户可见变化:本地项目相关菜单新增“在文件管理器中打开”,菜单打开时显示并响应快捷键
  • 是否存在 breaking change:无

UI 变化

  • 引用的设计规范:docs/design-rules/DESIGN.md §Light / Dark Dual-Mode Delivery Gate、§11 Voice & Content。入口复用现有 DropdownMenu 行高、间距和语义颜色 token;快捷键提示复用菜单元信息 token;中文采用“在文件管理器中打开”,并同步 en/ja/ko 文案。未新增只适配单一主题的颜色或样式。

未附截图:本次仅在既有菜单中增加标准菜单项和快捷键提示,未改变布局结构。

怎么验证的

自动验证

定向 Vitest:64 项通过
corepack pnpm --filter desktop run --if-present typecheck
结果:通过

ESLint
结果:通过

check:i18n
结果:通过

check:i18n-glossary
结果:通过

corepack pnpm test:unit
结果:全部 workspace 通过;Desktop 通过(181.8s),Mobile 通过;6 个无可收集测试的 workspace 按仓库规则跳过

corepack pnpm check:dco
结果:通过(1 个提交,Signed-off-by 与 author 一致)

手工验证

不涉及:当前环境未启动 Desktop 实例,未执行 Windows/macOS/Linux 实机菜单目检。

未执行的验证

  • 未执行三平台实机目检;快捷键平台映射、仅本地项目显示和菜单打开时才绑定由自动测试覆盖。
  • 未执行 pnpm test:all;本次为 Desktop Renderer 的小范围菜单能力,已完成仓库要求的完整单元测试、Desktop 类型检查及相关静态检查。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:Desktop 本地项目的项目菜单、对话菜单与快捷键处理。Windows/Linux 使用 Ctrl+Shift+S,macOS 使用 ⌘⇧S;远程项目不显示入口。
  • 回滚 / 降级方式:回退本 PR 即可恢复原菜单与快捷键配置,不涉及数据迁移或持久化格式变化。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: yuanzhengjie <yuanzhengjie@xd.com>
@greptile-apps

greptile-apps Bot commented Aug 28, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 为桌面端本地项目和项目会话菜单增加“在文件管理器中打开”入口,并添加仅在菜单打开时生效的跨平台快捷键。

  • 在项目节点、会话列表/卡片和顶部会话菜单复用统一菜单项
  • 排除 SSH 与 Device Link 远程工作区,避免在控制端打开远端路径
  • 新增 Windows/Linux Ctrl+Shift+S 与 macOS ⌘⇧S 映射
  • 补齐中、英、日、韩文案及快捷键契约测试
  • 调整 Markdown 渲染契约测试以兼容 CRLF

Confidence Score: 5/5

未发现阻塞合并或需要单独整改的问题,此 PR 看起来可以安全合并。

本地目录入口沿用现有受控 Electron bridge,SSH 与 Device Link 路径均在渲染入口处被排除,快捷键监听器也会随菜单内容挂载和卸载。

Important Files Changed

Filename Overview
apps/desktop/src/renderer/features/cc-agent/sidebar/ShowInExplorerMenuItem.tsx 新增复用菜单项,将快捷键监听生命周期限制在已打开菜单内,并展示平台化快捷键提示。
apps/desktop/src/renderer/features/cc-agent/SessionContentHeader.tsx 为顶部会话菜单增加受控打开状态及本地项目目录打开入口,远程会话被明确排除。
apps/desktop/src/renderer/features/cc-agent/sidebar/SessionItem.tsx 为侧栏会话条目的各菜单分支增加本地目录打开操作及失败提示。
apps/desktop/src/renderer/features/cc-agent/sidebar/SessionCard.tsx 为卡片式会话菜单增加与列表条目一致的本地目录打开行为。
apps/desktop/src/renderer/features/cc-agent/sidebar/sections/ProjectNode.tsx 将既有项目目录打开入口改为共享菜单项,并隐藏远程项目入口。
apps/desktop/src/shared/appShortcuts.ts 注册不可自定义且隐藏于设置页的跨平台“在文件管理器中打开”快捷键。
apps/desktop/src/renderer/tests/sidebarShowInExplorerShortcut.test.ts 覆盖平台映射、本地项目守卫、菜单项复用及提示文案,但主要通过源码字符串断言验证组件契约。

Sequence Diagram

sequenceDiagram
  participant U as 用户
  participant M as 本地项目菜单
  participant S as 快捷键处理器
  participant B as electronAPI
  participant O as 系统文件管理器
  U->>M: 打开菜单
  M->>S: 挂载并启用快捷键
  U->>M: 选择菜单项或按快捷键
  M->>B: openPath(workingDir)
  B->>O: 打开本地项目目录
  B-->>M: 返回成功或错误
  M->>S: 关闭菜单并卸载处理器
Loading

Reviews (1): Last reviewed commit: "feat(desktop): 添加在文件管理器中打开入口" | Re-trigger Greptile

@XDoldyuan

Copy link
Copy Markdown
Author

CodeQL is not triggering for this fork PR. As of August 28, 2026, the regular checks (client-ci/verify, pr-design-basis, and Greptile) are successful, but no CodeQL workflow run is attached to the PR head commit. GitHub therefore reports “Code scanning is waiting for results from CodeQL” and keeps the merge blocked. Could a maintainer please re-trigger/approve CodeQL for this PR and, if needed, update the branch-protection/code-scanning requirement for external fork PRs? This appears to be a repository workflow/branch-protection issue rather than a code failure.

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