{subtitle}
diff --git a/frontend/src/components/mobile/MobileDashboard.tsx b/frontend/src/components/mobile/MobileDashboard.tsx index e208daa2..fcaa2fae 100644 --- a/frontend/src/components/mobile/MobileDashboard.tsx +++ b/frontend/src/components/mobile/MobileDashboard.tsx @@ -4,6 +4,7 @@ import { useDashboardData } from '@/components/dashboard'; import { deriveHealth } from '@/components/dashboard/deriveHealth'; import type { HealthLevel, NotificationItem, StackCpuSeries, StackStatusEntry } from '@/components/dashboard/types'; import { Bar, Kicker, Masthead, MSparkline, SectionHead, StateDot } from './mobile-ui'; +import { NodeSwitcher } from '@/components/NodeSwitcher'; interface MobileDashboardProps { notifications: NotificationItem[]; @@ -11,6 +12,8 @@ interface MobileDashboardProps { headerActions: ReactNode; onNavigateToStack: (stackFile: string) => void; onViewAllStacks: () => void; + /** Opens the Nodes settings section from the masthead node switcher. */ + onManageNodes: () => void; } const SPARK_WINDOW_MS = 10 * 60 * 1000; @@ -73,11 +76,10 @@ function StripCell({ label, value, bar }: { label: string; value: string; bar?: ); } -export function MobileDashboard({ notifications, headerActions, onNavigateToStack, onViewAllStacks }: MobileDashboardProps) { +export function MobileDashboard({ notifications, headerActions, onNavigateToStack, onViewAllStacks, onManageNodes }: MobileDashboardProps) { const { activeNode } = useNodes(); const data = useDashboardData(); const activeNodeName = activeNode?.name || 'Local'; - const locality = activeNode?.type === 'remote' ? 'remote' : 'local'; // Re-render every few seconds so the "sync Xs" freshness label advances // without a parent refetch, mirroring the desktop HealthStatusBar ticker. @@ -142,7 +144,7 @@ export function MobileDashboard({ notifications, headerActions, onNavigateToStac return (Step 2: start the agent on the remote host
-docker compose -f compose.yaml up -d
+ {PILOT_AGENT_START_COMMAND}
+
| [role=checkbox]]:translate-y-[2px]", + "h-[calc(2.5rem*var(--density-scale,1))] px-[var(--density-row-x)] text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className )} {...props} @@ -88,7 +88,7 @@ const TableCell = React.forwardRef< | [role=checkbox]]:translate-y-[2px]", + "px-[var(--density-row-x)] py-[var(--density-cell-y)] align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className )} {...props} diff --git a/frontend/src/index.css b/frontend/src/index.css index eb3f370f..c7b52a33 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -386,7 +386,7 @@ /* Material simulation (light) */ --card-bevel: inset 0 1px 0 0 oklch(1 0 0 / 0.04), 0 1px 2px 0 oklch(0 0 0 / 0.05); - --button-inner-glow: inset 0 1px 0 0 oklch(1 0 0 / 0.04); + --button-inner-glow: inset 0 1px 0 0 oklch(1 0 0 / 0.10), 0 1px 2px 0 oklch(0 0 0 / 0.06); --chrome-top-highlight: inset 0 1px 0 0 oklch(1 0 0 / 0.45); /* Shadows (light) */ |
|---|