Commit Graph

3214 Commits

Author SHA1 Message Date
ai-ag2026 eb8ecb2e61 docs: clarify Docker localhost and sudo compose setup 2026-05-28 08:39:59 +02:00
nesquena-hermes 5528e2c579 Merge pull request #3041 from nesquena/release/stage-batch34
stage-batch34: v0.51.152 / Release DX — optional gateway-backed browser chat
v0.51.152
2026-05-27 20:40:43 -07:00
nesquena-hermes bd7576b303 stage-batch34: stamp v0.51.152 / Release DX
Single-PR optional gateway-backed browser chat (#3021)
2026-05-28 03:27:25 +00:00
AJV20 83cc12b0bf feat: add optional gateway-backed WebUI chat (#3021)
Squash-merged pr-3021 into stage-batch34. Default-off bridge to Hermes Gateway API server via HERMES_WEBUI_CHAT_BACKEND=gateway.
2026-05-28 03:27:07 +00:00
nesquena-hermes 4d6269eae6 Merge pull request #3038 from nesquena/release/stage-batch33
stage-batch33: v0.51.151 / Release DW — SSE reattach + title-lang + composer cap
v0.51.151
2026-05-27 20:10:49 -07:00
nesquena-hermes 7cbc5c1d89 test(stage-batch33): scope test_issue2540 urlopen recorder to broken.example
Pre-existing failure on master: the test assumed only the broken-proxy /v1/models call would route through fake_urlopen, but get_available_models() also probes the Copilot internal v2 token endpoint (10.0s timeout) and OpenRouter free-tier discovery (8.0s), which now pollute the recorded timeout list.

Fix narrows the recorder to the broken-proxy endpoint only. The contract being pinned (broken-proxy probe uses CUSTOM_MODELS_ENDPOINT_TIMEOUT_SECONDS, not the urllib default 10) is unchanged.

Caught by stage-batch33 sequential pytest gate.
2026-05-28 02:57:04 +00:00
nesquena-hermes 6ea2363d02 stage-batch33: stamp v0.51.151 / Release DW
3-PR mid-risk batch: SSE reattach + title-lang + composer cap (#2925, #2984, #2946)
2026-05-28 02:49:14 +00:00
Florian Krause 8408a3dd22 fix: reattach SSE on session-switch return + close leaked stream connections (#2925)
Squash-merged pr-2925 into stage-batch33. Closes #2924.
2026-05-28 02:48:17 +00:00
ai-ag2026 ad564f2cde fix: keep generated titles in conversation language (#2984)
Squash-merged pr-2984 into stage-batch33.
2026-05-28 02:47:40 +00:00
Dustin afc8aea4b4 ux(composer): cap composer-box max-width at 1600px on ultrawide viewports (#2946)
Squash-merged pr-2946 into stage-batch33.
2026-05-28 02:47:30 +00:00
nesquena-hermes 5bc3cdb3dd Merge pull request #3036 from nesquena/release/stage-batch32
stage-batch32: v0.51.150 / Release DV — single-PR reasoning-effort agent metadata
v0.51.150
2026-05-27 19:23:36 -07:00
nesquena-hermes b8e4dfe57d stage-batch32: stamp v0.51.150 / Release DV 2026-05-28 02:19:47 +00:00
nesquena-hermes 424a55036f Merge pull request #3017 2026-05-28 02:16:34 +00:00
nesquena-hermes 1082a4108f Merge pull request #3034 from nesquena/release/stage-batch31
stage-batch31: v0.51.149 / Release DU — hyphenated session ids + prefill role consistency
v0.51.149
2026-05-27 19:15:24 -07:00
nesquena-hermes 63a60cd39e stage-batch31: stamp v0.51.149 / Release DU 2026-05-28 02:12:06 +00:00
nesquena-hermes c1942a1cd8 fix(sessions): widen #3023 to all 5 session-id validators via shared is_safe_session_id helper
PR #3023 only updated Session.load() and Session.load_metadata_only(), leaving
three sibling validators (Session-internal _repair_stale_pending and the
/api/session/worktree/remove + /api/session/delete route handlers) still
gated on the old lowercase-only character set.  That would have shipped a
confusing UX where api-* and reachy-voice-* sessions could be loaded into
the sidebar but rejected with HTTP 400 on delete or worktree removal.

This commit factors the validation into a single is_safe_session_id helper
in api.models and updates all five call sites to use it.  Adds regression
coverage in tests/test_issue3023_safe_session_id_validators.py for both
the helper itself and a repo-wide guarantee that no narrow lowercase-only
magic string survives.

Closes the follow-up flagged by the parallel reviewer agent on #3023.
2026-05-28 02:09:05 +00:00
nesquena-hermes d76e23a9f2 Merge pull request #3009
# Conflicts:
#	CHANGELOG.md
2026-05-28 02:06:21 +00:00
nesquena-hermes 3cb2bd08fb Merge pull request #3023 2026-05-28 01:58:34 +00:00
nesquena-hermes 1d1daeb6c1 Merge pull request #3033 from nesquena/release/stage-batch30
stage-batch30: v0.51.148 / Release DT — single-PR Insights skill-usage reader
v0.51.148
2026-05-27 18:50:31 -07:00
nesquena-hermes 0657f9b2cc stage-batch30: stamp v0.51.148 / Release DT 2026-05-28 01:46:32 +00:00
nesquena-hermes 7006bb5c7a Merge pull request #3008 2026-05-28 01:43:22 +00:00
nesquena-hermes d9766d9e56 Merge pull request #3032 from nesquena/release/stage-batch29
stage-batch29: v0.51.147 / Release DS — single-PR streaming ownership-cleanup follow-up
v0.51.147
2026-05-27 18:41:31 -07:00
nesquena-hermes 6228ceb5ac stage-batch29: stamp v0.51.147 / Release DS 2026-05-28 01:38:21 +00:00
AJV20 25f8e100ec Merge origin/master into prefill context fix 2026-05-27 21:30:22 -04:00
nesquena-hermes 0614ca63d8 Merge pull request #3010 2026-05-28 01:24:17 +00:00
nesquena-hermes 5edc7d15ae Merge pull request #3031 from nesquena/release/stage-batch28
stage-batch28: v0.51.146 / Release DR — 6-PR low-risk safety+contrast batch
v0.51.146
2026-05-27 18:20:51 -07:00
nesquena-hermes 8d0f1beff3 stage-batch28: stamp v0.51.146 / Release DR 2026-05-28 01:17:07 +00:00
nesquena-hermes 64c83e4932 Merge pull request #3029 2026-05-28 01:02:58 +00:00
nesquena-hermes d75bbfc90d Merge pull request #3028 2026-05-28 01:02:58 +00:00
nesquena-hermes 3560f37c8d Merge pull request #3027 2026-05-28 01:02:58 +00:00
nesquena-hermes 0c492e4eb1 Merge pull request #3003 2026-05-28 01:02:58 +00:00
nesquena-hermes 43cdd7cc37 Merge pull request #3025
# Conflicts:
#	CHANGELOG.md
2026-05-28 01:02:57 +00:00
nesquena-hermes 0db506f3f9 Merge pull request #3022 2026-05-28 01:02:33 +00:00
ai-ag2026 0af58f2b82 feat: add session discoverability audit 2026-05-28 00:51:32 +02:00
ai-ag2026 9650b387fd fix: keep webui mirrored sessions out of cli filter 2026-05-28 00:51:12 +02:00
ai-ag2026 38905f335c fix: preserve messageful sidebar discoverability 2026-05-27 23:42:24 +02:00
AJV20 fb6dd28ac3 fix: cap custom models endpoint probes 2026-05-27 12:19:42 -04:00
ai-ag2026 3b93345487 fix(sessions): allow hyphenated session ids 2026-05-27 16:18:41 +02:00
sunilkumarvalmiki b14ef7735f Fix workspace save icon contrast 2026-05-27 19:17:46 +05:30
BonyFish dc1e369f89 fix: remove webui-side writer to avoid conflict with agent
The .usage.json file is owned by hermes-agent (tools/skill_usage.py).
This change removes the webui-side increment logic to avoid:

1. File ownership conflict - both writing to same file
2. Schema mismatch - agent uses ISO strings, webui used floats
3. Concurrency issues - agent uses fcntl locks, webui had no locking
4. Double-counting - agent already increments counters server-side

Changes:
- api/skill_usage.py: keep only read_skill_usage(), remove increment functions
- api/streaming.py: remove skill usage counter hook
- api/routes.py: adapt response to pass through agent's format as-is,
  with defensive coercion for None values and metadata preservation
- tests/test_skill_usage.py: remove increment tests (17→7 cases)
2026-05-27 20:57:32 +08:00
Hermes Agent 74fe79ddc6 fix(reasoning): use agent metadata for effort support 2026-05-27 03:54:45 -06:00
ai-ag2026 ffd9f337b1 fix(chat): scope settled stream cleanup to source 2026-05-27 09:10:43 +02:00
AJV20 2a96b2acc2 fix: wrap WebUI script prefill text as user context 2026-05-27 03:09:01 -04:00
BonyFish 9141a55ae0 fix test error 2026-05-27 15:05:47 +08:00
BonyFish 3a676b704a feat: add skill usage counter to insights page
- Add api/skill_usage.py for .usage.json read/write with atomic updates
- Track skill_view (view_count), skill_manage (use_count), skill_patch
  (patch_count) invocations per SSE stream completion
- Add GET /api/skills/usage endpoint returning per-skill usage stats
- Render Skill Usage card in Insights panel after LLM Wiki card
- Add i18n keys for en, zh, zh-Hant, ja, it locales
- Add 17 tests covering read/increment logic, API route, and streaming hook
2026-05-27 14:44:28 +08:00
nesquena-hermes 329debcd33 Merge pull request #3004 from nesquena/release/stage-batch27
Release DQ — stage-batch27 — sidebar running-state preservation (v0.51.145)
v0.51.145
2026-05-26 22:13:57 -07:00
nesquena-hermes cc96acd7da stage-batch27: stamp v0.51.145 / Release DQ 2026-05-27 05:08:46 +00:00
george-andraws 541c064a72 fix(session): route messaging metadata loads through display merge
Use _merged_session_messages_for_display for is_messaging_session even in the
metadata-only (messages=0) path. This ensures message_count and last_message_at
match the full load path for Telegram / external messaging sessions that have
stitched or duplicate rows in state.db + sidecar.

Prevents spurious refresh loops, scroll resets, and open panel closures when
resuming cross-surface sessions in the WebUI.

No impact on CLI, non-messaging, or full-message paths. All 580 session tests pass.

Fixes the root cause identified in the SessionDB / render interaction changes.
2026-05-26 22:05:58 -07:00
nesquena-hermes 716a93a77d Merge pull request #3001
# Conflicts:
#	CHANGELOG.md
2026-05-27 04:56:49 +00:00
nesquena-hermes 3f22e54700 Merge pull request #3002 from nesquena/release/stage-batch26
Release DP — stage-batch26 — terminal supervisor hardening (v0.51.144)
v0.51.144
2026-05-26 21:54:43 -07:00