From 3685710fe8d88d97316ad49f7bc46e7e6fed1067 Mon Sep 17 00:00:00 2001 From: Svrnty Date: Fri, 29 May 2026 03:13:56 -0400 Subject: [PATCH] Mount Cortex OS Runtime Health as WebUI panel --- .../runtime-health/runtime_health.css | 4 ++++ .../runtime-health/runtime_health.js | 19 +++++++++++---- static/svrnty_nav.js | 3 +++ .../test_cortex_os_runtime_health_static.py | 24 +++++++++++++++++++ tests/unit/test_svrnty_nav_js.py | 8 +++++++ 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/static/cortex-os/runtime-health/runtime_health.css b/static/cortex-os/runtime-health/runtime_health.css index 8ac21c6..9bd83de 100644 --- a/static/cortex-os/runtime-health/runtime_health.css +++ b/static/cortex-os/runtime-health/runtime_health.css @@ -9,6 +9,10 @@ font: 14px/1.45 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } +main.main:not(.svrnty-showing-cortex-os) .cortex-os-runtime-health { + display: none; +} + .cortex-os-runtime-health h2 { margin: 0 0 8px; font-size: 15px; diff --git a/static/cortex-os/runtime-health/runtime_health.js b/static/cortex-os/runtime-health/runtime_health.js index 5a5399f..c9795f7 100644 --- a/static/cortex-os/runtime-health/runtime_health.js +++ b/static/cortex-os/runtime-health/runtime_health.js @@ -42,7 +42,10 @@ panel.appendChild(summary); panel.appendChild(list); - var target = document.querySelector("main") || document.body; + var target = document.querySelector("main.main"); + if (!target) { + return panel; + } target.appendChild(panel); return panel; } @@ -99,9 +102,17 @@ }); } - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", loadRuntimeHealth, { once: true }); - } else { + function handlePanelSwitch(event) { + var detail = (event && event.detail) || {}; + if (detail.name === "cortex-os") { + loadRuntimeHealth(); + } + } + + window.addEventListener("svrnty:panel-switch", handlePanelSwitch); + + var main = document.querySelector("main.main"); + if (main && main.classList.contains("svrnty-showing-cortex-os")) { loadRuntimeHealth(); } })(); diff --git a/static/svrnty_nav.js b/static/svrnty_nav.js index 3570bfb..c1a0c2b 100644 --- a/static/svrnty_nav.js +++ b/static/svrnty_nav.js @@ -24,11 +24,14 @@ '', canvas: '', + "cortex-os": + '', }; const TABS = [ { id: "adwright", label: "Adwright", tooltip: "Adwright — marketing intelligence" }, { id: "bte", label: "BTE", tooltip: "BTE — brand creative studio" }, { id: "canvas", label: "Canvas", tooltip: "Canvas — sovereign UI design" }, + { id: "cortex-os", label: "Cortex OS", tooltip: "Cortex OS — Runtime Health" }, ]; function _svg(iconPath, size, stroke) { diff --git a/tests/unit/test_cortex_os_runtime_health_static.py b/tests/unit/test_cortex_os_runtime_health_static.py index 0fd32a6..c75f5a3 100644 --- a/tests/unit/test_cortex_os_runtime_health_static.py +++ b/tests/unit/test_cortex_os_runtime_health_static.py @@ -22,6 +22,18 @@ def test_runtime_health_display_has_no_hidden_write_surface(): "localStorage", "sessionStorage", "document.cookie", + "indexedDB", + "caches", + "navigator.sendBeacon", + "WebSocket", + "EventSource", + "BroadcastChannel", + "SharedWorker", + "ServiceWorker", + "window.open", + "eval(", + "new Function", + "innerHTML", "