|
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 |
|---|
|
|
| webclient/dist/assets/index-Bn0A5kRz.css 100644 → 0 |
|---|
| webclient/dist/assets/index-Chsl7xFo.js 100644 → 0 |
|---|
|
Not supported
|
| webclient/dist/assets/index-c1nDx-WS.js 0 → 100644 |
|---|
|
Not supported
|
| webclient/dist/assets/index-jS6HIWf0.css 0 → 100644 |
|---|
| webclient/dist/index.html |
|---|
| webclient/dist/sw.js |
|---|
| webclient/src/components/chat/MessageList.vue |
|---|
| webclient/src/composables/useMarkdown.js |
|---|
| webclient/src/styles/app.scss |
|---|