From 78a8bcc9a31b96907c6e93f516a3141d2fdd2b97 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Fri, 24 Jul 2026 11:34:47 +0800 Subject: [PATCH] fix(app): hydrate v1 session progress --- packages/app/src/context/server-sync.test.ts | 3 ++- packages/app/src/context/server-sync.tsx | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/app/src/context/server-sync.test.ts b/packages/app/src/context/server-sync.test.ts index ba838bc05aa4..9f625c94324a 100644 --- a/packages/app/src/context/server-sync.test.ts +++ b/packages/app/src/context/server-sync.test.ts @@ -64,7 +64,7 @@ describe("MCP queries", () => { }) describe("active session query", () => { - test("loads active sessions once per server cache", async () => { + test("loads active sessions immediately and once per server cache", async () => { let calls = 0 const queryClient = new QueryClient() const options = loadActiveSessionsQuery(ServerScope.local, { @@ -77,6 +77,7 @@ describe("active session query", () => { expect(await queryClient.fetchQuery(options)).toEqual({ ses_running: { type: "running" } }) expect(await queryClient.fetchQuery(options)).toEqual({ ses_running: { type: "running" } }) expect(calls).toBe(1) + expect(options.enabled).toBe(true) expect([...options.queryKey]).toEqual([ServerScope.local, "activeSessions"]) }) diff --git a/packages/app/src/context/server-sync.tsx b/packages/app/src/context/server-sync.tsx index 5ce530bbb0eb..109a7bf7d65c 100644 --- a/packages/app/src/context/server-sync.tsx +++ b/packages/app/src/context/server-sync.tsx @@ -157,7 +157,7 @@ export const loadActiveSessionsQuery = ( queryOptions({ queryKey: [scope, "activeSessions"] as const, queryFn: () => api.active(), - enabled: false, + enabled: true, staleTime: Number.POSITIVE_INFINITY, gcTime: Number.POSITIVE_INFINITY, refetchOnMount: false, @@ -242,8 +242,8 @@ export function createServerSyncContextInner(serverSDK: ServerSDK) { active: async () => { if ((await serverSDK.protocol) === "v1") { const statuses = (await serverSDK.client.session.status()).data ?? {} - for (const [sessionID, status] of Object.entries(statuses)) { - session.set("session_status", sessionID, reconcile(status)) + seedActiveSessionStatuses(session, statuses) + for (const sessionID of Object.keys(statuses)) { void session.resolve(sessionID).catch(() => undefined) } return Object.fromEntries(