- Every section puts the hub's server selector in the chrome slot, the
same place and gap as the Dashboard.
- Data regions load with a Skeleton and fail inline with Retry; KPIs show
the no-data dash instead of 0 when a server did not answer. Settings
keeps its header and selector while loading or failing.
- Cache, Apps and Logs headers group secondary or hub-refused actions in
menus; app descriptions clamp to two lines; Unknown cells say why.
- DNS Client: Protocol label, Resolve and Import together. DHCP and Query
Logs empty states with actions. View Logs list capped with scroll.
- Blocking: Lists KPI tiles like the Overview, app list table fits its
panel with one-line URLs. Status re-reads on tab return at most once
a minute.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Install ReUI (MCP, skill, @reui registry, Tailwind v4, shadcn base-nova) and move
the shared UI onto it: Button, Tag, Check, Input/Textarea, Segmented, Alert, Panel,
Dialog, Tooltip, Menu and Select (Popover), Toast (sonner), the Table frame
(DataGrid), the Dashboard KPI strip, the shnt Ops palette, Geist and the type scale.
Design only: behaviour, texts and roles are unchanged. Tests that asserted the old
DOM were updated; the tests now format numbers in English wherever they run.
docs/reui-migration-plan.md records the plan and its decisions.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>