feat(chat): migrate history list to @tanstack/react-virtual with deterministic mobile history loading
- Replace virtua with @tanstack/react-virtual for chat history on all surfaces: bottom anchoring (anchorTo: end), key-stable prepend preservation, and native iOS touch/momentum deferral live in the core - Patch virtual-core to clamp the render range to real scroll bounds during transient adjustments - Rows render in normal flow inside a translated wrapper so sticky user headers keep working; measurement snapshots cached per session - Pre-write container height in scrollToFn so the browser cannot clamp anchor corrections to the stale height; hold the prepend anchor for up to 180 frames on mobile while fresh rows settle (cancelled by user input; desktop relies on core anchoring alone) - Adaptive row-size estimate from per-session measured averages; disable reveal fade-in for virtualized history rows - Mobile loads older history only through an explicit localized top button: no scroll-position trigger and no post-mount background prepend, so every insert happens from a resting state; a quiet-window hold defers any stray prepend commit while a touch gesture is active - Desktop/VS Code keep the seamless scroll-up trigger and progressive background prepend
This commit is contained in:
@@ -1284,6 +1284,7 @@ export const dict: Record<I18nKey, string> = {
|
||||
'diffView.hunk.discardTitle': 'ハンク{index}を破棄',
|
||||
'diffView.hunk.unavailable': 'このハンクはもう利用できません。差分を更新してからもう一度お試しください。',
|
||||
'diffView.hunk.unsupported': '個別のハンクのステージングはこのランタイムではサポートされていません。',
|
||||
'chat.history.loadOlder': '以前のメッセージを読み込む',
|
||||
'chat.autoReview.title': 'コードレビューループが実行中です',
|
||||
'chat.autoReview.status.waitingForReviewer': 'レビュアーを待機中',
|
||||
'chat.autoReview.status.waitingForImplementer': '実装者を待機中',
|
||||
|
||||
Reference in New Issue
Block a user