diff --git a/internal/jean/ui/index.html b/internal/jean/ui/index.html index 822f22e..43a484b 100644 --- a/internal/jean/ui/index.html +++ b/internal/jean/ui/index.html @@ -786,12 +786,28 @@ async function loadRam(){ '
'+(m.used/1024).toFixed(1)+' / '+(m.total/1024).toFixed(1)+' GiB · '+pct+'%
'; } async function loadCfg(){ - const c=await jget('/api/config'); - const keys=['BIN','MODEL','CTX','BATCH','UBATCH','NGL','PORT']; - document.getElementById('cfg').innerHTML = keys.filter(k=>c[k]).map(k=>{ + // /api/llamacpp en parallèle : il indique si le BIN de la config correspond au + // moteur rapide (prebuilt.in_use) ou optimisé (in_use) — sinon c'est un custom. + const [c, lc] = await Promise.all([jget('/api/config'), jget('/api/llamacpp').catch(()=>null)]); + const row=(k,v,title)=>'
'+k+''+String(v)+'
'; + const rows=[]; + if(c.BIN){ + // Moteur : rapide / optimisé / custom (avec le chemin). Le title garde + // toujours le chemin complet, quel que soit le libellé. + let v; + if(lc && lc.prebuilt && lc.prebuilt.in_use) v='⚡ rapide'; + else if(lc && lc.in_use) v='🔧 optimisé'; + else v='custom : '+c.BIN; + rows.push(row('BIN', v, c.BIN)); + } + ['MODEL','CTX','BATCH','UBATCH','NGL','PORT'].filter(k=>c[k]).forEach(k=>{ let v=c[k]; if(k==='MODEL') v=v.split('/').pop(); - return '
'+k+''+v+'
'; - }).join(''); + rows.push(row(k, v)); + }); + // n-cpu-moe : affiché seulement s'il est réellement présent dans EXTRA_ARGS. + const m=(c.EXTRA_ARGS||'').match(/--n-cpu-moe\s+(\d+)/); + if(m) rows.push(row('n-cpu-moe', m[1])); + document.getElementById('cfg').innerHTML = rows.join(''); } async function loadPresets(){ const p=await jget('/api/presets'); diff --git a/internal/jean/ui/src/js/05-status.js b/internal/jean/ui/src/js/05-status.js index 8dff798..055b873 100644 --- a/internal/jean/ui/src/js/05-status.js +++ b/internal/jean/ui/src/js/05-status.js @@ -75,10 +75,26 @@ async function loadRam(){ '
'+(m.used/1024).toFixed(1)+' / '+(m.total/1024).toFixed(1)+' GiB · '+pct+'%
'; } async function loadCfg(){ - const c=await jget('/api/config'); - const keys=['BIN','MODEL','CTX','BATCH','UBATCH','NGL','PORT']; - document.getElementById('cfg').innerHTML = keys.filter(k=>c[k]).map(k=>{ + // /api/llamacpp en parallèle : il indique si le BIN de la config correspond au + // moteur rapide (prebuilt.in_use) ou optimisé (in_use) — sinon c'est un custom. + const [c, lc] = await Promise.all([jget('/api/config'), jget('/api/llamacpp').catch(()=>null)]); + const row=(k,v,title)=>'
'+k+''+String(v)+'
'; + const rows=[]; + if(c.BIN){ + // Moteur : rapide / optimisé / custom (avec le chemin). Le title garde + // toujours le chemin complet, quel que soit le libellé. + let v; + if(lc && lc.prebuilt && lc.prebuilt.in_use) v='⚡ rapide'; + else if(lc && lc.in_use) v='🔧 optimisé'; + else v='custom : '+c.BIN; + rows.push(row('BIN', v, c.BIN)); + } + ['MODEL','CTX','BATCH','UBATCH','NGL','PORT'].filter(k=>c[k]).forEach(k=>{ let v=c[k]; if(k==='MODEL') v=v.split('/').pop(); - return '
'+k+''+v+'
'; - }).join(''); + rows.push(row(k, v)); + }); + // n-cpu-moe : affiché seulement s'il est réellement présent dans EXTRA_ARGS. + const m=(c.EXTRA_ARGS||'').match(/--n-cpu-moe\s+(\d+)/); + if(m) rows.push(row('n-cpu-moe', m[1])); + document.getElementById('cfg').innerHTML = rows.join(''); }