nesquena-hermes
ba0b4c367f
Merge pull request #2648 from nesquena/release/stage-390
...
Release v0.51.97 (Release BU / stage-390 / 3-PR batch)
2026-05-20 13:20:32 -07:00
nesquena-hermes
6301b0e87b
Stamp CHANGELOG for v0.51.97 (Release BU / stage-390 / 2-PR batch)
2026-05-20 20:16:50 +00:00
nesquena-hermes
1e3ca07575
Stage 390: PR #2634
...
# Conflicts:
# CHANGELOG.md
2026-05-20 20:16:30 +00:00
nesquena-hermes
495991c2db
Stage 390: PR #2642
2026-05-20 20:16:30 +00:00
nesquena-hermes
6c60925a54
Merge pull request #2644 from nesquena/release/stage-389
...
Release v0.51.96 (Release BT / stage-389 / 8-PR batch)
2026-05-20 11:25:15 -07:00
nesquena-hermes
7c2d56c920
Stage 389 follow-up: close TOCTOU race in pin-cap (Opus advisor #2614 )
2026-05-20 18:12:38 +00:00
nesquena-hermes
2b5a960df2
Stamp CHANGELOG for v0.51.96 (Release BT / stage-389 / 8-PR batch)
2026-05-20 16:43:15 +00:00
nesquena-hermes
360a57164a
Stage 389: PR #2627
...
# Conflicts:
# CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
dd36d09f89
Stage 389: PR #2626
...
# Conflicts:
# CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
3d34eef02d
Stage 389: PR #2620
2026-05-20 16:41:45 +00:00
nesquena-hermes
84f6bf5323
Stage 389: PR #2619
...
# Conflicts:
# CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
4d8e1ccc10
Stage 389: PR #2618
2026-05-20 16:41:44 +00:00
nesquena-hermes
eaff4d0b8e
Stage 389: PR #2614
...
# Conflicts:
# CHANGELOG.md
2026-05-20 16:41:44 +00:00
nesquena-hermes
3bcd81b79f
Stage 389: PR #2612
...
# Conflicts:
# CHANGELOG.md
2026-05-20 16:41:44 +00:00
nesquena-hermes
9c564ccc1b
Stage 389: PR #2610
2026-05-20 16:40:42 +00:00
Michael Lam
6eb5d939d7
test: allow custom provider settings filter
2026-05-20 09:33:51 -07:00
Dennis Soong
cec435a833
fix(session): rebuild missing startup index
2026-05-20 23:43:30 +08:00
Michael Lam
8ef8fae831
fix: show config-managed custom providers
2026-05-20 06:27:00 -07:00
Michael Lam
680d0cbc92
docs(runtime): define runner backend harness gate
2026-05-20 04:05:36 -07:00
Michael Lam
c3eafa34f8
fix: surface custom provider model endpoint errors
2026-05-20 03:12:33 -07:00
manji
ff0aa69d5f
fix(session): use second-level timestamp granularity in legacy dedup key
...
The _normalized_message_timestamp_for_key helper was preserving
microsecond precision (%.6f). When the same message is persisted by
both the WebUI sidecar JSON writer and the Hermes agent state.db
writer, their timestamps can differ by a few microseconds, causing
_session_message_merge_key to produce different keys for the same
logical message and letting both copies survive the dedup pass in
merge_session_messages_append_only.
Truncating to second-level granularity collapses sub-second drift to
the same key, so the duplicate is suppressed correctly.
Fixes #2616
2026-05-20 07:13:55 +00:00
Michael Lam
471b75d762
docs: move Hermes overview out of agent context root
2026-05-19 23:55:58 -07:00
Lumen Yang
b2c6af12f1
fix(webui): prefer sidecar counts over stale session index
2026-05-20 05:42:55 +00:00
Michael Lam
9ca846eb8f
feat: cap pinned sessions from sidebar
2026-05-19 20:50:26 -07:00
AJV20
8109bcb7e4
fix: honor configured title generation model
2026-05-19 22:35:11 -04:00
AJV20
f966e99231
fix: preserve IPv6 dashboard link brackets
2026-05-19 21:35:10 -04:00
nesquena-hermes
9c983e693a
Merge pull request #2608 from nesquena/release/stage-388
...
release: v0.51.95 (Release BS / stage-388 / 5-PR batch — live tool dedup + browser dashboard links + messaging dedup + Geist Contrast skin + SSE diagnostics)
2026-05-19 17:40:44 -07:00
nesquena-hermes
7eccff4fed
Stamp CHANGELOG for v0.51.95 (Release BS / stage-388 / 5-PR batch)
2026-05-20 00:37:35 +00:00
nesquena-hermes
fc5639db15
test: exempt skin-specific scoped overrides from session-title color assertion
...
PR #2521 (Geist Contrast skin) adds a scoped
`:root[data-skin="geist-contrast"] .session-item.active .session-title` rule
that legitimately uses its own palette values. The existing assertion in
test_sprint40_ui_polish.py matched on any line containing the
`.session-item.active .session-title` substring, picking up the skin-scoped
override and asserting against its palette.
Exclude lines containing `:root[data-skin=` from the base-rule scan so
skin-scoped overrides are free to use their own design tokens, while the
global rule still enforces var(--gold) / var(--accent-text).
2026-05-20 00:26:11 +00:00
nesquena-hermes
1a8c7b65c9
test: anchor picker-active-state assertions to global #mainSettings rule
...
PR #2521 (Geist Contrast skin) legitimately adds a scoped
`:root[data-skin="geist-contrast"] .theme-pick-btn.active` override that
appears earlier in style.css than the global `#mainSettings .theme-pick-btn.active`
rule. The naive substring search in tests/test_1059_settings_picker_active_state.py
found the skin-specific override first (which correctly uses --border2 for its
palette), failing the global assertion that wanted --accent.
Tighten both assertions to anchor on the `#mainSettings` selector prefix so
they always match the global rule regardless of how many skin-specific
overrides land in the file.
2026-05-20 00:23:01 +00:00
nesquena-hermes
b2c9bddadf
Stamp CHANGELOG for stage-388 (Release BS — 5-PR batch)
...
Unreleased section now reflects:
- PR #2598 live tool event dedup (AJV20)
- PR #2533 browser dashboard links (AJV20)
- PR #2607 messaging transcript dedup (AJV20)
- PR #2521 Geist Contrast skin (intellectronica)
- PR #2524 SSE runtime diagnostics endpoint (AJV20)
Removed merge markers and consolidated stray entries that leaked into the v0.51.94 release block.
2026-05-20 00:20:55 +00:00
nesquena-hermes
ed6ee3e067
Stage 388: PR #2607
...
# Conflicts:
# CHANGELOG.md
2026-05-20 00:17:48 +00:00
nesquena-hermes
a201401236
Stage 388: PR #2524
2026-05-20 00:17:48 +00:00
nesquena-hermes
bd819f5e68
Stage 388: PR #2533
2026-05-20 00:17:47 +00:00
nesquena-hermes
7c3dcce1d0
Stage 388: PR #2598
2026-05-20 00:17:47 +00:00
nesquena-hermes
a9e8ab221f
Stage 388: PR #2521
2026-05-20 00:17:47 +00:00
Eleanor Berger
86d43751ad
docs: include Geist Contrast in contracts index
2026-05-20 00:09:06 +00:00
Eleanor Berger
b05fe9843d
docs: avoid hard-coded skin count
2026-05-20 00:09:06 +00:00
Eleanor Berger
2e91c0f81e
fix: honour skin value in theme command
2026-05-20 00:09:06 +00:00
Eleanor Berger
4598adfd04
feat: add Geist Contrast skin
2026-05-20 00:09:06 +00:00
AJV20
cb0850208d
fix(session): dedupe messaging transcript timestamps
2026-05-19 19:17:43 -04:00
AJV20
54b6c38578
feat(health): expose WebUI stream runtime diagnostics
2026-05-19 22:48:10 +00:00
AJV20
f14138659f
test: Sanitize dashboard URL fixture
2026-05-19 22:47:55 +00:00
AJV20
739c948e74
fix(system): allow browser-only dashboard links
2026-05-19 22:47:55 +00:00
AJV20
612fcd30fe
fix: avoid duplicate live tool events
2026-05-19 18:41:08 -04:00
nesquena-hermes
c8896ac1b6
Merge pull request #2606 from nesquena/stage-387
...
Stage 387 / v0.51.94 — Release BR — 10-PR full sweep batch
2026-05-19 15:20:48 -07:00
nesquena-hermes
7ae97c551a
Stamp CHANGELOG for v0.51.94 (Release BR / stage-387 / 10-PR full sweep batch)
2026-05-19 22:11:44 +00:00
nesquena-hermes
6d43116794
Stage 387: PR #2573
2026-05-19 22:10:20 +00:00
nesquena-hermes
cc8ef201be
Stage 387: PR #2600
2026-05-19 22:10:20 +00:00
nesquena-hermes
93727897b6
Stage 387: PR #2605
...
# Conflicts:
# api/routes.py
2026-05-19 22:10:20 +00:00