Shielda — Keyboard Shortcuts

Shielda is keyboard-driven wherever it helps analysts work faster. Shortcuts are case-insensitive and do not fire while typing in an input, textarea, or contenteditable element (un...

Last updated: Phase 4 closing sprint

Shielda is keyboard-driven wherever it helps analysts work faster. Shortcuts are case-insensitive and do not fire while typing in an input, textarea, or contenteditable element (unless explicitly noted).

Global

Keys Action --- --- g then f Go to Findings g then s Go to Scans g then c Go to Counselor g then d Go to Dashboard home ? Open this shortcut overlay / Focus the page search field (when present) Esc Close any open modal / detail panel

Findings page (/dashboard/findings)

Keys Action --- --- j Select next finding k Select previous finding Enter Open the selected finding's detail panel Esc Close the detail panel x Toggle row selection (for bulk triage) a Select all visible findings Shift + A Clear selection 1 Filter Critical severity 2 Filter High severity 3 Filter Medium severity 4 Filter Low severity 0 Clear severity filter s Focus the status filter b Toggle SLA breaching pill

Bulk-triage shortcuts (multi-select mode)

When one or more rows are selected (x or click the checkbox column), the following keys dispatch to every selected finding in one pass:

Keys Action --- --- t Mark triaged r Mark resolved m Mark mitigated i Mark ignored u Re-open (set back to open) Cmd/Ctrl + Z Undo last bulk status change (one step, within 30 s)

Bulk changes are optimistic — a single toast confirms success, or rolls back all rows and shows an error if the API rejects.

Counselor page (/dashboard/counselor)

Keys Action --- --- Enter Send the message Shift + Enter Insert a newline in the input Cmd/Ctrl + K Create a new session Cmd/Ctrl + . Stop the current stream Cmd/Ctrl + / Toggle the session sidebar

Detail panels

Keys Action --- --- o Open the selected finding in a new tab Cmd/Ctrl + C Copy the CVE / CWE / file path to clipboard (on focus)

Accessibility

Every shortcut is also reachable via an equivalent button or menu item — the keyboard bindings are additive, never the only path to an action. The ? overlay documents all bindings in-app and is screen-reader friendly. Screen-reader users can skip the shortcut layer entirely; nothing breaks.

Implementation notes

Shortcut state is bound in the page-level component; component libraries (e.g. the data table) expose onRowKeyDown so the behaviour survives virtualisation. All shortcuts respect the browser's default when the user is typing — we check event.target against INPUT TEXTAREA [contenteditable] before preventing default. The underlying hook is useKeyboardShortcuts(bindings, { scope }) (see control-plane/src/lib/use-keyboard-shortcuts.ts).