diff --git a/frontend/src/components/ui-new/containers/SessionChatBoxContainer.tsx b/frontend/src/components/ui-new/containers/SessionChatBoxContainer.tsx index 60d99e0d..1d705994 100644 --- a/frontend/src/components/ui-new/containers/SessionChatBoxContainer.tsx +++ b/frontend/src/components/ui-new/containers/SessionChatBoxContainer.tsx @@ -6,6 +6,7 @@ import { type BaseCodingAgent, } from 'shared/types'; import { useAttemptExecution } from '@/hooks/useAttemptExecution'; +import { useExecutionProcesses } from '@/hooks/useExecutionProcesses'; import { useUserSystem } from '@/components/ConfigProvider'; import { useApprovalFeedbackOptional } from '@/contexts/ApprovalFeedbackContext'; import { useMessageEditContext } from '@/contexts/MessageEditContext'; @@ -176,21 +177,23 @@ export function SessionChatBoxContainer({ // User profiles, config preference, and latest executor from processes const { profiles, config } = useUserSystem(); - // Get last used executor from the most recently used session in this workspace - const lastSessionExecutor = useMemo(() => { - if (!sessions?.length) return null; - // Sessions are sorted by most recently used (first is most recent) - const mostRecentSession = sessions[0]; - return mostRecentSession?.executor ?? null; - }, [sessions]); + // Fetch processes from last session to get full profile (only in new session mode) + const lastSessionId = isNewSessionMode ? sessions?.[0]?.id : undefined; + const { executionProcesses: lastSessionProcesses } = + useExecutionProcesses(lastSessionId); - // Compute latestProfileId: from processes, or fall back to last session's executor + // Compute latestProfileId: current processes > last session processes > session metadata const latestProfileId = useMemo(() => { - // If we have processes (existing session), use them + // Current session's processes take priority const fromProcesses = getLatestProfileFromProcesses(processes); if (fromProcesses) return fromProcesses; - // Fall back to last session's executor (useful for new session mode) + // Try full profile from last session's processes (includes variant) + const fromLastSession = getLatestProfileFromProcesses(lastSessionProcesses); + if (fromLastSession) return fromLastSession; + + // Fallback: just executor from session metadata, no variant + const lastSessionExecutor = sessions?.[0]?.executor; if (lastSessionExecutor) { return { executor: lastSessionExecutor as BaseCodingAgent, @@ -199,7 +202,7 @@ export function SessionChatBoxContainer({ } return null; - }, [processes, lastSessionExecutor]); + }, [processes, lastSessionProcesses, sessions]); // Message editor state const {