## 背景 前端审计第二轮发现快捷键体系「宣称未实现」与键盘动线断点,聚合追踪。 ## 所属部分 - [x] 前端 - [ ] 后端 - [x] 客户端 ## 要做什么 - [ ] Ctrl/⌘+K 死功能:`useGlobalKeyboardShortcuts.ts` 只翻转 searchStore open 标志,全仓无组件消费 → 实现搜索对话框或移除宣称 - [ ] 帮助面板宣称的 6 个快捷键无 handler:`keyboardShortcuts.ts` Ctrl+N/Ctrl+Alt+N/Ctrl+B/Ctrl+J/Ctrl+O/Ctrl+W → 实现或从帮助面板与设置页撤下 - [ ] quick-open 菜单宣称 Ctrl+P/Ctrl+T/Ctrl+` 未注册;chat/terminal 两项 `mode: null` 点击 no-op(`InspectorTabChrome.tsx`) - [ ] Ctrl/⌘+, 派发 `agenthub:navigate` 无监听者;`useGlobalKeyboardShortcuts` 仅 desktop 接线,Web 帮助面板所有 Ctrl 键无效 - [ ] 自定义改键死功能:`saveCustomKeybindings`/`resetKeybindings` 无 UI 调用方;dispatcher 读 canonical 表不读 resolved - [ ] 会话内搜索(Ctrl+F)结果无 ↑↓ 选择/Enter 跳转(`MessageSearchPanel.tsx`);且 Ctrl+F 监听不排除可编辑目标,composer 内被劫持 - [ ] 无会话快速切换(quick switcher/Ctrl+Tab/Alt+↑↓);审批无批量 approve/reject;会话侧栏无多选 - [ ] 用户消息气泡无上下文菜单(quote/reply/edit/regenerate 对纯文本消息不可达)、无编辑/复制/重发入口(`UserMessage.tsx`) - [ ] 表情回应只写不显:`EmojiPicker.tsx` 可 POST 但 transcript 无 reaction 渲染、无取消入口 - [ ] 引用回复用 setText 整体覆盖草稿(`workbenchTranscriptChromeActionMappers.ts`)→ 合并而非覆盖 - [ ] 多选栏转发/导出/建任务与单项菜单 translate/建话题/apps 全是 toast-only 占位 → 接线或下线 - [ ] Composer 输入区不自动增高(rows=1 固定);草稿只持久化 text+mentions,附件/reply/quote/目标切换即丢,且存在 ≤500ms idle 竞态与陈旧 mention 不校验 - [ ] turn_in_progress 队列徽标 pointer-events:none 无取消入口,切会话静默丢弃队首 - [ ] 拖拽/粘贴只绑 composer:拖到 transcript/侧栏触发浏览器打开文件;类型白名单被拖拽路径绕过 ## 验收标准 - [ ] 帮助面板列出的每个快捷键都有真实 handler 或被撤下 - [ ] 键盘可完成:会话切换、搜索跳转、消息操作、审批 - [ ] 相关包 typecheck/test 通过 ## 相关文档 - `app/shared/src/utils/keyboardShortcuts.ts`
背景
前端审计第二轮发现快捷键体系「宣称未实现」与键盘动线断点,聚合追踪。
所属部分
要做什么
useGlobalKeyboardShortcuts.ts只翻转 searchStore open 标志,全仓无组件消费 → 实现搜索对话框或移除宣称keyboardShortcuts.tsCtrl+N/Ctrl+Alt+N/Ctrl+B/Ctrl+J/Ctrl+O/Ctrl+W → 实现或从帮助面板与设置页撤下未注册;chat/terminal 两项mode: null点击 no-op(InspectorTabChrome.tsx`)agenthub:navigate无监听者;useGlobalKeyboardShortcuts仅 desktop 接线,Web 帮助面板所有 Ctrl 键无效saveCustomKeybindings/resetKeybindings无 UI 调用方;dispatcher 读 canonical 表不读 resolvedMessageSearchPanel.tsx);且 Ctrl+F 监听不排除可编辑目标,composer 内被劫持UserMessage.tsx)EmojiPicker.tsx可 POST 但 transcript 无 reaction 渲染、无取消入口workbenchTranscriptChromeActionMappers.ts)→ 合并而非覆盖验收标准
相关文档
app/shared/src/utils/keyboardShortcuts.ts