Skip to content

Release CW: stage-batch7 — 10-PR low-risk batch (v0.51.125) — UI polish + bug fixes + diagnostics#2849

Merged
nesquena-hermes merged 11 commits into
masterfrom
release/stage-batch7
May 24, 2026
Merged

Release CW: stage-batch7 — 10-PR low-risk batch (v0.51.125) — UI polish + bug fixes + diagnostics#2849
nesquena-hermes merged 11 commits into
masterfrom
release/stage-batch7

Conversation

@nesquena-hermes
Copy link
Copy Markdown
Collaborator

Release CW — v0.51.125 — stage-batch7 — 10-PR low-risk batch

Big batch from the May 24 sweep. 10 contributor PRs, all well-tested, all pre-cleared by Opus advisor as SHIP. Mix of UI/UX polish, bug fixes, diagnostics improvements, and a duplicate-PR resolution.

Cherry-picks

2e876ea2 fix: kanban worker log URL double query param (#2839)
618e1a5d fix(server): tolerate malformed request logging (#2832)
32df5546 fix(webui): prevent approval and clarify cards stealing focus (#2818)
9a5973a6 feat: echo clarify user choice as visible message (#2820)
7a3ceacf fix(composer): stop chip wraps from compressing past content (#2826, closes #2740)
b6f7412b Add option to ignore Agent updates (#2843)
67a20477 fix(csrf): clarify rejection diagnostics (#2837)
f1586daa fix(cron): surface gateway scheduling guidance (#2838)
99c886c1 fix(workspace): open rendered preview links correctly (#2834)
70402f96 fix(workspace): fall back for large markdown previews (#2829, supersedes #2828)
ded51675 Stamp CHANGELOG for v0.51.125
PR Author LOC Surface Risk
#2839 tn801534 +1/-2 static/panels.js kanban URL very low
#2832 franksong2702 +6/-2 server.py log_request very low
#2818 humayunak +6/-2 static/messages.js focus guard very low
#2820 tangerine-fan +10/-0 static/messages.js clarify echo very low
#2826 Koraji95-coder +16/-5 static/style.css chip wraps (squashed 2 commits) low
#2843 AJV20 +103/-6 Settings: ignore agent updates low
#2837 franksong2702 +109/-1 api/routes.py CSRF diagnostics low
#2838 franksong2702 +85/-2 Tasks panel gateway warning + docs low
#2834 franksong2702 +136/-4 workspace preview links low
#2829 franksong2702 +103/-1 workspace large MD fallback low

Supersedes

#2828 by Raven7979 — same scope as #2829 (large markdown preview fallback). Picking #2829 because: named constants with semantic names, helpers extracted, status message includes size+lines, dedicated test file with 5 cases. Will close #2828 as superseded.

Conflict resolution

10 PRs across api/routes.py + 3 static JS files + style.css. The only real merge conflict was #2826 (PR has 2 commits, the 2nd was a Copilot review fixup that assumed the 1st was applied) — used git merge --squash to apply both as one commit. Everything else was clean cherry-pick with only CHANGELOG conflicts (resolved by keeping ours).

Pre-Opus gate

Check Result
Python ast.parse + node -c on all touched PASS
Merge-marker grep clean
13 PR-specific tests + 54 mobile layout tests + 115 batch_fixes/sprint20b/streaming_markdown all pass in isolation
String-assertion risks (chip-wrap rules in test_mobile_layout) verified — mobile rules unchanged
Full pytest 6348 passed, 7 skipped, 0 failed (up 15 from 6333)

Opus advisor verdict

Overall: SHIP all 10 — stage-batch7 / v0.51.125 is release-ready. All four risk areas verified-safe under inspection; no HOLD-class issues.

What's NOT in this batch

Still queued for review:

tn801534 and others added 11 commits May 24, 2026 15:52
…mposer textarea

When tool approval or clarification cards appear during streaming,
they unconditionally call focus() on their input elements via setTimeout,
stealing focus from the composer (#msg) if the user is actively typing.
This silently drops keystrokes mid-type.

Add a guard: only move focus to the card if the composer textarea does
not already have focus. The document.activeElement check matches the
pattern already used upstream in other focus-sensitive components.

Fixes: #
After the user responds to a clarify prompt, insert a synthetic user
message into the conversation showing their choice. This makes the
clarify interaction visible in the chat history, which was previously
only shown in the transient clarify dialog card.

The message is marked with _clarify_response: true so downstream
consumers can distinguish it from regular user messages if needed.
…2740)

Squashed from 2 author commits:
- a1017d0 initial fix: flex:0 0 auto on all 5 chip wraps
- bf54ba5 Copilot review fix-up: consolidate into single rule

Closes #2740. CSS-only, no JS changes. Default-width layout unchanged,
only affects narrow-viewport overflow regime via composer-left's existing
overflow-x:auto.
…risk batch)

Cherry-picked PRs:
- #2839 (tn801534) — kanban worker log URL double query param fix
- #2832 (franksong2702) — tolerate malformed request logging
- #2818 (humayunak) — prevent focus theft by approval/clarify cards
- #2820 (tangerine-fan) — echo clarify user choice as visible message
- #2826 (Koraji95-coder) — chip wrap overlap fix at narrow widths (closes #2740)
- #2843 (AJV20) — Settings option to ignore Agent updates
- #2837 (franksong2702) — clarify CSRF rejection diagnostics
- #2838 (franksong2702) — surface gateway scheduling guidance in Tasks panel
- #2834 (franksong2702) — render mailto:/tel: links + sandbox HTML preview links
- #2829 (franksong2702) — large markdown preview falls back to plain text (closes #2823, supersedes #2828)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants