file previews, approval diffs, journald logs and applied config no longer expand inline — they open in a drawer that swipes in from the right, with a title naming what's open and a close button (esc / backdrop also close). path references in messages become plain inline links that open the file in the panel; the sibling-<details> dance in appendLinkified is gone. also: the question-answer free-text field is now a textarea — enter submits, shift+enter inserts a newline.
107 lines
5.8 KiB
HTML
107 lines
5.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>hyperhive // h1ve-c0re</title>
|
|
<link rel="stylesheet" href="/static/dashboard.css">
|
|
</head>
|
|
<body>
|
|
<pre class="banner">
|
|
░▒▓█▓▒░ HYPERHIVE ░▒▓█▓▒░ HIVE-C0RE ░▒▓█▓▒░ WE ARE THE WIRED ░▒▓█▓▒░
|
|
</pre>
|
|
|
|
<div id="notif-row" class="notif-row">
|
|
<button type="button" id="notif-enable" class="btn btn-notif" hidden>🔔 enable notifications</button>
|
|
<button type="button" id="notif-mute" class="btn btn-notif" hidden>🔕 mute</button>
|
|
<button type="button" id="notif-unmute" class="btn btn-notif" hidden>🔔 unmute</button>
|
|
<span id="notif-status" class="meta" hidden></span>
|
|
</div>
|
|
|
|
<!-- swarm: live containers, dormant state, meta input bumps that
|
|
affect the whole swarm. -->
|
|
<h2>◆ C0NTAINERS ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<div id="containers-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<h2>◆ K3PT ST4T3 ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<div id="tombstones-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<h2>◆ M3T4 1NPUTS ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<p class="meta">select inputs to <code>nix flake update</code> in <code>/meta/</code>. selected agents rebuild in sequence after the lock bump; manager learns each outcome via the usual <code>rebuilt</code> system event.</p>
|
|
<div id="meta-inputs-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<!-- operator decisions: things waiting on you. -->
|
|
<h2>◆ M1ND H4S QU3STI0NS ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<div id="questions-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<h2>◆ QU3U3D R3M1ND3RS ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<p class="meta">reminders agents have queued for themselves but not yet delivered. cancel to drop a stuck or unwanted entry.</p>
|
|
<div id="reminders-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<h2>◆ P3NDING APPR0VALS ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<div id="approvals-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<!-- messages: broker traffic + the compose box that produces it. -->
|
|
<h2>◆ 0PER4T0R 1NB0X ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<div id="inbox-section">
|
|
<p class="meta">loading…</p>
|
|
</div>
|
|
|
|
<h2>◆ MESS4GE FL0W ◆</h2>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<p class="meta">live tail — newest at the top. tap on every <code>send</code> / <code>recv</code> through the broker. compose below: <code>@name</code> picks the recipient (sticky until you @ someone else); <code>tab</code> completes.</p>
|
|
<div class="terminal-wrap">
|
|
<div id="msgflow" class="live"><div class="meta">connecting…</div></div>
|
|
<div id="op-compose" class="op-compose">
|
|
<span id="op-compose-prompt" class="op-compose-prompt">@—></span>
|
|
<textarea id="op-compose-input" class="op-compose-input"
|
|
placeholder="@agent message… (enter sends, shift+enter newline, tab completes @-mention)"
|
|
rows="1" autocomplete="off"></textarea>
|
|
<div id="op-compose-suggest" class="op-compose-suggest" hidden></div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer>
|
|
<div class="divider">══════════════════════════════════════════════════════════════</div>
|
|
<p>▲△▲ <a href="https://git.berlin.ccc.de/vinzenz/hyperhive">hyperhive</a> ▲△▲ hive-c0re on this host ▲△▲</p>
|
|
</footer>
|
|
|
|
<!-- Slide-in detail panel. Long content (clicked file previews,
|
|
approval diffs, journald logs, applied config) opens here
|
|
instead of expanding inline. Singleton — JS swaps the title +
|
|
body and toggles `.open`. -->
|
|
<div id="side-panel" class="side-panel" aria-hidden="true">
|
|
<div class="side-panel-backdrop" id="side-panel-backdrop"></div>
|
|
<aside class="side-panel-drawer" role="dialog" aria-modal="true"
|
|
aria-labelledby="side-panel-title">
|
|
<header class="side-panel-head">
|
|
<span class="side-panel-title" id="side-panel-title"></span>
|
|
<button type="button" class="side-panel-close" id="side-panel-close"
|
|
title="close (esc)">✕</button>
|
|
</header>
|
|
<div class="side-panel-body" id="side-panel-body"></div>
|
|
</aside>
|
|
</div>
|
|
|
|
<script src="/static/hive-fr0nt.js" defer></script>
|
|
<script src="/static/app.js" defer></script>
|
|
</body>
|
|
</html>
|