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={(