The C0R3 rebuild queue only linked out to the logs page (logs →). Add an
inline live-log panel under the queue that streams the currently-running
rebuild's build output, so the operator watches progress without leaving the
page.
One panel keyed to the running entry's build_log_id (the queue runs one build
at a time), reusing the build-log SSE the logs page already uses
(GET /api/build-logs/id/{id}/stream; frames stdout_append/stderr_append/done).
It lives in its own container (#rebuild-live-log) outside rebuild-queue-section
so the queue's per-row re-render — rows rebuild as the build step advances —
never tears down the open stream; it reconnects only when the running
build_log_id changes and won't reopen a stream that already sent done. Sticky-
bottom scroll, collapsible, live/ok/fail badge, raw download. Hidden when
nothing is building; each row keeps its logs → link for full history.
Frontend-only — no backend change (endpoint + build_log_id already existed).
Closes #1860.
102 lines
3.2 KiB
CSS
102 lines
3.2 KiB
CSS
/* ─── /core.html — C0R3 page ───────────────────────────────────────
|
|
Standalone page carved out of the dashboard's old SYST3M tab. Same
|
|
minimal-chrome pattern as /logs.html (a `← home` back-link + a
|
|
createTabStrip sub-tab strip; base tab + page-header styling comes
|
|
from @hive/shared via common.css, linked by core.html).
|
|
|
|
The four section renderers (rebuild queue, meta inputs, kept state,
|
|
container load) are ported verbatim from the dashboard, so they emit
|
|
the exact same class names. Those section-internal rules live in
|
|
system-sections.css (shared with the dashboard, which references a
|
|
couple of them — `.rqe-source*` — from its schedules view). The
|
|
`.hive-stats-table` the container-load table reuses lives in
|
|
common.css, linked directly by core.html. Importing just the section
|
|
rules keeps the C0R3 bundle small instead of dragging in all of
|
|
dashboard.css. */
|
|
@import "./system-sections.css";
|
|
|
|
body.core-shell {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
/* Fill the header row next to the ← home back-link, same as the logs
|
|
sub-tab strip. */
|
|
.core-tabbar {
|
|
flex: 1;
|
|
}
|
|
|
|
.core-main {
|
|
padding: 1.2em 1.5em 2em;
|
|
}
|
|
|
|
/* createTabStrip toggles the native `hidden` attribute on inactive
|
|
panes; ensure it wins over any inherited display. */
|
|
.core-pane[hidden] { display: none; }
|
|
|
|
/* ─── running-rebuild live log (renderRebuildLiveLog in core.js) ──────────
|
|
Streams the currently-running rebuild's build log inline under the queue.
|
|
Hidden (native `hidden` attr) when nothing is building. */
|
|
.rebuild-live-log {
|
|
margin-top: 0.8em;
|
|
border: 1px solid var(--purple-dim);
|
|
border-radius: 4px;
|
|
background: color-mix(in srgb, var(--crust) 70%, transparent);
|
|
}
|
|
.rebuild-live-log-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.4em;
|
|
padding: 0.4em 0.6em;
|
|
font-size: 0.85em;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.rebuild-live-log-toggle {
|
|
background: transparent;
|
|
border: 0;
|
|
color: var(--muted);
|
|
cursor: pointer;
|
|
font-family: inherit;
|
|
font-size: 1em;
|
|
padding: 0 0.2em;
|
|
}
|
|
.rebuild-live-log-toggle:hover { color: var(--fg); }
|
|
.rebuild-live-log-title { color: var(--muted); }
|
|
.rebuild-live-log-raw {
|
|
margin-left: auto;
|
|
color: var(--purple);
|
|
text-decoration: none;
|
|
font-size: 0.9em;
|
|
}
|
|
.rebuild-live-log-raw:hover { text-decoration: underline; }
|
|
.rebuild-live-log-badge {
|
|
font-size: 0.75em;
|
|
font-weight: bold;
|
|
padding: 0.05em 0.5em;
|
|
border-radius: 999px;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
.rebuild-live-log-badge.rll-running {
|
|
color: var(--amber);
|
|
background: color-mix(in srgb, var(--amber) 18%, transparent);
|
|
}
|
|
.rebuild-live-log-badge.rll-ok {
|
|
color: var(--green);
|
|
background: color-mix(in srgb, var(--green) 18%, transparent);
|
|
}
|
|
.rebuild-live-log-badge.rll-fail {
|
|
color: var(--red);
|
|
background: color-mix(in srgb, var(--red) 18%, transparent);
|
|
}
|
|
.rebuild-live-log-output {
|
|
margin: 0;
|
|
padding: 0.5em 0.7em;
|
|
max-height: 22em;
|
|
overflow-y: auto;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", "Source Code Pro", monospace;
|
|
font-size: 0.8em;
|
|
line-height: 1.4;
|
|
color: var(--fg);
|
|
}
|