diff --git a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift index 503291d..7d1da33 100644 --- a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift +++ b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift @@ -659,6 +659,19 @@ final class RemoteStore: ObservableObject { self.openEvents = Self.mergedEvents(self.openEvents, batch.events) self.persistOpenTranscript() } + cb.transcriptPrefetched = { [weak self] sessionID, events in + guard let self else { return } + self.prefetchInFlight = nil + if !events.isEmpty { + // Merge into whatever the cache already holds (the fetch pulled only the gap); + // `saveEvents` re-caps to the tail window on write. + Task { + let cached = await SessionCache.loadEvents(sessionID) + await SessionCache.saveEvents(Self.mergedEvents(cached, events), for: sessionID) + } + } + self.pumpTranscriptPrefetch() + } cb.openDiff = { [weak self] diff in guard let self, hostID == self.openSessionHostID, diff.sessionID == self.openSessionID else { return } self.openDiff = diff