diff --git a/diagnostic/index.html b/diagnostic/index.html
index 7f09b8f..bebc038 100644
--- a/diagnostic/index.html
+++ b/diagnostic/index.html
@@ -960,6 +960,12 @@
den Fortschritt. Danach ist es im Modell-Dropdown oben waehlbar.
Achte auf den VRAM der Box (Spalte VRAM).
+
+
+
+
+
(lade Katalog…)
@@ -10206,6 +10212,35 @@
'
' + act + '
';
}).join('') + '';
}
+ // Modell per Link/Repo in den Katalog. Ohne GGUF: GGUF-Fassungen vorschlagen.
+ async function addCatalogByLink(repo) {
+ const inp = document.getElementById('llm-catalog-add');
+ const out = document.getElementById('llm-catalog-add-result');
+ const val = repo || (inp.value || '').trim();
+ if (!val) return;
+ out.innerHTML = 'Prüfe ' + escapeHtml(val) + ' auf HuggingFace …';
+ try {
+ const j = await (await fetch('/api/llm-catalog/add', { method: 'POST', headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ hfRepo: val, manual: true }) })).json();
+ if (j.ok) {
+ _llmCatalog = j.models || _llmCatalog;
+ renderLlmCatalog();
+ inp.value = '';
+ out.innerHTML = '✓ ' + escapeHtml(j.id) + (j.existed ? ' war schon im Katalog' : ' ist jetzt im Katalog') + ' — unten Ziel-Karte wählen und laden.';
+ const s = document.getElementById('llm-catalog-search');
+ if (s) { s.value = j.id; filterLlmCatalog(); }
+ return;
+ }
+ const alts = j.alternatives || [];
+ out.innerHTML = '⚠ ' + escapeHtml(j.error || 'Fehler') + ''
+ + (alts.length ? '