Dashboard-Korrektur-Popup, Worker-Tab mit Live-Ping, Herzschlag, Anzeige-Fixes
Ampel / ampel (push) Failing after 29s

Commander-Wuensche (23.07. Nacht):
- "Nicht korrekt?!"-Knopf direkt an der Disc-Karte: Korrektur-Suche als
  Popup (MetadataKorrektur) — kein Seitenwechsel mehr noetig; Wahl gilt
  per Disc-Fingerabdruck weiter 30 Tage
- Einstellungen -> Worker: verbundene Encoding-Maschinen mit ECHTER
  Erreichbarkeit (Celery-Ping + minuetlicher Herzschlag/last_seen),
  Encoder-Badges, Copy-Paste-Anbindung fuer neue Maschinen
  (Linux/Docker + Docker Desktop; SSH-Ein-Klick als Ausbaustufe)
- JSX-0-Falle gefixt: {0 && ...} renderte nackte "0" unter GENRE/LAUFZEIT
- ruff.toml: Regelsatz gepinnt — lokal aktualisierte Ruff-Version zog
  ploetzlich Stilregeln und faerbte den Baum rot; Ampel und lokal
  urteilen jetzt identisch

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-24 08:18:44 +02:00
parent 6b7d391737
commit 6517644d1f
8 changed files with 358 additions and 19 deletions
+19 -3
View File
@@ -377,12 +377,28 @@ async def cancel_job(job_id: str):
@app.get("/capabilities")
async def capabilities():
"""Welche Encoder sind auf welchen Workern WIRKLICH verfügbar?
"""Welche Encoder sind auf welchen Workern WIRKLICH verfügbar — inkl.
Live-Erreichbarkeit (Celery-Ping + Herzschlag-Alter).
Jeder Worker meldet sich beim Start selbst (caps.py) — auch optionale
Jeder Worker meldet sich selbst (caps.py, minütlich) — auch optionale
Remote-GPU-Worker tauchen hier automatisch auf.
"""
return {"workers": await asyncio.to_thread(db.list_workers)}
def sammle():
zeilen = db.list_workers()
try:
antworten = celery_client.control.ping(timeout=1.0) or []
online_namen = {
knoten.split("@", 1)[-1]
for antwort in antworten
for knoten in antwort.keys()
}
except Exception:
online_namen = set()
for zeile in zeilen:
zeile["online"] = zeile["name"] in online_namen
return zeilen
return {"workers": await asyncio.to_thread(sammle)}
class MountRequest(BaseModel):