Commit Graph

2409 Commits

Author SHA1 Message Date
nesquena-hermes 54f1a2acae Stage 373: PR #2415 — fix: ignore provider config flags in model picker by @Michaelyklam (fixes #2399) 2026-05-17 00:21:50 +00:00
nesquena-hermes 96021e7fc5 Merge pull request #2414 from nesquena/stage-372
Release BC / v0.51.79 — stage-372 (5-PR review-bypass batch: text-mode image fix + Activity-group compression + custom provider routing + quota chip toggle + RFC docs)
v0.51.79
2026-05-16 16:12:43 -07:00
nesquena-hermes 0baefcd1e5 Stamp CHANGELOG for v0.51.79 (Release BC / stage-372) 2026-05-16 23:05:53 +00:00
nesquena-hermes 3480e75e13 Stage 372: PR #2413 — feat(quota-chip): add Settings toggle, flip default to off 2026-05-16 23:05:09 +00:00
nesquena-hermes 780bddca04 Stage 372: PR #2411 — fix: preserve named custom provider model selections by @Michaelyklam (fixes #2405) 2026-05-16 23:04:53 +00:00
nesquena-hermes 862d32ce27 Stage 372: PR #2408 — fix: split live Activity groups at auto-compression by @Michaelyklam (fixes #2404) 2026-05-16 23:04:18 +00:00
nesquena-hermes 9abf17b4f4 Stage 372: PR #2406 — fix: sanitize sync chat history with config by @Michaelyklam (fixes #2398) 2026-05-16 23:03:38 +00:00
nesquena-hermes 55f2d6792b Stage 372: PR #2407 — docs: advance runtime adapter gate by @Michaelyklam 2026-05-16 23:02:42 +00:00
nesquena-hermes cef6b1b5f0 Merge pull request #2412 from nesquena/stage-371
Release BB / v0.51.78 — stage-371 (stuck-PR sweep salvage: RTL chat + ambient quota chip)
v0.51.78
2026-05-16 15:27:07 -07:00
nesquena-hermes cf23d47e2d fix(stage-371): apply Opus SHOULD-FIX — KaTeX/CSV/diff stay LTR + chip 1px boundary
Opus advisor on stage-371 caught three issues during pre-release review:

1. RTL salvage missed KaTeX math (display equations + inline LaTeX), diff
   blocks, CSV tables (column order must read left-to-right regardless of
   chat direction), and .skill-file-path. The first salvage commit only
   covered pre/code/kbd/samp/tt and tool-call bodies. Added a second
   force-LTR block covering: .katex, .katex-block, .katex-display,
   .katex-html, .katex-inline, .diff-block (+children), .csv-table-wrap,
   .csv-table (+children), .skill-file-path. Severity: KaTeX is the most
   user-visible gap — any user rendering math under RTL would see flipped
   equations.

2. Quota chip @media (max-width:1400px) hide rule conflicted at exactly
   1400px with the existing @media (min-width:1400px) .messages-inner
   rule — chip was hidden AT the wide-desktop boundary where it should
   first appear. Changed to (max-width:1399.98px). Visually verified at
   1400px: chip now correctly visible there.

3. Dead .icon-btn.provider-quota-chip selector — chip never has icon-btn
   class. Removed.

Test added: test_rtl_math_and_tables_stay_ltr (pins the 4 new LTR
surfaces). Also removed dead code in test_rtl_code_blocks_stay_ltr
(unused code_block variable).

