Commit Graph

938 Commits

Author SHA1 Message Date
Frank Song 996d4f9a8c Hide session lineage metadata in compact sidebar 2026-05-14 10:14:15 +08:00
Hermes Agent 89bf659b01 Merge pull request #2206 into stage-351
feat: show 🤖 badge and provider/model for agent-mode cron jobs (vcavichini)
2026-05-13 23:51:29 +00:00
Hermes Agent 70f09aaeb6 Merge pull request #2207 into stage-351
feat: add per-target update summaries with separate WebUI/Agent What's-new links (Jordan-SkyLF, fixes #1579)
2026-05-13 23:51:28 +00:00
Hermes Agent f038c43d85 Merge pull request #2212 into stage-351
Tune Activity sweep animation (dobby-d-elf, follow-up to #2203)
2026-05-13 23:51:26 +00:00
Hermes Agent f1fee3aea8 Merge pull request #2210 into stage-351
Fix MCP tools list overflow with pagination/search (Jordan-SkyLF)
2026-05-13 23:51:25 +00:00
ubuntu 97564c2b01 feat: show 🤖 badge for cron jobs in agent mode
Identify cron jobs with mode=agent (no_agent=false) in the cron list
by displaying a robot emoji badge next to the job name.
2026-05-13 20:48:09 -03:00
Jordan SkyLF 25ce490e24 docs: add update banner summary mode screenshots 2026-05-13 16:27:06 -07:00
Frank Song dc213d47b8 fix: preserve literal thinking tags 2026-05-14 07:13:34 +08:00
Jordan SkyLF 1ad5fe9c14 fix: keep boot settings regression close 2026-05-13 16:00:46 -07:00
Jordan SkyLF f0d2ebccd9 Persist generated summary button state 2026-05-13 15:53:01 -07:00
Jordan SkyLF 7925a15211 Clarify generated summary button states 2026-05-13 15:53:01 -07:00
Jordan SkyLF 90c2ee7e04 Split What's New summaries by target 2026-05-13 15:53:01 -07:00
Jordan SkyLF cae007b069 Refine What's New summary sections 2026-05-13 15:53:01 -07:00
Jordan SkyLF 623dfef499 Stabilize What's New summaries 2026-05-13 15:53:01 -07:00
Jordan SkyLF bec21eafa0 Add What's New summary toggle 2026-05-13 15:53:01 -07:00
Jordan SkyLF cfc0f68d23 fix: show update whats-new links for webui and agent 2026-05-13 15:53:01 -07:00
dobby-d-elf 23cc22d048 Tune Activity sweep duration 2026-05-13 16:48:10 -06:00
dobby-d-elf eead48fc56 Tune version B Activity highlight sweep: widen band to ~20%, slow to 3.5s 2026-05-13 16:34:02 -06:00
Jordan SkyLF 4b455822cb Fix MCP tools list overflow 2026-05-13 15:33:54 -07:00
Hermes Agent 1f9520d3f9 Merge pull request #2178 into stage-350
fix(ui): custom models not displayed in model configuration list (hualong1009)
2026-05-13 20:44:55 +00:00
Hermes Agent 3f851051cf Merge pull request #2151 into stage-350
fix: clarify cancelled chat turn status (Jordan-SkyLF)

Conflict resolution on api/streaming.py:4549-4567 (the cancel-handler
ownership guard). Both this PR and the already-shipped PR #2136 add a
guard at the same site against stale stream writebacks, from different
angles:

  - PR #2136 (HEAD): _stream_writeback_is_current(_cs, stream_id) — strictly
    dominates by checking the active_stream_id token equality.
  - PR #2151: 'worker won the race' check via (active_stream_id != stream_id
    and not pending_user_message), with _emit_cancel_event = False to suppress
    the terminal cancel event.

Resolution merges both: keep #2136's strictly-stronger condition for skip
detection, and adopt #2151's _emit_cancel_event = False semantic so the
cancel event isn't emitted in addition to skipping the writeback (when
client may have already received the successful done payload).

