Commit Graph
5850 Commits
Author SHA1 Message Date
allenliang2022 d9622bf9b0 fix(chat): keep just-settled worklog open for unpinned readers too (mobile 往回大跳)
The STREAM_DONE keep-open exception (#4970 round 6/7) was scoped to PINNED
followers only, on the assumption that unpinned readers 'preserve their viewport
normally'. That holds on desktop (overflow-anchor:none + JS snapshot restore) but
NOT on mobile.

Repro (isolated debug instance + CDP touch emulation, faithful to a real phone):
a reader who scrolls UP to read inside the just-settled turn is UNPINNED. At
STREAM_DONE the live worklog/thinking cards collapse into a compact summary,
shrinking the transcript by hundreds of px ABOVE their viewport. On mobile the
CSS resting value is overflow-anchor:auto, but _fixMobileScrollJank() flips an
inline overflow-anchor:none over the settle render — so native scroll-anchoring
is suppressed during exactly the frame the unpinned reader needs it to absorb the
above-viewport shrink. The content then leaps to the top of the latest turn (the
'往回大跳' report). Single-variable measurement: collapse-with-auto shifts the
reader 0px; collapse-with-none shifts -248px.

Fix: keep the just-settled worklog open for BOTH pin states (still one-shot
scoped to the turn that just settled, so historical worklogs still collapse
compact). This removes the shrink entirely, fixing the jump for every
device/anchor-mode instead of fighting the anchor engine. The #4856 guard and the
mobile overflow-anchor:auto CSS are untouched, so Boev's Android DOM-wipe fix and
akrhin's #MOBILESCROLL fix both stay intact.

- Rename _shouldKeepSettledWorklogOpenForPinnedFollow ->
  _shouldKeepSettledWorklogOpenForStreamSettle (drops the _scrollPinned /
  _messageUserUnpinned gate; keeps the one-shot stream-id token).
- Update the #4970 behavioral regression test to assert keep-open is TRUE for the
  armed turn under BOTH pin states, FALSE for historical turns and after disarm.
2026-06-30 17:06:31 +00:00
nesquena-hermes 1a523926d5 Merge pull request #5278 from nesquena/release/stage-w2
Release v0.51.766 — Wave 2 batch (#5266 #5264 #5253 #5244)
2026-06-30 09:53:11 -07:00
nesquena-hermes 5370623743 docs(changelog): wave-2 batch (#5266 #5264 #5253 #5244) 2026-06-30 16:36:43 +00:00
nesquena-hermes 62310be565 Merge #5244 (fix/subagent-sidebar-stacking) into stage-w2 2026-06-30 16:35:58 +00:00
nesquena-hermes 4a7159a2ee Merge #5253 (franksong2702/fix-live-worklog-manual-scroll) into stage-w2 2026-06-30 16:35:56 +00:00
nesquena-hermes 3a12ac6bb8 Merge #5264 (fix/large-text-paste-toggle-upstream) into stage-w2 2026-06-30 16:35:55 +00:00
nesquena-hermes 6c5e488579 Merge #5266 (fix/hidden-tab-multipane-attach-bool) into stage-w2 2026-06-30 16:35:53 +00:00
nesquena-hermes 8d5ff4c11e Merge pull request #5277 from nesquena/release/stage-w1
Release v0.51.765 — Wave 1 batch (#5276 #5274 #5272 #5256 #5254 #5257)
2026-06-30 09:34:21 -07:00
nesquena-hermes 3a2f5cdedb docs(changelog): wave-1 batch (#5276 #5274 #5272 #5256 #5254 #5257) 2026-06-30 16:21:26 +00:00
nesquena-hermes 21233f2df8 Merge #5257 (franksong2702/fix-transparent-live-snapshot) into stage-w1 2026-06-30 16:19:52 +00:00
nesquena-hermes 9dc56a7284 Merge #5254 (pr/5250-settings-search-menu-clip) into stage-w1 2026-06-30 16:19:50 +00:00
nesquena-hermes 90180bd56c Merge #5256 (franksong2702/fix-session-menu-delete-delay) into stage-w1 2026-06-30 16:19:49 +00:00
nesquena-hermes b76264c310 Merge #5272 (fix/5141-terminal-failure-transcript-evaluator) into stage-w1 2026-06-30 16:19:47 +00:00
nesquena-hermes a09bc4e1dc Merge #5274 (pr/5270-cli-webui-continuity) into stage-w1 2026-06-30 16:19:46 +00:00
nesquena-hermes 2ac8162820 Merge #5276 (pr/5273-active-done-viewed-sync) into stage-w1 2026-06-30 16:19:44 +00:00
Rod Boev a13b8b996c Keep done-settle unread metadata aligned with compacted counts 2026-06-30 08:50:25 -04:00
Rod Boev 0c67db9513 fix(#5270): keep cron reply tests compatible with route refresh 2026-06-30 08:41:14 -04:00
Rod Boev 22275c895e fix(#5270): keep chat-start auth tests compatible with route refresh 2026-06-30 08:37:36 -04:00
Rod Boev 5f07e12387 fix(#5270): route the continuity refresh through chat start 2026-06-30 08:33:20 -04:00
Rod Boev 85fac54831 fix(#5273): sync active viewed count on done settle 2026-06-30 08:31:01 -04:00
Rod Boev cbe36c0ada fix(#5270): confine continuity repair to the chat path 2026-06-30 08:18:43 -04:00
Rod Boev 7e0936f3f1 fix(#5270): preserve first WebUI continuation context for CLI sessions 2026-06-30 07:47:57 -04:00
nankingjing c2bb4c655d refactor(streaming): split terminal-failure transcript evaluator (#5141)
Extract _turn_transcript_lacks_final_assistant_answer() so settlement
logic can inspect an already-merged transcript. The merge wrapper now
delegates to the pure evaluator without changing behavior.

Fixes #5141
2026-06-30 18:40:08 +08:00
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
Frank SongandPaperclip 97992e72ad Merge origin/master into PR 5253
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 14:32:18 +08:00
justanotherAIcontributor 91d32c40c5 Merge branch 'master' into fix/large-text-paste-toggle-upstream 2026-06-30 16:13:49 +10:00
Frank SongandPaperclip 7e038aaad3 Merge branch 'master' into franksong2702/fix-transparent-live-snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 13:54:15 +08:00
Frank SongandPaperclip 3d865e4c1f Merge origin/master into PR #5256
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 13:52:36 +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
Frank SongandPaperclip e01d9ff46e Merge origin/master into PR #5256
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 13:15:47 +08:00
Frank SongandPaperclip 0369e1e9de Merge branch 'master' of https://github.com/nesquena/hermes-webui into franksong2702/fix-transparent-live-snapshot
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 13:12:39 +08:00
nesquena-hermes 73ac59ebed docs(changelog): continue /goal after gateway turns (#5251, #5092) 2026-06-30 05:12:20 +00:00
Frank SongandPaperclip 3188fe1445 Merge origin/master into PR 5253
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 13:10:55 +08: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-hermesandstarship-s 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
Frank SongandPaperclip 6ac5b9dbee Fix transparent live anchor scene replay
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 12:27:02 +08:00
Frank SongandPaperclip 2c8f30de35 Merge origin/master into PR 5253
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 12:26:58 +08:00
Frank SongandPaperclip 44d881eede Merge origin/master into PR #5256
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-30 12:26:28 +08:00
Stacey2911 6b0d8eaadf fix(webui): make large text paste-as-attachment toggleable via settings
Add a user setting 'large_text_paste_as_attachment' (default: on) that lets
users paste large text inline instead of having it auto-converted to .md file
attachments. The toggle lives in Control Center → Chat tab and persists via
settings.json, following the established upstream pattern for boolean settings.
2026-06-30 14:25:53 +10: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