HERMES-GIELIE/docs/pr-media
nesquena-hermes 1fe8950022
Release v0.51.238 — Release HF (stage-q9) (#3493)
## Release v0.51.238 — Release HF (stage-q9)

Phase 3 MEDIUM-ring pick (3-factor: contributor×impact×mitigated-risk) — high-impact perf fix to the most-clicked affordance from a regular contributor (@franksong2702 ★★★), small code surface, CI-green.

### Fixed
| PR | Author | Fix |
|----|--------|-----|
| #2518 follow-up | @franksong2702 | Clicking **New Conversation** on a cold start no longer hangs 3–4s on a catalog rebuild. `newSession()` fills `model_provider` from `window._activeProvider` (then prev-session) when the dropdown carries none, so `POST /api/session/new` takes the fast path on the first click too. |

### Pre-release dual gate caught a wrong-backend routing bug (fixed + regression-tested)
The server fast path passes `(model, provider)` through **without validating the pair**, so naively attaching the active provider to *any* bare model could silently route to the wrong backend (e.g. bare `claude-opus-4.8` + active `openrouter`). **Codex** flagged this; **Opus** had judged it acceptable ("respect the selection over silent swap"). I took the stricter, empirically-grounded path and added a **family-mismatch guard** mirroring the server's own bare-prefix→provider map (`gpt`→openai, `claude`→anthropic, `gemini`→google): when the model's known family differs from the fallback provider, `model_provider` stays `null` so the server slow-path's family repair runs. This keeps the perf win for the common matching case while closing the mis-route. Backend behavioral tests confirm fast-path-on-match + slow-path-on-mismatch. (Also re-anchored the source-shape test assertions on the real `reqBody.model_provider=` assignment per Codex's 2nd note.)

### Gate results
- **Full pytest suite**: 7495 passed, 9 skipped, 3 xpassed, **0 failed**
- **ESLint runtime gate**: CLEAN  ·  **ruff**: CLEAN  ·  **browser-smoke**: CLEAN
- **Codex (regression)**: SHIP ONLY WITH FIXES → guard + test-anchor applied → re-reviewed **SAFE TO SHIP**
- **Opus (correctness)**: reviewed the original (judged acceptable); the shipped version is strictly safer (adds the family guard)

Note: `docs/pr-media/2518/{PR_BODY.md,bench.py}` are the contributor's review aids, included per the tracked `docs/pr-media/` convention (157 files already tracked) — not app code.

Closes #2518.

Co-authored-by: franksong2702 <franksong2702@users.noreply.github.com>
2026-06-03 12:23:46 -07:00
..
463
500
539
617
674
693
696
697
706
716
732
734
749 Add profile creation model picker 2026-05-14 12:13:49 +08:00
1257
1321
1362
1406
1451
1455
1456
1459
1640
1688
1690
1698
1699
1700
1715
1716
1725
1765
1771
1772
1784
1785
1787
1792
1796
1807
1808
1820
1823
1832
1834
1835
1842
1866
1880
1955
2064
2103
2156
2210 Add MCP tools overflow PR screenshots 2026-05-13 15:50:48 -07:00
2218 Hide session lineage metadata in compact sidebar 2026-05-14 10:14:15 +08:00
2224 Add extra large font size option 2026-05-14 11:09:21 +08:00
2231 Improve mobile sidebar panel navigation 2026-05-14 15:16:33 +08:00
2246 Add assistant question jump buttons 2026-05-15 19:39:27 +08:00
2250 Add skill detail screenshot evidence 2026-05-14 22:35:02 +08:00
2289 Add cron detail expansion controls 2026-05-15 18:04:53 +08:00
2351 feat: separate CLI sessions in sidebar 2026-05-18 17:29:51 -07:00
2449 feat: add thinking card copy button 2026-05-17 03:57:54 -07:00
2518 Release v0.51.238 — Release HF (stage-q9) (#3493) 2026-06-03 12:23:46 -07:00
2540 fix: surface custom provider model endpoint errors 2026-05-20 03:12:33 -07:00
2548 Move PR #2548 screenshots into docs/pr-media/2548 (project convention) 2026-05-19 03:14:04 +00:00
2554 fix: align workspace tree file icons 2026-05-18 18:38:13 -07:00
2679 Stage 398: PR #2687 — feat: hide suggestions preference (closes #2679) 2026-05-21 17:43:48 +00:00
activity-disclosure
appearance-endless-scroll-label Fix Appearance endless scroll label markup 2026-05-14 10:44:16 +08:00
catppuccin-issue-2426 Stage 375: PR #2432 — feat(theme): add Catppuccin appearance skin (Latte + Mocha palettes) by @Michaelyklam (closes #2426) 2026-05-17 03:35:19 +00:00
guard-skill-detail-errors Show skill detail API errors 2026-05-14 22:57:15 +08:00
issue-1617
issue-1618
issue-2508 feat: cap pinned sessions from sidebar 2026-05-19 20:50:26 -07:00
issue-2728 feat: make clarify prompt collapsible 2026-05-22 17:45:40 +00:00
live-timeline-session-restore Preserve live agent timeline across session switches 2026-05-16 14:12:08 +08:00
offline-banner-warning-theme Add offline banner comparison screenshots 2026-05-15 01:51:35 -07:00
sidebar-hover-drag
uiux-theme-demo-controls docs: align uiux demo theme controls 2026-05-18 12:50:25 +08:00
update-summary-category-dedup fix: refine update summary category handling 2026-05-14 01:07:47 -07:00