github nesquena/hermes-webui v0.51.8
v0.51.8 — 7-PR batch (Activity row, OAuth, scroll, profile context, CLI catalogs, sidebar hover)

5 hours ago

v0.51.8 — 7-PR full-sweep batch

Activity row, OAuth, scroll, profile context, CLI catalogs, sidebar hover

✨ Added

  • #1727 by @Michaelyklam — Link Claude Code OAuth in onboarding (closes #1362). Host-credential linking flow rather than a browser-exposed Anthropic token flow.

🐛 Fixed

  • #1725 by @Michaelyklam — Simplify compact Activity row summary. Drops the noisy tool-name list and trailing count badge; summary is now intentionally terse (Activity: N tools + duration).
  • #1726 by @Michaelyklam — Delegate generic provider catalogs to Hermes CLI (slice of #1240 source-of-truth umbrella). Four-tier resolution order: explicit models: allowlist → CLI live → static _PROVIDER_MODELS fallback → auto-detect.
  • #1728 by @starship-s — Preserve profile context when starting chats. Path/mtime-aware get_config() reload + chat-start placeholder retag.
  • #1729 by @Michaelyklam — Persist compact Activity disclosure state. localStorage['hermes-activity-disclosure:<sid>:<turn_key>'] per chat per turn.
  • #1730 by @Michaelyklam — Prevent sticky sidebar hover drag state. _pointerActive gate so plain hover doesn't enter .dragging.
  • #1732 by @Sanjays2402 (FIRST PR — welcome!) — Unpin scroll on small upward motion during streaming (closes #1731). Direction-aware fix that preserves the #1360 macOS WKWebView momentum protection on the re-pin path.

🛠 In-stage absorbed fixes

  • Test-isolation fix (mandatory): monkeypatch.setattr(config, 'cfg', X) survives PR #1728's path/mtime-aware get_config() reload. _cfg_has_in_memory_overrides() now also detects cfg is not _cfg_cache. 4 new regression tests pin both prongs.
  • Defense-in-depth: tests/test_sprint3.py::test_skills_list* skip on empty list (prong 2 of test-isolation-flake-recipe).
  • Wall-clock flake fix: tests/test_issue1144_session_time_sync.py::test_relative_time_uses_server_clock pins Date.now() to a fixed instant (was failing for ~5 minutes per day around 08:00 UTC).
  • Opus follow-up: _lastScrollTop reset on session switch (#1732 follow-up — Opus stage-302 SHOULD-FIX absorbed in-release).

🧪 Tests

4537 → 4584 passing (+47 regression tests). 0 regressions. Full suite ~128s. Stably green across multiple clean runs.

✅ Pre-release verification

  • All 7 PRs CI-green individually + rebased onto current origin/master before staging.
  • One mechanical sibling-collision resolved (#1725 + #1729 on ensureActivityGroup template).
  • All JS files syntax-clean (node -c).
  • Browser API sanity (11/11 endpoints) + 20 QA tests via webui_qa_agent.sh — all pass.
  • Opus advisor: SHIP, 5/5 verification clean, 0 MUST-FIX, 1 SHOULD-FIX absorbed, 1 SHOULD-FIX deferred to follow-up issue #1736 (_clear_anthropic_env_values env-var race, onboarding-time-only).

🙏 Closes

  • #1362 (Claude Code OAuth onboarding)
  • #1731 (scroll unpin during streaming)

Full Changelog: v0.51.7...v0.51.8

Don't miss a new hermes-webui release

NewReleases is sending notifications on new releases.