webclient: virtualized message list (DynamicScroller)
- MessageList rewritten on vue-virtual-scroller DynamicScroller; only rows
  near the viewport mount (session switch 650-730ms longtask / DOM 31645 ->
  110-165ms / DOM 1-2.5k, zero freezes)
- scroller is keyed by session id: message ids repeat across sessions, so
  teardown drops the measured-size cache on switch
- convergeToBottom watches the bottom hold for a bounded window after
  landing (lazy row measurements nudge scrollHeight late); yields to wheel/
  pointer/touch input instead of scroll-position heuristics, which the
  scroller's own adjustments would trip
- renderMarkdown gets a byte-capped LRU memo so markdown remount cost is
  amortized while virtualized rows recycle
- removed dead .message-list/.message-list-inner styles
1 parent 196765d commit ecc75a999ab559fd11f6b6f1142dfe08137361e8
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 5 hours ago
Showing 9 changed files
View
webclient/dist/assets/index-Bn0A5kRz.css 100644 → 0
View
webclient/dist/assets/index-Chsl7xFo.js 100644 → 0
Not supported
View
webclient/dist/assets/index-c1nDx-WS.js 0 → 100644
Not supported
View
webclient/dist/assets/index-jS6HIWf0.css 0 → 100644
View
webclient/dist/index.html
View
webclient/dist/sw.js
View
webclient/src/components/chat/MessageList.vue
View
webclient/src/composables/useMarkdown.js
View
webclient/src/styles/app.scss