Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf: HTTP/1.1 keep-alive + Aux Models card + PWA startup polish + runtime adapter harness) - #2866
Merged
Conversation
Enable HTTP/1.1 on the WebUI server so browsers can reuse TCP
connections across normal API/static requests. Tighten response framing
by adding Content-Length to short manual responses and marking
SSE/streaming responses as Connection: close, keeping HTTP/1.1 message
boundaries unambiguous.
Verified:
- python3 -m py_compile server.py api/auth.py api/routes.py api/kanban_bridge.py
- pytest tests/test_auth_*.py tests/test_*sse*.py tests/test_pr1350_*.py
tests/test_pr1355_sse_handler_no_deadlock.py tests/test_kanban_bridge.py
tests/test_logs_ui_static.py tests/test_onboarding_static.py
tests/test_regressions.py tests/test_1038_pwa_auth_redirect.py
tests/test_issue1623_sse_heartbeat_alignment.py
→ 239 passed, 1 skipped
Cherry-picked via 3-way apply of net delta against stage HEAD. All 8 files applied cleanly including the new static/pwa-startup.js. Co-authored-by: AJV20 <abdielvc@me.com>
- Add Turkish translations for 16 settings_aux_* / settings_label/desc_auxiliary_models keys that #2680 added against the 10-locale set (pre-#2772 Turkish baseline). - Bump test_auxiliary_models_settings.py::test_all_locales_have_auxiliary_keys from count == 11 to count == 12 (one per locale, now including tr).
…/ stage-batch11 / 4-PR feature + perf batch) Opus pre-release advisor MUST-FIX patched inline: - api/routes.py:7290-7308 _handle_folder_download: add Connection: close header before end_headers() to satisfy HTTP/1.1 framing on the on-the-fly ZIP stream. Without it, post-#2836 protocol_version bump leaves clients hanging waiting for the next pipelined response after central-directory bytes finish. Opus verified this is the ONLY streaming response #2836 missed — all other paths (j/t helpers, 12 hand-written responses, 8 SSE endpoints, auth flow) are already correctly framed.
SysAdminDoc
pushed a commit
to SysAdminDoc/hermes-webui
that referenced
this pull request
Jun 26, 2026
Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf: HTTP/1.1 keep-alive + Aux Models card + PWA startup polish + runtime adapter harness)
bernyforce
pushed a commit
to bernyforce/hermes-webui
that referenced
this pull request
Jul 29, 2026
Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf: HTTP/1.1 keep-alive + Aux Models card + PWA startup polish + runtime adapter harness)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf batch)
What's in this batch
Performance (HIGH-RISK, Opus-reviewed)
Handler.protocol_versiontoHTTP/1.1and properly frames all responses withContent-Length/Connection: close. Significant gains on high-RTT paths (~47% first paint, ~30-40% panel loads per author measurements). Includes Opus MUST-FIX patched inline:Connection: closeon the on-the-fly folder ZIP download endpoint (the only remaining streaming response missing the framing header).New features
feat: add Auxiliary Models settings card #2680 by @mccxj — Auxiliary Models settings card. 9 task slots (vision, web extract, compression, session search, approval, MCP, title generation, skills hub, curator), each with provider + model dropdowns and "auto" fallbacks. New
GET /api/model/auxiliary+POST /api/model/setendpoints. 16 i18n keys across all 12 locales (Turkish translations added in-stage to close sibling-collision with v0.51.127). Browser-verified at 1920×1080.feat: polish installed PWA startup #2842 by @AJV20 — Polished installed PWA startup. New
static/pwa-startup.jsloaded synchronously in<head>marks standalone/browser/iOS/offline classes before first paint, exposesHermesPWAnamespace with 4 helpers, captures install events early. Manifest gainsdisplay_override, app identity, "New conversation" shortcut. Service worker pre-caches the startup helper + switches navigation/shell asset fetches tocache: 'no-store'. Boot path handles?source=pwa&action=new-chat. Viewport meta setsmaximum-scale=1, user-scalable=nofor PWA-native feel (acknowledged WCAG 2.1 trade-off — Nathan-approved).feat(runtime): wire runner route selection harness #2794 by @Michaelyklam — Runtime adapter route selection harness. Continues RFC: Make WebUI a thin observability/control client over Hermes Agent runtime #1925 slice progression (slice 4e). Routes explicit adapter-mode chat starts through
build_runtime_adapter(...), keepslegacy-directas default. Returns bounded501 Not Configuredforrunner-localwithout a supervised runner client. Whitelist helper keeps adapter-internal fields out of public chat-start responses.Cherry-pick mechanics
static/index.html; resolved viagit apply --3wayof net delta — applied cleanlystatic/pwa-startup.jsVerification
<html>; HermesPWA namespace populatedConnection: close), 0 inline SHOULD-FIX, 1 follow-up suggestedFollow-up to file (post-tag)
set_auxiliary_modeltask validation: accepts arbitrarytaskstrings without validating againstAUX_TASK_SLOTSwhitelist. Auth-gated so low severity, but a buggy or hostile client could write arbitrary keys toconfig.yaml'sauxiliaryblock. 2-line guard fix.Closes
🤖 Generated and reviewed end-to-end by the agent pipeline (Phase 4 stage build via 3-way apply for 2 PRs + rebase for 2 PRs → agent self-verify → pytest gate → browser verification → Opus pre-release advisor with 1 MUST-FIX patched inline).