|
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 &/</> |
|---|
|
|
| webclient/src/components/sidebar/AppSidebar.vue |
|---|
| webclient/src/components/sidebar/SessionItem.vue |
|---|
| webclient/src/components/sidebar/SessionList.vue |
|---|
| webclient/src/stores/sessions.js |
|---|
| webclient/tests/unit/stores/sessions.test.js |
|---|