From 77f6aae169fb9de9d623919201639d1c4061c0e7 Mon Sep 17 00:00:00 2001 From: syy <39239434+sleepinginsummer@users.noreply.github.com> Date: Sun, 10 May 2026 11:36:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20workspace=20=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E9=A1=B5=E5=88=9D=E5=A7=8B=E5=8C=96=E5=90=8E=E4=B8=8D?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E7=9B=AE=E5=BD=95=20(#605)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix browse workspace root loading * fix workspace root dependency stability * avoid resetting browse state on metadata refresh --- web/src/components/WorkspaceBrowser.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/web/src/components/WorkspaceBrowser.tsx b/web/src/components/WorkspaceBrowser.tsx index 87d9ee2d..12f72463 100644 --- a/web/src/components/WorkspaceBrowser.tsx +++ b/web/src/components/WorkspaceBrowser.tsx @@ -184,7 +184,10 @@ export function WorkspaceBrowser(props: { () => machineId ? machines.find(m => m.id === machineId) ?? null : null, [machineId, machines] ) - const workspaceRoots = selectedMachine?.metadata?.workspaceRoots ?? [] + const workspaceRoots = useMemo( + () => selectedMachine?.metadata?.workspaceRoots ?? [], + [selectedMachine?.metadata?.workspaceRoots] + ) const loadDirectory = useCallback(async (path: string) => { if (!machineId) return @@ -226,9 +229,10 @@ export function WorkspaceBrowser(props: { void loadDirectory(selectedRoot) }, [machineId, selectedRoot, currentPath, loadDirectory]) - // If switching machines, reset view + // 切换机器时才重置浏览状态;workspaceRoots 的刷新由上面的 effect + // 只做 root 有效性校正,避免 metadata 更新时清空用户当前浏览位置。 useEffect(() => { - setSelectedRoot(null) + setSelectedRoot(workspaceRoots[0] ?? null) setCurrentPath(null) setEntries([]) setError(null)