agent: Show project name in the Agent notification (#29211)

Release Notes:

- agent: Added the project name in the Agent Panel notification.
This commit is contained in:
Danilo Leal 2025-04-22 10:41:03 -03:00 committed by GitHub
parent 19b547565d
commit 36da97935a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 40 additions and 2 deletions

View file

@ -1093,9 +1093,21 @@ impl ActiveThread {
) { ) {
let options = AgentNotification::window_options(screen, cx); let options = AgentNotification::window_options(screen, cx);
let project_name = self.workspace.upgrade().and_then(|workspace| {
workspace
.read(cx)
.project()
.read(cx)
.visible_worktrees(cx)
.next()
.map(|worktree| worktree.read(cx).root_name().to_string())
});
if let Some(screen_window) = cx if let Some(screen_window) = cx
.open_window(options, |_, cx| { .open_window(options, |_, cx| {
cx.new(|_| AgentNotification::new(title.clone(), caption.clone(), icon)) cx.new(|_| {
AgentNotification::new(title.clone(), caption.clone(), icon, project_name)
})
}) })
.log_err() .log_err()
{ {

View file

@ -12,6 +12,7 @@ pub struct AgentNotification {
title: SharedString, title: SharedString,
caption: SharedString, caption: SharedString,
icon: IconName, icon: IconName,
project_name: Option<SharedString>,
} }
impl AgentNotification { impl AgentNotification {
@ -19,11 +20,13 @@ impl AgentNotification {
title: impl Into<SharedString>, title: impl Into<SharedString>,
caption: impl Into<SharedString>, caption: impl Into<SharedString>,
icon: IconName, icon: IconName,
project_name: Option<impl Into<SharedString>>,
) -> Self { ) -> Self {
Self { Self {
title: title.into(), title: title.into(),
caption: caption.into(), caption: caption.into(),
icon, icon,
project_name: project_name.map(|name| name.into()),
} }
} }
@ -130,11 +133,34 @@ impl Render for AgentNotification {
.child(gradient_overflow()), .child(gradient_overflow()),
) )
.child( .child(
div() h_flex()
.relative() .relative()
.gap_1p5()
.text_size(px(12.)) .text_size(px(12.))
.text_color(cx.theme().colors().text_muted) .text_color(cx.theme().colors().text_muted)
.truncate() .truncate()
.when_some(
self.project_name.clone(),
|description, project_name| {
description.child(
h_flex()
.gap_1p5()
.child(
div()
.max_w_16()
.truncate()
.child(project_name),
)
.child(
div().size(px(3.)).rounded_full().bg(cx
.theme()
.colors()
.text
.opacity(0.5)),
),
)
},
)
.child(self.caption.clone()) .child(self.caption.clone())
.child(gradient_overflow()), .child(gradient_overflow()),
), ),