Commit Graph

1318 Commits

Author SHA1 Message Date
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