55/55 tests pass across cancelled-turn-status + stale-stream-writeback +
the four cancel/data-loss sibling test files.
2026-05-13 20:44:44 +00:00
Hermes Agent 73b47ec4b5 Merge pull request #2203 into stage-350
Activity highlight animation (dobby-d-elf)
2026-05-13 20:41:35 +00:00
dobby-d-elf efce9ebdd6 Merge remote-tracking branch 'origin/master' into tools-animation-version-b
# Conflicts:
#	static/ui.js
2026-05-13 13:11:35 -06:00
Hermes Agent 7150e9fe70 Merge pull request #2202 into stage-349
feat: show early session titles on chat start (Jordan-SkyLF)
2026-05-13 19:03:03 +00:00
Hermes Agent 26e726c17e Merge pull request #2200 into stage-349
fix: stabilize Firefox session sidebar scrolling (Jordan-SkyLF)
2026-05-13 19:03:01 +00:00
Hermes Agent 97b60c68b8 Merge pull request #2198 into stage-349
Fix fork-from-here keep count for truncated sessions (Michaelyklam)
2026-05-13 19:02:59 +00:00
dobby-d-elf 11d9687483 Polish version B Activity highlight sweep 2026-05-13 13:02:07 -06:00
Jordan SkyLF 0381294f1c feat: add early session provisional titles 2026-05-13 11:37:11 -07:00
Jordan SkyLF 2dfe765b60 fix: stabilize Firefox session sidebar scrolling 2026-05-13 11:30:06 -07:00
Michael Lam c522384c6d Fix fork-from-here keep count for truncated sessions 2026-05-13 09:57:40 -07:00
Hermes Agent ef042ad8c2 Merge pull request #2188 into stage-348
fix: refresh context ring after compression (LumenYoung)
2026-05-13 16:34:42 +00:00
Hermes Agent fbd1e27181 Merge pull request #2185 into stage-348
fix: prevent 404 on /api/session/compress/status during session switch (jasonjcwu)
2026-05-13 16:34:40 +00:00
Hermes Agent 479e388be8 Merge pull request #2182 into stage-348
fix: keep compression banner attached to the compaction marker (LumenYoung)
2026-05-13 16:34:39 +00:00
Hermes Agent 63a1855b95 Merge pull request #2187 into stage-348
feat: show steer messages in chat with visual badge (jasonjcwu, split from #2164)
2026-05-13 16:34:38 +00:00
Hermes Agent 785b1fe7e9 Merge pull request #2186 into stage-348
fix: prevent concurrent send() from losing messages or swallowing stream output (jasonjcwu, split from #2164)
2026-05-13 16:34:36 +00:00
Hermes Agent acefaa180e Merge pull request #2190 into stage-348
fix: preserve thinking card state during reasoning updates (xz-dev)
2026-05-13 16:34:34 +00:00
dobby-d-elf f6a5fc2885 Widen version B Activity highlight sweep 2026-05-13 09:21:59 -06:00
dobby-d-elf a183378a05 Refine version B Activity highlight sweep 2026-05-13 08:17:12 -06:00
dobby-d-elf 3640cd8edf Version B: use gold Activity highlight sweep 2026-05-13 08:08:49 -06:00
dobby-d-elf a60c222e76 Version A: tune Activity sweep animation 2026-05-13 08:07:52 -06:00
dobby-d-elf 7b263cea03 save 2026-05-13 07:40:21 -06:00
Xiangzhe 0b97f6d7ee fix: preserve thinking card state during reasoning updates 2026-05-13 20:58:50 +08:00
Xiangzhe 1a4e0522a0 fix: keep background metering from overwriting visible session usage 2026-05-13 20:58:50 +08:00
dobby-d-elf de3dba3c62 feat: soften sweep edges and widen band for Activity animation 2026-05-13 06:40:38 -06:00
fxd-jason a8816fe22f feat: show steer indicator as transient DOM element
When busy_input_mode is 'steer' and the steer is accepted by the server,
show a transient indicator in the chat area (not in S.messages).

This mirrors the CLI/Gateway approach: steer text is never stored in the
message array. The done event's S.messages=d.session.messages replacement
therefore doesn't cause a flash where all SSE content vanishes and re-appears.

The indicator is an independent DOM element (.steer-indicator) appended to
msgInner. It naturally disappears when renderMessages rebuilds msgInner on
turn completion (done/cancel/error).
2026-05-13 20:30:44 +08:00
Lumen Yang 3289c44fb6 fix: refresh context ring after compression 2026-05-13 14:02:28 +02:00
Lumen Yang 7f01abf931 fix: ignore stale compaction markers when placing banner 2026-05-13 13:27:51 +02:00
fxd-jason 676d1f965e fix: prevent concurrent send() from losing messages or swallowing stream output
Problem: When two messages are sent in rapid succession, the second
send() can pass the S.busy check because setBusy(true) only runs after
the first await inside send(). This creates a window where two async
send() calls run concurrently, leading to:
- Streaming output from the first response getting swallowed when the
  second response's done event overwrites S.messages
- User messages disappearing when server returns 409 for the duplicate
  chat/start request

Root cause: send() is async and has awaits (uploadPendingFiles,
api('/api/chat/start')) before setBusy(true) at line 198. During those
await yields, S.busy is still false, allowing a second send() to enter.

Fix: Add a synchronous _sendInProgress guard at the very top of send()
(before any await). Concurrent calls re-queue the message instead of
silently dropping it. try/finally ensures the flag resets on all exit
paths.

Also widens the text-extraction window in
test_1062_busy_input_modes.py from 3000 to 5000 chars to accommodate
the new guard block at the top of send().
2026-05-13 19:21:50 +08:00
fxd-jason 9e45de463d fix: prevent 404 on /api/session/compress/status during session switch
Two-part fix:
- Backend: handle_get returns True (not None from j()) for compress/status
  route, preventing edge-case 404 fallback in do_GET
- Frontend: resumeManualCompressionForSession silently returns on 404
  instead of showing "Compression failed: not found" toast

Includes 6 regression tests covering backend return value, idle/empty
session responses, and frontend 404 guard presence.
2026-05-13 18:56:55 +08:00
Lumen Yang bc6a949272 fix: place compression banner at persisted marker 2026-05-13 10:59:36 +02:00