From 58ba09aa19bb5154d62e333d5ada95146c467cbf Mon Sep 17 00:00:00 2001 From: Michael Lam Date: Mon, 18 May 2026 02:15:05 -0700 Subject: [PATCH] fix: clarify live auto-compression state --- CHANGELOG.md | 4 ++++ .../compression-running-comparison.png | Bin 0 -> 50843 bytes static/messages.js | 1 + static/ui.js | 8 ++++++-- tests/test_auto_compression_card.py | 5 +++++ 5 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 docs/pr-media/issue-2477/compression-running-comparison.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e938441e76..22a85847d59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- **PR #2517** (refs #2477) — Make live automatic-compression cards show the running compression phase, with a spinner-style status label and elapsed time, instead of presenting the in-progress state like a completed auto-compression event. + ## [v0.51.89] — 2026-05-18 — Release BM (stage-382 — 6-PR full sweep batch — runtime adapter approval/clarify seam + SOUL.md memory panel + #1855 resolve_model_provider fast-path + PWA sidebar spinner fix + /model active-provider preference + contributor contract docs index) ### Changed diff --git a/docs/pr-media/issue-2477/compression-running-comparison.png b/docs/pr-media/issue-2477/compression-running-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..65b20faf9c9ea1123e48db9983df7eddcbfe5a86 GIT binary patch literal 50843 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

=R8Uj{Ubz5bV75k=(j^%S7nMySdrAa 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 OG(-iZ1d8~-c>WLFre50s literal 0 HcmV?d00001 diff --git a/static/messages.js b/static/messages.js index ae7c61135fa..f5c63af9f96 100644 --- a/static/messages.js +++ b/static/messages.js @@ -1785,6 +1785,7 @@ function attachLiveStream(activeSid, streamId, uploaded=[], options={}){ phase:'running', automatic:true, message:d.message||'Auto-compressing context...', + startedAt:Date.now(), }; setCompressionUi(state); const liveAnswerStarted=!!(assistantRow||String(((_parseStreamState&&_parseStreamState())||{}).displayText||'').trim()); diff --git a/static/ui.js b/static/ui.js index 4fedd18e707..64f68e94e4a 100644 --- a/static/ui.js +++ b/static/ui.js @@ -4956,15 +4956,19 @@ function _autoCompressionCardsHtml(state){ const detail=running ? (String(state.message||'Auto-compressing context...').trim()||'Auto-compressing context...') : (String(state.message||fallback).trim()||fallback); + const startedAt=Number(state&&state.startedAt||0); + const elapsed=(running&&startedAt>0) + ? `Elapsed ${_formatTurnDuration(Math.max(0,(Date.now()-startedAt)/1000))}` + : ''; const preview=running ? detail : (String(state.summary?.headline||detail).trim()||detail); return `

${_compressionStatusCardHtml({ - statusLabel: t('auto_compress_label'), + statusLabel: running ? t('compress_running_label') : t('auto_compress_label'), previewText: preview, - detail, + detail: [detail, elapsed].filter(Boolean).join('\n'), icon: running ? '' : li('check',13), open: running, variantClass: running diff --git a/tests/test_auto_compression_card.py b/tests/test_auto_compression_card.py index d092f615d1a..dd6a5340a35 100644 --- a/tests/test_auto_compression_card.py +++ b/tests/test_auto_compression_card.py @@ -36,6 +36,7 @@ def test_auto_compression_running_sse_uses_active_session_running_card(): assert "phase:'running'" in block assert "automatic:true" in block assert "message:d.message||'Auto-compressing context...'" in block + assert "startedAt:Date.now()" in block def test_auto_compression_running_sse_is_emitted_from_agent_lifecycle_status(): @@ -136,7 +137,11 @@ def test_auto_compression_card_reuses_compression_card_renderer(): assert "if(state.automatic) return _autoCompressionCardsHtml(state);" in src assert "tool-card-row compression-card-row" in helper + assert "running ? t('compress_running_label') : t('auto_compress_label')" in helper + assert "tool-card-compress-running tool-card-compress-auto" in helper assert "tool-card-compress-complete tool-card-compress-auto" in helper + assert "Elapsed ${_formatTurnDuration" in helper + assert "detail: [detail, elapsed].filter(Boolean).join('\\n')" in helper assert "auto_compress_label" in helper