Added
- 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+Popens a fuzzy-searchable palette that pulls every command fromsrc/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.Zwhen 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
Tkey) with outcome badge, update status row, open Changelog link. All settings persist to the same~/.free-coding-models.jsonthe 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.
- Full command palette (TUI registry 1:1) —
Changed
- Web command palette upgraded from M1's static placeholder to a fully wired palette that imports
buildCommandPaletteEntries+filterCommandPaletteEntriesfrom the TUI engine — both surfaces are now guaranteed to show the same command set. - Header menu marks
HelpandChangelogas live (no moreM2badge).Recommend(M3),Router(M4),Install Endpoints(M4), andInstalled Models(M4) still badge.
Fixed
- 🐛 TUI Changelog overlay was silently broken —
src/core/changelog-loader.jsresolvedchangelog/relative tosrc/instead of the project root. Fix walks up two levels. The TUI'sNkey and the new Web Changelog modal both load 142 versioned changelog files now. - 🐛
/api/key/:provider/testand/api/key/:providerwere 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/featureonly handled booleans — passing a string (e.g.theme=dark) silently fell into the toggle branch and savedtrue. The endpoint now accepts arbitraryvaluepayloads (string, number, boolean) and only toggles whenvalueis 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.