diff --git a/src/components/chat/agent-selector.tsx b/src/components/chat/agent-selector.tsx index 209a087..91c96fb 100644 --- a/src/components/chat/agent-selector.tsx +++ b/src/components/chat/agent-selector.tsx @@ -31,6 +31,7 @@ export function AgentSelector({ const [selected, setSelected] = useState( defaultAgentType ?? null ) + const selectedRef = useRef(selected) const onSelectRef = useRef(onSelect) const onAgentsLoadedRef = useRef(onAgentsLoaded) @@ -58,23 +59,19 @@ export function AgentSelector({ const visible = sorted.filter((a) => a.enabled) setAgents(visible) onAgentsLoadedRef.current?.(visible) - if (defaultAgentType) { - const found = visible.find( - (a) => a.agent_type === defaultAgentType && a.available - ) - if (found) { - setSelected(found.agent_type) - } else { - const first = visible.find((a) => a.available) - if (first) { - setSelected(first.agent_type) - onSelectRef.current(first.agent_type) - } - } + // Keep current selection if still available; otherwise pick first. + const preferred = defaultAgentType ?? selectedRef.current + const found = preferred + ? visible.find((a) => a.agent_type === preferred && a.available) + : null + if (found) { + setSelected(found.agent_type) + selectedRef.current = found.agent_type } else { const first = visible.find((a) => a.available) if (first) { setSelected(first.agent_type) + selectedRef.current = first.agent_type onSelectRef.current(first.agent_type) } } @@ -119,6 +116,7 @@ export function AgentSelector({ const handleSelect = (agentType: AgentType) => { setSelected(agentType) + selectedRef.current = agentType onSelect(agentType) } diff --git a/src/components/conversations/conversation-detail-panel.tsx b/src/components/conversations/conversation-detail-panel.tsx index 74da482..c59cd01 100644 --- a/src/components/conversations/conversation-detail-panel.tsx +++ b/src/components/conversations/conversation-detail-panel.tsx @@ -866,7 +866,9 @@ const ConversationTabView = memo(function ConversationTabView({
{ setAgentsLoaded(true) @@ -917,7 +919,9 @@ const ConversationTabView = memo(function ConversationTabView({
{ setAgentsLoaded(true) diff --git a/src/contexts/folder-context.tsx b/src/contexts/folder-context.tsx index 2786458..7bdf0e7 100644 --- a/src/contexts/folder-context.tsx +++ b/src/contexts/folder-context.tsx @@ -25,7 +25,6 @@ interface SelectedConversation { } interface NewConversationState { - agentType: AgentType workingDir: string } @@ -44,7 +43,7 @@ interface FolderContextValue { clearSelection: () => void newConversation: NewConversationState | null - startNewConversation: (agentType: AgentType, workingDir: string) => void + startNewConversation: (workingDir: string) => void cancelNewConversation: () => void stats: AgentStats | null @@ -205,13 +204,10 @@ export function FolderProvider({ setSelectedConversation(null) }, []) - const startNewConversation = useCallback( - (agentType: AgentType, workingDir: string) => { - setNewConversation({ agentType, workingDir }) - setSelectedConversation(null) - }, - [] - ) + const startNewConversation = useCallback((workingDir: string) => { + setNewConversation({ workingDir }) + setSelectedConversation(null) + }, []) const cancelNewConversation = useCallback(() => { setNewConversation(null) diff --git a/src/contexts/tab-context.tsx b/src/contexts/tab-context.tsx index 41d985e..3915df4 100644 --- a/src/contexts/tab-context.tsx +++ b/src/contexts/tab-context.tsx @@ -322,7 +322,7 @@ export function TabProvider({ children }: TabProviderProps) { cancelNewConversation() return } - startNewConversation(tab.agentType, workingDir) + startNewConversation(workingDir) } }, [ @@ -588,7 +588,7 @@ export function TabProvider({ children }: TabProviderProps) { setTabs((prev) => [...prev, newTab]) setActiveTabId(tabId) - startNewConversation(agentType, workingDir) + startNewConversation(workingDir) activateConversationPane() }, [activateConversationPane, startNewConversation, syncFolderContext, t]