Feature area
Frontend UI
Description
As a broadcast operator, I want a comprehensive, Linear-style keyboard shortcut system so that I can drive Rhema live without reaching for the mouse — which is the realistic operating mode during a service.
Today, Rhema has a few implicit shortcuts but no discoverable, unified system. A live operator needs to toggle broadcast, jump between panels, navigate detections/queue, and switch translations all by keyboard. Linear's shortcut model (chords, single-verb actions, ? to discover, ⌘K for commands) is an industry-proven pattern that generalizes well here.
Suggested solution
Build out in three layers:
1. Global single-key verbs (no modifier)
| Key |
Action |
Space |
Toggle broadcast live ON/OFF |
S |
Start/stop transcription |
P |
Pin current focused detection (see documentation/context-awareness-prd.md) |
/ |
Focus the search input |
? |
Open shortcuts cheat sheet overlay |
Esc |
Close dialogs / unfocus / exit reading mode |
2. G chord navigation (jump to panel)
| Chord |
Target |
G then T |
Transcript panel |
G then Q |
Queue panel |
G then S |
Search panel |
G then D |
Detections panel |
G then P |
Preview panel |
G then L |
Live output panel |
3. ⌘K / Ctrl+K command palette
A searchable overlay (shadcn cmdk — already a dep) for everything that isn't worth a dedicated key:
- Switch translation (e.g., "NIV", "ESV")
- Jump to verse ("John 3:16")
- Toggle themes, open Settings sections
- Start/stop OSC and HTTP remote-control servers
4. List navigation (when a list has focus)
| Key |
Action |
J / K or ↓ / ↑ |
Move selection |
Enter |
Send focused item to broadcast / preview |
Cmd+Enter |
Send and clear queue selection |
Backspace / Del |
Remove from queue |
5. Reading-mode shortcuts
| Key |
Action |
[ / ] |
Previous / next verse |
{ / } |
Previous / next chapter |
Cross-cutting requirements
- Shortcuts must not fire while typing in inputs/textareas (
role="textbox", contenteditable).
- Every shortcut surfaces in the
? overlay (single source of truth, driven by a config map).
- Shortcut hints appear in tooltips on relevant buttons (
Start transcribing (S)).
- Conflicts with existing
@tauri-apps/plugin-global-shortcut usage must be resolved — plugin owns OS-level, this system owns in-app.
- Integrate with
src/hooks/use-remote-control.ts so shortcut actions route through the same handlers as OSC/HTTP.
Alternatives considered
Alternatives considered
- Single flat list of modifier shortcuts (e.g.,
⌘+1, ⌘+2): fails the "muscle memory" test for an operator who is also using their DAW/ProPresenter with its own ⌘+N shortcuts.
- A mouse-only "command bar": doesn't solve hands-free live operation.
- Per-panel local shortcut registration: fragmented, no global discovery; rejected in favor of a centralized
useShortcutRegistry pattern.
Additional context
Additional context
- Reference UI: Linear (https://linear.app/method/keyboard-shortcuts), GitHub's
? cheat sheet, and the shadcn cmdk recipe.
- Known integration surface: Stream Deck / TouchOSC / Companion (OSC + HTTP, see
documentation/remote-control.md) — the shortcut system should share handlers with these so the behavior of "press Space to go live" matches "Stream Deck button to go live."
- Scope note: this issue is the umbrella. Individual shortcut layers (global verbs,
G chords, ⌘K palette) can be split into sub-issues for incremental PRs.
Validations
Feature area
Frontend UI
Description
As a broadcast operator, I want a comprehensive, Linear-style keyboard shortcut system so that I can drive Rhema live without reaching for the mouse — which is the realistic operating mode during a service.
Today, Rhema has a few implicit shortcuts but no discoverable, unified system. A live operator needs to toggle broadcast, jump between panels, navigate detections/queue, and switch translations all by keyboard. Linear's shortcut model (chords, single-verb actions, ? to discover, ⌘K for commands) is an industry-proven pattern that generalizes well here.
Suggested solution
Build out in three layers:
1. Global single-key verbs (no modifier)
SpaceSPdocumentation/context-awareness-prd.md)/?Esc2.
Gchord navigation (jump to panel)GthenTGthenQGthenSGthenDGthenPGthenL3.
⌘K/Ctrl+Kcommand paletteA searchable overlay (shadcn
cmdk— already a dep) for everything that isn't worth a dedicated key:4. List navigation (when a list has focus)
J/Kor↓/↑EnterCmd+EnterBackspace/Del5. Reading-mode shortcuts
[/]{/}Cross-cutting requirements
role="textbox",contenteditable).?overlay (single source of truth, driven by a config map).Start transcribing (S)).@tauri-apps/plugin-global-shortcutusage must be resolved — plugin owns OS-level, this system owns in-app.src/hooks/use-remote-control.tsso shortcut actions route through the same handlers as OSC/HTTP.Alternatives considered
Alternatives considered
⌘+1,⌘+2): fails the "muscle memory" test for an operator who is also using their DAW/ProPresenter with its own⌘+Nshortcuts.useShortcutRegistrypattern.Additional context
Additional context
?cheat sheet, and the shadcncmdkrecipe.documentation/remote-control.md) — the shortcut system should share handlers with these so the behavior of "press Space to go live" matches "Stream Deck button to go live."Gchords,⌘Kpalette) can be split into sub-issues for incremental PRs.Validations