diff --git a/crates/agent_ui/src/acp/thread_view.rs b/crates/agent_ui/src/acp/thread_view.rs index c68c3a3e937f4461c6d28f59198ddf04b467d9de..cd02191d4bbab5f208ebda9e6f92fc8a1aa61972 100644 --- a/crates/agent_ui/src/acp/thread_view.rs +++ b/crates/agent_ui/src/acp/thread_view.rs @@ -1644,19 +1644,6 @@ impl AcpThreadView { let key = (entry_ix, chunk_ix); let is_open = self.expanded_thinking_blocks.contains(&key); - let editor_bg = cx.theme().colors().editor_background; - let gradient_overlay = div() - .rounded_b_lg() - .h_full() - .absolute() - .w_full() - .bottom_0() - .left_0() - .bg(linear_gradient( - 180., - linear_color_stop(editor_bg, 1.), - linear_color_stop(editor_bg.opacity(0.2), 0.), - )); let scroll_handle = self .entry_view_state @@ -1664,27 +1651,34 @@ impl AcpThreadView { .entry(entry_ix) .and_then(|entry| entry.scroll_handle_for_assistant_message_chunk(chunk_ix)); + let thinking_content = { + div() + .id(("thinking-content", chunk_ix)) + .when_some(scroll_handle, |this, scroll_handle| { + this.track_scroll(&scroll_handle) + }) + .when(!is_open, |this| this.max_h_12().opacity(0.6)) + .text_ui_sm(cx) + .overflow_hidden() + .child( + self.render_markdown(chunk, default_markdown_style(false, false, window, cx)), + ) + }; + v_flex() - .rounded_md() - .border_1() - .border_color(self.tool_card_border_color(cx)) + .gap_1() .child( h_flex() .id(header_id) .group(&card_header_id) .relative() .w_full() - .py_0p5() - .px_1p5() - .rounded_t_md() - .bg(self.tool_card_header_bg(cx)) .justify_between() - .border_b_1() - .border_color(self.tool_card_border_color(cx)) .child( h_flex() .h(window.line_height()) .gap_1p5() + .overflow_hidden() .child( Icon::new(IconName::ToolThink) .size(IconSize::Small) @@ -1698,7 +1692,7 @@ impl AcpThreadView { if pending { this.child("Thinking") } else { - this.child("Thought Process") + this.child("Thought") } }), ), @@ -1730,28 +1724,17 @@ impl AcpThreadView { } })), ) - .child( - div() - .relative() - .bg(editor_bg) - .rounded_b_lg() - .child( - div() - .id(("thinking-content", chunk_ix)) - .when_some(scroll_handle, |this, scroll_handle| { - this.track_scroll(&scroll_handle) - }) - .p_2() - .when(!is_open, |this| this.max_h_20()) - .text_ui_sm(cx) - .overflow_hidden() - .child(self.render_markdown( - chunk, - default_markdown_style(false, false, window, cx), - )), - ) - .when(!is_open && pending, |this| this.child(gradient_overlay)), - ) + .when(is_open, |this| { + this.child( + div() + .relative() + .ml_1p5() + .pl_3p5() + .border_l_1() + .border_color(self.tool_card_border_color(cx)) + .child(thinking_content), + ) + }) .into_any_element() } @@ -1924,7 +1907,7 @@ impl AcpThreadView { .when(has_location || use_card_layout, |this| this.px_1()) .when(has_location, |this| { this.cursor(CursorStyle::PointingHand) - .rounded_sm() + .rounded(rems_from_px(3.)) // Concentric border radius .hover(|s| s.bg(cx.theme().colors().element_hover.opacity(0.5))) }) .overflow_hidden() @@ -4247,7 +4230,7 @@ impl AcpThreadView { return h_flex().id("thread-controls-container").child( div() .py_2() - .px_5() + .px(rems_from_px(22.)) .child(SpinnerLabel::new().size(LabelSize::Small)), ); }