Reference · 3 min read

Command palette & keyboard shortcuts

⌘⇧P opens the command palette — a fuzzy-searchable list of every action in the app. Type a few characters of what you want, hit , done. Every menu-bar action, sidebar action, and major navigation move is accessible from here.

Noxen command palette showing fuzzy-search results for actions like Scan all, Add host, Open Settings, Toggle dark mode, Reload custom checks.
Fuzzy match — type "sca" and you get Scan now, Scan all, Reload custom checks ranked by recency and frequency.

Why a command palette

Two reasons. (1) Discoverability — every action is reachable from one entry point, so you don't memorise menu structures. (2) Speed — three keystrokes is faster than mouse-tracking through a hierarchical menu, especially as the app gains features.

Keyboard shortcuts

ShortcutAction
⌘⇧POpen command palette
⌘NAdd host (manual)
⌘RScan now (selected host)
⌘⇧RScan all hosts
EscCancel scan / Close sheet
⌘EExport findings (PDF / CSV / NDJSON)
⌘⇧UReload custom checks
⌘,Open Settings
⌘1 / ⌘2 / ⌘3Switch sidebar tab (Hosts / Findings / Dashboard)
⌘FFocus search field
/ Navigate hosts list
DeleteRemove selected host (with confirmation)
⌘WClose window
⌘QQuit Noxen (cancels in-flight scan)

Adding to the palette

The palette's action list comes from PaletteAction.all in the source. New product features that should be discoverable here are added by the Noxen team in the same PR that adds the feature. There's no public extension API in v1.0 — custom palette entries are tracked as a future feature request.

Recently used

The palette ranks results by (1) fuzzy-match score against what you typed, (2) most-recent / most-frequent local use. Frequently-used actions float to the top with no input — ⌘⇧P repeats the last action. Useful for the "scan all" → review → "scan all" loop.

Accessibility

The palette respects VoiceOver — each result is announced with its action name, current keyboard binding, and category. accessibilityReduceMotion short-circuits the open/close animation so motion-sensitive users don't get the slide-up effect. The fuzzy matcher is keyboard-navigable end-to-end.