Skip to content

[P1] 键盘快捷键与高效动线修复包(前端审计第二轮) #1822

Description

@DeliciousBuding

背景

前端审计第二轮发现快捷键体系「宣称未实现」与键盘动线断点,聚合追踪。

所属部分

  • 前端
  • 后端
  • 客户端

要做什么

  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priorityjavascriptPull requests that update javascript code前端Web 工作台、IM 交互、前端状态和 UI客户端Desktop、Runner、Edge 本地调度和 Agent CLI

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions