feat: 增加全局快捷键快速显示/隐藏主窗口
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 401
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
## 用户反馈
希望增加一个类似微信“显示 / 隐藏窗口”的全局快捷键。
目前 Cindy 的快捷键主要用于应用内操作,例如新建任务、切换任务、打开终端等;当 Cindy 不在前台时,无法通过快捷键快速调出。用户希望像打开和隐藏聊天窗口一样,在任何页面都能一键呼出 Cindy,再按一次即可隐藏。
## 功能范围
本 Issue 只处理 Cindy 完整主窗口的显示 / 隐藏,不包含 Quick Entry、快捷输入框或新建任务入口。
## 交互规则
### 1. Cindy 已隐藏或最小化
- 显示并恢复最后活跃的主窗口。
- 将窗口置于前台并获得焦点。
- 保留上次打开的 Workspace、任务 / 会话、页面位置、终端状态和未发送内容,不跳转到新页面。
### 2. Cindy 已显示,但不是当前活跃应用
- 将 Cindy 主窗口置于前台并获得焦点。
- **不能直接隐藏窗口**,避免用户想呼出 Cindy 时反而将其隐藏。
### 3. Cindy 已在前台
- 再次按下同一快捷键时隐藏主窗口。
- 隐藏不等于关闭或退出,正在运行的 Agent、终端和后台任务继续执行。
### 4. 弹窗与阻塞状态
- 如果存在授权、审批、文件选择或其他阻塞弹窗,快捷键应优先显示并聚焦该弹窗。
- 不能只隐藏主窗口、将弹窗遗留在其他窗口或桌面后方。
### 5. 多窗口与多显示器
- 始终以最后活跃的 Cindy 主窗口为目标。
- 恢复时尽量保留原来的窗口位置和尺寸。
- 如果原显示器已断开或窗口处于屏幕外,将窗口恢复到当前可用显示器。
## 快捷键设置与冲突处理
- 快捷键在 Cindy 运行期间全局生效,即使 Cindy 不是当前活跃应用。
- 支持在设置中自定义或关闭该快捷键。
- 不得与 Cindy 现有的新建任务、任务切换、终端等应用内快捷键复用。
- 如果快捷键已被系统或其他应用占用,应明确提示注册失败,不得静默失效或覆盖其他快捷键。
- 修改快捷键失败时保留原来可用的快捷键。
- 快捷键配置按设备本地保存,不直接跨 macOS / Windows 同步组合键。
- 忽略长按产生的重复按键事件,避免窗口连续显示 / 隐藏或闪烁。
- 不改变 Cindy 现有的关闭 / 退出行为;应用已完全退出时无需响应快捷键。
## 验收标准
- [ ] 同一个全局快捷键可以显示或隐藏 Cindy 主窗口。
- [ ] Cindy 隐藏或最小化时,快捷键可以恢复最后活跃的主窗口及其完整状态。
- [ ] Cindy 已显示但不在前台时,快捷键会将其置于前台,而不是隐藏。
- [ ] 仅当 Cindy 已在前台时,再按快捷键才会隐藏窗口。
- [ ] 隐藏窗口不会中断 Agent、终端、后台任务或丢失未发送内容。
- [ ] 存在阻塞弹窗时,快捷键会正确聚焦弹窗。
- [ ] 快捷键支持自定义、关闭和冲突提示。
- [ ] 多显示器环境下不会将窗口恢复到不可见区域。
- [ ] macOS 和 Windows 在平台能力允许的情况下保持一致体验。
## 用户价值
降低频繁切换和查找 Cindy 窗口的操作成本,让 Cindy 像聊天窗口一样可以随时呼出、用完即隐藏。
Contributor guide
Research direction
Start by mapping the existing application-internal shortcut handling, window lifecycle, settings, and native global-shortcut entry points for macOS and Windows. Verify the behavior against the listed acceptance criteria, including focus precedence, state preservation, conflict handling, multi-display recovery, and repeated key events.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100