Add session search across messages with backend + frontend
Backend:
- GET /sessions now accepts `search` query param
- _session_summary computes match_indices and match_preview from messages
- pg_session_store: messages ILIKE added to search_list and count_all
- In-memory store: search_list also filters by message content

Frontend:
- AppSidebar: search toggle icon + debounced input, Ctrl+K shortcut
- SessionItem: highlight matching text, show match_preview from search
- SessionList: pass searchQuery to SessionItem
- SessionsStore: searchQuery/searchActive state, setSearch/clearSearch
- API layer: getSessions accepts search param
- MessageList: scroll to target message + brightness flash animation
- ChatStore: loadSession accepts targetMessageIndex, scrollToMessageIndex ref
- CSS: msg-flash keyframe animation in app.scss
- Tests updated for new getSessions signature

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent e68751f commit 0d4591f42d2ed85677a13fdb9ba24830b6f1722f
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored on 14 May
Showing 12 changed files
View
navi/api/routes/sessions.py
View
navi/core/pg_session_store.py
View
navi/core/session.py
View
webclient/src/api/index.js
View
webclient/src/components/chat/MessageList.vue
View
webclient/src/components/sidebar/AppSidebar.vue
View
webclient/src/components/sidebar/SessionItem.vue
View
webclient/src/components/sidebar/SessionList.vue
View
webclient/src/stores/chat.js
View
webclient/src/stores/sessions.js
View
webclient/src/styles/app.scss
View
webclient/tests/unit/stores/sessions.test.js