From 7d83de23f4f0f727c52dfd3f10829e308c986126 Mon Sep 17 00:00:00 2001 From: techjarves Date: Sat, 13 Jun 2026 16:29:04 +0530 Subject: [PATCH] feat: add ModelManager component for local model discovery, downloading, and backend status tracking --- app/frontend/src/components/ModelManager.jsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/frontend/src/components/ModelManager.jsx b/app/frontend/src/components/ModelManager.jsx index 179de5b..6b858fd 100644 --- a/app/frontend/src/components/ModelManager.jsx +++ b/app/frontend/src/components/ModelManager.jsx @@ -81,6 +81,7 @@ const OPENVINO_MODEL_LIBRARY = [ function ModelManager({ activeModel, setActiveModel, serverRunning, setServerRunning, constraints, backendOptions, showAlert = async ({ message }) => window.alert(message), showConfirm = async ({ message }) => window.confirm(message) }) { const [localModels, setLocalModels] = useState([]); + const [isLoadingModels, setIsLoadingModels] = useState(true); const [downloadingModelId, setDownloadingModelId] = useState(null); const [downloadProgress, setDownloadProgress] = useState(0); const [downloadSpeed, setDownloadSpeed] = useState(""); @@ -171,11 +172,14 @@ function ModelManager({ activeModel, setActiveModel, serverRunning, setServerRun }; const fetchModels = async () => { + setIsLoadingModels(true); try { const list = await listLocalModels(); setLocalModels(list.map(normalizeModel).filter((model) => model.filename)); } catch (e) { console.error(e); + } finally { + setIsLoadingModels(false); } }; @@ -628,7 +632,12 @@ function ModelManager({ activeModel, setActiveModel, serverRunning, setServerRun Local Models ({localModels.length}) - {localModels.length === 0 ? ( + {isLoadingModels ? ( +
+ + Scanning models folder... +
+ ) : localModels.length === 0 ? (

No models detected in app/models/. Download from the library below or import a file.