From b06f393ec12e9f744bcdfccf3038b2296491e5d6 Mon Sep 17 00:00:00 2001 From: Wes Date: Thu, 14 May 2026 14:58:10 -0700 Subject: [PATCH] fix: resolve persona avatar in update path, move responds-to icon to top-left Fix 1: In agent_models.rs, the update_managed_agent profile sync was always using the provider avatar via managed_agent_avatar_url(). Now checks persona_id first and uses the persona's avatar_url when present, falling back to the provider avatar. Mirrors the pattern in agents.rs creation path. Fix 2: In MessageRow.tsx, move the responds-to indicator overlay from top-right (-right-0.5) to top-left (-left-0.5) so it doesn't collide with the presence dot at bottom-right. Co-Authored-By: Claude Opus 4.6 --- desktop/src-tauri/src/commands/agent_models.rs | 12 ++++++++++-- desktop/src/features/messages/ui/MessageRow.tsx | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/desktop/src-tauri/src/commands/agent_models.rs b/desktop/src-tauri/src/commands/agent_models.rs index 9b4966abf1..79df29707b 100644 --- a/desktop/src-tauri/src/commands/agent_models.rs +++ b/desktop/src-tauri/src/commands/agent_models.rs @@ -7,7 +7,7 @@ use crate::{ app_state::AppState, managed_agents::{ build_managed_agent_summary, default_agent_workdir, find_managed_agent_mut, - load_managed_agents, managed_agent_avatar_url, missing_command_message, + load_managed_agents, load_personas, managed_agent_avatar_url, missing_command_message, normalize_agent_args, resolve_command, save_managed_agents, sync_managed_agent_processes, AgentModelInfo, AgentModelsResponse, UpdateManagedAgentRequest, UpdateManagedAgentResponse, }, @@ -213,7 +213,15 @@ pub async fn update_managed_agent( .map_err(|e| format!("failed to parse agent keys: {e}"))?; let relay_url = record.relay_url.clone(); let display_name = record.name.clone(); - let avatar_url = managed_agent_avatar_url(&record.agent_command); + let avatar_url = record + .persona_id + .as_deref() + .and_then(|pid| { + let personas = load_personas(&app).ok()?; + let persona = personas.iter().find(|p| p.id == pid)?; + persona.avatar_url.clone() + }) + .or_else(|| managed_agent_avatar_url(&record.agent_command)); let auth_tag = record.auth_tag.clone(); let respond_to = record.respond_to.as_str().to_string(); Some(( diff --git a/desktop/src/features/messages/ui/MessageRow.tsx b/desktop/src/features/messages/ui/MessageRow.tsx index f69f0dab87..2471f4e957 100644 --- a/desktop/src/features/messages/ui/MessageRow.tsx +++ b/desktop/src/features/messages/ui/MessageRow.tsx @@ -154,7 +154,7 @@ export const MessageRow = React.memo( {respondToIcon ? (