let buildTime = 0; let serverIsWindows = false; fetch('/api/info').then(r => r.json()).then(data => { buildTime = data.buildTime || 0; serverIsWindows = !!data.isWindows; updateTitle(); setInterval(updateTitle, 1000); if (data.embeddingAvailable === false) _showEmbeddingWarning(); }); function _showEmbeddingWarning() { const { body } = _createModal('⚠️ Embedding-Modell nicht gefunden'); body.classList.add('lh-relaxed'); body.innerHTML = '

Das Embedding-Modell all-MiniLM-L6-v2 wurde nicht gefunden. ' + 'Ohne dieses Modell ist die semantische Suche (memory_search) deaktiviert.

' + '

So richtest du es ein:

' + '
    ' + '
  1. Lade das Modell herunter: HuggingFace – all-MiniLM-L6-v2
  2. ' + '
  3. Benötigte Dateien: model.onnx und vocab.txt
  4. ' + '
  5. Lege sie ab unter:
    data/models/all-MiniLM-L6-v2/model.onnx
    data/models/all-MiniLM-L6-v2/vocab.txt
  6. ' + '
  7. Starte den Server neu
  8. ' + '
'; } function updateTitle() { if (!buildTime) { document.title = '// gott'; return; } const s = Math.floor(Date.now() / 1000) - buildTime; let ago; if (s < 60) ago = `${s} Sekunde${s !== 1 ? 'n' : ''}`; else if (s < 3600) { const m = Math.floor(s / 60); ago = `${m} Minute${m !== 1 ? 'n' : ''}`; } else if (s < 86400) { const h = Math.floor(s / 3600); ago = `${h} Stunde${h !== 1 ? 'n' : ''}`; } else { const d = Math.floor(s / 86400); ago = `${d} Tag${d !== 1 ? 'en' : ''}`; } document.title = `// gott :: Build vor ${ago}`; }