diff --git a/diagnostic/index.html b/diagnostic/index.html
index 5248363..e028a77 100644
--- a/diagnostic/index.html
+++ b/diagnostic/index.html
@@ -168,7 +168,7 @@
@@ -3829,13 +3829,19 @@
text = `${labels[s] || s}: bereit${info.model ? ' ' + info.model : ''}${sec}${downloadedHint}`;
} else if (info.state === 'error') {
dot = '❌'; color = '#FF3B30'; anyError = true;
- text = `${labels[s] || s}: Fehler ${info.error || ''}`;
+ // httpx haengt an jeden Fehler "For more information check: "
+ // — kostet den halben Platz und erklaert nichts.
+ const err = String(info.error || '').replace(/\s*For more information check:\s*\S+/gi, '').trim();
+ text = `${labels[s] || s}: Fehler ${escapeHtml(err)}`;
} else {
text = `${labels[s] || s}: ${info.state}`;
}
- row.innerHTML = `${dot}${text}`;
+ row.innerHTML = `${dot}${text}`;
list.appendChild(row);
}
+ // Nur eine Meldung: das grosse Symbol links sagt schon alles — sonst
+ // stuende z.B. das ❌ doppelt da.
+ if (list.children.length === 1) list.querySelector('.svc-dot').style.display = 'none';
// Icon spiegelt Gesamt-Status
if (anyError) icon.innerHTML = '❌';
@@ -3844,20 +3850,27 @@
banner.style.display = 'block';
- // Wenn alles ready (kein Loading, kein Error): X-Button anzeigen
- // + nach 8s automatisch wegfaden
+ // X immer da — auch (gerade) bei Fehlern. Alles ready → nach 8 s von selbst weg.
+ closeBtn.style.display = 'block';
+ clearTimeout(_serviceFadeTimer);
if (!anyLoading && !anyError) {
- closeBtn.style.display = 'block';
- clearTimeout(_serviceFadeTimer);
_serviceFadeTimer = setTimeout(() => {
banner.style.display = 'none';
}, 8000);
- } else {
- closeBtn.style.display = 'none';
- clearTimeout(_serviceFadeTimer);
}
}
+ // Wegklicken: Fehler und Fertig-Meldungen vergessen, sonst kaemen sie mit
+ // der naechsten Statusmeldung eines anderen Dienstes gleich wieder hoch.
+ // Was noch laedt, bleibt gemerkt und zeigt sich beim naechsten Update.
+ function dismissServiceStatus() {
+ for (const [k, v] of Object.entries(_serviceState)) {
+ if (v.state !== 'loading') delete _serviceState[k];
+ }
+ clearTimeout(_serviceFadeTimer);
+ document.getElementById('service-status-banner').style.display = 'none';
+ }
+
function updateThinkingIndicator(msg) {
// Gedanken-Stream fuettern — JEDES Event (auch idle als ✓ fertig)
pushThought(msg.activity || '', msg.tool || '');
diff --git a/xtts/llm-adapter/adapter.py b/xtts/llm-adapter/adapter.py
index dfe9a90..484e926 100644
--- a/xtts/llm-adapter/adapter.py
+++ b/xtts/llm-adapter/adapter.py
@@ -362,7 +362,9 @@ async def _call_llama(messages: list, *, max_tokens: int, temperature: float,
}
except Exception as e:
logger.warning("llama.cpp-Call fehlgeschlagen: %s", e)
- return {"ok": False, "content": "", "error": str(e)[:300]}
+ # httpx haengt "For more information check: " an — fuer niemanden hilfreich.
+ msg = re.sub(r"\s*For more information check:\s*\S+", "", str(e)).strip()
+ return {"ok": False, "content": "", "error": msg[:300]}
# B0.5-2: Lade-Status ans Diagnostic (service_status, service="llm"). Wir kennen