FEAT: improve conversation history loading for long sessions (#371)

* feat: add "Load all messages" button for long conversations

Scrolling up through long conversations requires many "load more" cycles.
This adds a "Load all messages" floating button that fetches the entire
conversation history in one shot.

- Floating overlay pill appears after each batch finishes loading, persists 2s
- Shows loading spinner while fetching all messages
- Shows green "All messages loaded" confirmation for 1s before disappearing
- Preserves scroll position when bulk-loading (no viewport jump)
- Ref-based guards prevent scroll handler from re-fetching after load-all
- Performance warning shown; "Scroll to bottom" resets visible cap
- Clean state reset on session switch
- i18n keys for en and zh-CN

Note: default page size (20) and visible cap (100) are unchanged.
These could be increased in a follow-up or made configurable via settings.

* re-implement load-all feature for new TS architecture
This commit is contained in:
Iván Yepes
2026-02-16 13:20:28 -05:00
committed by GitHub
parent 2cfcae049b
commit 151e8ee808
6 changed files with 234 additions and 21 deletions

View File

@@ -175,7 +175,11 @@
"showingOf": "Showing {{shown}} of {{total}} messages",
"scrollToLoad": "Scroll up to load more",
"showingLast": "Showing last {{count}} messages ({{total}} total)",
"loadEarlier": "Load earlier messages"
"loadEarlier": "Load earlier messages",
"loadAll": "Load all messages",
"loadingAll": "Loading all messages...",
"allLoaded": "All messages loaded",
"perfWarning": "All messages loaded — scrolling may be slower. Click \"Scroll to bottom\" to restore performance."
}
},
"shell": {

View File

@@ -175,7 +175,11 @@
"showingOf": "{{total}}개 중 {{shown}}개 표시",
"scrollToLoad": "위로 스크롤하여 더 로드",
"showingLast": "마지막 {{count}}개 메시지 표시 (총 {{total}}개)",
"loadEarlier": "이전 메시지 로드"
"loadEarlier": "이전 메시지 로드",
"loadAll": "모든 메시지 로드",
"loadingAll": "모든 메시지 로딩 중...",
"allLoaded": "모든 메시지 로드 완료",
"perfWarning": "모든 메시지가 로드됨 - 스크롤이 느려질 수 있습니다. \"맨 아래로 스크롤\"을 클릭하면 성능이 복구됩니다."
}
},
"shell": {

View File

@@ -175,7 +175,11 @@
"showingOf": "显示 {{shown}} / {{total}} 条消息",
"scrollToLoad": "向上滚动以加载更多",
"showingLast": "显示最近 {{count}} 条消息(共 {{total}} 条)",
"loadEarlier": "加载更早的消息"
"loadEarlier": "加载更早的消息",
"loadAll": "加载全部消息",
"loadingAll": "正在加载全部消息...",
"allLoaded": "全部消息已加载",
"perfWarning": "已加载全部消息 - 滚动可能变慢。点击「滚动到底部」恢复性能。"
}
},
"shell": {