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 <noreply@anthropic.com>
This commit is contained in:
Wes
2026-05-14 14:58:10 -07:00
parent 7156294d78
commit b06f393ec1
2 changed files with 11 additions and 3 deletions

View File

@@ -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((

View File

@@ -154,7 +154,7 @@ export const MessageRow = React.memo(
{respondToIcon ? (
<span
className={cn(
"absolute -right-0.5 flex items-center justify-center rounded-full bg-background text-muted-foreground",
"absolute -left-0.5 flex items-center justify-center rounded-full bg-background text-muted-foreground",
isSmall ? "-top-0.5 h-3 w-3" : "-top-0.5 h-3.5 w-3.5",
)}
title={respondToIcon.title}