SCRUM-255 — AdminUI release composer¶
Plan ref: UI-10 (docs/11-admin-plane-plan.md). Publishes through Config's release
route (SCRUM-218).
What exists¶
| Piece | Notes |
|---|---|
| Entry point | "Compose release" (live_ops+) on the namespace list with a channel picker; live offered to admins only. Route /config/releases/:channel/compose |
| Composer | channel head (release, min client version, base_release_id); per client namespace a version select defaulting to the latest (or "not included"; "no version yet" disabled); server-audience namespaces listed greyed "server-only, never shipped to clients"; packs pre-checked from the head; min_client_version (semver); required message |
| Preview | the would-be change against the head via the shared ReleaseDiffPanel (extracted from the release diff page); nothing to change → publish disabled |
| Live | the publish button stays disabled until live is typed ("This publishes to players"), in danger styling |
| Results | 201 → toast and the release diff page; 409 stale_release → "Someone published to |
How to verify¶
cd services/adminui
npm run typecheck && npm run lint && npm run format:check && npx vitest run && npm run build
npx playwright test
Results at time of writing¶
- typecheck, lint, prettier, vitest (390 tests), build: pass; Playwright 27/27 incl.
publish to dev as live_ops, live gated on typing
live(and refused to live_ops), and the stale-head dialog after another publish. - Screenshots checked (live composer, confirmation box).
How it was built¶
DeepSeek run scoped (Landlock) to services/adminui (1599 s, ~68k output tokens,
reasoning effort low). Claude review (screenshots): widened the release message box,
which rendered about 175 px wide.