From 20dd09abc62d71a60396a74af25e4da2720780f1 Mon Sep 17 00:00:00 2001 From: nathaninline Date: Thu, 9 Jul 2026 17:50:29 +0200 Subject: [PATCH] =?UTF-8?q?v0.2.18=20:=20th=C3=A8mes=20clair/sombre=20+=20?= =?UTF-8?q?refonte=20du=20panneau=20Mode=20agent=20+=20favicon/PWA=20Jean?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UI: système de thèmes sélectionnable (sombre par défaut, clair) — registre extensible - UI: refonte propre du panneau Mode agent — Mémoire / Accès internet / Paramètres en cartes, liste des pages repliable - UI: infobulles (?) à la place des pavés de texte, scrollbars natifs, suppression des touches de vert (palette bleu/blanc/gris) - UI: favicon (coins arrondis) + icône PWA, nom d'app et titres « Jean » - Mémoire et accès internet deviennent des sous-réglages du mode agent (aucun outil mem_*/web sans agent) - Presets: le mode mémoire (MEM_MODE) et l'URL du serveur internet (CRAWL4AI_URL) sont conservés d'un preset à l'autre --- llm.go | 10 ++- main.go | 2 +- presets.go | 17 +++- resource_windows_amd64.syso | Bin 1196 -> 1196 bytes resource_windows_arm64.syso | Bin 1196 -> 1196 bytes ui/index.html | 165 +++++++++++++++++++++++++++--------- versioninfo.json | 6 +- 7 files changed, 155 insertions(+), 45 deletions(-) diff --git a/llm.go b/llm.go index 89f7801..1916585 100644 --- a/llm.go +++ b/llm.go @@ -179,7 +179,15 @@ func globalCaps() Caps { // Ainsi le prompt système (tools.go) et les outils fournis (EnabledTools) sont // gouvernés par la MÊME condition — sinon le prompt promet web_search alors que // l'outil n'existe pas, et le modèle le tape en bash (command not found). - return Caps{Agent: agentEnabled(), Internet: internetEnabled() && crawlReachable(), Mem: memMode()} + // Mémoire et accès internet sont des sous-réglages du mode agent (cf. UI web) : + // sans agent, on ne fournit NI les outils mem_*, NI les outils web. Ça garde le + // prompt système et les outils cohérents avec l'interface (blocs grisés quand + // l'agent est off) — l'IA en chat pur répond sans mémoire ni web. + agent := agentEnabled() + if !agent { + return Caps{Agent: false, Internet: false, Mem: MemOff} + } + return Caps{Agent: true, Internet: internetEnabled() && crawlReachable(), Mem: memMode()} } // InjectSkills prepends context system messages to msgs: the decisive-agent diff --git a/main.go b/main.go index 7f96e32..57ccfdd 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ import ( "strings" ) -const Version = "0.2.17" +const Version = "0.2.18" func main() { // Migration one-shot des anciens skills (SKILLS//SKILL.md) vers la diff --git a/presets.go b/presets.go index 38eae6a..ed88179 100644 --- a/presets.go +++ b/presets.go @@ -151,16 +151,31 @@ func safePresetPath(name string) (string, error) { return abs, nil } +// preservedKeys sont des réglages « appareil » (préférences utilisateur, pas des +// paramètres de modèle) qui doivent survivre à un changement de preset. Sans ça, +// écraser config.env avec le preset ré-imposerait le mode mémoire et effacerait +// l'URL du serveur internet à chaque bascule — ce qui obligeait à tout remettre. +var preservedKeys = []string{"MEM_MODE", "CRAWL4AI_URL"} + // SwitchToPreset backs up the current config and copies the target into place, -// then restarts the service. +// then restarts the service. Les réglages « appareil » (preservedKeys) sont +// conservés à travers la bascule. func SwitchToPreset(target string) error { src, err := os.ReadFile(target) if err != nil { return err } + // Capture les réglages appareil AVANT d'écraser config.env. + cur := ReadConfig() if err := os.WriteFile(confPath(), src, 0o644); err != nil { return err } + // Ré-applique les réglages appareil par-dessus le preset fraîchement copié. + for _, k := range preservedKeys { + if v, ok := cur[k]; ok { + _ = SetConfigKey(k, v) + } + } fmt.Printf("%s config.env <- %s\n", green("[ok]"), filepath.Base(target)) fmt.Println(dim("[info] redémarrage du service...")) return serviceAction("restart") diff --git a/resource_windows_amd64.syso b/resource_windows_amd64.syso index 0115b8f029426bd8193809ef47caa48cc9fc6bb3..f1903fd3bf834f31a358982af63c9c4518cd6243 100644 GIT binary patch delta 33 mcmZ3(xrTGXDNZ2 - -jean + +Jean + + + + +