Files
jwinterm 35447868d4 feat(admin): serve Operator Console SPA at /admin (rust-embed)
Preact + Vite standalone admin-ui bundled into the server binary via
rust-embed. Login is NIP-07 (Smirk wallet signs the NIP-98 admin
challenge); tabs cover instance status, admin keys, invite codes, and
the effective-config editor (live vs restart-required per field).

admin-ui/dist is committed because rust-embed reads it at compile time;
node_modules is gitignored (npm ci reproduces it). A lib test asserts
index.html and the /admin/ asset base are embedded so an unbuilt
console fails the build instead of an operator.

The console is served on the admin plane only (loopback bind), behind
the existing NIP-98 admin_guard + MAC allowlist.
2026-07-18 16:03:03 -04:00

7 lines
329 B
Plaintext

# Node deps — reproducible from package-lock.json (`npm ci`).
node_modules/
# NOTE: dist/ is intentionally NOT ignored. rust-embed bakes admin-ui/dist/ into
# the server binary at compile time, so the built console is committed. Rebuild it
# with `npm run build` in this directory whenever src/ changes (CI checks freshness).