[Bug] Cancelled terminal tool calling status will become ongoing again after chat history restoration · Issue #239 · microsoft/copilot-for-eclipse · GitHub
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug] Cancelled terminal tool calling status will become ongoing again after chat history restoration #239
The bug is caused by the main conversation cancel call from ChatView.onCancel() was removed:
ls.destroyConversation(this.conversationId);
So when you cancel, the live UI still flips to the cancel icon because ActionBar posts TOPIC_CHAT_MESSAGE_CANCELLED, and AgentStatusLabel handles that locally. But the persisted chat history is not updated with a cancelled tool status; it keeps the last stored run_in_terminal status, usually running.
When restoring history, ChatView.restoreCopilotTurnContent() rebuilds from persisted ToolCallData, calls BaseTurnWidget.appendToolCallStatus(), sees status = running, and AgentStatusLabel.setRunningStatus() starts the spinner again.
So the root mismatch is: live cancel icon is event-driven UI state, but restore is persistence-driven state, and after b303976 cancellation no longer updates persisted tool status for the main conversation.
changed the title [-][Bug] Cancelled terminal tool calling status will become ongoing[/-][+][Bug] Cancelled terminal tool calling status will become ongoing again after chat history restoration[/+]on May 20, 2026
Activity
ethanyhou commentedon May 20, 2026
Copilot analyze:
The bug is caused by the main conversation cancel call from ChatView.onCancel() was removed:
ls.destroyConversation(this.conversationId);
So when you cancel, the live UI still flips to the cancel icon because ActionBar posts TOPIC_CHAT_MESSAGE_CANCELLED, and AgentStatusLabel handles that locally. But the persisted chat history is not updated with a cancelled tool status; it keeps the last stored run_in_terminal status, usually running.
When restoring history, ChatView.restoreCopilotTurnContent() rebuilds from persisted ToolCallData, calls BaseTurnWidget.appendToolCallStatus(), sees status = running, and AgentStatusLabel.setRunningStatus() starts the spinner again.
So the root mismatch is: live cancel icon is event-driven UI state, but restore is persistence-driven state, and after b303976 cancellation no longer updates persisted tool status for the main conversation.
[-][Bug] Cancelled terminal tool calling status will become ongoing[/-][+][Bug] Cancelled terminal tool calling status will become ongoing again after chat history restoration[/+]