Release DA — v0.51.129 (stage-batch11, 4-PR feature + perf batch)
What's in this batch
Performance (HIGH-RISK, Opus-reviewed)
- #2836 by @v2psv — HTTP/1.1 keep-alive. Bumps
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
-
#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. -
#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). -
#2794 by @Michaelyklam — Runtime adapter route selection harness. Continues #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
- #2794 + #2836: clean rebase against current master
- #2680: rebase failed on
static/index.html; resolved viagit apply --3wayof net delta — applied cleanly - #2842: same pattern, applied cleanly including new
static/pwa-startup.js
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_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
- #2853 (already closed by v0.51.127, just confirming dead-line)
- (auxiliary feature does not auto-close any issue; #2680 is a feature addition)
🤖 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).
What's Changed
- 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) by @nesquena-hermes in #2866
Full Changelog: v0.51.128...v0.51.129