fix(diagnostic): Status-Meldung unten rechts immer wegklickbar
Das X war absichtlich versteckt, sobald ein Dienst einen Fehler meldete — es erschien nur, wenn alles gruen war. Gerade eine Fehlermeldung blieb also stehen. Jetzt ist das X immer da; Wegklicken vergisst Fehler- und Fertig-Meldungen (sonst kaemen sie mit der naechsten Statusmeldung eines anderen Dienstes wieder hoch), ein laufender Ladevorgang darf wiederkommen. Dazu: httpx haengt an jeden Fehler "For more information check: <Mozilla- Link>" — raus, in der Anzeige und im llm-adapter an der Quelle. Bei nur einer Meldung stand das ❌ doppelt (grosses Symbol + Zeile) — jetzt einmal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+23
-10
@@ -168,7 +168,7 @@
|
||||
<div style="display:flex;align-items:flex-start;gap:8px;">
|
||||
<span id="service-status-icon" style="font-size:18px;line-height:1;">⏳</span>
|
||||
<div id="service-status-list" style="flex:1;display:flex;flex-direction:column;gap:6px;"></div>
|
||||
<button id="service-status-close" onclick="document.getElementById('service-status-banner').style.display='none'" style="background:none;border:none;color:#666680;font-size:16px;cursor:pointer;padding:0;line-height:1;display:none;">×</button>
|
||||
<button id="service-status-close" onclick="dismissServiceStatus()" title="Schließen" style="background:none;border:none;color:#8888AA;font-size:18px;cursor:pointer;padding:0 2px;line-height:1;">×</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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: <mozilla-Link>"
|
||||
// — 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 = `<span style="color:${color}">${dot}</span><span>${text}</span>`;
|
||||
row.innerHTML = `<span class="svc-dot" style="color:${color}">${dot}</span><span>${text}</span>`;
|
||||
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 || '');
|
||||
|
||||
@@ -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: <Link>" 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
|
||||
|
||||
Reference in New Issue
Block a user