From 5c0d6d52b627d34ef596059c71c85e6c63acf54b Mon Sep 17 00:00:00 2001 From: ciregenz Date: Sat, 8 Aug 2026 02:14:27 -0700 Subject: [PATCH] [eric] apps: render-health beacons ride the runtime log stream where they actually arrive, vite-plugin-terminal owns the page console --- frontend/src/app/pages/Dashboard/cards/DashboardViewCard.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/app/pages/Dashboard/cards/DashboardViewCard.tsx b/frontend/src/app/pages/Dashboard/cards/DashboardViewCard.tsx index 70084ea9..f5ccc2e2 100644 --- a/frontend/src/app/pages/Dashboard/cards/DashboardViewCard.tsx +++ b/frontend/src/app/pages/Dashboard/cards/DashboardViewCard.tsx @@ -323,6 +323,11 @@ const DashboardViewCard: React.FC = ({ const terminalLineIdRef = useRef(0); // Fed by the runtime logs WS (which replays its ring buffer on connect); frontend console lines arrive on the same socket via the console-log beacon echo. const handleRuntimeLog = useCallback((line: RuntimeLogLine) => { + // The render-health beacons arrive HERE in practice, not on the webview console channel: + // vite-plugin-terminal owns the page console in app workspaces, so console.error rides the + // vite terminal into this runtime stream (live-verified 2026-08-08; the ipc path stays as belt). + if (line.text.includes('[openswarm:app-error]')) setPreviewBroken(true); + else if (line.text.includes('[openswarm:app-ready]')) setPreviewBroken(false); const fields = terminalLineFromStream(line.stream, line.text); setTerminalLines((prev) => { const next = prev.concat({ id: ++terminalLineIdRef.current, ...fields });