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 = [

View file

@ -68,6 +68,7 @@ REPO_READMES = [
"verae-nats-accounts",
"zapier-decisions",
"ui-docs",
"verae-staff-session",
]
SKIP_PARTS = {"test", "tests", "node_modules", "dist"}

View file

@ -65,6 +65,7 @@ create verae-jobs-events "Mailbox for verae.zapier.jobs.events"
create verae-nats-accounts "NATS INTERNAL vs LEAF account policy"
create zapier-decisions "Architecture decisions and action log"
create UI-Docs "UI walkthrough, screenshots, and review PDF"
create verae-staff-session "Shared staff cookie login for department HTML"
push_dir "$ROOT/packages/zappier" zappier-edge
push_dir "$ROOT/packages/verae-zapier-middleware" verae-middleware
@ -96,5 +97,6 @@ push_dir "$ROOT/packages/verae-jobs-events" verae-jobs-events
push_dir "$ROOT/packages/verae-nats-accounts" verae-nats-accounts
push_dir "$ROOT/packages/zapier-decisions" zapier-decisions
push_dir "$ROOT/packages/ui-docs" UI-Docs
push_dir "$ROOT/packages/verae-staff-session" verae-staff-session
echo ALL_MODULE_REPOS_PUSHED