diff --git a/templates/index.html b/templates/index.html
index d7de7a9..df0ee9f 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -272,41 +272,51 @@
const provider = providerSelect.value;
- // Sichtbarkeit umschalten
+ // URL-Feld nur bei Ollama einblenden
if (provider === "ollama") {
urlContainer.style.display = "flex";
-
- // AUTOMATIK: Modelle von Ollama abrufen
- const baseUrl = ollamaUrlInput.value.replace(/\/v1\/?$/, ''); // Entfernt /v1 für den API-Check
- if (baseUrl) {
- try {
- const response = await fetch(`${baseUrl}/api/tags`);
- const data = await response.json();
-
- modelSelect.innerHTML = '';
- data.models.forEach(m => {
- const opt = document.createElement('option');
- opt.value = m.name; // Nimmt den exakten Namen inkl. Tag (z.B. gemma3:4b)
- opt.textContent = m.name;
- modelSelect.appendChild(opt);
- });
- console.log("Ollama Modelle geladen:", data.models);
- } catch (e) {
- console.error("Konnte Ollama Modelle nicht laden:", e);
- // Fallback auf die statische Liste, falls der Server offline ist
- fillStaticModels(provider, modelSelect);
- }
- }
} else {
urlContainer.style.display = "none";
+ }
+
+ // Lade-Indikator setzen, damit du siehst, dass etwas passiert
+ modelSelect.innerHTML = '';
+
+ try {
+ // Wir fragen jetzt DEIN Backend, nicht die Anbieter direkt!
+ // Wir schicken die Provider-Wahl und (falls Ollama) die URL mit.
+ const targetUrl = (provider === "ollama") ? ollamaUrlInput.value : "";
+
+ const response = await fetch(`/api/models?provider=${provider}&url=${encodeURIComponent(targetUrl)}`);
+
+ if (!response.ok) throw new Error("Backend antwortet nicht korrekt");
+
+ const data = await response.json();
+
+ modelSelect.innerHTML = ''; // Lade-Text entfernen
+
+ // Wenn das Backend Modelle liefert, füllen wir das Dropdown
+ if (data.models && data.models.length > 0) {
+ data.models.forEach(m => {
+ const opt = document.createElement('option');
+ opt.value = m;
+ opt.textContent = m;
+ modelSelect.appendChild(opt);
+ });
+ } else {
+ // Fallback, falls die Liste leer ist
+ fillStaticModels(provider, modelSelect);
+ }
+ } catch (e) {
+ console.error("Konnte Modelle nicht laden, nutze Standard-Liste:", e);
fillStaticModels(provider, modelSelect);
}
- // Gespeicherten Wert setzen (nur beim ersten Laden)
+ // Gespeichertes Modell wiederherstellen (beim Neuladen der Seite)
if (isInitialLoad && currentSettings) {
const savedModel = currentSettings[`${provider}_model`];
if (savedModel) {
- // Falls das Modell noch nicht im Dropdown ist (weil es neu geladen wurde), hinzufügen
+ // Falls das gespeicherte Modell nicht in der Liste ist, fügen wir es an
if (!Array.from(modelSelect.options).some(opt => opt.value === savedModel)) {
const opt = document.createElement('option');
opt.value = savedModel;