ai-ag2026
09d2f4be2f
fix: exclude hidden snapshots from pin quota
2026-05-30 11:48:57 +02:00
AJV20
5cb82f9da4
fix: make SSE replay cursors run-aware
2026-05-30 04:09:20 +00:00
AJV20
fbc0742621
fix: ignore release tags already contained by head
2026-05-30 03:37:12 +00:00
AJV20
7efb4c5acb
fix: scope skill toggles to active profile
2026-05-30 03:36:09 +00:00
nesquena-hermes
c2663f827a
Merge PR #3152 (keep agent cron sessions in project chips, #3134 ) into stage-batch48
...
# Conflicts:
# CHANGELOG.md
2026-05-30 02:19:28 +00:00
AJV20
e68c670bba
fix: keep agent cron sessions in project chips
2026-05-30 02:18:51 +00:00
AJV20
d2686eaedb
fix: honor shared OpenCode key at runtime
2026-05-30 02:18:06 +00:00
Sanjays2402
ab4de3bb64
Fix #3103 : stop emitting Connection: close on long-lived SSE streams
...
The gateway SSE handler (`_handle_gateway_sse_stream`) and session-events
SSE handler (`_handle_session_events_stream`) both set
`Connection: close` on the response. On long-lived SSE streams, browsers
(Chrome, Firefox, Safari) interpret that header as 'this is a one-shot
response, the EventSource lifecycle is over the moment the body ends'
and trigger an immediate reconnect when the server-side worker rotates.
The result, with EventSource's auto-reconnect on top, is a tight loop of
connect -> sessions_changed snapshot -> reconnect every ~1s that pegs
the worker, thrashes the session list, and prevents the in-app session
list from ever settling.
Removing the header lets the python BaseHTTPServer close the socket
naturally after the stream ends, which is what EventSource expects.
Regression introduced in 598fd4ff .
2026-05-30 02:02:40 +00:00
nesquena-hermes
694fdd1096
review-3105: bound _wait_until_restart_safe with 300s max-wait + execv fallback (Opus review — avoid self-update soft-jam on long runs)
2026-05-30 01:53:38 +00:00
AJV20
b53bc1a2ea
fix: harden webui passive performance paths
2026-05-30 01:39:54 +00:00
AlexeyDsov
da9211bf43
fix(session): copy all critical fields on duplicate and branch to prevent state loss
2026-05-30 01:19:50 +00:00
nesquena-hermes
bd0e915a5d
Merge PR #3142 (session-index metadata refresh perf) into stage-batch42
2026-05-29 23:48:29 +00:00
nesquena-hermes
8933fe9dbe
Merge PR #3112 (skills disabled read-path) into stage-batch42
2026-05-29 23:48:24 +00:00
nesquena-hermes
23f5ee15f7
review-3142: align load_metadata_only comment with sidecar-first logic
2026-05-29 23:46:51 +00:00
zapabob
1f51ef14d0
fix: detect shared OpenCode API key
2026-05-29 23:22:15 +00:00
Harlan Zhou
39f09a5b7a
fix: read skills disabled state from active profile
2026-05-29 23:21:48 +00:00
ai-ag2026
017179b189
fix: speed up session index metadata refresh
2026-05-29 23:21:48 +00:00
nesquena-hermes
11ba36beb9
Merge PR #3135 into stage-batch41
...
# Conflicts:
# CHANGELOG.md
# api/routes.py
2026-05-29 22:15:46 +00:00
nesquena-hermes
5c96764e3d
Merge PR #3099 into stage-batch41
...
# Conflicts:
# CHANGELOG.md
2026-05-29 22:13:08 +00:00
nesquena-hermes
9ca0bdccc8
Merge PR #3098 into stage-batch41
...
# Conflicts:
# CHANGELOG.md
2026-05-29 22:12:43 +00:00
nesquena-hermes
3206aec3f3
Merge PR #3138 into stage-batch40
...
# Conflicts:
# CHANGELOG.md
2026-05-29 22:01:06 +00:00
AJV20
3c2f98eb23
fix: polish WebUI assistant replies
2026-05-29 13:01:14 -04:00
AJV20
ce82ea3fdf
fix: add joplin search auth compatibility
2026-05-29 12:36:27 -04:00
AJV20
35f89c4e5b
fix: harden external notes guardrails
2026-05-29 12:30:04 -04:00
ai-ag2026
53f16c4ee6
fix: log WebUI shutdown diagnostics
2026-05-28 23:22:31 +02:00
AJV20
d8a48ee5f8
Merge remote-tracking branch 'origin/master' into fix/webui-gateway-tool-activity
...
# Conflicts:
# CHANGELOG.md
# tests/test_webui_gateway_chat_backend.py
2026-05-28 16:11:34 -04:00
AJV20
b76a6dfedb
fix: forward gateway tool activity to webui
2026-05-28 16:03:16 -04:00
nesquena-hermes
c1a7668bdf
Merge PR #3091
2026-05-28 19:51:29 +00:00
nesquena-hermes
6719f35930
Merge PR #3094
...
# Conflicts:
# CHANGELOG.md
# api/streaming.py
2026-05-28 19:51:29 +00:00
nesquena-hermes
20f8bc3290
Merge PR #3090
...
# Conflicts:
# CHANGELOG.md
2026-05-28 19:50:10 +00:00
nesquena-hermes
1a6409764a
Merge PR #3093
...
# Conflicts:
# CHANGELOG.md
2026-05-28 19:49:34 +00:00
nesquena-hermes
22db5bbe67
Merge PR #3092
...
# Conflicts:
# CHANGELOG.md
2026-05-28 19:48:56 +00:00
Hermes Agent
b92204a7b7
fix(sidebar): keep newer continuation visible over older snapshot
2026-05-28 13:38:06 -06:00
AJV20
d539d5c079
fix: budget webui prefill context
2026-05-28 15:26:35 -04:00
theseussss
b554fd8078
fix(reasoning): 推理强度补齐 max 档,与 hermes_constants 对齐
...
WebUI 镜像的 VALID_REASONING_EFFORTS 此前止于 xhigh,漏了底层
hermes_constants 已有的 max 档。补齐后端常量、前端命令/下拉/帮助文本,
并同步快照测试。支持 max thinking 的 provider(如 Anthropic)现可在
composer 下拉和 /reasoning 命令中选到 Max。
2026-05-29 03:05:02 +08:00
AJV20
d5b36267f7
Merge remote-tracking branch 'origin/master' into fix/selective-durable-writeback
...
# Conflicts:
# CHANGELOG.md
2026-05-28 14:59:12 -04:00
AJV20
c494e41220
Merge remote-tracking branch 'origin/master' into fix/webui-gateway-context-prefill
...
# Conflicts:
# CHANGELOG.md
2026-05-28 14:52:15 -04:00
AJV20
2cb3c9f10b
Merge remote-tracking branch 'origin/master' into HEAD
...
# Conflicts:
# CHANGELOG.md
# tests/test_workspace_git.py
2026-05-28 14:50:33 -04:00
AJV20
00f4b11227
fix: limit webui durable memory guidance
2026-05-28 14:48:30 -04:00
AJV20
609a0c887b
fix: carry WebUI context through gateway chat
2026-05-28 14:33:32 -04:00
nesquena-hermes
ad9b38c945
Merge PR #3086
...
# Conflicts:
# CHANGELOG.md
2026-05-28 18:27:03 +00:00
nesquena-hermes
88bdc99a49
Merge PR #3085
...
# Conflicts:
# CHANGELOG.md
2026-05-28 18:27:03 +00:00
nesquena-hermes
0a2dabc730
stage-batch36: tighten #3064 MEDIA: token gate to non-user-role messages
...
Per Opus advisor on stage-batch36: skip role='user' messages in
_session_media_token_allows_image_path so a user-injected MEDIA: token
cannot mint an allow-list entry for the user's own request. Preserves
the original use case (assistant/tool emitted artifacts outside the
active workspace) while making the implicit threat model explicit.
Defense-in-depth — the single-user WebUI scope means same-origin user
input already had the same effective access, but multi-user / shared
WebUI deployments would benefit from the restriction.
2026-05-28 18:20:25 +00:00
ai-ag2026
07aed6b7ff
fix(session): preserve subsecond message timestamp order
2026-05-28 19:58:18 +02:00
ai-ag2026
1cd58f6f5a
fix(session): preserve sidecar order in display merges
2026-05-28 19:58:17 +02:00
AJV20
cf6e3111c4
Merge remote-tracking branch 'origin/master' into fix/webui-bugfix-sweep
...
# Conflicts:
# CHANGELOG.md
2026-05-28 13:56:00 -04:00
nesquena-hermes
a3fc305aeb
Merge PR #3077
...
# Conflicts:
# CHANGELOG.md
# tests/test_webui_gateway_chat_backend.py
2026-05-28 17:47:56 +00:00
nesquena-hermes
1c89c7d327
Merge PR #3064
...
# Conflicts:
# CHANGELOG.md
2026-05-28 17:47:35 +00:00
nesquena-hermes
4412aea9e8
Merge PR #3059
...
# Conflicts:
# CHANGELOG.md
2026-05-28 17:47:34 +00:00
nesquena-hermes
921b94a287
Merge PR #3046
...
# Conflicts:
# CHANGELOG.md
2026-05-28 17:47:34 +00:00