From 6d54c45afa43bb341545728080dec9396f9ff027 Mon Sep 17 00:00:00 2001 From: nathaninline Date: Thu, 23 Jul 2026 13:56:09 +0200 Subject: [PATCH] UI moteur : section renommee MOTEUR, vouvoiement, verification de version - Titre "Backend llama.cpp" -> "MOTEUR". - Passage au vouvoiement dans tous les textes de la section. - Nouveau lien "verifier la version" sur chaque moteur (rapide/optimise) : interroge la derniere version dispo (endpoints check existants) SANS installer, et affiche le resultat en toast avant tout lancement d'install. --- internal/jean/ui/index.html | 39 ++++++++++++++++++++------ internal/jean/ui/src/index.tmpl.html | 4 +-- internal/jean/ui/src/js/10-llamacpp.js | 35 +++++++++++++++++++---- 3 files changed, 62 insertions(+), 16 deletions(-) diff --git a/internal/jean/ui/index.html b/internal/jean/ui/index.html index c1f863e..30b26d2 100644 --- a/internal/jean/ui/index.html +++ b/internal/jean/ui/index.html @@ -416,7 +416,7 @@ button:disabled{opacity:.5;cursor:not-allowed} -
Backend llama.cpp +
MOTEUR
…
@@ -426,7 +426,7 @@ button:disabled{opacity:.5;cursor:not-allowed}
🔧 Version optimisée
-
compilée pour ta machine, plus longue
+
compilée pour votre machine, plus longue
@@ -1709,9 +1709,9 @@ async function loadLlamacpp(){ const head = document.getElementById('lc-status'); if(!fastInstalled && !optInstalled){ - head.innerHTML = 'Installe le moteur d\'IA. La version rapide convient à presque tout le monde.'; + head.innerHTML = 'Installez le moteur d\'IA. La version rapide convient à presque tout le monde.'; } else { - head.innerHTML = 'Installe les moteurs ici. Tu choisis lequel utiliser quand tu édites un modèle (bouton ✎).'; + head.innerHTML = 'Installez les moteurs ici. Vous choisissez lequel utiliser en éditant un modèle (bouton ✎).'; } lcRenderMode('fast', fastInstalled); lcRenderMode('opt', optInstalled); @@ -1727,20 +1727,43 @@ function lcRenderMode(mode, installed){ const card = document.getElementById(mode==='fast' ? 'lc-mode-fast' : 'lc-mode-opt'); const state = document.getElementById(mode==='fast' ? 'lc-fast-state' : 'lc-opt-state'); card.classList.toggle('installed', installed); + // Lien de vérification : interroge la dernière version SANS rien installer. + // event.stopPropagation empêche le clic de la carte (qui lance l'install). + const check = '🔍 vérifier la version'; if(installed){ state.innerHTML = '✓ installée' - + '↻ mettre à jour'; + + '↻ mettre à jour' + + check; } else { - state.innerHTML = '→ cliquer pour installer'; + state.innerHTML = '→ cliquer pour installer' + check; } } +// lcCheck vérifie s'il existe une version plus récente AVANT toute installation +// (endpoints de check dédiés, sans effet de bord). Résultat affiché en toast. +async function lcCheck(mode){ + toast('vérification…'); + try{ + if(mode === 'fast'){ + const r = await jpost('/api/llamacpp/prebuilt/check', {}); + if(!r.ok){ toast('erreur : '+(r.error||'')); return; } + if(r.update) toast('nouvelle version disponible : '+r.latest+(r.current ? ' (installée : '+r.current+')' : '')); + else toast('moteur rapide à jour ✓'+(r.latest ? ' ('+r.latest+')' : '')); + } else { + const r = await jpost('/api/llamacpp/check', {}); + if(!r.ok){ toast('erreur : '+(r.error||'')); return; } + if(r.behind > 0) toast(r.behind+' nouveau(x) commit(s) disponible(s) — utilisez « mettre à jour »'); + else toast('moteur optimisé à jour ✓'); + } + }catch(_){ toast('erreur réseau'); } +} + // Clic sur une carte : installer le moteur (s'il ne l'est pas déjà). async function lcPick(mode){ const s = lcState || {}, pb = s.prebuilt || {}; const installed = mode==='fast' ? !!pb.bin : !!s.bin; if(installed){ - toast('déjà installée — choisis-la dans l\'édition d\'un modèle (✎)'); + toast('déjà installée — choisissez-la dans l\'édition d\'un modèle (✎)'); return; } if(mode === 'fast'){ @@ -1748,7 +1771,7 @@ async function lcPick(mode){ const r = await jpost('/api/llamacpp/prebuilt', {}); if(!r.ok){ toast('erreur : '+(r.error||'')); return; } } else { - if(!await askConfirm('Compiler la version optimisée pour ta machine. Ça peut prendre de longues minutes (surtout avec une carte NVIDIA).', {title:'Version optimisée', okText:'Compiler'})) return; + if(!await askConfirm('Compiler la version optimisée pour votre machine. Ça peut prendre de longues minutes (surtout avec une carte NVIDIA).', {title:'Version optimisée', okText:'Compiler'})) return; const r = await jpost('/api/llamacpp/install', {}); if(!r.ok){ toast('erreur : '+(r.error||'')); return; } } diff --git a/internal/jean/ui/src/index.tmpl.html b/internal/jean/ui/src/index.tmpl.html index 34c15a9..87b863b 100644 --- a/internal/jean/ui/src/index.tmpl.html +++ b/internal/jean/ui/src/index.tmpl.html @@ -119,7 +119,7 @@
-
Backend llama.cpp +
MOTEUR
…
@@ -129,7 +129,7 @@
🔧 Version optimisée
-
compilée pour ta machine, plus longue
+
compilée pour votre machine, plus longue
diff --git a/internal/jean/ui/src/js/10-llamacpp.js b/internal/jean/ui/src/js/10-llamacpp.js index a3642db..e7c1fab 100644 --- a/internal/jean/ui/src/js/10-llamacpp.js +++ b/internal/jean/ui/src/js/10-llamacpp.js @@ -16,9 +16,9 @@ async function loadLlamacpp(){ const head = document.getElementById('lc-status'); if(!fastInstalled && !optInstalled){ - head.innerHTML = 'Installe le moteur d\'IA. La version rapide convient à presque tout le monde.'; + head.innerHTML = 'Installez le moteur d\'IA. La version rapide convient à presque tout le monde.'; } else { - head.innerHTML = 'Installe les moteurs ici. Tu choisis lequel utiliser quand tu édites un modèle (bouton ✎).'; + head.innerHTML = 'Installez les moteurs ici. Vous choisissez lequel utiliser en éditant un modèle (bouton ✎).'; } lcRenderMode('fast', fastInstalled); lcRenderMode('opt', optInstalled); @@ -34,20 +34,43 @@ function lcRenderMode(mode, installed){ const card = document.getElementById(mode==='fast' ? 'lc-mode-fast' : 'lc-mode-opt'); const state = document.getElementById(mode==='fast' ? 'lc-fast-state' : 'lc-opt-state'); card.classList.toggle('installed', installed); + // Lien de vérification : interroge la dernière version SANS rien installer. + // event.stopPropagation empêche le clic de la carte (qui lance l'install). + const check = '🔍 vérifier la version'; if(installed){ state.innerHTML = '✓ installée' - + '↻ mettre à jour'; + + '↻ mettre à jour' + + check; } else { - state.innerHTML = '→ cliquer pour installer'; + state.innerHTML = '→ cliquer pour installer' + check; } } +// lcCheck vérifie s'il existe une version plus récente AVANT toute installation +// (endpoints de check dédiés, sans effet de bord). Résultat affiché en toast. +async function lcCheck(mode){ + toast('vérification…'); + try{ + if(mode === 'fast'){ + const r = await jpost('/api/llamacpp/prebuilt/check', {}); + if(!r.ok){ toast('erreur : '+(r.error||'')); return; } + if(r.update) toast('nouvelle version disponible : '+r.latest+(r.current ? ' (installée : '+r.current+')' : '')); + else toast('moteur rapide à jour ✓'+(r.latest ? ' ('+r.latest+')' : '')); + } else { + const r = await jpost('/api/llamacpp/check', {}); + if(!r.ok){ toast('erreur : '+(r.error||'')); return; } + if(r.behind > 0) toast(r.behind+' nouveau(x) commit(s) disponible(s) — utilisez « mettre à jour »'); + else toast('moteur optimisé à jour ✓'); + } + }catch(_){ toast('erreur réseau'); } +} + // Clic sur une carte : installer le moteur (s'il ne l'est pas déjà). async function lcPick(mode){ const s = lcState || {}, pb = s.prebuilt || {}; const installed = mode==='fast' ? !!pb.bin : !!s.bin; if(installed){ - toast('déjà installée — choisis-la dans l\'édition d\'un modèle (✎)'); + toast('déjà installée — choisissez-la dans l\'édition d\'un modèle (✎)'); return; } if(mode === 'fast'){ @@ -55,7 +78,7 @@ async function lcPick(mode){ const r = await jpost('/api/llamacpp/prebuilt', {}); if(!r.ok){ toast('erreur : '+(r.error||'')); return; } } else { - if(!await askConfirm('Compiler la version optimisée pour ta machine. Ça peut prendre de longues minutes (surtout avec une carte NVIDIA).', {title:'Version optimisée', okText:'Compiler'})) return; + if(!await askConfirm('Compiler la version optimisée pour votre machine. Ça peut prendre de longues minutes (surtout avec une carte NVIDIA).', {title:'Version optimisée', okText:'Compiler'})) return; const r = await jpost('/api/llamacpp/install', {}); if(!r.ok){ toast('erreur : '+(r.error||'')); return; } }