// H0M3 page script. The page is static markup; this only does // a few small things off a single `/api/state` read: // 1. reveal the Matrix tile when the matrix GUI is enabled (same // gating as the dashboard's M4TR1X tab — no dead link otherwise); // 2. fill the swarm/hive identity line when configured; // 3. render the shared server-warnings banner (top of every page). // No SSE — a portal doesn't need live updates. import { renderServerWarnings } from './common.js'; const $ = (id) => document.getElementById(id); async function init() { let state; try { const resp = await fetch('/api/state'); if (!resp.ok) return; state = await resp.json(); } catch { return; // best-effort: the tiles still work without it } renderServerWarnings(state.server_warnings); if (state.matrix_gui_enabled) { const tile = $('home-tile-matrix'); if (tile) tile.hidden = false; } // Forge tile: reveal + point at the live forge only when the // hive-forge container is up. Prefer the gateway-served public URL // (set when forge.behindGateway=true), fall back to the direct :3000 // port — same precedence the dashboard uses for forge links. if (state.forge_present) { const tile = $('home-tile-forge'); if (tile) { tile.href = state.forge_public_url || `http://${location.hostname}:3000`; tile.hidden = false; } } const ident = $('hive-identity'); if (ident && (state.swarm_name || state.hive_name)) { const parts = [state.swarm_name, state.hive_name].filter(Boolean); ident.textContent = parts.join(' / '); ident.hidden = false; } } init();