Close DV-01–04,07,09,13,14: unify operator-deck UX in server/web.

Standardize neon cyan on #00e8f5, wire SacredPageHeader across Builds/Path Tracer/LOTL, dedupe Pages.css, align Path Tracer chrome, drop dead wealth-deck CSS, add prefers-color-scheme shell + HelpTip, sidebar version from package.json build inject, and Vitest CSS regression guards.
This commit is contained in:
AetherForge
2026-06-07 06:33:51 -07:00
parent 85d55df37c
commit 74c006a04b
35 changed files with 1144 additions and 36 deletions

View File

@@ -35,6 +35,7 @@ import AlsoHere from '../components/Presence/AlsoHere';
import { HelpTip } from '../components/HelpTip';
import '../components/Fleet/FullSysCheckPanel.css';
import '../components/Fleet/FleetToolbar.css';
import { TERM_RENDER_CAP, visibleTerminalLines } from '../help/terminalRenderCap';
import './CruciblePage.css';
// ── Types ──────────────────────────────────────────────────────────────────
@@ -326,9 +327,6 @@ if($s -and $s.Status -eq 'Running'){'SSH_PROBE:ONLINE'}else{'SSH_PROBE:OFFLINE'}
const PROBE_SSH_SH = `ss -tlnp 2>/dev/null | grep -q ':22' && echo SSH_PROBE:ONLINE || echo SSH_PROBE:OFFLINE`;
/** Max terminal lines rendered in the DOM (full history kept in state for scrollback export). */
const TERM_RENDER_CAP = 400;
/** Roster page size — avoids rendering 500+ node cards at once. */
const ROSTER_PAGE_SIZE = 80;
@@ -427,11 +425,10 @@ export default function CruciblePage() {
const browseAgent = singleSelectedAgent ?? selectedAgents.find(online) ?? null;
const visibleTermLines = useMemo(
() => (termLines.length > TERM_RENDER_CAP ? termLines.slice(-TERM_RENDER_CAP) : termLines),
const { visible: visibleTermLines, truncated: termTruncated, hidden: termHidden } = useMemo(
() => visibleTerminalLines(termLines),
[termLines],
);
const termTruncated = termLines.length > TERM_RENDER_CAP;
const dispatchTunnelCommand = useCallback(
async (action: string, args?: Record<string, unknown>) => {
@@ -1548,7 +1545,7 @@ export default function CruciblePage() {
)}
{termTruncated && (
<div className="crucible-term-truncated" style={{ opacity: 0.55, fontSize: '0.72rem', padding: '0.2rem 0' }}>
{termLines.length - TERM_RENDER_CAP} older lines hidden (CLEAR to reset)
{termHidden} older lines hidden (CLEAR to reset)
</div>
)}
{visibleTermLines.map((line) => {