Split from #11146.
Problem
The Control UI has a command-palette shortcut, but common dashboard chat actions still require mouse interaction. The most obvious gap is the New messages button, which is click-wired only.
Current source evidence:
ui/src/ui/app.ts has a document-level shortcut only for Cmd/Ctrl+K / Ctrl+K to toggle the command palette.
ui/src/ui/views/chat.ts renders New messages with only the button click path to onScrollToBottom.
- Chat textarea key handling is local to composer behavior such as slash menu, search, and history; it is not a guarded dashboard dispatcher.
Scope
Add a guarded Control UI shortcut dispatcher for the smallest valuable set of dashboard actions:
/ focuses the chat composer when focus is not already inside editable content.
N jumps to new messages / bottom when the new-message affordance is present.
Esc dismisses transient dashboard UI such as command palette, search, menus, notices, or focus state where applicable.
- Keep existing
Cmd/Ctrl+K command palette behavior.
Avoid binding Space as the primary jump shortcut for the first pass because it conflicts with native button/page behavior.
Acceptance criteria
- Shortcuts do not fire while focus is in an input, textarea, select, contenteditable region, dialog text field, or component-owned text editor.
- Existing composer-local arrow/history/slash-menu behavior remains unchanged.
- New-message jump reaches the same behavior as clicking New messages.
- Shortcut help/discoverability is available through the command palette or adjacent UI if there is an existing pattern for it.
- Focused UI tests cover guarded dispatch, no-op editable-focus cases, and the new-message path.
Validation expectation
Before merge, run focused UI tests for the touched shortcut/chat path and the repo's changed-file gate in Testbox for user-visible Control UI work.
Split from #11146.
Problem
The Control UI has a command-palette shortcut, but common dashboard chat actions still require mouse interaction. The most obvious gap is the New messages button, which is click-wired only.
Current source evidence:
ui/src/ui/app.tshas a document-level shortcut only forCmd/Ctrl+K/Ctrl+Kto toggle the command palette.ui/src/ui/views/chat.tsrenders New messages with only the button click path toonScrollToBottom.Scope
Add a guarded Control UI shortcut dispatcher for the smallest valuable set of dashboard actions:
/focuses the chat composer when focus is not already inside editable content.Njumps to new messages / bottom when the new-message affordance is present.Escdismisses transient dashboard UI such as command palette, search, menus, notices, or focus state where applicable.Cmd/Ctrl+Kcommand palette behavior.Avoid binding
Spaceas the primary jump shortcut for the first pass because it conflicts with native button/page behavior.Acceptance criteria
Validation expectation
Before merge, run focused UI tests for the touched shortcut/chat path and the repo's changed-file gate in Testbox for user-visible Control UI work.