Commit Graph

2737 Commits

Author SHA1 Message Date
nesquena-hermes 85d2e80cfe Stage-396 locale fix: add plugins_active_provider + plugins_provider_no_hooks to all 10 non-English locales
The original PR #2663 added 2 new English i18n keys but didn't extend them
to the 10 non-English locale blocks. Five locale-coverage tests
(zh/ja/ko/ru/es) failed because they verify every English key has a paired
entry in their locale. Added the keys to all 10 locales:
  - zh + zh-Hant: actual translations
  - it/ja/ru/es/de/pt/ko/fr: English + // TODO: translate markers (the
    repo's established pattern for these locales)
2026-05-21 00:35:22 +00:00
nesquena-hermes 32c006a6fd Stamp CHANGELOG for v0.51.103 (Release CA / stage-396 / 1-PR follow-on) 2026-05-21 00:27:07 +00:00
nesquena-hermes c6587091a2 Stage 396: PR #2663 2026-05-21 00:26:54 +00:00
nesquena-hermes 78be555460 Merge pull request #2666 from nesquena/release/stage-395
Release v0.51.102 (Release BZ / stage-395 / 1-PR follow-on)
v0.51.102
2026-05-20 17:19:03 -07:00
nesquena-hermes 70fe39a09f Stamp CHANGELOG for v0.51.102 (Release BZ / stage-395 / 1-PR follow-on) 2026-05-21 00:15:04 +00:00
nesquena-hermes f867b4520b Stage 395: PR #2662 2026-05-21 00:14:45 +00:00
nesquena-hermes 4cae511d15 Merge pull request #2665 from nesquena/release/stage-394
Release v0.51.101 (Release BY / stage-394 / 2-PR deep-review batch)
v0.51.101
2026-05-20 17:09:59 -07:00
nesquena-hermes 7479af462b Stage-394 test fix: set destructive env in test_git_commit_route_rejects_active_stream
The test was calling _handle_git_commit() directly in-process, but the
HERMES_WEBUI_WORKSPACE_GIT_DESTRUCTIVE=1 env var was only being set on the
test_server subprocess (via conftest.py L539). In-process the destructive
gate (returns 403) fires before the active-stream gate (returns 409), so
the test never reached the assertion it was trying to verify.

monkeypatch.setenv() restores the test's intent: confirm that when
destructive mode IS enabled, an active stream still blocks mutations with
the more specific 409 code.
2026-05-21 00:06:53 +00:00
nesquena-hermes 0774235987 Stamp CHANGELOG for v0.51.101 (Release BY / stage-394 / 2-PR deep-review batch) 2026-05-20 23:54:00 +00:00
nesquena-hermes cc5f6e3a78 Stage 394: PR #2636 2026-05-20 23:53:04 +00:00
nesquena-hermes 45c7a693af Stage 394: PR #2625 2026-05-20 23:53:04 +00:00
nesquena-hermes ea8305d5e2 Stage-394 chip CSS contrast: dark text on filled chips for light-theme readability
Light-theme review revealed white text on gold chips (color: var(--bg-page)) was
washed out and hard to read. Switched to fixed dark text #1a1a1a with font-weight
600 so the on-state reads clearly on the gold accent in both light and dark
themes. Off-state unchanged (muted text on transparent).
2026-05-20 23:38:51 +00:00
nesquena-hermes 38933b288d Stage-394 follow-up: profile-switch reconciliation + a11y switch role + server-side chat/settings filter
Per deep-review verdict SHIP-WITH-FIXES on PR #2636:

1. Profile-switch reconciliation: _refreshProfileSwitchBackground now re-fetches
   /api/settings and re-applies hidden_tabs for the new profile. Without this,
   Profile A's hidden-tabs choice stayed in effect under Profile B until the
   user opened Settings → Appearance.

2. A11y: switched chips from role=button + aria-pressed to role=switch +
   aria-checked. The pressed/not-pressed wording confused screen-reader users
   because chip-off looks like the off state. Added role=group +
   aria-labelledby on the container, and a :focus-visible style on the chips.

