diff --git a/apps/web/components/chat/index.tsx b/apps/web/components/chat/index.tsx index 4f67a318..4a148929 100644 --- a/apps/web/components/chat/index.tsx +++ b/apps/web/components/chat/index.tsx @@ -164,8 +164,11 @@ export function ChatSidebar({ const isMobile = useIsMobile() const isPageDesktop = layout === "page" && !isMobile const [input, setInput] = useState("") - const [selectedModel, setSelectedModel] = - useState("claude-sonnet-4.6") + const [selectedModel, setSelectedModel] = useState( + initialSelectedModel ?? "claude-sonnet-4.6", + ) + const selectedModelRef = useRef(selectedModel) + selectedModelRef.current = selectedModel const [copiedMessageId, setCopiedMessageId] = useState(null) const [hoveredMessageId, setHoveredMessageId] = useState(null) const [messageFeedback, setMessageFeedback] = useState< @@ -187,6 +190,8 @@ export function ChatSidebar({ const sentQueuedMessageRef = useRef(null) const { selectedProject } = useProject() const { allProjects } = useContainerTags() + const selectedProjectRef = useRef(selectedProject) + selectedProjectRef.current = selectedProject const chatSpaceLabel = useMemo( () => getChatSpaceDisplayLabel({ @@ -206,23 +211,26 @@ export function ChatSidebar({ (id: string) => setThreadId(id), [setThreadId], ) + const chatApiBase = + process.env.NEXT_PUBLIC_BACKEND_URL ?? "https://api.supermemory.ai" + const chatTransport = useMemo( () => new DefaultChatTransport({ - api: `${process.env.NEXT_PUBLIC_BACKEND_URL ?? "https://api.supermemory.ai"}/chat`, + api: `${chatApiBase}/chat`, credentials: "include", prepareSendMessagesRequest: ({ messages }) => ({ body: { messages, metadata: { chatId: chatIdRef.current, - projectId: selectedProject, - model: selectedModel, + projectId: selectedProjectRef.current, + model: selectedModelRef.current, }, }, }), }), - [selectedProject, selectedModel], + [chatApiBase], ) const [pendingThreadLoad, setPendingThreadLoad] = useState<{ id: string @@ -502,6 +510,10 @@ export function ChatSidebar({ status !== "streaming" && sentQueuedMessageRef.current !== queuedMessage ) { + if (initialSelectedModel && selectedModel !== initialSelectedModel) { + setSelectedModel(initialSelectedModel) + return + } sentQueuedMessageRef.current = queuedMessage if (!threadId) setThreadId(fallbackChatId) analytics.chatMessageSent({ source: queuedMessageSource }) @@ -512,6 +524,8 @@ export function ChatSidebar({ isChatOpen, queuedMessage, queuedMessageSource, + initialSelectedModel, + selectedModel, status, sendMessage, onConsumeQueuedMessage,