Commit graph

5799 commits

Author SHA1 Message Date
Hermes Agent
a397b5e078 test(auth): align chat retag fixture with active profile 2026-06-30 04:28:15 +00:00
Hermes Agent
9e861b5651 fix(auth): tolerate query-less route inputs 2026-06-30 04:28:15 +00:00
Hermes Agent
c068dbc39b fix(auth): enforce active-profile session IDs 2026-06-30 04:28:15 +00:00
nesquena-hermes
95f1486567
Merge pull request #5263 from nesquena/rebase-5179
Release v0.51.762 — file-manager active-profile enforcement (#5179, @Hinotoi-agent)
2026-06-29 21:25:48 -07:00
nesquena-hermes
741973ce7a docs(changelog): enforce active profile for file-manager session workspaces (#5179) 2026-06-30 04:22:11 +00:00
hinotoi-agent
41ec8238ba chore: log file manager profile denials 2026-06-30 04:12:27 +00:00
hinotoi-agent
40679f2af8 test: isolate file manager profile checks 2026-06-30 04:12:27 +00:00
hinotoi-agent
beb39f1ef2 fix: scope file manager sessions to active profile 2026-06-30 04:12:27 +00:00
nesquena-hermes
2d9da824fe
Merge pull request #5259 from nesquena/rebase-5240
Release v0.51.761 — preserve visible transcript on terminal stream failure (#5240, @rodboev)
2026-06-29 21:09:35 -07:00
nesquena-hermes
fda16b754f docs(changelog): preserve visible transcript on terminal stream failure (#5240, #5224) 2026-06-30 03:52:51 +00:00
Rod Boev
eb3c5a26bd Clarify terminal marker replacement semantics 2026-06-30 03:33:55 +00:00
Rod Boev
ae67cd3428 test(chat): refresh restore guard source-shape assertions (#5224) 2026-06-30 03:33:55 +00:00
Rod Boev
494d137082 fix(chat): scope transcript preserve to the current terminal tail (#5224) 2026-06-30 03:33:55 +00:00
Rod Boev
fd35d8c9ab fix(chat): narrow transcript preservation to stale-prefix restores (#5224) 2026-06-30 03:33:55 +00:00
Rod Boev
42cc02634a test(chat): refresh terminal recovery source-shape guards (#5224) 2026-06-30 03:33:55 +00:00
Rod Boev
c17f222427 fix(chat): preserve visible transcript on terminal stream failure (#5224) 2026-06-30 03:33:55 +00:00
nesquena-hermes
ae8f42ec13
Merge pull request #5249 — fail closed on ambiguous truncate matches (#5212, @rodboev)
Release v0.51.760 — fail closed on ambiguous truncate matches (#5212, @rodboev)
2026-06-29 18:50:35 -07:00
nesquena-hermes
2f7fca5b40 docs(changelog): fail closed on ambiguous truncate matches, preserve kept turn + tool rows (#5212) 2026-06-30 01:47:41 +00:00
Rod Boev
07a8c7dc6f fix(session): preserve kept tool rows on ambiguous truncate (#5134) 2026-06-30 01:40:07 +00:00
Rod Boev
e9387f8aa5 fix(session): fail closed on ambiguous truncate context matches (#5134) 2026-06-30 01:40:07 +00:00
Rod Boev
02a3750488 fix(session): keep truncate rewind on complete turns (#5134) 2026-06-30 01:40:07 +00:00
Rod Boev
3627c9e5d8 fix(session): drop interleaved tool rows after mid-history truncate (#5134) 2026-06-30 01:40:07 +00:00
nesquena-hermes
edc20875fe
Merge pull request #5247 — repair bare custom-provider suffix on resolver slow path (#5246, @claw-io)
Release v0.51.759 — repair bare custom-provider suffix on resolver slow path (#5246, @claw-io)
2026-06-29 18:16:55 -07:00
nesquena-hermes
15492b9f29 docs(changelog): repair bare custom-provider suffix on resolver slow path (#5246) 2026-06-30 01:13:48 +00:00
b3nw
da43de72b8 fix(model): repair bare custom-provider suffix on resolver slow path (#5225)
Mirror the #5128 fast-path suffix repair when profile context is present
but requested_provider is omitted, which async delegation completion can
trigger via process_wakeup.

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-30 01:01:17 +00:00
nesquena-hermes
c229243f6d
Merge pull request #5243 — gate settled anchor fallbacks by raw index (#5242, @franksong2702)
Release v0.51.758 — gate settled anchor fallbacks by raw index (#5242, @franksong2702)
2026-06-29 17:22:52 -07:00
nesquena-hermes
de433e583b docs(changelog): gate settled anchor fallbacks by raw index (#5242) 2026-06-30 00:19:54 +00:00
Frank Song
eff01bf322 Gate settled anchor fallbacks by raw index 2026-06-30 08:00:54 +08:00
nesquena-hermes
dd4d4b2e90
Merge pull request #5241 — page archived sidebar rows + archived-search refetch (#5200, @santastabber)
Release v0.51.757 — page archived sidebar rows + archived-search refetch (#5200, @santastabber)
2026-06-29 15:38:06 -07:00
nesquena-hermes
b753a11895 docs(changelog): page archived sidebar rows + archived-search refetch (#5200) 2026-06-29 22:35:32 +00:00
Jamie (Hermes)
0674a0198c perf(sessions): page archived sidebar rows 2026-06-29 22:24:35 +00:00
nesquena-hermes
61f07f6005
Merge pull request #5238 — collapse post-restart config reload stampede (#5235, @rodboev)
Release v0.51.756 — collapse post-restart config reload stampede (#5235, @rodboev)
2026-06-29 14:01:13 -07:00
nesquena-hermes
2add66f66d docs(changelog): collapse post-restart config reload stampede (#5235) 2026-06-29 20:58:04 +00:00
Rod Boev
affdb40a1c fix(config): route stale model reads through shared reload gate (#5220) 2026-06-29 20:50:34 +00:00
Rod Boev
6653b7bd2f fix(config): collapse post-restart config reload stampede (#5220) 2026-06-29 20:50:34 +00:00
nesquena-hermes
45dabb2e15
Merge pull request #5236 — Neuralwatt provider env-var mapping (#4810, @b-yelverton)
Release v0.51.755 — Neuralwatt provider env-var mapping (#4810, @b-yelverton)
2026-06-29 13:49:08 -07:00
nesquena-hermes
cd67e67af1 docs(changelog): add Neuralwatt provider env-var mapping (#4810) 2026-06-29 20:42:54 +00:00
Brett Yelverton
6c73e417e0 test: add regression coverage for neuralwatt provider env-var mapping
Mirrors test_issue2025_xiaomi_env_key.py pattern:
- _PROVIDER_ENV_VAR['neuralwatt'] == 'NEURALWATT_API_KEY'
- _provider_has_key('neuralwatt') with env var set
- _provider_has_key('neuralwatt') without env var
- model group appears in get_available_models() when config lists models
2026-06-29 20:41:16 +00:00
Brett Yelverton
0c338711df feat: add Neuralwatt provider support (env var mapping) 2026-06-29 20:41:16 +00:00
nesquena-hermes
31000a9ec1
Merge pull request #5234 — configurable voice silence timeout + continuous recognition (#5176, @ChonSong)
Release v0.51.754 — configurable voice silence timeout + continuous recognition (#5176, @ChonSong)
2026-06-29 13:37:37 -07:00
nesquena-hermes
5fd6051743 test(#5176): update sprint20 continuous-recognition assertion for the new opt-in default-false form 2026-06-29 20:28:26 +00:00
nesquena-hermes
2643f990c4 docs(changelog): configurable voice silence timeout + continuous recognition (#5176) 2026-06-29 20:22:26 +00:00
nesquena-hermes
0aea4c7e18 harden(#5176): clamp configurable voice silence timeout (maintainer hardening)
Apply the warm-review polish: parseInt radix 10, fall back to 1800 for
missing/NaN/non-positive values, and floor at 200ms so a mistyped tiny/negative
hermes-voice-silence-ms can't make the recognizer auto-send instantly. De-brittle
the source-string test to assert behavior (reads key / 1800 fallback / guards
non-positive) instead of one literal expression. Default behavior unchanged.
2026-06-29 20:21:22 +00:00
Sean
5bfa9a8ec0 feat(voice): make silence timeout and continuous recognition configurable via localStorage
The voice-mode loop hardcoded SILENCE_MS=1800 and
_recognition.continuous=false, giving users no way to tune the
auto-send timing or keep the mic open across natural pauses.

Changes:
- SILENCE_MS now reads from localStorage key 'hermes-voice-silence-ms'
  with 1800ms fallback — users set it from the dev console or a future
  settings toggle
- _recognition.continuous reads from 'hermes-voice-continuous' (default
  false) — set to 'true' to keep the mic open across pauses within an
  utterance, with the silence timer remaining the sole send decision

New test file (tests/test_issue4761_voice_mode_config.py, 8 tests)
pins both localStorage reads and verifies the surrounding voice-mode
infrastructure is intact.

Refs #4761
2026-06-29 20:19:40 +00:00
nesquena-hermes
ca507138f7
Merge pull request #5233 — reduce false Connection Lost flapping under large session state (#5201, @franksong2702)
Release v0.51.753 — reduce false Connection Lost flapping under large session state (#5201, @franksong2702)
2026-06-29 13:16:25 -07:00
nesquena-hermes
978c5108bd docs(changelog): reduce false Connection Lost flapping under large session state (#5201) 2026-06-29 20:07:25 +00:00
nesquena-hermes
62fde9c32b test(#5201): widen hidden-tab skip-block window to 2900 after rebase (maintainer rebase-fix)
#5201 grows startSessionStream, pushing the hidden early-return skip path to
offset ~2247; #5172's test sliced an outer 2400 window that truncated the
skip_block before _startHiddenActiveStreamPoll(sid). Widen to 2900 so the
assertion reaches it. Both production hidden-poll paths are intact (Codex
verified); test-window only.
2026-06-29 20:06:18 +00:00
nesquena-hermes
ac9d9b8f8c test(#5201): widen sse-visibility reopen window to 2200 after master-rebase (maintainer rebase-fix)
The rebase onto current master (which carries #5172's window bumps) left the
reopen-path test window at 1600, but #5201 grows startSessionStream so the
'else if (_sessionStreamHiddenSid)' reopen assertion now lands at offset ~1741.
Widen to 2200 (matching #5201's sibling windows) so the assertion reaches the
code. Test-window only; production unchanged.
2026-06-29 19:53:25 +00:00
Frank Song
afbb3e5010 Fix session stream resume after live stream end
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-29 19:52:02 +00:00
Frank Song
47d8ac94d3 Harden connection flapping aftercare
Keep sidebar retries boot-scoped, preserve immediate source-change cache rebuilds, and tighten session stream ownership before closing duplicate SSE sockets.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-29 19:52:02 +00:00