Implement the fuzzy command palette #36

Closed
opened 2026-08-09 19:30:15 +00:00 by hugo · 1 comment
Owner

Goal

Replace the TUI command line with a keyboard-first fuzzy command palette in the top toolbar/title area.

Scope

  • Add a command search field to the top application chrome and focus it with Command-K on macOS and Ctrl-K elsewhere.
  • Fuzzy-match the currently available UI actions by localized display name and stable aliases; do not parse CLI syntax or call the CLI.
  • Show shortcuts, availability, and a concise reason when an action is disabled.
  • Support keyboard result navigation, Enter to invoke, Escape to close/restore focus, and mouse activation.
  • Include all desktop equivalents of the base pass, Git, OTP, lock, navigation, settings, and help actions; actions requiring more input open the corresponding GUI dialog.
  • Reuse the common UI action/enablement mapping from the menu issue rather than maintaining a second command registry.

Acceptance criteria

  • Common misspellings and subsequences produce deterministic, useful ordering.
  • Palette actions behave identically to their menu/toolbar equivalents, including confirmation and authentication gates.
  • Locked or context-invalid actions cannot be invoked through the palette.
  • Tests cover focus, matching order, keyboard execution, cancellation, and action availability.
## Goal Replace the TUI command line with a keyboard-first fuzzy command palette in the top toolbar/title area. ## Scope - Add a command search field to the top application chrome and focus it with `Command-K` on macOS and `Ctrl-K` elsewhere. - Fuzzy-match the currently available UI actions by localized display name and stable aliases; do not parse CLI syntax or call the CLI. - Show shortcuts, availability, and a concise reason when an action is disabled. - Support keyboard result navigation, Enter to invoke, Escape to close/restore focus, and mouse activation. - Include all desktop equivalents of the base pass, Git, OTP, lock, navigation, settings, and help actions; actions requiring more input open the corresponding GUI dialog. - Reuse the common UI action/enablement mapping from the menu issue rather than maintaining a second command registry. ## Acceptance criteria - Common misspellings and subsequences produce deterministic, useful ordering. - Palette actions behave identically to their menu/toolbar equivalents, including confirmation and authentication gates. - Locked or context-invalid actions cannot be invoked through the palette. - Tests cover focus, matching order, keyboard execution, cancellation, and action availability.
hugo added this to the 03 - Cross-platform Iced desktop app milestone 2026-08-09 19:30:15 +00:00
hugo added the enhancement label 2026-08-09 19:30:15 +00:00
Author
Owner

Implemented and pushed in commit 44e1b86. Added the persistent top-chrome command search, Cmd/Ctrl-K and native/in-window menu entry, deterministic typo/subsequence fuzzy matching over centralized display names, stable action IDs and aliases, visible shortcuts and shared availability reasons, scrolling keyboard selection with Enter/Home/End/arrows, Escape focus restoration, mouse invocation, and modal/authentication/context guards. Palette execution routes through the same invoke_action and enablement paths as menus and toolbars; no CLI parsing, subprocess, dependency, or second command registry was introduced. Verification: native macOS launch smoke; cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. All passed, including 16 desktop tests and the full TUI suite.

Implemented and pushed in commit 44e1b86. Added the persistent top-chrome command search, Cmd/Ctrl-K and native/in-window menu entry, deterministic typo/subsequence fuzzy matching over centralized display names, stable action IDs and aliases, visible shortcuts and shared availability reasons, scrolling keyboard selection with Enter/Home/End/arrows, Escape focus restoration, mouse invocation, and modal/authentication/context guards. Palette execution routes through the same invoke_action and enablement paths as menus and toolbars; no CLI parsing, subprocess, dependency, or second command registry was introduced. Verification: native macOS launch smoke; cargo fmt --all -- --check; RUSTFLAGS="-D warnings" cargo check --workspace --all-targets; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace. All passed, including 16 desktop tests and the full TUI suite.
hugo closed this issue 2026-08-10 15:39:58 +00:00
Sign in to join this conversation.