Render session recovery card from active session state

This commit is contained in:
Frank Song
2026-07-06 09:37:57 +08:00
parent 89b6ab5c34
commit 77f54eeb5a
2 changed files with 17 additions and 1 deletions
+4 -1
View File
@@ -13814,7 +13814,10 @@ function renderMessages(options){
const summary=m.provider_details_label||'Provider details';
bodyHtml += `<details class="provider-error-details"><summary>${esc(String(summary))}</summary><pre><code>${esc(String(m.provider_details))}</code></pre></details>`;
}
const recoveryHtml=(!isUser&&m._compressionRecovery) ? _compressionRecoveryHtml(m._compressionRecovery, (S.session&&S.session.session_id)||'') : '';
const recoveryPayload=(!isUser&&m._compressionRecovery)
? m._compressionRecovery
: (!isUser&&isLastAssistant&&isTurnFinalAssistant&&typeof _activeCompressionRecoveryPayload==='function' ? _activeCompressionRecoveryPayload() : null);
const recoveryHtml=recoveryPayload ? _compressionRecoveryHtml(recoveryPayload, (S.session&&S.session.session_id)||'') : '';
if(recoveryHtml) bodyHtml += recoveryHtml;
const statusHtml = (!isUser&&m._statusCard) ? _statusCardHtml(m._statusCard) : '';
const isEditableUser=isUser&&rawIdx===lastUserRawIdx;
+13
View File
@@ -431,6 +431,19 @@ def test_compression_recovery_ui_wires_card_action_and_send_intercept():
assert "_compressionRecovery:recovery||undefined" in messages
def test_compression_recovery_ui_renders_session_level_recovery_on_terminal_message():
ui = (ROOT / "static/ui.js").read_text(encoding="utf-8")
start = ui.index("const recoveryPayload=(!isUser&&m._compressionRecovery)")
end = ui.index("const statusHtml", start)
body = ui[start:end]
assert "? m._compressionRecovery" in body
assert "_activeCompressionRecoveryPayload()" in body
assert "isLastAssistant&&isTurnFinalAssistant" in body
assert "typeof _activeCompressionRecoveryPayload==='function'" in body
assert body.index("m._compressionRecovery") < body.index("_activeCompressionRecoveryPayload()")
def test_compression_recovery_ui_skips_message_fallback_after_session_clear():
ui = (ROOT / "static/ui.js").read_text(encoding="utf-8")
start = ui.index("function _activeCompressionRecoveryPayload(){")