# Changelog v0.5.1 - 2026-05-31

### Added
- Added `free-coding-models web` as the npm-friendly way to launch the full TUI-style realtime Web Dashboard from a global install.
- Added Socket.IO as the primary dashboard realtime transport, with SSE and REST polling fallbacks so the UI keeps updating even when one transport is unavailable.
- Added `/api/state` support for dashboard clients and daemon dashboard clients, including ping mode, countdown, per-model ping state, and benchmark progress metadata.
- Added tests that lock every visible web table column as sortable, including display-only columns such as `❔`, Last Ping, AI Latency, TPS, and Trend.

### Changed
- Reworked the standalone web server to mirror the TUI ping cadence more closely: startup speed mode, normal cadence, idle slow mode, per-model `isPinging`, and frequent incremental updates.
- Changed the Web Dashboard AI Latency global benchmark to benchmark only the models currently visible after filters and search, instead of always benchmarking the full catalog.
- Made every dashboard table column cycle through ascending, descending, and reset sorting, with missing values consistently pushed to the bottom.
- Removed the top stats card row from the dashboard for a cleaner, table-first layout.
- Removed the `ms` suffix from Last Ping and Avg cells in the dashboard table to make dense latency columns easier to scan.
- Improved dashboard table borders and added visible column separators, including stronger light-theme borders.
- Updated npm and web documentation to distinguish the full catalog dashboard (`free-coding-models web`, default `localhost:3333`) from the router daemon dashboard (`free-coding-models --daemon`, default `localhost:19280`).

### Fixed
- Fixed `free-coding-models web` being parsed as an API key by treating `web` as a real subcommand.
- Fixed dashboard benchmark spinners so only the actively benchmarked row shows running state instead of making unrelated rows spin during global scans.
- Fixed benchmark result keys by using provider/model identifiers, avoiding collisions and invisible results when providers share model ids.
- Fixed the Tier “All” filter mismatch in the Web Dashboard.
- Fixed light-theme button contrast where accent buttons could render unreadable black-on-black text.
- Fixed the web development readiness check so it waits for the correct local server response.
