From 839dac198fd9699de3cf56ab79d80250d3cb0043 Mon Sep 17 00:00:00 2001
From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Date: Thu, 12 Feb 2026 11:58:21 -0300
Subject: [PATCH] agent_ui: Add some UI tweaks to the subagents thread (#49030)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Just some relatively small UI adjustments, like adding the forward arrow
to make it clearer there's a hierarchy between the parent thread and the
subagent thread, and a check icon to comunicate the subagent thread is
done.
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
---
assets/icons/forward_arrow_up.svg | 4 ++++
.../src/acp/thread_view/active_thread.rs | 23 +++++++++++++++----
crates/icons/src/icons.rs | 1 +
3 files changed, 24 insertions(+), 4 deletions(-)
create mode 100644 assets/icons/forward_arrow_up.svg
diff --git a/assets/icons/forward_arrow_up.svg b/assets/icons/forward_arrow_up.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b4abcb2083206ffe288cf38a13348055e9521c4f
--- /dev/null
+++ b/assets/icons/forward_arrow_up.svg
@@ -0,0 +1,4 @@
+
diff --git a/crates/agent_ui/src/acp/thread_view/active_thread.rs b/crates/agent_ui/src/acp/thread_view/active_thread.rs
index 49c95f21cf0949afc50853c80b65986d65a9e528..1f377b345026547046044825903ba0c9a55fa412 100644
--- a/crates/agent_ui/src/acp/thread_view/active_thread.rs
+++ b/crates/agent_ui/src/acp/thread_view/active_thread.rs
@@ -2306,6 +2306,8 @@ impl AcpThreadView {
let title = self.thread.read(cx).title();
let server_view = self.server_view.clone();
+ let is_done = self.thread.read(cx).status() == ThreadStatus::Idle;
+
Some(
h_flex()
.h(Tab::container_height(cx))
@@ -2314,9 +2316,20 @@ impl AcpThreadView {
.w_full()
.justify_between()
.border_b_1()
- .border_color(cx.theme().colors().border_variant)
+ .border_color(cx.theme().colors().border)
.bg(cx.theme().colors().editor_background.opacity(0.2))
- .child(Label::new(title).color(Color::Muted))
+ .child(
+ h_flex()
+ .child(
+ Icon::new(IconName::ForwardArrowUp)
+ .size(IconSize::Small)
+ .color(Color::Muted),
+ )
+ .child(Label::new(title).color(Color::Muted).ml_2().mr_1())
+ .when(is_done, |this| {
+ this.child(Icon::new(IconName::Check).color(Color::Success))
+ }),
+ )
.child(
IconButton::new("minimize_subagent", IconName::Minimize)
.icon_size(IconSize::Small)
@@ -3616,6 +3629,8 @@ impl AcpThreadView {
if let Some(editing_index) = self.editing_message
&& editing_index < entry_ix
{
+ let is_subagent = self.is_subagent();
+
let backdrop = div()
.id(("backdrop", entry_ix))
.size_full()
@@ -3629,7 +3644,7 @@ impl AcpThreadView {
div()
.relative()
.child(primary)
- .child(backdrop)
+ .when(!is_subagent, |this| this.child(backdrop))
.into_any_element()
} else {
primary
@@ -5876,7 +5891,7 @@ impl AcpThreadView {
if is_canceled_or_failed {
"Subagent Canceled"
} else {
- "Spawning Subagent…"
+ "Creating Subagent…"
}
.into()
});
diff --git a/crates/icons/src/icons.rs b/crates/icons/src/icons.rs
index 7daefe5ddc089f84222a855f9fb9005e9dab6d07..1f6e9c5fa15f5b8eca0bfd84a08ff168dbc7f6c6 100644
--- a/crates/icons/src/icons.rs
+++ b/crates/icons/src/icons.rs
@@ -134,6 +134,7 @@ pub enum IconName {
FontSize,
FontWeight,
ForwardArrow,
+ ForwardArrowUp,
GenericClose,
GenericMaximize,
GenericMinimize,