From 3fa23d16c613e3de30014fbea7eb2198222a4665 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Fri, 26 Jun 2026 07:57:36 +0200 Subject: [PATCH] fix: only suggest model upgrades for active roles on dashboard --- backend/services/maintenance.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/backend/services/maintenance.py b/backend/services/maintenance.py index 2e6d4e7..bf75ebb 100644 --- a/backend/services/maintenance.py +++ b/backend/services/maintenance.py @@ -57,15 +57,24 @@ def _engine_update_available() -> bool: def model_upgrades() -> list[dict]: - """Dynamisch: je discover-Kategorie das empfohlene Modell, das NOCH NICHT installiert ist + """Dynamisch: je discover-Kategorie das empfohlene Modell, das NOCH NICHT installiert ist, + aber NUR wenn für diese Rolle bereits irgendein Modell konfiguriert ist. → Upgrade-Vorschlag für diese Rolle. Self-updating (kein Hardcode wie v1).""" disc = discover.safe_discover(_ram_gb()) if not disc: return [] + + installed = llamaswap.list_models() + active_roles = {m["role"] for m in installed if m.get("role")} + cmds = " ".join(str(s.get("cmd", "")).lower() for s in (llamaswap.read_config().get("models") or {}).values()) out = [] for c in disc.get("categories", []): + role = c["role"] + if role not in active_roles: + continue + rec = c.get("recommended") if not rec: continue @@ -73,7 +82,7 @@ def model_upgrades() -> list[dict]: stem = base[:-5] if base.endswith("-gguf") else base if base in cmds or (stem and stem in cmds): continue - out.append({"role": c["role"], "title": c["title"], "repo": rec}) + out.append({"role": role, "title": c["title"], "repo": rec}) return out