v0.51.14 — 4-PR contributor batch
🐛 Fixed
- #1760 by @ai-ag2026 — Preserve pending user turn on stream errors. Closes #1361. Reconciliation in
api/streaming.py: user turn is appended (with timestamp + attachments) BEFORE runtime state is cleared onapperror/outer-Exception paths. Includes dedup against eager-checkpointed messages. - #1761 by @dso2ng — Scope terminal stream cleanup to owner session (refs #1694). Centralizes owner-only cleanup behind helpers in
static/messages.js. Auto-fix at stage: restored!INFLIGHT[S.session.session_id]permissive-fallback disjunct from PR #1753. Co-authored-by attribution added. - #1756 by @ng-technology-llc — Isolate profile cookie per webui instance via
WEBUI_PROFILE_COOKIE_NAMEenv var. Closes #803. Default cookie name unchanged for backwards compat. - #1757 by @skspade — Tri-state gateway status. Replaces
bool(identity_map)running signal withagent_health.build_agent_health_payload(). Frontend distinguishes green/amber/red states.
🧪 Tests
4642 → 4662 collected (+20 across 4 new test files). 4649 passed, 0 failed.
✅ Pre-release verification
- All 4 PRs CI-green individually or rebased clean.
- Auto-fix on #1761 verified by 9-test pass before merge.
- All JS files syntax-clean.
- Browser API sanity (11/11 endpoints) — all pass.
- Opus advisor: SHIP all 4, 0 MUST-FIX, 0 SHOULD-FIX. Two NICE-TO-HAVE coverage gaps absorbed in-release as ~30 LOC of defensive structural-grep regression tests.
🙏 Closes
- #803 (cookie isolation)
- #1361 (cancel data loss)
- #1694 (terminal cleanup ownership — narrow slice; broader umbrella stays open for follow-up)
Full Changelog: v0.51.13...v0.51.14