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

@ -286,6 +286,13 @@ def page_shell(now: str, body: str, switch_to_md: bool, title: str) -> str:
.badge {{ font:700 10px system-ui; letter-spacing:.04em; text-transform:uppercase;
background:var(--soft); color:var(--accent); padding:.1rem .35rem; border-radius:4px; margin-left:.25rem; }}
input {{ width:100%; padding:.55rem .7rem; font:16px system-ui; border:1px solid var(--line); border-radius:6px; }}
.cards {{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:.75rem; }}
.card {{ background:#fff; border:1px solid var(--line); border-radius:12px; padding:.85rem .95rem;
box-shadow:0 1px 2px rgba(23,26,38,.05), 0 8px 24px rgba(23,26,38,.06); }}
.card h3 {{ margin:0 0 .35rem; font-size:14px; }}
.card p {{ margin:0 0 .7rem; color:var(--muted); font-size:13px; }}
.card a.act {{ display:inline-block; background:var(--accent); color:#fff; text-decoration:none;
border-radius:8px; padding:.28rem .6rem; font:650 12px system-ui; }}
</style>
</head>
<body>
@ -305,8 +312,8 @@ def page_shell(now: str, body: str, switch_to_md: bool, title: str) -> str:
const q = document.getElementById('q');
q.addEventListener('input', () => {{
const v = q.value.toLowerCase();
document.querySelectorAll('li').forEach(li => {{
li.style.display = li.textContent.toLowerCase().includes(v) ? '' : 'none';
document.querySelectorAll('.card').forEach(card => {{
card.style.display = card.textContent.toLowerCase().includes(v) ? '' : 'none';
}});
}});
</script>
@ -357,6 +364,8 @@ def main() -> None:
"verae-jobs-events",
"verae-nats-accounts",
"zapier-decisions",
"ui-docs",
"verae-staff-session",
):
pkg_root = ROOT / "packages" / pkg
if pkg in {"zapier-user-docs", "overview", "docs-master", "verae-ops"}:
@ -491,11 +500,11 @@ def main() -> None:
href = html_href if (SITE / html_href).exists() else path
badge = "MD" if src.suffix.lower() == ".md" else src.suffix.lstrip(".").upper() or "FILE"
lis.append(
f'<li><a href="{href}">{label}</a>'
f'<span class="badge">{badge}</span>'
f'<span class="path">{path}</span></li>'
f'<article class="card"><h3>{label}</h3>'
f'<p><span class="badge">{badge}</span><span class="path">{path}</span></p>'
f'<a class="act" href="{href}">Open {badge}</a></article>'
)
out.append(f"<section><h2>{title}</h2><ul>{''.join(lis)}</ul></section>")
out.append(f'<section><h2>{title}</h2><div class="cards">{"".join(lis)}</div></section>')
return "".join(out)
git_repos = [