webclient: fix session-list flicker and double-load on select
- fetchSessions merges into existing items (preserve object references)
  instead of wholesale array replacement — DynamicScroller reuses rows,
  the list no longer repaints/reflows on every refetch (measured: sidebar
  repaint spikes 8-17% per switch -> 0)
- AppSidebar.handleSelect no longer refetches the list on a plain select;
  refetch only when leaving search (the array still held search results)
- loadSession now lives only in handleSelect — SessionList.onSelect used
  to start a first load and handleSelect raced it with a second one
  (double fetch + double buildMessageList, incl. search-jump target)
- pinSession mutates in place instead of replacing every item object
- SessionItem.highlightText matches on the raw string so <mark> offsets
  stay correct when the text contains &/</>
1 parent 6fdcc9e commit 329d243312c171a36d429d331ca568f58d7b68a0
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 5 hours ago
Showing 5 changed files
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/sessions.js
View
webclient/tests/unit/stores/sessions.test.js