diff --git a/crates/agent_ui/src/acp/thread_view.rs b/crates/agent_ui/src/acp/thread_view.rs index c6988fb40d591ba4b405659708ac2dbbc25dc4cc..7bfa67cfd52cdd4d9c25fe5570498a3ccb66fdee 100644 --- a/crates/agent_ui/src/acp/thread_view.rs +++ b/crates/agent_ui/src/acp/thread_view.rs @@ -278,7 +278,7 @@ pub struct AcpThreadView { thread_feedback: ThreadFeedbackState, list_state: ListState, auth_task: Option>, - expanded_tool_calls: HashSet, + collapsed_tool_calls: HashSet, expanded_thinking_blocks: HashSet<(usize, usize)>, edits_expanded: bool, plan_expanded: bool, @@ -419,7 +419,7 @@ impl AcpThreadView { thread_error: None, thread_feedback: Default::default(), auth_task: None, - expanded_tool_calls: HashSet::default(), + collapsed_tool_calls: HashSet::default(), expanded_thinking_blocks: HashSet::default(), editing_message: None, edits_expanded: false, @@ -954,17 +954,17 @@ impl AcpThreadView { ) { match &event.view_event { ViewEvent::NewDiff(tool_call_id) => { - if AgentSettings::get_global(cx).expand_edit_card { - self.expanded_tool_calls.insert(tool_call_id.clone()); + if !AgentSettings::get_global(cx).expand_edit_card { + self.collapsed_tool_calls.insert(tool_call_id.clone()); } } ViewEvent::NewTerminal(tool_call_id) => { - if AgentSettings::get_global(cx).expand_terminal_card { - self.expanded_tool_calls.insert(tool_call_id.clone()); + if !AgentSettings::get_global(cx).expand_terminal_card { + self.collapsed_tool_calls.insert(tool_call_id.clone()); } } ViewEvent::TerminalMovedToBackground(tool_call_id) => { - self.expanded_tool_calls.remove(tool_call_id); + self.collapsed_tool_calls.insert(tool_call_id.clone()); } ViewEvent::MessageEditorEvent(_editor, MessageEditorEvent::Focus) => { if let Some(thread) = self.thread() @@ -2125,7 +2125,7 @@ impl AcpThreadView { let is_collapsible = !tool_call.content.is_empty() && !needs_confirmation; - let is_open = needs_confirmation || self.expanded_tool_calls.contains(&tool_call.id); + let is_open = needs_confirmation || !self.collapsed_tool_calls.contains(&tool_call.id); let tool_output_display = if is_open { @@ -2275,9 +2275,9 @@ impl AcpThreadView { let id = tool_call.id.clone(); move |this: &mut Self, _, _, cx: &mut Context| { if is_open { - this.expanded_tool_calls.remove(&id); + this.collapsed_tool_calls.insert(id.clone()); } else { - this.expanded_tool_calls.insert(id.clone()); + this.collapsed_tool_calls.remove(&id); } cx.notify(); } @@ -2479,7 +2479,7 @@ impl AcpThreadView { .icon_color(Color::Muted) .on_click(cx.listener({ move |this: &mut Self, _, _, cx: &mut Context| { - this.expanded_tool_calls.remove(&tool_call_id); + this.collapsed_tool_calls.insert(tool_call_id.clone()); cx.notify(); } })), @@ -2757,7 +2757,7 @@ impl AcpThreadView { .map(|path| path.display().to_string()) .unwrap_or_else(|| "current directory".to_string()); - let is_expanded = self.expanded_tool_calls.contains(&tool_call.id); + let is_expanded = !self.collapsed_tool_calls.contains(&tool_call.id); let header = h_flex() .id(header_id) @@ -2892,9 +2892,9 @@ impl AcpThreadView { let id = tool_call.id.clone(); move |this, _event, _window, _cx| { if is_expanded { - this.expanded_tool_calls.remove(&id); + this.collapsed_tool_calls.insert(id.clone()); } else { - this.expanded_tool_calls.insert(id.clone()); + this.collapsed_tool_calls.remove(&id); } } })),