Problem
When a subagent is executing and the user switches to a different conversation (via history), the subagent's progress events continue to be rendered in the newly opened conversation's UI, corrupting the display.
Root Cause
ChatView.onChatProgress() is a global listener that does not filter progress events by conversationId. When the user switches conversations:
- The subagent continues executing in the background (tied to the old conversation)
- Progress events arrive with the old conversation's conversationId
- onChatProgress blindly forwards them to the current chatContentViewer, which now displays a different conversation
Expected Behavior
Progress events should be ignored (or buffered) if they don't belong to the currently displayed conversation. The check should account for both the main conversation ID and any active subagent conversation ID.
Reproduction Steps
- Start a conversation in Agent mode
- Trigger a subagent execution
- While the subagent is running, open chat history and switch to a different conversation
- Observe: the subagent's output appears in the newly opened conversation's UI
Problem
When a subagent is executing and the user switches to a different conversation (via history), the subagent's progress events continue to be rendered in the newly opened conversation's UI, corrupting the display.
Root Cause
ChatView.onChatProgress() is a global listener that does not filter progress events by conversationId. When the user switches conversations:
Expected Behavior
Progress events should be ignored (or buffered) if they don't belong to the currently displayed conversation. The check should account for both the main conversation ID and any active subagent conversation ID.
Reproduction Steps