From 8ec4a36826d5df98500f367e7caec3b9c2e452ce Mon Sep 17 00:00:00 2001 From: Akarshan Biswas Date: Sat, 26 Jul 2025 07:18:29 +0530 Subject: [PATCH] fix: Frontend updates when llama.cpp backend auto-downloads (#5926) --- extensions/llamacpp-extension/src/index.ts | 11 +++++++++++ .../routes/settings/providers/$providerName.tsx | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/extensions/llamacpp-extension/src/index.ts b/extensions/llamacpp-extension/src/index.ts index 13322bbe5..2eb0685e7 100644 --- a/extensions/llamacpp-extension/src/index.ts +++ b/extensions/llamacpp-extension/src/index.ts @@ -615,6 +615,17 @@ export default class llamacpp_extension extends AIEngine { `Successfully updated to backend: ${targetBackendString} (preserved backend type: ${currentBackend})` ) + // Emit for updating fe + if (events && typeof events.emit === 'function') { + logger.info( + `Emitting settingsChanged event for version_backend with value: ${targetBackendString}` + ) + events.emit('settingsChanged', { + key: 'version_backend', + value: targetBackendString, + }) + } + // Clean up old versions of the same backend type if (IS_WINDOWS) { await new Promise((resolve) => setTimeout(resolve, 500)) diff --git a/web-app/src/routes/settings/providers/$providerName.tsx b/web-app/src/routes/settings/providers/$providerName.tsx index 4b437ac71..4d63a987f 100644 --- a/web-app/src/routes/settings/providers/$providerName.tsx +++ b/web-app/src/routes/settings/providers/$providerName.tsx @@ -37,6 +37,7 @@ import { IconFolderPlus, IconLoader, IconRefresh } from '@tabler/icons-react' import { getProviders } from '@/services/providers' import { toast } from 'sonner' import { useEffect, useState } from 'react' +import { events } from '@janhq/core' import { predefinedProviders } from '@/consts/providers' import { useModelLoad } from '@/hooks/useModelLoad' import { useLlamacppDevices } from '@/hooks/useLlamacppDevices' @@ -130,6 +131,19 @@ function ProviderDetail() { } }, [provider, needsBackendConfig]) + // Listen for settingsChanged event and refresh backend list if version_backend changes + useEffect(() => { + const handler = (event: { key: string; value: string }) => { + if (event.key === 'version_backend') { + refreshSettings() + } + } + events.on('settingsChanged', handler) + return () => { + events.off('settingsChanged', handler) + } + }, [provider]) + // Auto-refresh models for non-predefined providers useEffect(() => { if (