# Changelog v0.5.6 - 2026-06-01

### 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+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.
