ai-ag2026
9932899b88
fix: guard session cache ownership across compression
2026-05-30 18:19:31 +02:00
ai-ag2026
09d2f4be2f
fix: exclude hidden snapshots from pin quota
2026-05-30 11:48:57 +02:00
ai-ag2026
b3483d943c
fix: close evicted agents from WebUI cache
2026-05-30 10:43:13 +02:00
nesquena-hermes
11ba36beb9
Merge PR #3135 into stage-batch41
...
# Conflicts:
# CHANGELOG.md
# api/routes.py
2026-05-29 22:15:46 +00:00
AJV20
3c2f98eb23
fix: polish WebUI assistant replies
2026-05-29 13:01:14 -04:00
AJV20
35f89c4e5b
fix: harden external notes guardrails
2026-05-29 12:30:04 -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
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
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
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
ai-ag2026
07aed6b7ff
fix(session): preserve subsecond message timestamp order
2026-05-28 19:58:18 +02: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
nesquena-hermes
d446a6c304
Merge PR #3049
...
# Conflicts:
# CHANGELOG.md
2026-05-28 16:10:49 +00:00
nesquena-hermes
0fd12b2365
Merge PR #3056
...
# Conflicts:
# CHANGELOG.md
2026-05-28 16:10:12 +00:00
Frank Song
9190ab4449
Fix empty partial activity tail recency
2026-05-28 15:30:49 +08:00
ai-ag2026
62efbfb13f
fix: use generic title language prompt
2026-05-28 09:14:46 +02:00
ai-ag2026
b046cb42c3
fix: remove German-only fallback title override
2026-05-28 09:09:59 +02:00
ai-ag2026
2aeebf56ac
fix: tighten title language detection
2026-05-28 08:21:58 +02:00
ai-ag2026
5f42e87aa9
fix: skip stale repair for compression parents
2026-05-28 08:02:24 +02: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
AJV20
2a96b2acc2
fix: wrap WebUI script prefill text as user context
2026-05-27 03:09:01 -04:00
nesquena-hermes
7f66f72514
Merge pull request #2993
...
# Conflicts:
# CHANGELOG.md
2026-05-27 03:25:04 +00:00
Frank Song
3a9948d6cf
Fix streaming SessionDB profile path
2026-05-27 10:29:31 +08:00
george-andraws
f1b04be8f7
Fix WebUI fallback provider chain merging
2026-05-26 17:51:49 -07:00
nesquena-hermes
aa6cd48318
Merge pull request #2888
...
# Conflicts:
# CHANGELOG.md
# tests/test_webui_prefill_context.py
2026-05-27 00:38:24 +00:00
nesquena-hermes
c2fc390723
Merge pull request #2915
2026-05-25 17:46:56 +00:00
nesquena-hermes
f6dc7aad6f
Merge pull request #2907
2026-05-25 17:17:44 +00:00
nesquena-hermes
68afa0e44a
Merge pull request #2932
...
# Conflicts:
# CHANGELOG.md
2026-05-25 17:17:44 +00:00
Frank Song
524ed6cce3
fix(streaming): preserve profile env for checkpoints
2026-05-25 21:29:06 +08:00
Frank Song
89d8c3a94c
fix: cap live tool prompt estimate per turn
2026-05-25 16:04:40 +08:00
fxd-jason
dd09e1c2a8
Merge remote-tracking branch 'origin/master' into fix/compression-anchor-marker-based
...
# Conflicts:
# tests/test_issue2028_compression_anchor_helpers.py
2026-05-25 15:23:17 +08:00
fxd-jason
90dfbf2f2d
fix: marker-based compression anchor calculation
...
Instead of using len(visible_after)-1 (which points to the last visible
message and gets pushed behind the render window as more turns accumulate),
find the last [CONTEXT COMPACTION] marker in s.messages and compute the
anchor from visible messages before it.
This keeps the compression reference card at the correct boundary even
after 50+ subsequent turns have scrolled the render window past the old
anchor position.
Fixes a bug where the assistant's output message appeared to disappear
after automatic context compression because the reference card was placed
at the wrong position.
2026-05-25 15:16:26 +08:00
ai-ag2026
5b9484b816
fix(streaming): suppress visible progress echoes
2026-05-25 06:18:06 +02:00
Simonas Jakubonis
7aae822872
fix(compression): ignore tool output for compaction cards
2026-05-25 11:27:15 +08:00
AJV20
894ad9ed90
Merge origin/master into feat/webui-prefill-script
2026-05-24 21:04:27 -04:00
Frank Song
535c238285
fix: preserve cached agent prefill context
2026-05-25 08:51:44 +08:00
AJV20
befee0e035
test(chat): harden WebUI prefill script hook
2026-05-24 20:20:28 -04:00
Lumen Yang
5934c2fe8a
fix: address context replay review feedback
2026-05-25 00:10:27 +00:00
Lumen Yang
c616c8e788
fix: cap live tool prompt estimates
2026-05-25 00:10:27 +00:00
Lumen Yang
15cde132f3
fix: dedupe replayed context summaries
2026-05-25 00:10:27 +00:00
ai-ag2026
efe3d7c296
fix(chat): avoid false restart wording for interrupted responses
...
(cherry picked from commit ef8fd879682aeb729a7b7afa1e7c46478ca5ebb6)
2026-05-25 02:06:42 +02:00
AJV20
fa57868431
feat(chat): add WebUI prefill script hook
2026-05-24 20:05:20 -04:00
AJV20
d7b98d87cd
Merge remote-tracking branch 'origin/master' into maint/pr-2547
...
# Conflicts:
# CHANGELOG.md
2026-05-24 17:48:09 -04:00
hermes-agent
fd1c4eaeaf
Stage 406: PR #2827 — fix(state-sync): pass profile explicitly so background-thread DB writes hit the right state.db ( #2762 ) by @Koraji95-coder
2026-05-24 18:57:40 +00:00
Simonas Jakubonis
35c55e1268
fix(compression): ignore tool output for compaction cards
2026-05-24 03:55:42 +00:00
AJV20
50195c229b
fix(chat): keep WebUI prefill file-only
2026-05-22 14:46:17 -04:00
AJV20
19565b6022
Merge remote-tracking branch 'origin/master' into fix/webui-context-parity
...
# Conflicts:
# CHANGELOG.md
2026-05-22 14:13:42 -04:00
Hermes Agent
3874781a57
Stage 399: PR #2704 — fix(streaming): prevent exponential empty _partial accumulation across reasoning-only cancellations
...
Co-authored-by: wirtsi <wirtsi@users.noreply.github.com>
2026-05-21 17:56:46 +00:00
Hermes Agent
7152da2756
Stage 399: PR #2705 — fix(api): dedupe replayed context_messages so the agent doesn't see duplicates (follow-up to v0.51.96 #2620 )
...
Co-authored-by: AlexeyDsov <AlexeyDsov@users.noreply.github.com>
2026-05-21 17:56:43 +00:00
nesquena-hermes
fa459aa01e
Stage 392: PR #2651
2026-05-20 21:48:04 +00:00
Lumen Yang
71fbc796b2
fix: dedupe replayed context tail after compression
2026-05-20 23:15:54 +02:00
starship-s
153e035d12
fix: forward title generation api key
2026-05-20 14:39:38 -06:00
AJV20
8109bcb7e4
fix: honor configured title generation model
2026-05-19 22:35:11 -04:00
nesquena-hermes
7c3dcce1d0
Stage 388: PR #2598
2026-05-20 00:17:47 +00:00
AJV20
35da27bc53
Merge remote-tracking branch 'origin/master' into fix/webui-context-parity
...
# Conflicts:
# CHANGELOG.md
2026-05-19 18:54:38 -04:00
AJV20
612fcd30fe
fix: avoid duplicate live tool events
2026-05-19 18:41:08 -04:00
nesquena-hermes
e63de7c15f
Stage 387: PR #2593
...
# Conflicts:
# CHANGELOG.md
2026-05-19 22:08:56 +00:00
AJV20
ebb4dffc7d
fix: stream live tool callback events
2026-05-19 14:55:19 -04:00
nesquena-hermes
6c0f864b10
Stage 386: PR #2587
...
# Conflicts:
# CHANGELOG.md
2026-05-19 18:20:47 +00:00
nesquena-hermes
86f52f67b8
Stage 386: PR #2581
...
# Conflicts:
# api/streaming.py
2026-05-19 18:20:47 +00:00
nesquena-hermes
0585881511
Stage 386: PR #2583
2026-05-19 18:20:07 +00:00
Michael Lam
0736e45485
fix: dedupe tool-only partial recovery markers
2026-05-19 11:16:21 -07:00
Lumen Yang
a8d429775c
fix(webui): preserve casual chat compaction guard
2026-05-19 14:34:58 +00:00
AJV20
f93e288214
Fix stale stream recovery writeback race
2026-05-19 10:26:45 -04:00
dobby-d-elf
2a95c1e482
Fix profile-aware assistant display names
2026-05-19 07:17:11 -06:00
starship-s
2e9ca283dc
fix: display canonical cache hit percentage
2026-05-19 02:27:12 -06:00
Lumen Yang
6ca63e5815
perf(webui): keep external refresh metadata cheap
2026-05-19 08:02:43 +00:00
Lumen Yang
467ef33a24
feat(webui): reconcile external session updates
...
When API server runs append messages directly to state.db, reconcile WebUI sidecar sessions with those canonical rows across API responses, model-facing streaming context, and active browser refresh.
Add append-only state.db merge helpers, metadata-only counts for refresh polling, and regression coverage for API visibility, context incorporation, and frontend refresh behavior.
2026-05-19 08:02:43 +00:00
Dennis Soong
ea978a1989
fix: surface auto-compression handoff
2026-05-19 10:45:43 +08:00
AJV20
ac19de9526
Merge remote-tracking branch 'origin/master' into fix/webui-context-parity
...
# Conflicts:
# CHANGELOG.md
2026-05-18 21:37:52 -04:00
nesquena-hermes
91099051c6
Stage 384: PR #2505
...
# Conflicts:
# CHANGELOG.md
2026-05-18 22:44:02 +00:00
AJV20
56a8c6d21a
fix(chat): harden WebUI prefill scripts
2026-05-18 14:56:28 -04:00
AJV20
540292a7cd
fix(chat): align WebUI context with messaging sessions
2026-05-18 14:07:06 -04:00
AJV20
5c1161f84f
feat(chat): load WebUI prefill context
2026-05-18 14:04:49 -04:00
AJV20
8e65ad3063
fix(chat): add WebUI surface context to agent turns
2026-05-18 14:04:17 -04:00
Michael Lam
e94827f460
fix: stop replaying reasoning-only history
2026-05-18 10:50:42 -07:00
Hermes Agent
42b97d15f6
fix: clear fallback streaming warnings
2026-05-18 12:21:59 -05:00
Michael Lam
f3f9f3ed40
fix: allow keyless named custom endpoints
2026-05-18 04:27:31 -07:00
nesquena-hermes
935d9e6402
Stage 379: PR #2461
...
# Conflicts:
# CHANGELOG.md
2026-05-17 23:35:18 +00:00
swftwolfzyq
b2ee7e365f
Merge latest origin/master into codex/workspace-prefix-display-fix
2026-05-17 23:44:16 +08:00
swftwolfzyq
3553e63a51
Merge origin/master into codex/workspace-prefix-display-fix
2026-05-17 23:39:12 +08:00
starship-s
625d8d02fd
fix: preserve memory lifecycle mark ordering
2026-05-17 05:16:46 -06:00
starship-s
eb70a6dc5d
fix: align WebUI memory commits with CLI boundaries
2026-05-17 05:04:57 -06:00
starship-s
aecad0f427
[verified] Fix WebUI memory session lifecycle commits
2026-05-17 03:30:06 -06:00
nesquena-hermes
47c210899e
Stage 374: PR #2421 — fix(cache-tokens): surface provider prompt-cache read/write tokens in WebUI usage by @Michaelyklam ( fixes #2419 )
...
Co-authored-by: Michael Lam <michael@example.local>
2026-05-17 02:49:34 +00:00
nesquena-hermes
8a950cfbdd
Stage 373: PR #2417 — fix(streaming): stale compaction task resume on fresh greetings ( closes #2308 , supersedes #2309 )
...
Co-authored-by: Frank Song <franksong2702@gmail.com>
2026-05-17 00:22:22 +00:00
Hermes Agent
b937cf3583
Stage 370: PR #2390 — Fix live progress Activity grouping by @franksong2702
...
# Conflicts:
# CHANGELOG.md
2026-05-16 20:21:58 +00:00
Hermes Agent
ade7401ae1
Stage 369: PR #2396 — fix(streaming): preserve session agents for credential pools by @starship-s
2026-05-16 20:03:44 +00:00
starship-s
727e3c9c8f
fix(streaming): preserve session agents for credential pools
2026-05-16 13:05:25 -06:00
Frank Song
2dfe3ffb42
Fix live progress activity grouping
2026-05-16 23:37:44 +08:00
Michael Lam
962b3840e6
fix: strip historical images in text mode
2026-05-16 03:55:12 -07:00
Hermes Agent
b293bf8bc5
stage-364: Opus-caught live SSE event_id fix (side-channel approach)
...
Replace the earlier frontend-reset approach with a backend side-channel
approach that preserves the queue (event, data) tuple shape.
Problem (Opus catch):
- Live SSE frames emitted by _sse() in api/streaming.py:2296 carried no
'id:' field. Only journal-replay frames (via _sse_with_id) emitted IDs.
- Frontend's _lastRunJournalSeq cursor stayed at 0 during live streaming.
- Mid-stream error → reconnect-to-replay arrived with after_seq=0.
- Server replayed every journaled event from seq 1.
- assistantText (closure-scoped) had accumulated all live tokens already
→ double-rendered output.
Fix:
- api/config.py: STREAM_LAST_EVENT_ID: dict = {} module-level dict.
- api/streaming.py put(): capture journal event_id, write to
STREAM_LAST_EVENT_ID[stream_id]. Keep queue tuple as (event, data).
- api/routes.py _handle_sse_stream: read STREAM_LAST_EVENT_ID[stream_id]
at emit time, use _sse_with_id when set.
- api/streaming.py finally block: pop STREAM_LAST_EVENT_ID for cleanup.
Why side-channel instead of 3-tuple:
- Earlier attempt (queue tuple → (event, data, event_id)) broke 4 existing
tests: test_cancel_interrupt, test_sprint42, test_sprint51,
test_issue1857_usage_overwrite. These all unpack 'event, data = q.get()'.
- Frontend-reset approach (reset assistantText before replay) broke 3
other tests: test_smooth_text_fade, test_streaming_markdown,
test_streaming_race_fix. _wireSSE must NOT reset accumulators because
legacy reconnect doesn't replay events; only journal-replay does.
Side-channel preserves both invariants:
- Queue contract stays (event, data) — legacy consumers unbroken.
- Frontend accumulators stay alive on _wireSSE — legacy reconnect unbroken.
- Live SSE emits 'id:' so the journal cursor advances correctly.
6 regression tests added in test_stage364_opus_live_sse_event_id.py.
1 existing test (test_run_journal_streaming_static.test_streaming_journals_sse_events_before_queue_delivery) updated to be tuple-shape-agnostic.
Test results:
- Full pytest: 5713 passed, 10 skipped, 1 xfailed, 2 xpassed, 0 failed
- Previously-failing 5 tests: ALL PASS
- 6 new regression tests: ALL PASS
2026-05-16 03:58:54 +00:00
Frank Song
3b96035af0
Add WebUI run event journal replay
2026-05-16 02:58:34 +00:00