You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Web Dashboard M2 — Settings parity + full command palette + URL write-back + help / changelog / update — the local Web Dashboard now mirrors the TUI for the everyday flow on every view it ships today.
Full command palette (TUI registry 1:1) — ⌘K / Ctrl+P opens a fuzzy-searchable palette that pulls every command from src/tui/command-palette.js (filters, sorts, target tools, theme, ping, reset, export, plus Web-only pages). Commands without a Web equivalent route to a friendly "arrives in M3/M4" toast.
Help modal — Header overflow menu → "Help" opens a full-screen modal with 11 sections of Web behavior + TUI parity notes. Live search bar.
Changelog modal — Two-phase (index of versions + per-version release notes). Settings "Open Changelog" link and the update chip "What's new" button both deep-link to a specific version.
Update chip + popover — Header shows ⬆ vX.Y.Z when a newer npm release is available. Click → "Update now" (spawns the package manager) + "What's new" (jumps to the new version's changelog entry). Polls every 5 minutes.
Full Settings parity — theme dropdown (auto / dark / light), favorites pinned+sticky toggle, startup AI Speed Scan toggle, shell env export toggle, legacy proxy cleanup button, per-provider Test key button (TUI T key) with outcome badge, update status row, open Changelog link. All settings persist to the same ~/.free-coding-models.json the TUI uses.
URL write-back (read + write) — every filter / sort / view / tool-mode / palette state change is reflected back to the URL via history.replaceState (debounced 80ms). Sharing a URL with ?tier=S+&sort=verdict&origin=groq&view=analytics&q=… opens a pre-filtered dashboard.
Changed
Web command palette upgraded from M1's static placeholder to a fully wired palette that imports buildCommandPaletteEntries + filterCommandPaletteEntries from the TUI engine — both surfaces are now guaranteed to show the same command set.
Header menu marks Help and Changelog as live (no more M2 badge). Recommend (M3), Router (M4), Install Endpoints (M4), and Installed Models (M4) still badge.
Fixed
🐛 TUI Changelog overlay was silently broken — src/core/changelog-loader.js resolved changelog/ relative to src/ instead of the project root. Fix walks up two levels. The TUI's N key and the new Web Changelog modal both load 142 versioned changelog files now.
🐛 /api/key/:provider/test and /api/key/:provider were colliding — the general single-segment key match ate the two-segment test path. The test path is now matched at the top of the request handler so the two routes coexist.
🐛 /api/settings/feature only handled booleans — passing a string (e.g. theme=dark) silently fell into the toggle branch and saved true. The endpoint now accepts arbitrary value payloads (string, number, boolean) and only toggles when value is omitted.
Notes
All 451 unit tests pass (was 440 before M2). The new M2 tests cover buildUrlParams, the URL state validation allowlists, and import-cleanly smoke tests for the three new React hooks.
The TUI source of truth is untouched — every new Web feature uses the same engine modules (src/core/changelog-loader.js, src/core/updater.js, src/core/legacy-proxy-cleanup.js, src/core/shell-env.js, src/tui/command-palette.js).
This release is the Web Dashboard reaching parity with the TUI for the day-to-day table flow. M3 ships the tool-mode picker + Smart Recommend; M4 ships the Router Dashboard + Token Usage.