Skip to content

Release v0.51.99 (Release BW / stage-392 / 5-PR batch) - #2652

Merged
nesquena-hermes merged 14 commits into
masterfrom
release/stage-392
May 20, 2026
Merged

nesquena-hermes merged 14 commits into
masterfrom
release/stage-392

Conversation

@nesquena-hermes

Copy link
Copy Markdown
Collaborator

Release v0.51.99 — Release BW (stage-392) — 5-PR medium-risk batch

Mixed-risk follow-on batch picking up 5 small/moderate contributor PRs that look self-contained, agent-reviewed (where applicable), and CI-green.

Constituents

Pre-Opus gate

Streaming surface — browser sanity required

Per the "PRs touching api/streaming.py + api/routes.py need browser API check" rule:

Stats

5 PRs, ~553 LOC net change, 15 files. Surfaces: clarify roundtrip + CLI sidebar perf + title aux routing + compression replay dedup + compact tool activity renderer. No new UI surfaces, no schema/contract changes.

Will run pytest + Opus advisor + browser sanity in parallel before merging.

dobby-d-elf and others added 14 commits May 20, 2026 08:29
Compact tool activity regressed into separate Activity rows and standalone Thinking blurbs when interim assistant text retired the current live activity group and Thinking rendered outside the disclosure.

Render Compact-mode Thinking inside the shared Activity body for live and settled turns, keep interim assistant text from splitting the current Activity group, and remove the now-unused stream-local activity-close path. This restores the intended single compact disclosure without adding new functionality.
…tale responses are rejected

The WebUI clarification popup had a response-delivery failure: users
submitted answers in the popup, but the agent still fell through to the
timeout fallback message.  Three bugs conspired:

1. No stable clarify_id — _ClarifyEntry had no unique identifier, so
   the frontend could not reference a specific pending prompt.  The
   backend used FIFO resolution which silently failed for stale/late
   responses.

2. Frontend hid the card before confirmation — respondClarify() called
   hideClarifyCard(true, 'sent') BEFORE the API call completed.  If the
   backend rejected the response, the card was already gone and the
   user's draft was discarded.

3. Backend lied about success — _resolve_clarify_legacy() returned
   bool(resolved) or not bool(clarify_id).  Since the frontend never
   sent clarify_id, the backend always reported ok:true even when
   nothing was resolved.

Changes:

api/clarify.py:
- _ClarifyEntry now auto-generates a stable clarify_id (uuid4.hex[:12])
- submit_pending() injects clarify_id into the data dict visible to the
  frontend via SSE and polling
- New resolve_clarify_by_id() for O(1) lookup by id instead of FIFO pop

api/routes.py:
- _resolve_clarify_legacy() uses resolve_clarify_by_id when clarify_id
  is provided; returns actual bool result (no more unconditional True)
- _handle_clarify_respond() returns HTTP 409 + {ok:false, stale:true}
  when resolution fails

static/messages.js:
- respondClarify() now sends clarify_id in the POST body
- Waits for a positive backend acknowledgement before hiding the card
- Saves a draft copy before POST and restores it on failure
- On 409/network error: re-enables controls, shows error toast
- Guards against parallel-SSE race where clearing the cache after a
  successful response could erase a newly queued next prompt (codex P1)

tests:
- Updated test_sprint30.py for new ack-before-hide behaviour
- Updated test_clarify_unblock.py for 409 on stale responses

Closes #2639.
@nesquena-hermes
nesquena-hermes merged commit f3b8d57 into master May 20, 2026
3 checks passed
@nesquena-hermes
nesquena-hermes deleted the release/stage-392 branch May 20, 2026 22:07
SysAdminDoc pushed a commit to SysAdminDoc/hermes-webui that referenced this pull request Jun 26, 2026
Release v0.51.99 (Release BW / stage-392 / 5-PR batch)
bernyforce pushed a commit to bernyforce/hermes-webui that referenced this pull request Jul 29, 2026
Release v0.51.99 (Release BW / stage-392 / 5-PR batch)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants