From b7d7bfbe59bf5c609c048f22919be9324fff21ff Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 4 Oct 2026 12:33:10 +0200 Subject: [PATCH] =?UTF-8?q?Interface=20:=20corrections=20de=20relecture=20?= =?UTF-8?q?du=20lot=202=20=E2=80=94=20=C2=AB=20Optimiser=20=C2=BB=20seulem?= =?UTF-8?q?ent=20dans=20l'=C3=A9diteur=20du=20preset=20en=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La ligne de l'optimiseur s'affichait dans l'éditeur de TOUT preset local, y compris un preset neuf ou un autre que celui en service, alors que la mesure porte toujours sur le preset actif (le README le dit) : un clic depuis l'éditeur d'un autre preset aurait optimisé et proposé d'écrire celui en service. - La dernière liste des presets est gardée ; la ligne n'apparaît que si le preset ouvert est l'actif, et local. Co-Authored-By: Claude Opus 5.5 --- internal/loki/ui/index.html | 11 +++++++++++ internal/loki/ui/src/js/06-settings.js | 4 ++++ internal/loki/ui/src/js/07-models.js | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/internal/loki/ui/index.html b/internal/loki/ui/index.html index 84080ab..984fc47 100644 --- a/internal/loki/ui/index.html +++ b/internal/loki/ui/index.html @@ -4420,8 +4420,12 @@ let pendingPreset = 0; // redessin et la puce semblait clignoter en boucle. On ne les rejoue que quand la // sélection CHANGE vraiment. let paintedSel = ''; +// Dernière liste lue : l'éditeur y voit si le preset ouvert est celui en +// service (ligne « Optimiser », qui ne mesure que lui). +let presetsLast = []; async function loadPresets(){ const p=await jget('/api/presets'); + presetsLast = Array.isArray(p) ? p : []; // Bascule terminée : le preset visé est devenu l'actif, on éteint l'attente. if(pendingPreset && p[pendingPreset-1] && p[pendingPreset-1].active) pendingPreset = 0; const act = p.find(x=>x.active); @@ -6029,6 +6033,13 @@ function populateSettings(){ set('s-cram', cfgReadKey('CACHE_RAM')); refreshCacheRAM(); refreshMoe(); + // L'optimiseur mesure le preset EN SERVICE (local) : sa ligne n'apparaît que + // dans l'éditeur de celui-ci, pas d'un autre preset ni d'un preset neuf. + const tuneRow = document.getElementById('m-tune-row'); + if(tuneRow){ + const act = (typeof presetsLast !== 'undefined' ? presetsLast : []).find(x => x.active); + tuneRow.style.display = (act && !act.external && editingKey && act.id === editingKey) ? '' : 'none'; + } set('s-tbatch', cfgReadKey('THREADS_BATCH')); set('s-kv', cfgReadKey('KV_TYPE')); syncKVSub(); diff --git a/internal/loki/ui/src/js/06-settings.js b/internal/loki/ui/src/js/06-settings.js index 7586771..467d8b0 100644 --- a/internal/loki/ui/src/js/06-settings.js +++ b/internal/loki/ui/src/js/06-settings.js @@ -34,8 +34,12 @@ let pendingPreset = 0; // redessin et la puce semblait clignoter en boucle. On ne les rejoue que quand la // sélection CHANGE vraiment. let paintedSel = ''; +// Dernière liste lue : l'éditeur y voit si le preset ouvert est celui en +// service (ligne « Optimiser », qui ne mesure que lui). +let presetsLast = []; async function loadPresets(){ const p=await jget('/api/presets'); + presetsLast = Array.isArray(p) ? p : []; // Bascule terminée : le preset visé est devenu l'actif, on éteint l'attente. if(pendingPreset && p[pendingPreset-1] && p[pendingPreset-1].active) pendingPreset = 0; const act = p.find(x=>x.active); diff --git a/internal/loki/ui/src/js/07-models.js b/internal/loki/ui/src/js/07-models.js index c5f78e3..49ad2d3 100644 --- a/internal/loki/ui/src/js/07-models.js +++ b/internal/loki/ui/src/js/07-models.js @@ -1019,6 +1019,13 @@ function populateSettings(){ set('s-cram', cfgReadKey('CACHE_RAM')); refreshCacheRAM(); refreshMoe(); + // L'optimiseur mesure le preset EN SERVICE (local) : sa ligne n'apparaît que + // dans l'éditeur de celui-ci, pas d'un autre preset ni d'un preset neuf. + const tuneRow = document.getElementById('m-tune-row'); + if(tuneRow){ + const act = (typeof presetsLast !== 'undefined' ? presetsLast : []).find(x => x.active); + tuneRow.style.display = (act && !act.external && editingKey && act.id === editingKey) ? '' : 'none'; + } set('s-tbatch', cfgReadKey('THREADS_BATCH')); set('s-kv', cfgReadKey('KV_TYPE')); syncKVSub();