Commit graph

4183 commits

Author SHA1 Message Date
Rod Boev
010127d0c0 docs(onboarding): place AIML setup with custom-provider guidance (#4045) 2026-06-12 12:41:43 -04:00
Rod Boev
b426067e6f docs(onboarding): document AIML API custom-provider setup (#4045) 2026-06-12 12:35:59 -04:00
b3nw
9ac9f8d690 fix(#4059): log unresolved custom provider key templates 2026-06-12 16:23:35 +00:00
b3nw
8ee8523340 test: isolate context-length metadata stub 2026-06-12 16:18:50 +00:00
Rod Boev
6a1109475b fix(sidebar): count inactive rows through the render path 2026-06-12 12:03:04 -04:00
Rod Boev
65c0864e34 fix(approval): clear stale approval cards while busy 2026-06-12 11:55:43 -04:00
Rod Boev
4d8fa0245e fix(#3928): stabilize the static fallback contract 2026-06-12 11:55:43 -04:00
Rod Boev
0ed902bd05 fix(sidebar): drop the dead WebUI count path 2026-06-12 11:55:43 -04:00
b3nw
b2eda41b49 fix(#4059): pass custom provider keys to context probes
Resolve custom provider API keys from the matched config snapshot and pass them through session hydration plus streaming fallback context-length probes. This prevents authenticated /v1/models endpoints from falling back to the default 256K window and clobbering larger persisted session metadata.
2026-06-12 15:53:48 +00:00
Rod Boev
66a2d577df Keep CLI sidebar regression aligned with bucketed partitioning 2026-06-12 10:05:33 -04:00
Rod Boev
dde9f06b03 test(sidebar): avoid shard churn from static regressions 2026-06-12 09:52:49 -04:00
Benoît Vézina
8003faa801 feat(tts): add French (fr-CA, fr-FR) voices to Edge TTS allowlist
Adds 4 fr-CA + 3 fr-FR Edge neural voices so francophone users can use
the Edge TTS engine instead of receiving HTTP 400 "invalid voice" on
every utterance. Pure superset of the existing allowlist; no validation
or rate-limit behavior changes.

Tests mirror the test_issue2931 in-process / mocked-edge_tts pattern:
each new voice is parametrized through _handle_tts and asserted to
reach synthesis (HTTP 200); fr-BE-CharlineNeural (real Edge voice
but intentionally unlisted) is asserted to still 400.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 09:44:24 -04:00
Rod Boev
ddce08fd70 docs(skills): pin the local-first search-dir contract 2026-06-12 09:36:10 -04:00
Rod Boev
19448c3267 fix(sidebar): keep rendered source counts on one path 2026-06-12 09:36:10 -04:00
Rod Boev
1f42f3190f fix(skills): categorize flat external skill dirs (#4053) 2026-06-12 09:21:47 -04:00
Rod Boev
c507684b10 fix(sidebar): align session source counts with rendered rows (#3966) 2026-06-12 09:14:23 -04:00
Rod Boev
5f8ab6c452 Avoid redundant skill_view calls during forced skill sends 2026-06-12 08:49:56 -04:00
Rod Boev
76f3083223 fix(#3928): keep fallback badge helper out of source-marker tests 2026-06-12 08:43:06 -04:00
Rod Boev
87183b9517 fix(#3928): return a real static catalog when /api/models times out 2026-06-12 08:35:22 -04:00
Rod Boev
80dab6f3eb fix(commands): inject forced skill content for /use (#4044) 2026-06-12 08:34:27 -04:00
Rod Boev
1529dd0841 fix(commands): route /reload-skills through the WebUI allowlists (#4043) 2026-06-12 08:31:11 -04:00
Rod Boev
e73cf3d610 test(csp): pin ipc localhost across enforcing coverage (#4040) 2026-06-12 08:18:04 -04:00
Rod Boev
7795f29946 fix(composer): preserve send-button sync under scheduled resize (#4042) 2026-06-12 08:18:04 -04:00
Rod Boev
aab43cdaff fix(approval): keep approval polling alive across busy dips (#4041) 2026-06-12 08:12:57 -04:00
Rod Boev
768ea5ee87 fix(composer): coalesce composer auto-resize reflows (#4042) 2026-06-12 07:54:48 -04:00
Rod Boev
bad4ec393a fix(titlebar): sync document.title on panel switches (#4039) 2026-06-12 07:52:57 -04:00
Rod Boev
5bffddd9ca fix(#3914): track bootstrap launcher as executable 2026-06-12 07:50:43 -04:00
Rod Boev
ddcaf6091c fix(#4040): allow Tauri IPC host in connect-src 2026-06-12 07:50:43 -04:00
gaku
6a13feaf8b refactor(profiles): align profile cookie env var with HERMES_WEBUI_* naming
The profile cookie has been configurable since #1756 via
WEBUI_PROFILE_COOKIE_NAME, the lone WebUI env var missing the HERMES_WEBUI_
prefix shared by every other setting (e.g. HERMES_WEBUI_COOKIE_NAME from #3981).

- Read HERMES_WEBUI_PROFILE_COOKIE_NAME first (canonical name)
- Keep WEBUI_PROFILE_COOKIE_NAME as a deprecated alias so existing deployments
  are unaffected; behavior is unchanged, only the name is aligned
- Warn once per process for the legacy name (this resolver runs on every
  request, so the deprecation log must not fire per-request)
- Add resolution tests covering canonical, legacy, precedence, blank, and
  warn-once paths
2026-06-12 09:55:49 +00:00
Mohamed Habib
a84bd8908d docs: add transparent stream ux evidence 2026-06-12 12:54:30 +03:00
Mohamed Habib
62743be299 style: quiet transparent stream activity rows 2026-06-12 12:52:54 +03:00
Mohamed Habib
43bb015135 merge: sync transparent stream branch with master 2026-06-12 11:25:53 +03:00
nesquena-hermes
df6cfd0a15
Merge pull request #4038 from nesquena/stage-4022
Release MH — v0.51.369 — WebUI streaming honors runtime target model/base_url (#4022, fixes #3895)
2026-06-12 01:18:34 -07:00
nesquena-hermes
6204dbe9ea docs(changelog): stamp #4022 runtime base_url fix as v0.51.369 (Release MH) 2026-06-12 08:16:00 +00:00
Frank Song
53051ad4a3 fix(anchor): harden registry review findings 2026-06-12 16:15:09 +08:00
Mohamed Habib
2005f1b115 merge: sync transparent stream branch with master 2026-06-12 11:13:16 +03:00
Mohamed Habib
b42b17fbbf fix: address transparent stream review findings 2026-06-12 11:10:43 +03:00
nesquena-hermes
c35c1c6e70 test(#4022): update sprint42 runtime-route assertion for target_model threading
#4022 now calls resolve_runtime_provider(requested=..., target_model=...) so
per-model base_url normalization applies; the sprint42 test pinned the old
single-arg signature. Updated the assertion to expect target_model (pre-existing
test, not a behavior regression — confirmed it passes on master only because the
call signature changed here).
2026-06-12 07:57:26 +00:00
nesquena-hermes
005b2ca460 fix(#4022): preserve different-endpoint config base_url override (Codex CORE)
Codex caught a regression: the contributor's _runtime_preferred_base_url preferred
the runtime base_url for ALL non-custom providers, which would clobber an explicit
providers.<id>.base_url override pointing at a different host/port (LM Studio at a
LAN IP, an OpenRouter mirror). Now only prefer the runtime URL when it's the SAME
scheme+host+port as the configured one (the #3895 /v1-dedup case is path-only on
the same host); a genuinely different configured endpoint wins. Added
_same_base_url_endpoint() + 2 regression tests (different-endpoint preserved,
same-endpoint normalization).
2026-06-12 07:54:48 +00:00
Frank Song
65cb2a8b46 feat(anchor): add shadow source registry harness 2026-06-12 15:52:28 +08:00
Frank Song
acd9d2e6f4 fix(anchor): carry normalizer hardening into registry slice 2026-06-12 15:52:28 +08:00
Frank Song
56a89ef11e feat(anchor): add inert turn registry skeleton 2026-06-12 15:52:28 +08:00
nesquena-hermes
983f059acd Merge #4022 — honor runtime target model+base_url in WebUI streaming (#3895) 2026-06-12 07:48:26 +00:00
nesquena-hermes
9e96f5f6ad
Merge pull request #4036 from nesquena/stage-4023
Release MG — v0.51.368 — bind active-profile cookie to auth session (#4023, fixes #803)
2026-06-12 00:46:01 -07:00
nesquena-hermes
061eda9b91 docs(changelog): stamp #4023 profile-cookie session binding as v0.51.368 (Release MG) 2026-06-12 07:43:46 +00:00
nesquena-hermes
03799f8e4a harden(#4023): apply Opus security findings — verify-side name-pattern gate + require handler when auth enabled
Opus independent security review concurred SAFE and surfaced 2 LOW defense-in-depth
items, both applied: (1) verify_profile_cookie_value now validates the profile name
against _PROFILE_ID_RE itself (not only in get_profile_cookie) so a future second
caller can't return an unvalidated name; (2) build_profile_cookie raises when auth is
enabled and no handler is passed, so a future call site can't silently emit an
unsigned (session-unbound) profile cookie. +3 regression tests.
2026-06-12 07:37:48 +00:00
nesquena-hermes
aef15ca559 Merge #4023 — bind active profile cookie to session (#803) 2026-06-12 07:19:46 +00:00
nesquena-hermes
242d79eacd
Merge pull request #4035 from nesquena/stage-mf-fixes
Release MF — v0.51.367 — autocomplete filter + lineage merge + shutdown i18n (#4021, #4032, #4018)
2026-06-12 00:16:54 -07:00
nesquena-hermes
3eac7ccd96 docs(changelog): stamp #4021 + #4032 + #4018 fix batch as v0.51.367 (Release MF) 2026-06-12 07:14:16 +00:00
nesquena-hermes
07585a11f8 Merge #4018 2026-06-12 07:07:34 +00:00