From e723ecc54053be926905dd2453b94d0f61a4cdf3 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 03:51:34 +0000 Subject: [PATCH] feat: persist model selection in localStorage Store and retrieve model selection from localStorage instead of session memory to maintain model choice across app restarts. Preserves existing chat-specific model logic and method signatures. Co-authored-by: Anthony --- frontend/src/state/LocalStateContext.tsx | 26 ++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/src/state/LocalStateContext.tsx b/frontend/src/state/LocalStateContext.tsx index bd6d7751e..9d92bacdf 100644 --- a/frontend/src/state/LocalStateContext.tsx +++ b/frontend/src/state/LocalStateContext.tsx @@ -28,7 +28,16 @@ export const LocalStateProvider = ({ children }: { children: React.ReactNode }) userPrompt: "", systemPrompt: null as string | null, userImages: [] as File[], - model: aliasModelName(import.meta.env.VITE_DEV_MODEL_OVERRIDE) || DEFAULT_MODEL_ID, + model: + aliasModelName(import.meta.env.VITE_DEV_MODEL_OVERRIDE) || + (() => { + try { + return localStorage.getItem("selectedModel") || DEFAULT_MODEL_ID; + } catch (error) { + console.error("Failed to load model from localStorage:", error); + return DEFAULT_MODEL_ID; + } + })(), availableModels: [llamaModel] as OpenSecretModel[], billingStatus: null as BillingStatus | null, searchQuery: "", @@ -260,9 +269,18 @@ export const LocalStateProvider = ({ children }: { children: React.ReactNode }) function setModel(model: string) { const aliasedModel = aliasModelName(model); - setLocalState((prev) => - prev.model === aliasedModel ? prev : { ...prev, model: aliasedModel } - ); + setLocalState((prev) => { + if (prev.model === aliasedModel) return prev; + + // Save to localStorage when model changes + try { + localStorage.setItem("selectedModel", aliasedModel); + } catch (error) { + console.error("Failed to save model to localStorage:", error); + } + + return { ...prev, model: aliasedModel }; + }); } function setAvailableModels(models: OpenSecretModel[]) {