feat: implement CommandPalette for quick filter and search

- Add text search across all focus items
- Support filter commands: type: and stale:
- Keyboard navigation with arrow keys + Enter
- Click to select items
- Escape or backdrop click to close
- 17 tests covering search, filters, keyboard nav, and empty state

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
teernisse
2026-02-26 10:16:00 -05:00
parent 23a4e6bf19
commit 807899bc49
5 changed files with 662 additions and 4 deletions

1
src-tauri/Cargo.lock generated
View File

@@ -3424,6 +3424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab7f01e9310a820edd31c80fde3cae445295adde21a3f9416517d7d65015b971"
dependencies = [
"paste",
"serde_json",
"specta-macros",
"thiserror 1.0.69",
]

View File

@@ -30,7 +30,7 @@ dirs = "5"
notify = "7"
tauri-plugin-global-shortcut = "2"
libc = "0.2"
specta = { version = "=2.0.0-rc.22", features = ["derive"] }
specta = { version = "=2.0.0-rc.22", features = ["derive", "serde_json"] }
tauri-specta = { version = "=2.0.0-rc.21", features = ["derive", "typescript"] }
specta-typescript = "0.0.9"

View File

@@ -109,6 +109,9 @@ pub fn run() {
tracing::info!("Starting Mission Control");
// Build tauri-specta builder for type-safe IPC
// Note: read_state/write_state/clear_state use serde_json::Value which doesn't
// implement specta::Type, so they're excluded from the builder but kept in
// the invoke_handler via generate_handler!
let builder = Builder::<tauri::Wry>::new().commands(collect_commands![
commands::greet,
commands::get_lore_status,
@@ -116,9 +119,6 @@ pub fn run() {
commands::sync_now,
commands::reconcile,
commands::quick_capture,
commands::read_state,
commands::write_state,
commands::clear_state,
]);
// Export TypeScript bindings in debug builds