fix: preserve history coverage during tail refresh
Keeps an existing complete cursor/coverage after refreshing the latest messages Prevents tail refreshes from reintroducing an incorrect "load older" state Adds a regression test for complete history coverage across refreshes
This commit is contained in:
@@ -89,6 +89,28 @@ describe("SessionMessageLoader", () => {
|
||||
childStores.disposeAll()
|
||||
})
|
||||
|
||||
test("preserves complete history coverage across a tail refresh", async () => {
|
||||
let calls = 0
|
||||
const { childStores, loader } = createLoader(async ({ sessionID }) => {
|
||||
calls += 1
|
||||
return calls === 1
|
||||
? response([createRecord(sessionID, "msg_1")])
|
||||
: response([createRecord(sessionID, "msg_2")], "stale-tail-cursor")
|
||||
})
|
||||
const target = { directory: "/repo", sessionID: "session-a" }
|
||||
|
||||
await loader.ensure(target)
|
||||
expect(loader.getSnapshot(target).complete).toBe(true)
|
||||
expect(loader.getSnapshot(target).cursor).toBe(undefined)
|
||||
|
||||
await loader.refreshTail(target, 2)
|
||||
|
||||
expect(loader.getSnapshot(target).complete).toBe(true)
|
||||
expect(loader.getSnapshot(target).cursor).toBe(undefined)
|
||||
loader.dispose()
|
||||
childStores.disposeAll()
|
||||
})
|
||||
|
||||
test("does not deduplicate identical session IDs across directories", async () => {
|
||||
const calls: string[] = []
|
||||
const { childStores, loader } = createLoader(async ({ directory, sessionID }) => {
|
||||
|
||||
Reference in New Issue
Block a user