From d6ad797769683031116ca55cd464e3e61b3f58ac Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 23 Jul 2025 20:04:38 +0700 Subject: [PATCH] fix: llama.cpp backend shows blank list sometime (#5876) --- core/src/browser/extension.ts | 4 ++++ web-app/src/hooks/useModelProvider.ts | 24 ++++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/core/src/browser/extension.ts b/core/src/browser/extension.ts index 01d16c988..3f3148e8f 100644 --- a/core/src/browser/extension.ts +++ b/core/src/browser/extension.ts @@ -128,6 +128,10 @@ export abstract class BaseExtension implements ExtensionType { setting.controllerProps.value = oldSettings.find( (e: any) => e.key === setting.key )?.controllerProps?.value + if ('options' in setting.controllerProps) + setting.controllerProps.options = setting.controllerProps.options?.length + ? setting.controllerProps.options + : oldSettings.find((e: any) => e.key === setting.key)?.controllerProps?.options }) } localStorage.setItem(this.name, JSON.stringify(settings)) diff --git a/web-app/src/hooks/useModelProvider.ts b/web-app/src/hooks/useModelProvider.ts index 5d32565c1..2e2d1be4a 100644 --- a/web-app/src/hooks/useModelProvider.ts +++ b/web-app/src/hooks/useModelProvider.ts @@ -36,16 +36,20 @@ export const useModelProvider = create()( }, setProviders: (providers) => set((state) => { - const existingProviders = state.providers.map((provider) => { - return { - ...provider, - models: provider.models.filter( - (e) => - ('id' in e || 'model' in e) && - typeof (e.id ?? e.model) === 'string' - ), - } - }) + const existingProviders = state.providers + // Filter out legacy llama.cpp provider for migration + // Can remove after a couple of releases + .filter((e) => e.provider !== 'llama.cpp') + .map((provider) => { + return { + ...provider, + models: provider.models.filter( + (e) => + ('id' in e || 'model' in e) && + typeof (e.id ?? e.model) === 'string' + ), + } + }) // Ensure deletedModels is always an array const currentDeletedModels = Array.isArray(state.deletedModels) ? state.deletedModels