fix(chat): keep visible interim progress in the live timeline#2958
Conversation
|
Read the diff against The new ordering looks rightBefore this PR, the handler did ensureAssistantRow(true);
_flushPendingSegmentRender({force:true});
if(typeof closeCurrentLiveActivityGroup==='function') closeCurrentLiveActivityGroup();
_resetAssistantSegment();
_scheduleRender();
|
|
Follow-up pushed in What changed:
Verification:
Remaining limitation:
|
|
Holding briefly — interim progress in live timeline. +69/-23 in messages.js + ui.js + new test, plus updates to docs/UIUX-GUIDE.md and an RFC. Surface overlap with the recent #2907 (echo dedupe, shipped in v0.51.136) and #2928 (single SSE source, shipped in v0.51.136). What I want to verify:
Will revisit next sweep. @franksong2702, thanks. |
08e9ce3
|
Merged in Release DM / v0.51.141 (stage-batch23 — 4-PR second hold-bucket pass with PRs #2506 #2792 #2888 #2958). Thanks @franksong2702! 🚢 |
# Conflicts: # CHANGELOG.md
Thinking Path
interim_assistantstream path could append progress text, then reset the assistant segment before the live Session timeline had a visible row to render into.Fixes #2956.
What Changed
interim_assistanthandler so non-echo visible progress:_flushPendingSegmentRenderwith a narrow{force:true}option for the interim-only case where there may be no pending rAF but the newly-created segment still needs immediate rendering.docs/UIUX-GUIDE.mdanddocs/rfcs/webui-run-state-consistency-contract.mdto state that visible interim progress remains timeline content and must not be available only inside a collapsed Activity disclosure.Why It Matters
Long-running Session streams need a readable chronological story: user request, visible agent progress, tools/activity, and final answer. Compact Activity can reduce noise, but it should not hide the concise progress text that tells the user what the agent is doing.
Verification
python3 -m pytest tests/test_issue2713_streaming_segment_flush.py::TestInterimAssistantHandlerFlush tests/test_ui_tool_call_cleanup.py::TestToolCallGroupingStatic::test_live_visible_interim_text_preserves_timeline_boundary -qinterim_assistantpath.python3 -m pytest tests/test_issue2713_streaming_segment_flush.py::TestInterimAssistantHandlerFlush tests/test_ui_tool_call_cleanup.py::TestToolCallGroupingStatic::test_live_visible_interim_text_preserves_timeline_boundary -q->5 passedpython3 -m pytest tests/test_issue2713_streaming_segment_flush.py tests/test_ui_tool_call_cleanup.py tests/test_run_journal_frontend_static.py tests/test_regressions.py::test_messages_js_supports_interim_assistant_events tests/test_regressions.py::test_ui_js_does_not_hide_anchor_segments_that_contain_thinking tests/test_regressions.py::test_messages_js_live_assistant_segment_reuses_live_turn_wrapper -q->42 passednode --check static/messages.jsnode --check static/ui.jsgit diff --checkRisks / Follow-ups
Model Used
OpenAI GPT-5 via Codex app agent. Tool use: local repo inspection, GitHub CLI, pytest, Node syntax checks, git worktree, and git push/PR creation.