diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 513d346bd..77f2fd6a1 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -685,10 +685,16 @@ ////////////////////////// const initNewChat = async () => { - if ($page.url.searchParams.get('models')) { - selectedModels = $page.url.searchParams.get('models')?.split(','); - } else if ($page.url.searchParams.get('model')) { - const urlModels = $page.url.searchParams.get('model')?.split(','); + const availableModels = $models + .filter((m) => !(m?.info?.meta?.hidden ?? false)) + .map((m) => m.id); + + if ($page.url.searchParams.get('models') || $page.url.searchParams.get('model')) { + const urlModels = ( + $page.url.searchParams.get('models') || + $page.url.searchParams.get('model') || + '' + )?.split(','); if (urlModels.length === 1) { const m = $models.find((m) => m.id === urlModels[0]); @@ -711,6 +717,10 @@ } else { selectedModels = urlModels; } + + selectedModels = selectedModels.filter((modelId) => + $models.map((m) => m.id).includes(modelId) + ); } else { if (sessionStorage.selectedModels) { selectedModels = JSON.parse(sessionStorage.selectedModels); @@ -723,12 +733,12 @@ selectedModels = $config?.default_models.split(','); } } + selectedModels = selectedModels.filter((modelId) => availableModels.includes(modelId)); } - selectedModels = selectedModels.filter((modelId) => $models.map((m) => m.id).includes(modelId)); if (selectedModels.length === 0 || (selectedModels.length === 1 && selectedModels[0] === '')) { - if ($models.length > 0) { - selectedModels = [$models[0].id]; + if (availableModels.length > 0) { + selectedModels = [availableModels?.at(0) ?? '']; } else { selectedModels = ['']; }