/** * The single static console page: no framework, no build step, one file. * It fetches the sibling JSON endpoints (relative to its own mount path) * and renders them in eight views: Overview, Clients, Commits, Rows, * Scopes, Events, Reactions, and Storage. Each view loads only the * endpoints it shows, so a refresh on one view costs one to five reads. * * Styling follows docs/STYLE.md and the docs shell: pure black, one amber * accent with phosphor/red status colors, hairline borders, square corners. * The page ships as one self-contained string with no network fetches, so * it uses the system font stacks (monospace for data, sans for prose); a * host with IBM Plex installed renders in Plex. * * The HTML is a single exported string so the routes module can serve it * with no filesystem read (works identically on Bun, Node, and Workers). * All fetches are same-origin and relative ('./clients', …), so the page * works under whatever prefix the host mounts the routes at, and the host's * `authorize` guard applies to the page's own XHRs (same cookies/headers). * `?transport=parent` sends the same route paths to a same-origin parent * frame. Static demos can reuse this page while their admin routes run in a * Web Worker. * * The event tail is live over SSE (`/events/stream`) when the ring is wired. * The parent transport carries no stream, and an SSE failure closes the * stream for good; both states poll `/events` on every refresh and say so * in the header and the Events view. */ export const ADMIN_CONSOLE_HTML = ` Syncular console
SYNCULAR / CONSOLE
Connecting

01 · Overview

Partition ….

Request volume

Horizon and retention

Cursor lag

Failing

Fleet

Console

Keyboard shortcuts

1 to 7
Open Overview, People, Data, Commits, Events, Reactions, Storage
/
Find a client, actor, row, commit, or write by id
f
Focus the filter of the current view
r
Refresh the current view
a
Cycle auto refresh: off, 2 s, 5 s, 15 s
p
Focus the partition picker
space
Pause or resume the event stream (Events view)
Enter
Open the focused table row
Esc
Close a dialog or leave a field
?
Show this list

Action

`.replace(/^ +(?:\/\/.*\n)?/gm, '');