Release CY — v0.51.127 (stage-batch9, 7-PR low-risk batch)
What's in this batch
Seven PRs landing as one low-risk release:
Brick-class fixes (every-user severity)
-
#2854 by @nesquena-hermes — Embedded terminal opens then immediately closes with
[terminal closed]on every Linux install (#2853).PR_SET_PDEATHSIGis per-thread, not per-process, andThreadingHTTPServerworker threads die after each request — so the PTY shell got SIGTERM'd within ~10ms of spawning. Fix: drop thepreexec_fnentirely. macOS users were unaffected (libc.prctl doesn't exist there). Closes #2853. -
#2855 by @nesquena-hermes — "Update Now" loops for every user past the latest agent tag (#2846). The check side correctly fell through to branch comparison post-#2758, but the apply side still returned
tags[0]—git pull --ff-only v2026.5.16no-op'd, server bounced, banner reappeared.apply_force_updatehad the same bug except worse (would havegit reset --hard'd backwards 254 commits). Fix: extract_head_is_past_latest_tagand have both check + apply paths consult it. Opus pre-release review caught a "case D" parameter-asymmetry drift and patched the apply-side predicate to mirror the check side exactly. Closes #2846.
Bug fixes
-
#2852 by @ai-ag2026 — Chat
stream_endnow settles from the persisted session whendonewasn't received, instead of leaving the active pane projecting liveThinking/ assistant DOM state indefinitely. Duplicatedoneevents are idempotent. Opus pre-release review added a post-await race guard inside_restoreSettledSessionfor the case where a latedonearrives during the settlement network roundtrip. -
#2811 by @Koraji95-coder — Native-Windows startup E2E CI workflow now self-tests on PR push, closing the post-#2783 gap where Windows-only regressions (WOW64 ProgramFiles redirect, etc.) could only be caught after release. Reworked per maintainer feedback to use a stub
hermes_cli/__init__.pyrather thanpip install hermes-agent(not on PyPI).
Visible UX change
- #2812 by @Koraji95-coder — Composer
max-widthis now responsive on wide displays:clamp(780px, 60vw, 1100px). The 780px floor preserves byte-identical layout at 1280px (Aron's laptop reference); 1440p gains ~84px; 1920p gains ~320px (composer chips stop squeezing). Mobile responsive logic untouched. Single CSS rule change. Telegram-approved at 1280/1440/1920/mobile viewports.
New features
-
#2772 by @vaur94 — Complete Turkish (
tr) locale (~1,182 keys + login page strings +tr-TRspeech recognition). Stage build absorbed sibling-PR i18n collision with #2776 by adding Turkish translations for 9 missing keys. Closes #2537 as superseded. -
#2776 by @roryford — New
PATCH /api/mcp/servers/{name}endpoint with enable/disable toggle UI. Also fixes a pre-existing bug:_handle_mcp_server_deleteand_handle_mcp_server_updatewere defined but never wired into the HTTP router. DELETE wired intohandle_delete, PUT wired via newhandle_put/do_PUT. CORS allow-methods updated to includePUT(Opus pre-release nit). 5 i18n keys added to all 11 locales. 7 new tests.
In-stage fixes (agent-applied during build)
- i18n parity — 9 Turkish translations added for the sibling-PR collision between #2772 (Turkish baseline) and #2776 (new MCP keys) + already-shipped en-only additions (
open_in_vscode,settings_*_ignore_agent_updates). - Brittle locale-counter test bump —
test_2735_open_in_vscode.pyexpected exactly 10 entries; Turkish locale brought it to 11. - Opus pre-release fixes — 1 MUST-FIX (committing the test-counter bump) + 3 SHOULD-FIX (case-D drift in
_select_apply_compare_ref,_restoreSettledSessionpost-await race guard, CORS allow-methods PUT). Net +69/-9 across 5 files.
Verification
- ✅ Full pytest: 6,424 passed / 6 skipped / 3 xpassed / 8 subtests passed in 2m34s on stage HEAD
- ✅ JS syntax:
node -cclean on all touched files - ✅ Python syntax:
ast.parseclean on all touched files - ✅ Merge-marker grep: clean
- ✅ CHANGELOG conflict resolution: in-rebase
--oursauto-resolver for sibling-PR CHANGELOG collisions - ✅ Vision-verified UX evidence for #2812 at 4 viewports (1280/1440/1920/mobile via agent-browser CDP)
- ✅ Telegram-approved by maintainer (msg IDs 2845-2848)
- ✅ Opus pre-release advisor reviewed all 5 risk areas — all addressed inline
Follow-up issues to file
- pdeathsig-on-supervisor-thread hardening (#2854 Option B — non-trivial design, not blocking ship)
- French locale
open_in_vscodeparity gap (predates this batch; Opus advisor flagged during review)
Closes
- #2853 (Linux terminal close — brick-class)
- #2846 (Update Now loop — brick-class)
- #2537 (superseded Turkish locale)
🤖 Generated and reviewed end-to-end by the agent pipeline (Phase 0 fit-screen → stage build → pytest gate → Opus pre-release advisor → UX evidence → Telegram approval).
What's Changed
- Release CY — v0.51.127 (stage-batch9, 7-PR low-risk batch: brick-class Linux + brick-class update + composer wide-screen + Turkish + MCP toggle + SSE + Windows CI) by @nesquena-hermes in #2860
Full Changelog: v0.51.126...v0.51.127