2.1 KiB
- Step 1: Audit current codebase for existing search and provider logic on frontend and server
- Step 2: Design and scaffold Provider Registry on frontend and server
- Step 3: Implement SearchService with multi-provider params and HTTP request
- Step 8: Implement backend /api/search with providers param and fan-out to server/providers handlers
- Step 4: Build SearchBoxComponent with chips, @autocomplete, and keyboard shortcuts
- Step 5: Build ProviderPickerComponent (Ctrl/⌘+K modal) with filtering and apply
- Step 6: Build SearchSuggestionsComponent with grouped sections and empty-state handling
- Step 7: Add router query-param sync and default provider preference loading
- Step 9: Persist default providers preference in user profile (server + client integration points)
- Step 10: Add keyboard accessibility and a11y behaviors (Tab/Shift+Tab, Esc)
- Step 11: Write unit tests (SearchService, ProviderPicker toggle, @ parsing)
- Step 12: Write basic e2e scenarios for providers filtering and deep-link
- Step 13: Add minimal telemetry hooks and events
- Step 14: Update README UX GIF and usage notes
Updated TODO status
Step 4: Build SearchBoxComponent with chips, @autocomplete (initial), and keyboard shortcuts Step 5: Build ProviderPickerComponent (Ctrl/⌘+K modal) with filtering and apply — finish History column + a11y in modal Step 6: Build SearchSuggestionsComponent with grouped sections and empty-state handling — add per-provider unsupported rows + deep-links Step 7: Add router query-param sync and default provider preference loading (initial sync in Search page) Step 9: Persist default providers preference in user profile (client + server endpoints wired) Step 10: Add keyboard accessibility and a11y behaviors (Tab/Shift+Tab, Esc) — finish trap/aria in modal Step 11: Write unit tests (SearchService, ProviderPicker toggle, @ parsing) Step 12: Write basic e2e scenarios for providers filtering and deep-link Step 13: Add minimal telemetry hooks and events Step 14: Update README UX GIF and usage notes