From 862e733ef53c381be9adb4df1996c43adb29ee65 Mon Sep 17 00:00:00 2001
From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Date: Wed, 9 Jul 2025 19:28:46 -0300
Subject: [PATCH] agent: Make all icons used for tool calls consistent (#34160)
Starting to use the `Tool...` family of icons dedicated & designed for
the agent panel.
Release Notes:
- N/A
---
assets/icons/clipboard.svg | 1 -
assets/icons/file_delete.svg | 5 -----
assets/icons/search_code.svg | 1 -
assets/icons/tool_copy.svg | 4 ++++
assets/icons/tool_delete_file.svg | 5 +++++
assets/icons/tool_diagnostics.svg | 5 +++++
assets/icons/tool_notification.svg | 4 ++++
crates/agent_ui/src/active_thread.rs | 6 +++---
crates/assistant_tools/src/copy_path_tool.rs | 2 +-
crates/assistant_tools/src/create_directory_tool.rs | 2 +-
crates/assistant_tools/src/delete_path_tool.rs | 2 +-
crates/assistant_tools/src/diagnostics_tool.rs | 2 +-
crates/assistant_tools/src/edit_file_tool.rs | 6 +++---
crates/assistant_tools/src/fetch_tool.rs | 2 +-
crates/assistant_tools/src/find_path_tool.rs | 4 ++--
crates/assistant_tools/src/grep_tool.rs | 2 +-
crates/assistant_tools/src/list_directory_tool.rs | 2 +-
crates/assistant_tools/src/project_notifications_tool.rs | 2 +-
crates/assistant_tools/src/read_file_tool.rs | 2 +-
crates/assistant_tools/src/terminal_tool.rs | 2 +-
crates/assistant_tools/src/thinking_tool.rs | 2 +-
crates/assistant_tools/src/ui/tool_call_card_header.rs | 2 +-
crates/assistant_tools/src/web_search_tool.rs | 9 +++++----
crates/icons/src/icons.rs | 7 ++++---
24 files changed, 47 insertions(+), 34 deletions(-)
delete mode 100644 assets/icons/clipboard.svg
delete mode 100644 assets/icons/file_delete.svg
delete mode 100644 assets/icons/search_code.svg
create mode 100644 assets/icons/tool_copy.svg
create mode 100644 assets/icons/tool_delete_file.svg
create mode 100644 assets/icons/tool_diagnostics.svg
create mode 100644 assets/icons/tool_notification.svg
diff --git a/assets/icons/clipboard.svg b/assets/icons/clipboard.svg
deleted file mode 100644
index 5c8842f3b7..0000000000
--- a/assets/icons/clipboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/assets/icons/file_delete.svg b/assets/icons/file_delete.svg
deleted file mode 100644
index b84f79958f..0000000000
--- a/assets/icons/file_delete.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/assets/icons/search_code.svg b/assets/icons/search_code.svg
deleted file mode 100644
index 1cc9affeb8..0000000000
--- a/assets/icons/search_code.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/assets/icons/tool_copy.svg b/assets/icons/tool_copy.svg
new file mode 100644
index 0000000000..e722d8a022
--- /dev/null
+++ b/assets/icons/tool_copy.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/tool_delete_file.svg b/assets/icons/tool_delete_file.svg
new file mode 100644
index 0000000000..3276f3d78e
--- /dev/null
+++ b/assets/icons/tool_delete_file.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/tool_diagnostics.svg b/assets/icons/tool_diagnostics.svg
new file mode 100644
index 0000000000..0ca18d63cc
--- /dev/null
+++ b/assets/icons/tool_diagnostics.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/tool_notification.svg b/assets/icons/tool_notification.svg
new file mode 100644
index 0000000000..7510b32040
--- /dev/null
+++ b/assets/icons/tool_notification.svg
@@ -0,0 +1,4 @@
+
diff --git a/crates/agent_ui/src/active_thread.rs b/crates/agent_ui/src/active_thread.rs
index 0e0e3756e3..e8651e0c5f 100644
--- a/crates/agent_ui/src/active_thread.rs
+++ b/crates/agent_ui/src/active_thread.rs
@@ -2581,8 +2581,8 @@ impl ActiveThread {
h_flex()
.gap_1p5()
.child(
- Icon::new(IconName::LightBulb)
- .size(IconSize::XSmall)
+ Icon::new(IconName::ToolBulb)
+ .size(IconSize::Small)
.color(Color::Muted),
)
.child(LoadingLabel::new("Thinking").size(LabelSize::Small)),
@@ -2995,7 +2995,7 @@ impl ActiveThread {
.overflow_x_scroll()
.child(
Icon::new(tool_use.icon)
- .size(IconSize::XSmall)
+ .size(IconSize::Small)
.color(Color::Muted),
)
.child(
diff --git a/crates/assistant_tools/src/copy_path_tool.rs b/crates/assistant_tools/src/copy_path_tool.rs
index 28d6bef9dd..1922b5677a 100644
--- a/crates/assistant_tools/src/copy_path_tool.rs
+++ b/crates/assistant_tools/src/copy_path_tool.rs
@@ -57,7 +57,7 @@ impl Tool for CopyPathTool {
}
fn icon(&self) -> IconName {
- IconName::Clipboard
+ IconName::ToolCopy
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/create_directory_tool.rs b/crates/assistant_tools/src/create_directory_tool.rs
index b3e198c1b5..224e8357e5 100644
--- a/crates/assistant_tools/src/create_directory_tool.rs
+++ b/crates/assistant_tools/src/create_directory_tool.rs
@@ -46,7 +46,7 @@ impl Tool for CreateDirectoryTool {
}
fn icon(&self) -> IconName {
- IconName::Folder
+ IconName::ToolFolder
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/delete_path_tool.rs b/crates/assistant_tools/src/delete_path_tool.rs
index e45c1976d1..b13f9863c9 100644
--- a/crates/assistant_tools/src/delete_path_tool.rs
+++ b/crates/assistant_tools/src/delete_path_tool.rs
@@ -46,7 +46,7 @@ impl Tool for DeletePathTool {
}
fn icon(&self) -> IconName {
- IconName::FileDelete
+ IconName::ToolDeleteFile
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/diagnostics_tool.rs b/crates/assistant_tools/src/diagnostics_tool.rs
index 3b6d38fc06..84595a37b7 100644
--- a/crates/assistant_tools/src/diagnostics_tool.rs
+++ b/crates/assistant_tools/src/diagnostics_tool.rs
@@ -59,7 +59,7 @@ impl Tool for DiagnosticsTool {
}
fn icon(&self) -> IconName {
- IconName::XCircle
+ IconName::ToolDiagnostics
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/edit_file_tool.rs b/crates/assistant_tools/src/edit_file_tool.rs
index baf62c11f2..0423f56145 100644
--- a/crates/assistant_tools/src/edit_file_tool.rs
+++ b/crates/assistant_tools/src/edit_file_tool.rs
@@ -139,7 +139,7 @@ impl Tool for EditFileTool {
}
fn icon(&self) -> IconName {
- IconName::Pencil
+ IconName::ToolPencil
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
@@ -783,8 +783,8 @@ impl ToolCard for EditFileToolCard {
.child(
h_flex()
.child(
- Icon::new(IconName::Pencil)
- .size(IconSize::XSmall)
+ Icon::new(IconName::ToolPencil)
+ .size(IconSize::Small)
.color(Color::Muted),
)
.child(
diff --git a/crates/assistant_tools/src/fetch_tool.rs b/crates/assistant_tools/src/fetch_tool.rs
index 82b15b7a86..c8fa600e83 100644
--- a/crates/assistant_tools/src/fetch_tool.rs
+++ b/crates/assistant_tools/src/fetch_tool.rs
@@ -130,7 +130,7 @@ impl Tool for FetchTool {
}
fn icon(&self) -> IconName {
- IconName::Globe
+ IconName::ToolWeb
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/find_path_tool.rs b/crates/assistant_tools/src/find_path_tool.rs
index 86e67a8f58..fd0e44e42c 100644
--- a/crates/assistant_tools/src/find_path_tool.rs
+++ b/crates/assistant_tools/src/find_path_tool.rs
@@ -68,7 +68,7 @@ impl Tool for FindPathTool {
}
fn icon(&self) -> IconName {
- IconName::SearchCode
+ IconName::ToolSearch
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
@@ -313,7 +313,7 @@ impl ToolCard for FindPathToolCard {
.mb_2()
.gap_1()
.child(
- ToolCallCardHeader::new(IconName::SearchCode, matches_label)
+ ToolCallCardHeader::new(IconName::ToolSearch, matches_label)
.with_code_path(&self.glob)
.disclosure_slot(
Disclosure::new("path-search-disclosure", self.expanded)
diff --git a/crates/assistant_tools/src/grep_tool.rs b/crates/assistant_tools/src/grep_tool.rs
index eb4c8d38e5..053273d71b 100644
--- a/crates/assistant_tools/src/grep_tool.rs
+++ b/crates/assistant_tools/src/grep_tool.rs
@@ -70,7 +70,7 @@ impl Tool for GrepTool {
}
fn icon(&self) -> IconName {
- IconName::Regex
+ IconName::ToolRegex
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/list_directory_tool.rs b/crates/assistant_tools/src/list_directory_tool.rs
index aef186b9ae..723416e2ce 100644
--- a/crates/assistant_tools/src/list_directory_tool.rs
+++ b/crates/assistant_tools/src/list_directory_tool.rs
@@ -58,7 +58,7 @@ impl Tool for ListDirectoryTool {
}
fn icon(&self) -> IconName {
- IconName::Folder
+ IconName::ToolFolder
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/project_notifications_tool.rs b/crates/assistant_tools/src/project_notifications_tool.rs
index 01dcbba4ac..168ec61ae9 100644
--- a/crates/assistant_tools/src/project_notifications_tool.rs
+++ b/crates/assistant_tools/src/project_notifications_tool.rs
@@ -31,7 +31,7 @@ impl Tool for ProjectNotificationsTool {
}
fn icon(&self) -> IconName {
- IconName::Envelope
+ IconName::ToolNotification
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/read_file_tool.rs b/crates/assistant_tools/src/read_file_tool.rs
index 4d40fc6a7c..65122a847a 100644
--- a/crates/assistant_tools/src/read_file_tool.rs
+++ b/crates/assistant_tools/src/read_file_tool.rs
@@ -68,7 +68,7 @@ impl Tool for ReadFileTool {
}
fn icon(&self) -> IconName {
- IconName::FileSearch
+ IconName::ToolSearch
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/terminal_tool.rs b/crates/assistant_tools/src/terminal_tool.rs
index 6641873182..03e76f6a5b 100644
--- a/crates/assistant_tools/src/terminal_tool.rs
+++ b/crates/assistant_tools/src/terminal_tool.rs
@@ -90,7 +90,7 @@ impl Tool for TerminalTool {
}
fn icon(&self) -> IconName {
- IconName::Terminal
+ IconName::ToolTerminal
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/thinking_tool.rs b/crates/assistant_tools/src/thinking_tool.rs
index 4641b7359e..422204f97d 100644
--- a/crates/assistant_tools/src/thinking_tool.rs
+++ b/crates/assistant_tools/src/thinking_tool.rs
@@ -37,7 +37,7 @@ impl Tool for ThinkingTool {
}
fn icon(&self) -> IconName {
- IconName::LightBulb
+ IconName::ToolBulb
}
fn input_schema(&self, format: LanguageModelToolSchemaFormat) -> Result {
diff --git a/crates/assistant_tools/src/ui/tool_call_card_header.rs b/crates/assistant_tools/src/ui/tool_call_card_header.rs
index a19ea8f2b7..b71453373f 100644
--- a/crates/assistant_tools/src/ui/tool_call_card_header.rs
+++ b/crates/assistant_tools/src/ui/tool_call_card_header.rs
@@ -82,7 +82,7 @@ impl RenderOnce for ToolCallCardHeader {
.child(
h_flex().h(line_height).justify_center().child(
Icon::new(self.icon)
- .size(IconSize::XSmall)
+ .size(IconSize::Small)
.color(Color::Muted),
),
)
diff --git a/crates/assistant_tools/src/web_search_tool.rs b/crates/assistant_tools/src/web_search_tool.rs
index 9430ac9d9e..24bc8e9cba 100644
--- a/crates/assistant_tools/src/web_search_tool.rs
+++ b/crates/assistant_tools/src/web_search_tool.rs
@@ -143,6 +143,8 @@ impl ToolCard for WebSearchToolCard {
_workspace: WeakEntity,
cx: &mut Context,
) -> impl IntoElement {
+ let icon = IconName::ToolWeb;
+
let header = match self.response.as_ref() {
Some(Ok(response)) => {
let text: SharedString = if response.results.len() == 1 {
@@ -150,13 +152,12 @@ impl ToolCard for WebSearchToolCard {
} else {
format!("{} results", response.results.len()).into()
};
- ToolCallCardHeader::new(IconName::Globe, "Searched the Web")
- .with_secondary_text(text)
+ ToolCallCardHeader::new(icon, "Searched the Web").with_secondary_text(text)
}
Some(Err(error)) => {
- ToolCallCardHeader::new(IconName::Globe, "Web Search").with_error(error.to_string())
+ ToolCallCardHeader::new(icon, "Web Search").with_error(error.to_string())
}
- None => ToolCallCardHeader::new(IconName::Globe, "Searching the Web").loading(),
+ None => ToolCallCardHeader::new(icon, "Searching the Web").loading(),
};
let content = self.response.as_ref().and_then(|response| match response {
diff --git a/crates/icons/src/icons.rs b/crates/icons/src/icons.rs
index 9848cc9cee..cbb7d69209 100644
--- a/crates/icons/src/icons.rs
+++ b/crates/icons/src/icons.rs
@@ -66,7 +66,6 @@ pub enum IconName {
Circle,
CircleOff,
CircleHelp,
- Clipboard,
Close,
Cloud,
Code,
@@ -118,7 +117,6 @@ pub enum IconName {
File,
FileCode,
FileCreate,
- FileDelete,
FileDiff,
FileDoc,
FileGeneric,
@@ -215,7 +213,6 @@ pub enum IconName {
Scissors,
Screen,
ScrollText,
- SearchCode,
SearchSelection,
SelectAll,
Send,
@@ -254,8 +251,12 @@ pub enum IconName {
ThumbsDown,
ThumbsUp,
ToolBulb,
+ ToolCopy,
+ ToolDeleteFile,
+ ToolDiagnostics,
ToolFolder,
ToolHammer,
+ ToolNotification,
ToolPencil,
ToolRegex,
ToolSearch,