3. Server-side belt-and-suspenders: api/config.py now strips 'chat' and
   'settings' from hidden_tabs at validation time, matching the client's apply-
   time filter. A tampered POST can no longer persist the forbidden values.

3 new regression tests added (chat/settings rejection, profile-switch wiring,
chip a11y attributes).

Co-authored-by: FrancescoFarinola <francesco.farinola@example.com>
2026-05-20 23:05:19 +00:00
Francesco Farinola 5491a54285 fix: address PR review feedback on sidebar tab visibility
Three tweaks from reviewer:

1. Harden _applyTabVisibility to skip always-visible panels even if
   they appear in hidden_tabs (localStorage tampering, stale server
   data). Forces shouldHide=false so stale nav-tab-hidden classes
   on chat/settings get removed, not just skipped.

2. Add synchronous inline <script> flash-prevention after sidebar-nav
   in index.html. On slow networks, defer scripts run after the
   browser incrementally renders the DOM, causing hidden tabs to
   flash visible before JS executes. The inline script reads
   hermes-webui-hidden-tabs from localStorage and applies
   nav-tab-hidden classes before first paint, mirroring the existing
   theme/skin/font-size pattern. The boot.js IIFE becomes a secondary
   fallback (comment updated).

3. Remove _settingsHiddenTabsOnOpen dead state. It was tracked but
   never read for revert — _revertSettingsPreview is intentionally
   a no-op for appearance autosave. Removing the tracking makes
   the code honest about what it actually does. Also removes the
   test_settings_session_tracking test that validated this dead code.
2026-05-20 22:57:36 +00:00
Francesco Farinola 7f1feca3fe feat: sidebar tab visibility toggle in Settings > Appearance
Add chip row in Settings > Appearance that lets users toggle individual
sidebar/rail tabs on or off. Chat and Settings are always visible.

- Backend: hidden_tabs list setting with validation (no bool coerce)
- Frontend: pill chips that scan rail buttons, autosave via appearance
- Boot: _restoreTabVisibility IIFE applies hidden tabs before first paint
- i18n: 11 locales (label + description)
- Tests: 5 regression tests covering backend, frontend contracts,
  boot restore, i18n coverage, and settings session tracking
