${e(x.repo)}
${e(x.file)} · ${size(x.size)}
Heruntergeladen · Laufzeit noch nicht angebunden
Revision ${e(x.revision)} · ${x.upstream_hash_verified?'SHA-256 mit Quelle geprüft':'SHA-256 lokal erfasst; Größe mit Quelle geprüft'}const CatalogUI=(()=>{
const e=v=>String(v??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
const size=n=>(n/1024**3).toFixed(2)+' GiB';
async function api(path,data){const r=await fetch('/api/v1/catalog'+path,data?{method:'POST',headers:{'Content-Type':'application/json','X-Athena-Deck':'1'},body:JSON.stringify(data)}:{});const v=await r.json();if(!r.ok)throw Error(v.error||'Anfrage fehlgeschlagen');return v;}
function html(library){return ` Öffentliche Repositories. Downloads laden kein Modell in RAM oder VRAM. Für Bild, Audio und Video können mehrere Dateien und ein eigener Worker nötig sein.${library?'Dateien auf Athena':'Modelle suchen'}
Freier Speicher: ${size(v.free_bytes)} · Reserve: 10 GiB
`+(j?`${e(j.repo)} / ${e(j.file)} · ${e(j.state)} · ${size(j.bytes)} / ${size(j.total)}
${j.error?`${e(j.error)}
`:''}${j.state==='downloading'?'':''}`:'');root.querySelector('#hub-cancel')?.addEventListener('click',async()=>{await api('/cancel',{});message('Abbruch angefordert; laufende Netzwerkabfrage kann noch bis zu 20 Sekunden dauern.');});if(library)root.querySelector('#hub-results').innerHTML=v.entries.filter(x=>x.kind===kind).map(x=>`${e(x.file)} · ${size(x.size)}
Heruntergeladen · Laufzeit noch nicht angebunden
Revision ${e(x.revision)} · ${x.upstream_hash_verified?'SHA-256 mit Quelle geprüft':'SHA-256 lokal erfasst; Größe mit Quelle geprüft'}Noch keine Dateien für diesen Bereich heruntergeladen.
';if(j?.state==='downloading')setTimeout(()=>{if(root.isConnected)refresh();},2000);}catch(err){message(err.message);}} root.querySelector('#hub-refresh').onclick=refresh; root.querySelector('#hub-search')?.addEventListener('submit',async event=>{event.preventDefault();message('Suche …');try{const v=await api('/search?'+new URLSearchParams({q:new FormData(event.target).get('q'),kind}));if(!root.isConnected)return;root.querySelector('#hub-results').innerHTML=v.models.map(m=>`${m.gated?'Zugangsbeschränkt':'Öffentlich'} · ${e(m.downloads)} Downloads
Lizenz: ${e(v.license||'Nicht angegeben')} · Modellkarte und Bedingungen lesen
VRAM- und Kontext-Eignung noch nicht berechnet. Dateigröße allein belegt keine Lauffähigkeit.
`+v.files.map((f,i)=>`${e(f.name)} · ${size(f.size)}