Skip to content

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
nesquena-hermes merged 10 commits into
masterfrom
release/stage-batch11
May 24, 2026
Merged

nesquena-hermes merged 10 commits into
masterfrom
release/stage-batch11

Conversation

@nesquena-hermes

Copy link
Copy Markdown
Collaborator

Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf batch)

What's in this batch

Performance (HIGH-RISK, Opus-reviewed)

  • perf(http): enable HTTP/1.1 keep-alive #2836 by @v2psv — HTTP/1.1 keep-alive. Bumps Handler.protocol_version to HTTP/1.1 and properly frames all responses with Content-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: close on 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/set endpoints. 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.js loaded synchronously in <head> marks standalone/browser/iOS/offline classes before first paint, exposes HermesPWA namespace with 4 helpers, captures install events early. Manifest gains display_override, app identity, "New conversation" shortcut. Service worker pre-caches the startup helper + switches navigation/shell asset fetches to cache: 'no-store'. Boot path handles ?source=pwa&action=new-chat. Viewport meta sets maximum-scale=1, user-scalable=no for 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(...), keeps legacy-direct as default. Returns bounded 501 Not Configured for runner-local without a supervised runner client. Whitelist helper keeps adapter-internal fields out of public chat-start responses.

Cherry-pick mechanics

Verification

  • ✅ Full pytest: 6,467 passed / 6 skipped / 3 xpassed / 8 subtests passed in 2m32s
  • ✅ Agent self-verify covered HTTP framing assertions, Auxiliary Models API surface, PWA helpers + manifest, Runtime adapter wiring + response whitelisting, i18n parity across 12 locales
  • ✅ Browser-verified at 1920×1080: Auxiliary Models card layout clean and consistent; PWA classes detected on <html>; HermesPWA namespace populated
  • ✅ Opus pre-release advisor reviewed all 7 risk areas: 1 MUST-FIX patched inline (folder ZIP Connection: close), 0 inline SHOULD-FIX, 1 follow-up suggested
  • ✅ JS syntax, Python syntax, JSON manifest all clean
  • ✅ Merge-marker grep clean

Follow-up to file (post-tag)

  • set_auxiliary_model task validation: accepts arbitrary task strings without validating against AUX_TASK_SLOTS whitelist. Auth-gated so low severity, but a buggy or hostile client could write arbitrary keys to config.yaml's auxiliary block. 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).

Michael Lam and others added 10 commits May 24, 2026 18:26
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 (rebase had failed on static/index.html
conflict when applied via rebase commit chain; 3-way of the net delta
against stage HEAD applied cleanly).

Co-authored-by: mccxj <mccxj@github.users.noreply.github.com>
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.
@nesquena-hermes
nesquena-hermes merged commit 3a98700 into master May 24, 2026
3 checks passed
@nesquena-hermes
nesquena-hermes deleted the release/stage-batch11 branch May 24, 2026 18:56
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)
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.

2 participants