Files
yellowjacket/.planning/phases/09-scan-cancellation-keyboard-shortcuts/09-CONTEXT.md
T
2026-03-06 11:32:22 -05:00

3.4 KiB

Phase 9: Scan Cancellation & Keyboard Shortcuts - Context

Gathered: 2026-03-06 Status: Ready for planning

## Phase Boundary

Users can control library scans (cancel/pause/resume) and operate the entire app via configurable keyboard shortcuts. Scans stop gracefully without database corruption, paused scans resume without re-processing. Keyboard shortcuts work out of the box with sensible defaults, are fully customizable via a settings UI, context-aware across three scopes, and suppressed during text input.

## Implementation Decisions

Default key bindings

  • Hybrid style: Space/arrows for player controls (no modifier), Ctrl+key for app actions
  • Up/Down arrows adjust volume, Left/Right seek within track
  • Both / and Ctrl+F focus the search box
  • Q toggles the queue panel
  • S for shuffle, R for repeat (single-key player controls)
  • Ctrl+A for select-all in any multi-select context (track lists, etc.)
  • All bindings are configurable — the above are defaults
  • Claude fills in remaining defaults (mute, etc.) using common media player conventions

Shortcut settings UI

  • Record-style key capture: click a shortcut row, press the new key combo, it captures live
  • Conflicts show a warning with the conflicting action — user chooses to overwrite (old becomes unbound) or cancel
  • Shortcuts grouped by category (Player, Navigation, App) in the settings view
  • "Reset to defaults" button resets all shortcuts; individual per-shortcut reset also available
  • Lives as a "Keyboard Shortcuts" tab within the existing settings dialog

Context scoping

  • Three scopes: Global (always active), Panel-specific (when a panel has focus), Text Input (shortcuts suppressed)
  • Global scope: player controls (Space, arrows, S, R, Q, etc.) fire regardless of which panel is focused
  • Panel-specific scope: track list gets Enter-to-play and Delete-to-remove when focused
  • Text Input scope: only Escape works (blurs the text input) — all other shortcuts suppressed
  • No visual scope indicator — relies on natural browser focus behavior; users learn through use

Scan control UX

  • Pause and Cancel buttons placed next to the existing status label, above the existing progress bar in the scanner UI
  • On cancel: prompt the user — "Keep X tracks found so far, or discard?" — gives user control over partial results
  • On resume after pause: skip already-processed files and continue with remaining — no duplicate work
  • Scan control is buttons-only — no keyboard shortcuts for cancel/pause (scans are infrequent)

Claude's Discretion

  • Remaining default key assignments not explicitly discussed (mute, volume step size, etc.)
  • Scan progress detail level and error handling during scan
  • Loading/disabled states for scan control buttons
  • Visual design of the shortcut settings UI (spacing, grouping headers, etc.)
  • How the cancel confirmation dialog looks and behaves
## Specific Ideas
  • Hybrid key style inspired by media players (Foobar2000/Winamp feel for player controls, standard app conventions for Ctrl+key actions)
  • Both / and Ctrl+F for search — power users get slash, everyone knows Ctrl+F
  • Record-style key capture like VS Code's keybinding editor
  • Cancel prompt on scan gives user control without losing work
## Deferred Ideas

None — discussion stayed within phase scope


Phase: 09-scan-cancellation-keyboard-shortcuts Context gathered: 2026-03-06