From 7170983ef218321263fbb3d42f943a51b43075be Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:25:53 -0600 Subject: [PATCH] fix(app): duplicate session loads --- packages/app/src/context/global-sync.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/app/src/context/global-sync.tsx b/packages/app/src/context/global-sync.tsx index 878357cef..14dc6e054 100644 --- a/packages/app/src/context/global-sync.tsx +++ b/packages/app/src/context/global-sync.tsx @@ -133,6 +133,7 @@ function createGlobalSync() { const children: Record, SetStoreFunction]> = {} const booting = new Map>() const sessionLoads = new Map>() + const sessionMeta = new Map() function ensureChild(directory: string) { if (!directory) console.error("No directory provided") @@ -192,7 +193,8 @@ function createGlobalSync() { if (pending) return pending const [store, setStore] = child(directory, { bootstrap: false }) - const limit = store.limit + const meta = sessionMeta.get(directory) + if (meta && meta.limit >= store.limit) return const promise = globalSDK.client.session .list({ directory, roots: true }) @@ -203,9 +205,15 @@ function createGlobalSync() { .slice() .sort((a, b) => a.id.localeCompare(b.id)) + // Read the current limit at resolve-time so callers that bump the limit while + // a request is in-flight still get the expanded result. + const limit = store.limit + const sandboxWorkspace = globalStore.project.some((p) => (p.sandboxes ?? []).includes(directory)) if (sandboxWorkspace) { + setStore("sessionTotal", nonArchived.length) setStore("session", reconcile(nonArchived, { key: "id" })) + sessionMeta.set(directory, { limit }) return } @@ -219,6 +227,7 @@ function createGlobalSync() { // Store total session count (used for "load more" pagination) setStore("sessionTotal", nonArchived.length) setStore("session", reconcile(sessions, { key: "id" })) + sessionMeta.set(directory, { limit }) }) .catch((err) => { console.error("Failed to load sessions", err)