Per stage-fix protocol: SHIP-with-followup applied on the stage rather
than the source PR, since #2409 is already merged-into-stage and
nesquena-approved. Stage-371 review-bypass batch path still holds.
2026-05-16 22:22:38 +00:00
nesquena-hermes e3eda7e3df Stamp CHANGELOG for v0.51.78 (Release BB / stage-371) 2026-05-16 22:07:43 +00:00
nesquena-hermes a4ab7d4d27 Stage 371: PR #2409 — Stuck-PR sweep: salvage RTL chat from #1721 + override quota chip from #2082 by @malulian and @ai-ag2026
Co-authored-by: malulian <malulian@users.noreply.github.com>
Co-authored-by: ai-ag2026 <ai-ag2026@users.noreply.github.com>
2026-05-16 22:04:56 +00:00
nesquena-hermes 125da1e65a Merge pull request #2401 from nesquena/stage-370
v0.51.77 — Release BA (stage-370: PR #2390 live Activity grouping fix)
v0.51.77
2026-05-16 13:34:52 -07:00
Hermes Agent a5f429c28f Stamp CHANGELOG for v0.51.77 (Release BA / stage-370) 2026-05-16 20:22:33 +00:00
Hermes Agent b937cf3583 Stage 370: PR #2390 — Fix live progress Activity grouping by @franksong2702
# Conflicts:
#	CHANGELOG.md
2026-05-16 20:21:58 +00:00
nesquena-hermes 12b0b6dab3 Merge pull request #2400 from nesquena/stage-369
v0.51.76 — Release AZ (stage-369: 4-PR safe-lane batch)
v0.51.76
2026-05-16 13:16:43 -07:00
Hermes Agent 069503f0bf fix(stage-369): replace 'PR TBD' placeholder with #2347 in CHANGELOG
Opus advisor caught this on stage-369 review — PR #2347 left a 'PR TBD'
placeholder in CHANGELOG that should reference its own number. One-line
attribution fix, no behavior change.
2026-05-16 20:11:43 +00:00
Hermes Agent 9441e32adb test(stage-369): widen brittle setCompressionUi({ assertion
PR #2347 hoisted the inline state object to a `state` variable so the
auto-compression handler could share it with appendLiveCompressionCard.
Behavior is identical — same setCompressionUi() dispatch, same calm
compression-card path — but tests/test_run_journal_frontend_static.py
pinned the literal substring `setCompressionUi({` to verify the call
site. Relax the assertion to accept either inline (`{...}`) or hoisted
(`state`) argument form. Both forms route through the same compression
card path; the over-specific substring was the bug.
2026-05-16 20:11:06 +00:00
Hermes Agent ade7401ae1 Stage 369: PR #2396 — fix(streaming): preserve session agents for credential pools by @starship-s 2026-05-16 20:03:44 +00:00
Hermes Agent 41f8b77a0b Stage 369: PR #2393 — fix: cap live chat stream transports by @Michaelyklam
# Conflicts:
#	CHANGELOG.md
2026-05-16 20:03:44 +00:00
Hermes Agent 757f63ee27 Stage 369: PR #2195 — Add OpenRouter cost history backend by @Michaelyklam 2026-05-16 20:03:43 +00:00
Hermes Agent 8b4f8b0600 Stage 369: PR #2347 — Preserve live agent timeline across session switches by @franksong2702 2026-05-16 20:03:43 +00:00
nesquena-hermes 3de4338610 Merge pull request #2397 from nesquena/stage-368
v0.51.75 — Release AY (stage-368: 11-PR safe-lane batch + pytest-loop fix)
v0.51.75
2026-05-16 12:39:38 -07:00
Hermes Agent 20bd845416 fix(tests): permanent os.execv guard to stop pytest self-restart loop
api.updates._schedule_restart() spawns a daemon thread that calls
os.execv() after a short sleep. Tests in test_update_banner_fixes.py
monkeypatch os.execv to a no-op, but monkeypatch teardown can win the
race against the daemon thread — when the thread wakes up after
teardown, the real os.execv is back, and it re-execs pytest with the
original argv. From the outside this looked like pytest hanging at 99%
and then restarting the entire suite from 0% in a loop.

The fix shadows os.execv with a permanent no-op wrapper at conftest
module-import time, so late-firing daemon threads can't escape. Tests
that need to verify execv was called still patch it themselves; their
patches sit on top of the wrapper for their lifetime.

Also adds tests/test_pytest_execv_guard.py to pin the guard against
future conftest refactors.
2026-05-16 19:32:49 +00:00
starship-s 727e3c9c8f fix(streaming): preserve session agents for credential pools 2026-05-16 13:05:25 -06:00
Michael Lam 0b64e21264 fix: cap live chat stream transports 2026-05-16 10:27:28 -07:00
Hermes Agent 8f4d6c1431 Stage 368: PR #2391 — fix: reduce browser storage pressure by @Michaelyklam 2026-05-16 17:19:08 +00:00
Hermes Agent 89be2ef458 Stage 368: PR #2387 — fix: guard localStorage quota writes by @Michaelyklam 2026-05-16 17:19:08 +00:00
Hermes Agent bcf44e586a Stage 368: PR #2377 — Add run-journal replay timeline parity checks by @franksong2702 2026-05-16 17:19:07 +00:00
Hermes Agent a1da489770 Stage 368: PR #2368 — fix: hybridize background profile env routing by @Michaelyklam 2026-05-16 17:19:07 +00:00
Hermes Agent 57199f16ec Stage 368: PR #2382 — fix: serve raw chat attachments from inbox by @Michaelyklam 2026-05-16 17:19:06 +00:00
Hermes Agent 026a9957f4 Stage 368: PR #2385 — Keep fuller compression snapshots reachable in sidebar by @franksong2702 2026-05-16 17:19:05 +00:00
Hermes Agent e994c8820e Stage 368: PR #2371 — Clarify interrupted turn recovery after WebUI restart by @franksong2702 2026-05-16 17:19:05 +00:00
Hermes Agent 8a6457c60f Stage 368: PR #2378 — fix: strip historical images in text mode by @Michaelyklam 2026-05-16 17:19:05 +00:00
Hermes Agent a1d048af29 Stage 368: PR #2375 — fix: keep markdown tables block-level by @Michaelyklam 2026-05-16 17:19:04 +00:00
Hermes Agent 1775e5c054 Stage 368: PR #2372 — fix: add i18n support to settings conversation page action buttons by @mccxj 2026-05-16 17:18:27 +00:00
Hermes Agent 5a7ea025df Stage 368: PR #2381 — fix: interpolate German session time labels by @Michaelyklam 2026-05-16 17:18:26 +00:00
Michael Lam 48b82d57db fix: reduce browser storage pressure 2026-05-16 08:44:04 -07:00
Frank Song 2dfe3ffb42 Fix live progress activity grouping 2026-05-16 23:37:44 +08:00
Michael Lam 3bb8c7b276 fix: guard localStorage quota writes 2026-05-16 07:31:44 -07:00
Frank Song 4899ae17b9 Keep fuller compression snapshots reachable 2026-05-16 20:58:44 +08:00
Michael Lam e4dad1c25d fix: serve raw chat attachments from inbox 2026-05-16 05:13:58 -07:00
Frank Song c415c843df Update interrupted recovery comment wording 2026-05-16 20:05:47 +08:00
Frank Song 11796fe7a8 Avoid magic cursor-loop test window 2026-05-16 20:05:19 +08:00
Michael Lam 2284d42695 fix: interpolate German session time labels 2026-05-16 04:31:48 -07:00
Michael Lam 962b3840e6 fix: strip historical images in text mode 2026-05-16 03:55:12 -07:00
Frank Song 574ee36460 Add run journal replay timeline parity checks 2026-05-16 17:52:35 +08:00
Michael Lam 3cbe206832 fix: keep markdown tables block-level 2026-05-16 02:12:52 -07:00
Michael Lam 5bd1f1441d fix: route background worker credentials through profile env 2026-05-16 01:02:19 -07:00
BonyFish f87e32d0c7 fix: add i18n support to settings conversation page action buttons
- Add data-i18n attributes to JSON, Import tooltip, and Clear button
- Reuse existing 'clear' and 'import' i18n keys for button labels
- Add 'export_session_json', 'export_session_json_tooltip',
  'import_session_json_tooltip', 'clear_conversation_btn_tooltip'
  keys to all 11 locales (en, it, ja, ru, es, de, zh, zh-Hant, pt, ko, fr)
2026-05-16 14:57:01 +08:00