dashboard + agent UI: surface hive_name + swarm_name in chrome (#701)
Damocles's backend (c41bf1b) landed HYPERHIVE_HIVE_NAME / _SWARM_NAME
env vars and identity.rs accessors. This commit wires them into the two
web surfaces:
hive-c0re/dashboard.rs:
StateSnapshot gains `hive_name` + `swarm_name` (Option<String>),
populated from the env vars the c0re NixOS module injects.
hive-ag3nt/web_ui.rs:
Per-agent StateSnapshot gains the same two fields, populated from
crate::identity::hive_name() / swarm_name().
Dashboard frontend (index.html + tabs.js):
A `<p class="banner-thin" id="hive-identity">` sits above the tab
strip in the chrome. refreshState() populates it with "swarm / hive"
(or just "hive") when the fields are non-null, and updates
document.title to "<swarm>/<hive> // h1ve-c0re". No change to
chrome when both fields are null (backward compat).
Per-agent frontend (index.html + app.js + agent.css):
A hidden `.agent-hive-label` span under the title row shows the
swarm/hive label once setHeader() receives non-null names.
document.title is updated to "<label> // <hive_name>" when hive_name
is set, enabling browser-tab disambiguation when multiple hives are
open in parallel. Styled as a small uppercase purple-dim sub-label.
This commit is contained in:
parent
fdd5fa2977
commit
e1e5195081
7 changed files with 83 additions and 7 deletions
|
|
@ -3111,6 +3111,23 @@ window.marked = marked;
|
|||
// docs/web-ui.md::Tab strip for the matrix_gui_enabled rationale.
|
||||
const matrixTab = $('tab-matrix');
|
||||
if (matrixTab) matrixTab.hidden = !s.matrix_gui_enabled;
|
||||
// Hive identity: update the chrome banner + page title once the
|
||||
// server-side display names are known. `hive_name` / `swarm_name`
|
||||
// come from HYPERHIVE_HIVE_NAME / HYPERHIVE_SWARM_NAME env vars
|
||||
// (set by services.hyperhive.{hiveName,swarmName} nix options).
|
||||
// When unset we fall back gracefully — no chrome change.
|
||||
const hiveId = $('hive-identity');
|
||||
if (hiveId) {
|
||||
const hive = s.hive_name;
|
||||
const swarm = s.swarm_name;
|
||||
if (hive || swarm) {
|
||||
const label = swarm && hive ? `${swarm} / ${hive}`
|
||||
: hive || swarm;
|
||||
hiveId.textContent = label;
|
||||
hiveId.hidden = false;
|
||||
document.title = label + ' // h1ve-c0re';
|
||||
}
|
||||
}
|
||||
const openDetails = snapshotOpenDetails();
|
||||
// Sync transients + containers first so renderContainers below
|
||||
// sees the current derived maps (it reads from
|
||||
|
|
|
|||
Loading…
Reference in a new issue