2026-05-20 22:57:36 +00:00
Michael Lam f17d4e204f fix: keep resumed CLI sessions in sidebar cap 2026-05-20 15:54:44 -07:00
nesquena-hermes f4a7989d4f Merge pull request #2658 from nesquena/release/stage-393
Release v0.51.100 (Release BX / stage-393 / 3-PR deep-review batch)
v0.51.100
2026-05-20 15:45:47 -07:00
nesquena-hermes abdaf014ce Stamp CHANGELOG for v0.51.100 (Release BX / stage-393 / 3-PR deep-review batch) 2026-05-20 22:32:58 +00:00
nesquena-hermes 2e7cdc4b13 Stage 393 follow-up: HTTP integration tests for /api/sessions/events (Opus advisor PR #2637) 2026-05-20 22:27:23 +00:00
nesquena-hermes feb35893b9 Stage 393: PR #2637
# Conflicts:
#	static/sessions.js
2026-05-20 22:24:40 +00:00
nesquena-hermes 4d8b8d0ffe Stage 393: PR #2633
# Conflicts:
#	CHANGELOG.md
2026-05-20 22:23:53 +00:00
nesquena-hermes e35c94bf55 Stage 393: PR #2615 2026-05-20 22:23:53 +00:00
nesquena-hermes f3b8d57c99 Merge pull request #2652 from nesquena/release/stage-392
Release v0.51.99 (Release BW / stage-392 / 5-PR batch)
v0.51.99
2026-05-20 15:07:40 -07:00
nesquena-hermes 7c7ae8ead2 Stamp CHANGELOG for v0.51.99 (Release BW / stage-392 / 5-PR batch) 2026-05-20 21:48:56 +00:00
nesquena-hermes aaf30b7b0a Stage 392: PR #2643 2026-05-20 21:48:04 +00:00
nesquena-hermes fa459aa01e Stage 392: PR #2651 2026-05-20 21:48:04 +00:00
nesquena-hermes b4a00b5aae Stage 392: PR #2650 2026-05-20 21:48:04 +00:00
nesquena-hermes dc0c833744 Stage 392: PR #2647 2026-05-20 21:48:04 +00:00
nesquena-hermes 6ed66daac2 Stage 392: PR #2638 2026-05-20 21:48:04 +00:00
Lumen Yang 71fbc796b2 fix: dedupe replayed context tail after compression 2026-05-20 23:15:54 +02:00
nesquena-hermes 329a7fa6f3 Merge pull request #2649 from nesquena/release/stage-391
Release v0.51.98 (Release BV / stage-391 / 1-PR follow-on)
v0.51.98
2026-05-20 13:43:53 -07:00
nesquena-hermes 1bf905a0cc Stamp CHANGELOG for v0.51.98 (Release BV / stage-391 / 1-PR follow-on) 2026-05-20 20:40:48 +00:00
nesquena-hermes 2403e7cd2b Stage 391: PR #2640 2026-05-20 20:40:30 +00:00
dobby-d-elf 6278222596 tighten session refresh invalidation 2026-05-20 14:40:13 -06:00
starship-s 153e035d12 fix: forward title generation api key 2026-05-20 14:39:38 -06:00
dobby-d-elf 14dd5aa00d address session event review 2026-05-20 14:33:36 -06:00
Colin Chang 9c3e37d2ee fix: custom_providers models allowlist takes priority over live /v1/models fetch
Custom providers that have a curated models: list in config.yaml
(e.g. ZenMux gateways) should show ONLY those configured models in
the picker dropdown, not the full /v1/models catalog.

Before this fix, _named_custom_groups unconditionally called
_read_custom_endpoint_models() which would pull hundreds of models
from aggregator gateways and overwrite the user's curated list.

Now the build checks if the custom_provider entry has a non-empty
models dict/list in config.yaml — if so, it skips the live fetch
and uses only the configured models (same behavior as hermes-agent
model_switch.py Section 4 patch).

Closes: configure-model-list-should-be-authoritative
2026-05-20 20:22:11 +00:00
nesquena-hermes ba0b4c367f Merge pull request #2648 from nesquena/release/stage-390
Release v0.51.97 (Release BU / stage-390 / 3-PR batch)
v0.51.97
2026-05-20 13:20:32 -07:00
dobby-d-elf 87527ff4f6 Fix state db legacy dedup repeat preservation 2026-05-20 14:18:47 -06:00
nesquena-hermes 6301b0e87b Stamp CHANGELOG for v0.51.97 (Release BU / stage-390 / 2-PR batch) 2026-05-20 20:16:50 +00:00
nesquena-hermes 1e3ca07575 Stage 390: PR #2634
# Conflicts:
#	CHANGELOG.md
2026-05-20 20:16:30 +00:00
nesquena-hermes 495991c2db Stage 390: PR #2642 2026-05-20 20:16:30 +00:00
dobby-d-elf 7742b83062 Merge remote-tracking branch 'origin/master' into tool-tooltip-fix 2026-05-20 14:12:29 -06:00
Arsh Kumar Singh 2253cf5a32 chore: address review notes — dedup comment and 409-path clarification 2026-05-20 19:57:20 +00:00
Michael Lam 6e64068f0f fix: cap CLI session sidebar state scans 2026-05-20 12:47:03 -07:00
nesquena-hermes 6c60925a54 Merge pull request #2644 from nesquena/release/stage-389
Release v0.51.96 (Release BT / stage-389 / 8-PR batch)
v0.51.96
2026-05-20 11:25:15 -07:00
nesquena-hermes 7c2d56c920 Stage 389 follow-up: close TOCTOU race in pin-cap (Opus advisor #2614) 2026-05-20 18:12:38 +00:00
dobby-d-elf 58259f6edb Avoid duplicate session list boot animation 2026-05-20 11:03:37 -06:00
dobby-d-elf 19ad20afff Fix new chats using profile default model 2026-05-20 10:57:04 -06:00
nesquena-hermes 2b5a960df2 Stamp CHANGELOG for v0.51.96 (Release BT / stage-389 / 8-PR batch) 2026-05-20 16:43:15 +00:00