From b1b0d590a701e2704dd88218f061b042ae6ede11 Mon Sep 17 00:00:00 2001 From: weishu Date: Sat, 1 Aug 2026 11:36:12 +0800 Subject: [PATCH] feat(web): hide browse affordances unless a machine reports workspace roots --- web/src/router.tsx | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/web/src/router.tsx b/web/src/router.tsx index 5e513f73..19cb63de 100644 --- a/web/src/router.tsx +++ b/web/src/router.tsx @@ -175,6 +175,12 @@ function SessionsPage() { } return byId }, [machines]) + // Workspace browsing is opt-in per runner (`--workspace-root`); only show + // browse affordances when at least one machine reported roots. + const canBrowse = useMemo( + () => machines.some(m => (m.metadata?.workspaceRoots?.length ?? 0) > 0), + [machines] + ) const sessionMatch = matchRoute({ to: '/sessions/$sessionId', fuzzy: true }) const selectedSessionId = sessionMatch && sessionMatch.sessionId !== 'new' ? sessionMatch.sessionId : null const selectedSession = useMemo( @@ -220,20 +226,22 @@ function SessionsPage() { })} onNewSession={() => navigate({ to: '/sessions/new' })} onNewSessionInDirectory={handleNewSessionInDirectory} - onBrowse={() => navigate({ to: '/browse' })} + onBrowse={canBrowse ? () => navigate({ to: '/browse' }) : undefined} onRefresh={handleRefresh} isLoading={isLoading} renderHeader={false} headerActions={(
- + {canBrowse && ( + + )}