Console redesign.
The admin console's two config pages — System (a five-job junk drawer) and Models (thin, and mirroring half of System) — regrouped into three single-purpose tabs: Status (read-only health), Models (every model role, in one place), and Settings (everything you change, including the grouped visibility grid). Now shipped — this mirrors the live admin.html. Switch tabs in the rail; the toggles, radios and theme are live.
Status
Server health & config — read-only, nothing to save.
Models
Every place a model runs — grouped by the feature it serves. One hue per vendor.
Panel is the only user-facing role — those models fill each user's switcher, the radio sets the default. Every DeepSeek model carries its own reasoning switch. The other roles are admin-only, one model each. Opening's Off retires the opening producer; mid-chat's Mechanical is the deterministic (no-LLM) producer. Claude web search always runs Haiku 4.5.
Settings
Everything you change — defaults, experiments, and who sees what.
marks an actual control a user operates (switcher · dial · toggle); the rest are read-only readouts. Unchecked = hidden from that role.
- System → 3 tabs
- Status takes the read-only diagnostics, Settings takes every writable knob, Models takes all model selection. The old single
Systempage is retired. - read vs write
- The old opening card mixed Python / DB size / parse health (look) with the lone Edit caps action (touch). Split: looking lives in Status, changing lives in Settings.
- model roles
- The floor-producer model arms move off
System › Debuginto Models, joined by Dispatch and Panel curator — every model the box runs, picked in one place. Opening gains an explicit Off. - cost split
- Today's single
chat_costkey becomes two visibility rows — Chat total (chat menu) and Cost capsule (per turn) — so they can be shown independently. - turn stats (new)
- A new visibility-gated readout (
3 spk · 157w · echo 28% · v1p) replaces the per-capsule length number. - word stat removed
- The
word_statWord / 字 capsule stat is dropped; its count folds into Turn stats. - parked decision
hero_model(the chat-menu "current model" readout) sits under Room setting — fold it into the switcher row if it's redundant.