Add customer names on the ledger, staff session login, and exclusive jobs.events.
Some checks are pending
offline / test (push) Waiting to run

Account-balance stores display names and looks up by name. Edge writes
names on customer create/edit; staff UIs join from edge when needed.
New verae-staff-session issues a host cookie; department HTML redirects
when STAFF_AUTH=1. JOBS_EVENTS_EXCLUSIVE lets jobs-events own the durable
consumer. Catalog index is cards; disabled fleet machines are grey.
This commit is contained in:
George Lambert 2026-09-11 18:11:21 -04:00
parent cb07f5b321
commit 9cc0018708
38 changed files with 533 additions and 68 deletions

View file

@ -47,6 +47,7 @@
.card.operational { background:var(--ok-bg); border-color:#c8efd4; }
.card.degraded { background:var(--warn-bg); border-color:#ffe08a; }
.card.down { background:var(--err-bg); border-color:#f3c0c0; }
.card.disabled { background:#f1f5f9; border-color:#e5e7f0; }
.card h3 { margin:0 0 .25rem; font-size:14px; }
.muted { color:var(--muted); font-size:12px; }
.pill { font:700 10px system-ui; letter-spacing:.06em; text-transform:uppercase; padding:.12rem .4rem; border-radius:999px; }
@ -258,8 +259,8 @@ function spark(r) {
<div class="muted">RTT ms ${r.minMs} / ${r.avgMs} / ${r.p50Ms} / ${r.p90Ms} n=${r.count}</div>`;
}
function pill(health) {
const label = health === 'operational' ? 'operational' : health === 'degraded' ? 'degraded' : 'not operational';
const cls = health === 'operational' ? 'good' : health === 'degraded' ? 'warn' : 'bad';
const label = health === 'operational' ? 'operational' : health === 'degraded' ? 'degraded' : health === 'disabled' ? 'disabled' : 'not operational';
const cls = health === 'operational' ? 'good' : health === 'degraded' ? 'warn' : health === 'disabled' ? '' : 'bad';
return `<span class="pill ${cls}">${label}</span>`;
}
function moreMenu(items) {
@ -303,7 +304,7 @@ async function drawFleet() {
$('meta').textContent = 'probe ' + (s.monitor?.t || '—') + ' · NATS ' + (s.nats?.url || '') + ' · HTTP 0.0.0.0:3850';
const machines = s.machines || [];
$('machines').innerHTML = machines.length ? machines.map((m) => {
const health = !m.enabled ? 'down' : m.running > 0 ? 'operational' : 'degraded';
const health = !m.enabled ? 'disabled' : m.running > 0 ? 'operational' : 'degraded';
return `<article class="card ${health}">
<h3>${m.id} ${pill(health)}</h3>
<div class="muted">${m.title || ''}</div>