feat(dashboard): generic server-warnings banner on every page (#1518)
Per operator request: instead of a disk-specific alert, surface a generic
server-warnings banner at the very top of every page, so new system
warnings can be added backend-side with no frontend change.
- hive-c0re `host_stats`: `server_warnings() -> Vec<ServerWarning>`
(`{ kind, level, message }`). The threshold logic lives server-side; the
host disk-pressure check (a `statvfs` probe of `/nix`: ≥85% used → warn,
≥95% → crit) is the first and only producer today. No new deps (libc).
- `/api/state` carries `server_warnings` (replaces the disk-specific
field). Empty when all clear.
- frontend: `renderServerWarnings` / `initServerWarnings` in `common.js`
inject a sticky top-of-<body> banner and render the list, coloured by
`level`. Wired on every page — dashboard (live, via refreshState),
FL0W, L0GS, H0M3. No per-warning frontend code; adding a warning kind
is a pure backend change.
cargo check/clippy/fmt + npm run build green. Closes #1518.
This commit is contained in:
parent
d9d2a52221
commit
5d0f3d060b
10 changed files with 241 additions and 6 deletions
|
|
@ -16,7 +16,7 @@ import {
|
|||
fmtAgeSecs,
|
||||
Panel, NOTIF,
|
||||
makePathLink, appendText, appendLinkified,
|
||||
openStream,
|
||||
openStream, renderServerWarnings,
|
||||
} from './common.js';
|
||||
|
||||
// mdNode (in common.js) reads `window.marked` for the markdown side
|
||||
|
|
@ -3879,6 +3879,7 @@ window.marked = marked;
|
|||
return sect && sect.contains(el_);
|
||||
});
|
||||
}
|
||||
|
||||
async function refreshState() {
|
||||
// Don't yank the form out from under the operator. Try again
|
||||
// shortly on the next tick; eventually they'll blur and the
|
||||
|
|
@ -3901,6 +3902,7 @@ window.marked = marked;
|
|||
const peers = s.peer_hives || [];
|
||||
if (peersTab) peersTab.hidden = peers.length === 0;
|
||||
renderPeerHives(peers);
|
||||
renderServerWarnings(s.server_warnings);
|
||||
// (The M4TR1X surface is reachable from the H0M3 hub now, not the
|
||||
// dashboard tab strip — home.js gates its tile on matrix_gui_enabled.)
|
||||
// Hive identity: update the chrome banner + page title once the
|
||||
|
|
|
|||
Loading…
Reference in a new issue