diff --git a/packages/web/src/app/projects/[projectId]/sessions/[id]/page.tsx b/packages/web/src/app/projects/[projectId]/sessions/[id]/page.tsx index 39c70fcab0..e66a7095bf 100644 --- a/packages/web/src/app/projects/[projectId]/sessions/[id]/page.tsx +++ b/packages/web/src/app/projects/[projectId]/sessions/[id]/page.tsx @@ -269,7 +269,7 @@ export default function ProjectSessionPage() { } }, [id]); - const fetchProjectSessions = useCallback(async () => { + const fetchProjectSessions = useCallback(async (fresh?: boolean) => { if (fetchingProjectSessionsRef.current) return; const projectId = sessionProjectIdRef.current; if (!projectId) return; @@ -281,8 +281,8 @@ export default function ProjectSessionPage() { projectSessionsFetchControllerRef.current = controller; try { const query = isOrchestrator - ? `/api/sessions?project=${encodeURIComponent(projectId)}&fresh=true` - : `/api/sessions?project=${encodeURIComponent(projectId)}&orchestratorOnly=true&fresh=true`; + ? `/api/sessions?project=${encodeURIComponent(projectId)}${fresh ? "&fresh=true" : ""}` + : `/api/sessions?project=${encodeURIComponent(projectId)}&orchestratorOnly=true${fresh ? "&fresh=true" : ""}`; const body = await fetchJsonWithTimeout(query, { signal: controller.signal, timeoutMs: PROJECT_SESSIONS_FETCH_TIMEOUT_MS, @@ -335,7 +335,7 @@ export default function ProjectSessionPage() { useEffect(() => { if (!sessionProjectId) return; - void fetchProjectSessions(); + void fetchProjectSessions(true); }, [fetchProjectSessions, sessionIsOrchestrator, sessionProjectId]); useEffect(() => { diff --git a/packages/web/src/app/sessions/[id]/page.tsx b/packages/web/src/app/sessions/[id]/page.tsx index a69d80e9ce..01ce8070be 100644 --- a/packages/web/src/app/sessions/[id]/page.tsx +++ b/packages/web/src/app/sessions/[id]/page.tsx @@ -605,7 +605,7 @@ export default function SessionPage() { } }, [clearSessionLoadRetry, id, resetSessionLoadFailures]); - const fetchProjectSessions = useCallback(async () => { + const fetchProjectSessions = useCallback(async (fresh?: boolean) => { if (fetchingProjectSessionsRef.current) return; const projectId = sessionProjectIdRef.current; if (!projectId) return; @@ -617,8 +617,8 @@ export default function SessionPage() { projectSessionsFetchControllerRef.current = controller; try { const query = isOrchestrator - ? `/api/sessions?project=${encodeURIComponent(projectId)}&fresh=true` - : `/api/sessions?project=${encodeURIComponent(projectId)}&orchestratorOnly=true&fresh=true`; + ? `/api/sessions?project=${encodeURIComponent(projectId)}${fresh ? "&fresh=true" : ""}` + : `/api/sessions?project=${encodeURIComponent(projectId)}&orchestratorOnly=true${fresh ? "&fresh=true" : ""}`; const body = await fetchJsonWithTimeout(query, { signal: controller.signal, timeoutMs: PROJECT_SIDEBAR_FETCH_TIMEOUT_MS, @@ -670,7 +670,7 @@ export default function SessionPage() { } }, []); - const fetchSidebarSessions = useCallback(async () => { + const fetchSidebarSessions = useCallback(async (fresh?: boolean) => { if (fetchingSidebarRef.current) return; fetchingSidebarRef.current = true; const controller = new AbortController(); @@ -679,7 +679,7 @@ export default function SessionPage() { const body = await fetchJsonWithTimeout<{ sessions?: DashboardSession[]; orchestrators?: DashboardOrchestratorLink[]; - } | null>("/api/sessions?fresh=true", { + } | null>(fresh ? "/api/sessions?fresh=true" : "/api/sessions", { signal: controller.signal, timeoutMs: PROJECT_SIDEBAR_FETCH_TIMEOUT_MS, timeoutMessage: `Sidebar sessions request timed out after ${PROJECT_SIDEBAR_FETCH_TIMEOUT_MS}ms`, @@ -757,12 +757,12 @@ export default function SessionPage() { // Initial fetch — load independent sidebar/session data in parallel. useEffect(() => { - void Promise.all([fetchProjects(), fetchSession(), fetchSidebarSessions()]); + void Promise.all([fetchProjects(), fetchSession(), fetchSidebarSessions(true)]); }, [fetchProjects, fetchSession, fetchSidebarSessions]); useEffect(() => { if (!sessionProjectId) return; - void fetchProjectSessions(); + void fetchProjectSessions(true); }, [fetchProjectSessions, sessionIsOrchestrator, sessionProjectId]); // Poll frequently enough that sidebar/project session state keeps up with @@ -884,7 +884,7 @@ export default function SessionPage() { setSessionMissing(false); setLoading(true); resetSessionLoadFailures(); - void Promise.all([fetchProjects(), fetchSession(), fetchSidebarSessions()]); + void Promise.all([fetchProjects(), fetchSession(), fetchSidebarSessions(true)]); }, }} secondaryAction={{