feat(web): add command palette and keyboard navigation (#152) - #166
Merged
dotunv merged 3 commits intoAug 31, 2026
Merged
Conversation
added 2 commits
August 31, 2026 13:52
- Add Cmd/Ctrl+K command palette modal with quick actions, recent items, and workstation tool jump navigation - Implement zero-dependency fuzzy search engine supporting exact, prefix, acronym, and sequential substring scoring - Add localStorage-backed recent items and user preferences management with CustomEvents reactivity - Implement full keyboard navigation (ArrowDown/Up, Home/End, Enter, Esc), ARIA combobox attributes, and focus trapping - Add contextual shortcuts (Cmd+C for hash copy with text selection guard, Cmd+Enter for active tool action) - Add user preferences toggle in Settings page to enable/disable shortcuts and command palette - Add OS-aware shortcut badges/tooltips (<kbd> chips) on buttons and header trigger - Add mobile responsiveness with header trigger button and fullscreen modal layout - Add comprehensive unit test suite covering search, recents, preferences, and shortcuts
|
@okaforwisdom664-lgtm Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Resolves #152
This PR introduces a fast, keyboard-driven navigation system and command palette (
Cmd/Ctrl+K) for the SaviTools desktop dashboard. Power users can jump between all 12 workstation tools, search recent items, and trigger common contextual actions without reaching for the mouse.Implementation Details
1. Command Palette Dialog (
Cmd+K/Ctrl+K)⌘Kon macOS,Ctrl+Kon Windows/Linux).<CommandPaletteTrigger />in the top navigation bar with a responsive search bar on desktop and touch icon button on mobile.role="combobox",role="listbox",role="option",aria-activedescendant,aria-expanded), complete focus trapping, and focus restoration upon exit.ArrowDown/ArrowUp) with cyclical wrapping,Home/End,Enterto activate, andEscto close.2. Zero-Dependency Fuzzy Search Engine (
fuzzy-search.ts)score: 1000)score: 800+)score: 600+)ce-> Contract Events,ob-> Orderbook Simulator)3. Recent Items Persistence (
recent-items.ts)localStorageundersavitools_recent_items.savitools-recent-update) for live cross-component reactivity.4. Contextual Actions & Selection Guard (
command-palette-context.tsx)Cmd/Ctrl+Enter: Executes active tool actions (Inspect in Inspector, Simulate in Composer, Generate/Fund in Sandbox, Send in Webhooks).Cmd/Ctrl+C: Contextually copies transaction hash or address.window.getSelection()), native browser copying is preserved and never overridden.5. User Preferences (
preferences.ts&/settings)/settingswith a master toggle switch for palette & shortcuts.localStorageundersavitools_user_preferences.<kbd>chips.6. Shortcut Badges & Tooltips (
<ShortcutBadge />)<kbd>badges (⌘on Mac,Ctrlon Windows/Linux) displayed on key action buttons (Inspect, Simulate, Send Webhook).🧪 Validation & Test Results
command-palette.test.tswith 24 unit tests covering search scoring, recent items, preferences, selection guard, and ARIA logic. (npm testinapps/webpassed 24/24).npx tsc --noEmitpassed with 0 errors.npm run buildcompiled all 23 static pages with 0 errors.Branch & Compare URL
feature/152-command-palette-keyboard-navI am sorry for the delay