From c9d1ee25c5ae95192448229d2d216942b58a95c5 Mon Sep 17 00:00:00 2001 From: lyon Date: Thu, 18 Jun 2026 18:40:16 +0800 Subject: [PATCH] fix: stabilize workbench fresh session rehydrate --- web/hwlab-cloud-web/src/stores/workbench.ts | 1 - web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/hwlab-cloud-web/src/stores/workbench.ts b/web/hwlab-cloud-web/src/stores/workbench.ts index d4ae0d14..da29bc12 100644 --- a/web/hwlab-cloud-web/src/stores/workbench.ts +++ b/web/hwlab-cloud-web/src/stores/workbench.ts @@ -874,7 +874,6 @@ async function loadWorkbenchSession(sessionId: string, seed: WorkbenchSessionRec const requestId = normalizeWorkbenchSessionRouteId(sessionId); if (!requestId) return null; const detail = await api.workbench.session(requestId); - if (!detail.ok) return null; const detailSession = detail.ok ? sessionFromWorkbenchSession(detail.data?.session) : null; const id = detailSession?.sessionId ?? normalizeWorkbenchSessionId(requestId) ?? seed?.sessionId; if (!id) return null; diff --git a/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue b/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue index 647c68e6..a1718faa 100644 --- a/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue +++ b/web/hwlab-cloud-web/src/views/workbench/CodeWorkbenchView.vue @@ -26,10 +26,11 @@ const componentActive = ref(false); onMounted(async () => { componentActive.value = true; applyingRouteSession.value = Boolean(rawRouteSessionId.value); + const hydratedRouteTarget = routeReflectionTarget.value; startWorkbenchOpenJourney({ route: route.path, cache: routeRequestId.value ? "cold" : "warm", authState: "warm" }); try { await workbench.hydrate({ sessionId: routeRequestId.value, invalidRouteId: rawRouteSessionId.value && !routeRequestId.value ? rawRouteSessionId.value : null }); - await applyRouteSession(); + if (routeReflectionTarget.value !== hydratedRouteTarget) await applyRouteSession(); finishWorkbenchOpenFullLoad(workbench.error ? "error" : "ok"); } finally { applyingRouteSession.value = false;