Commit graph

5809 commits

Author SHA1 Message Date
allenliang2022
eabbe9a821 fix(webui): hidden-tab poll keeps retrying when attach defers in multi-pane (#5172 follow-up)
#5172 (render server-initiated turns in a hidden tab, shipped v0.51.743 via
#5218) has a non-blocking multi-pane edge flagged in review: when a
server-initiated turn arrives for a session that is NOT the active pane, the
hidden-tab status poll called _attachServerInitiatedStream() and could not tell
whether the attach actually happened. _attachServerInitiatedStream returned
undefined in all paths, so the poll had no signal — a stop-on-call would cancel
polling while the turn was never rendered, leaving it invisible until the next
user interaction.

Fix: _attachServerInitiatedStream now returns a bool — true when this tab is
responsible for rendering the stream (attached, or already attached to the same
sid/streamId), false when the attach was not consummated (sid not the current
pane, invalid input, or a thrown error). _startHiddenActiveStreamPoll captures
the bool and only calls _stopHiddenActiveStreamPoll() when true; on false it
keeps polling and re-tries on a later tick (e.g. once the user switches the pane
back to sid, or the turn finishes and status returns active_stream_id=null).

Tests in tests/test_hidden_tab_server_initiated_turn.py: assert all return paths
are explicit bool (no bare return), the non-current-pane path returns false, and
the poll gates _stopHiddenActiveStreamPoll on the attach result.
2026-06-30 16:56:45 +08:00
nesquena-hermes
7c96296bf5
Merge pull request #5267 from nesquena/rebase-5251
Release v0.51.764 — continue /goal after gateway turns (#5251, @rodboev)
2026-06-29 22:17:15 -07:00
nesquena-hermes
73ac59ebed docs(changelog): continue /goal after gateway turns (#5251, #5092) 2026-06-30 05:12:20 +00:00
Rod Boev
51a0fca24a fix(#5092): continue WebUI goals after gateway turns 2026-06-30 05:04:32 +00:00
nesquena-hermes
1f85da54e9
Merge pull request #5265 from nesquena/rebase-5198
Release v0.51.763 — enforce active profile on request-supplied session IDs (#5198, @starship-s)
2026-06-29 21:54:18 -07:00
nesquena-hermes
e87ed43557 docs(changelog): enforce active profile on request-supplied session IDs (#5198) 2026-06-30 04:43:42 +00:00
nesquena-hermes
468b61e513 fix(auth): release STREAM_SESSION_OWNERS on worker early-return + stale-run prune
Gate hardening for #5198: the new stream-owner map leaked entries on three
paths that bypass the teardown finally — worker early-return when the stream
was cancelled before startup (streaming.py, gateway_chat.py) and the direct
ACTIVE_RUNS stale-zombie prune (routes.py). Each now calls unregister_stream_owner.
Adds a regression test proving the early-return path no longer leaks.

Co-authored-by: starship-s <starship-s@users.noreply.github.com>
2026-06-30 04:39:00 +00:00
Hermes Agent
fabd461dcd fix(auth): guard profile-owned stream IDs 2026-06-30 04:28:15 +00:00
Hermes Agent
a993fee060 docs(auth): document request session guard scope 2026-06-30 04:28:15 +00:00
Hermes Agent
f26896f96a refactor(auth): remove unreachable chat retag branch 2026-06-30 04:28:15 +00:00
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