mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-06 02:41:48 +00:00
perf(tui): stabilize long-session scrolling
This commit is contained in:
parent
59b56d445c
commit
db4e4acca0
10 changed files with 195 additions and 105 deletions
31
ui-tui/src/__tests__/viewportStore.test.ts
Normal file
31
ui-tui/src/__tests__/viewportStore.test.ts
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { getViewportSnapshot, viewportSnapshotKey } from '../lib/viewportStore.js'
|
||||
|
||||
describe('viewportStore', () => {
|
||||
it('normalizes absent scroll handles', () => {
|
||||
expect(getViewportSnapshot(null)).toEqual({
|
||||
atBottom: true,
|
||||
bottom: 0,
|
||||
pending: 0,
|
||||
scrollHeight: 0,
|
||||
top: 0,
|
||||
viewportHeight: 0
|
||||
})
|
||||
})
|
||||
|
||||
it('includes pending scroll delta in snapshot math and keying', () => {
|
||||
const handle = {
|
||||
getPendingDelta: () => 3,
|
||||
getScrollHeight: () => 40,
|
||||
getScrollTop: () => 10,
|
||||
getViewportHeight: () => 5,
|
||||
isSticky: () => false
|
||||
}
|
||||
|
||||
const snap = getViewportSnapshot(handle as any)
|
||||
|
||||
expect(snap).toMatchObject({ atBottom: false, bottom: 18, pending: 3, scrollHeight: 40, top: 13, viewportHeight: 5 })
|
||||
expect(viewportSnapshotKey(snap)).toBe('0:13:5:40:3')
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue