New request
#2403: Interim assistant progress notes — consider collapsing or capping on long tool-heavy turns
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Follow-up captured during stage-369 Opus advisor review of PR #2347 (shipped in v0.51.76).
Observation
PR #2347 reworked the live interim_assistant accumulation path to join successive snippets with \n\n instead of raw concatenation. This was deliberate — visible progress notes from the model are now separate sentences and need at least a paragraph break to be readable in the live timeline.
The trade-off: a long-running tool-heavy turn with 6+ interim progress notes now consumes more vertical space in the timeline pane than the pre-fix raw-concat version. On a 14-inch laptop or smaller, this can scroll the final answer off-screen by the time the turn completes.
Why this is a follow-up, not a regression
- The new behavior is correct per the live-timeline contract from PR #2390 (consecutive progress notes ARE supposed to be separate paragraphs).
- The previous behavior was buggy in a different direction — interim notes ran together into an unreadable wall.
- Only sessions with many interim notes (10+) on small viewports exhibit the layout pressure.
Possible UX directions
Not committing to one — needs observation of real sessions:
- Collapse old progress notes once they're more than ~3 ahead of the live cursor, with a "show all" expand. Mirrors how Thinking cards already collapse.
- Tighten the
\n\nseparator to\nwhen the surrounding context is a tool burst (Activity group), since the Activity row provides the visual boundary already. - Cap visible progress count to N (e.g. 5) with the oldest collapsing into a "+ N earlier progress notes" summary line.
- Do nothing — the trade-off is the right call. The new readability is worth the vertical space.
When to act
After running real long sessions for a few days and seeing whether the layout pressure actually bites. If multiple users report "I can't see the answer anymore" then option 1 or 3 is the right call. If nobody mentions it, option 4.
References
- PR #2347 (merged in v0.51.76): https://github.com/nesquena/hermes-webui/pull/2347
- Related contract: PR #2390 visible-progress boundary signal (merged in v0.51.77)
- Issue this serves: #2344 active agent stream timeline preservation
Frontend UX enhancement requiring chat timeline rendering, dynamic collapse behavior, and activity-group-aware layout adjustments.
- static/js/chat/timeline.js
- static/css/chat.css
- static/js/ui/collapse.js
- static/js/components/activity_group.js
- api/models/sessions.py