UI:
- New per-agent columns: Calls 24h · Tokens 24h · Speed (tok/s). Speed is
computed from getStats.by_agent {tokens_out, duration_ms}. Zero-value cells
are dimmed so busy rows stand out.
- Merged 'ID' and 'Model' into a single stacked cell (id primary, model dim
below) — freed a column for the new numerics without widening the table.
- Sortable headers: click any column to sort, click again to flip. Direction
and key persist in localStorage. Numeric columns default to desc on first
click. State + tier sort by a semantic order (healthy first, strong first),
not alphabetically.
- Theme toggle in header: system → light → dark → system. Root data-theme
attribute drives the token overrides that were already declared in CSS;
'system' clears the attribute so prefers-color-scheme wins. Choice
persisted in localStorage.
No backend changes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>