From b4f2f77a4f437df7f2d52e338ed729ad97751f97 Mon Sep 17 00:00:00 2001 From: Andrew Blakeslee Moore Date: Mon, 6 Jul 2026 19:44:42 -0700 Subject: [PATCH] Transcript Incremental Projection Nucleic-Session: 0FFD007B-0696-4517-9429-129C7B0FD5AC Co-authored-by: Nucleic --- .../NucleicRemote/Models/RemoteStore.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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