perf(tui): lazily seed virtual history heights (#16523)

This commit is contained in:
kshitij 2026-04-27 07:55:45 -07:00 committed by GitHub
parent 9b55365f6f
commit 98d75dea5a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 75 additions and 22 deletions

View file

@ -218,23 +218,15 @@ export function useMainApp(gw: GatewayClient) {
return cache
}, [heightCacheKey])
const initialHeights = useMemo(() => {
const out = new Map<string, number>()
for (const row of virtualRows) {
out.set(
row.key,
heightCache.get(row.key) ??
estimatedMsgHeight(row.msg, cols, {
compact: ui.compact,
details: detailsVisible,
limitHistory: row.index < virtualRows.length - FULL_RENDER_TAIL_ITEMS
})
)
}
return out
}, [cols, detailsVisible, heightCache, ui.compact, virtualRows])
const estimateRowHeight = useCallback(
(index: number) =>
estimatedMsgHeight(virtualRows[index]!.msg, cols, {
compact: ui.compact,
details: detailsVisible,
limitHistory: index < virtualRows.length - FULL_RENDER_TAIL_ITEMS
}),
[cols, detailsVisible, ui.compact, virtualRows]
)
const syncHeightCache = useCallback(
(heights: ReadonlyMap<string, number>) => {
@ -250,7 +242,8 @@ export function useMainApp(gw: GatewayClient) {
)
const virtualHistory = useVirtualHistory(scrollRef, virtualRows, cols, {
initialHeights,
estimateHeight: estimateRowHeight,
initialHeights: heightCache,
liveTailActive: turnLiveTailActive,
onHeightsChange: syncHeightCache
})