v0.17.0 — Sandbox UI (G19e): the integration sandbox is complete
Sandbox UI (G19e, ADR 0011)
The final vertical of the integration sandbox — G19 is complete. The dashboard gains a Sandbox sidebar group with two screens:
Resources (/resources)
- Collections rail with live counts; paged document table (50/page).
- JSON document editor — create/replace, versions advance on save; client-side validation mirrors the server's guards.
- Seed a collection from a pasted JSON array (transactional), reset one collection or everything, all behind confirmations.
- New collections are created by writing their first document.
Access (/access)
- Issue and revoke sandbox API keys with an optional hourly quota.
- The token appears exactly once in a reveal dialog with a copy button and an explicit warning — afterwards only the display prefix is listed, alongside a live
used / quotabar (warns at 80%, danger at 100%). - The host-side contract is spelled out in place:
--sandbox-auth,X-Api-Key/Bearer, 429 + rate headers, never valid on the admin API.
Dashboard
- A "Spin up a sandbox" quick-start: import spec → seed data → issue key → copy base URL.
All six locales (en/tr/fr/ar/zh/ja), RTL-safe, command-palette entries, tables scroll inside their cards.
Verification
Verified in-browser against a live --sandbox-auth host: a key issued through the dialog authenticated real requests with X-RateLimit-Remaining counting down and the usage bar showing 3/50; a document edit saved through the dialog advanced the server-side version. tsc/lint/build clean.
The G19 series in this train: v0.13.0 resources · v0.14.0 state directive · v0.15.0 OpenAPI import · v0.16.0 API keys + quotas · v0.17.0 Sandbox UI.
Docs: The dashboard · Admin API
Full change: #214
🤖 Generated with Claude Code