diff --git a/desktop/src/components/RightPanel.tsx b/desktop/src/components/RightPanel.tsx index 51cc828..0e2d776 100644 --- a/desktop/src/components/RightPanel.tsx +++ b/desktop/src/components/RightPanel.tsx @@ -179,7 +179,7 @@ export function RightPanel({ simpleMode = false }: RightPanelProps) { .catch(() => setUserProfile(null)); }, [currentAgent?.id]); - // Listen for profile updates after conversations + // Listen for profile updates after conversations (fired after memory extraction completes) useEffect(() => { const handler = (e: Event) => { const detail = (e as CustomEvent).detail; @@ -187,6 +187,8 @@ export function RightPanel({ simpleMode = false }: RightPanelProps) { invoke('agent_get', { agentId: currentAgent.id }) .then(data => setUserProfile(data?.userProfile ?? null)) .catch(() => {}); + // Refresh clones data so selectedClone (name, role, nickname, etc.) stays current + loadClones(); } }; window.addEventListener('zclaw:agent-profile-updated', handler); diff --git a/desktop/src/store/chat/streamStore.ts b/desktop/src/store/chat/streamStore.ts index 05fd157..710dadc 100644 --- a/desktop/src/store/chat/streamStore.ts +++ b/desktop/src/store/chat/streamStore.ts @@ -521,21 +521,24 @@ export const useStreamStore = create()( }); } - // Async memory extraction + // Async memory extraction — dispatch update event AFTER extraction completes const msgs = _chat?.getMessages() || []; const filtered = msgs .filter(m => m.role === 'user' || m.role === 'assistant') .map(m => ({ role: m.role, content: m.content })); const convId = useConversationStore.getState().currentConversationId; - getMemoryExtractor().extractFromConversation(filtered, agentId, convId ?? undefined).catch(err => { - log.warn('Memory extraction failed:', err); - }); - // Notify RightPanel to refresh UserProfile after memory extraction - if (typeof window !== 'undefined') { - window.dispatchEvent(new CustomEvent('zclaw:agent-profile-updated', { - detail: { agentId } - })); - } + getMemoryExtractor().extractFromConversation(filtered, agentId, convId ?? undefined) + .then(() => { + // Notify RightPanel to refresh UserProfile after memory extraction completes + if (typeof window !== 'undefined') { + window.dispatchEvent(new CustomEvent('zclaw:agent-profile-updated', { + detail: { agentId } + })); + } + }) + .catch(err => { + log.warn('Memory extraction failed:', err); + }); intelligenceClient.reflection.recordConversation().catch(err => { log.warn('Recording conversation failed:', err); });