mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
Windows : « Quitter » arrete aussi le moteur
Le moteur tourne dans un process detache, qui survit volontairement a la fermeture de l'interface pour garder le modele charge entre deux ouvertures. Mais apres un « Quitter », plus rien ne le pilote et il conserve des dizaines de Go de RAM sans aucune fenetre pour l'expliquer. La fonction de sortie du systray appelle desormais svcStop, qui tue l'arbre (taskkill /T) donc llama-server avec. Windows uniquement : c'est la seule plateforme ou l'app est proprietaire du moteur. Sous Linux et macOS il appartient a systemd ou launchd, et fermer une interface n'a pas a arreter un service systeme. Le redemarrage apres mise a jour ne passe PAS par ce chemin (il a son propre os.Exit), donc une MAJ ne dechargera pas le modele.
This commit is contained in:
1 parent
351ee25ad9
commit
672317d68c
2 files changed
+23
-3
No files matched your search
@@ -43,6 +43,13 @@ func runTray(url string) {
|
||||
}
|
||||
}()
|
||||
}, func() {
|
||||
os.Exit(0) // « Quitter » → arrête tout le process (serveur inclus)
|
||||
// « Quitter » arrête l'application : l'interface et, avec elle, le
|
||||
// tunnel d'accès distant qui tourne dans ce process.
|
||||
//
|
||||
// Le MOTEUR, lui, n'est pas arrêté : sous macOS c'est un daemon launchd,
|
||||
// que seul root peut piloter. Fermer une interface n'a pas à arrêter un
|
||||
// service système. Sous Windows, où l'app est propriétaire du moteur,
|
||||
// « Quitter » l'arrête bel et bien (voir sys_tray_windows.go).
|
||||
os.Exit(0)
|
||||
})
|
||||
}
|
||||
@@ -26,7 +26,7 @@ func runTray(url string) {
|
||||
systray.SetTooltip("AJEAN — votre IA locale")
|
||||
mOpen := systray.AddMenuItem("Ouvrir AJEAN", "Ouvrir l'interface")
|
||||
systray.AddSeparator()
|
||||
mQuit := systray.AddMenuItem("Quitter", "Arrêter AJEAN")
|
||||
mQuit := systray.AddMenuItem("Quitter", "Arrêter AJEAN et décharger le modèle")
|
||||
|
||||
go func() {
|
||||
for {
|
||||
@@ -40,7 +40,20 @@ func runTray(url string) {
|
||||
}
|
||||
}()
|
||||
}, func() {
|
||||
os.Exit(0) // « Quitter » → arrête tout le process (serveur inclus)
|
||||
// « Quitter » doit tout arrêter, moteur compris.
|
||||
//
|
||||
// Le moteur tourne dans un process DÉTACHÉ (voir svcStart) : il survit
|
||||
// délibérément à la fermeture de l'app pour que le modèle reste chargé
|
||||
// entre deux ouvertures de l'interface. Mais quand on quitte pour de
|
||||
// bon, il n'a plus rien pour le piloter et garde des dizaines de Go de
|
||||
// RAM, sans la moindre fenêtre pour l'expliquer. svcStop tue l'arbre
|
||||
// (taskkill /T), donc llama-server avec lui.
|
||||
//
|
||||
// Windows seulement : ici l'app EST le propriétaire du moteur. Sous
|
||||
// Linux et macOS c'est systemd ou launchd, et fermer une interface n'a
|
||||
// pas à arrêter un service système.
|
||||
_ = svcStop(false)
|
||||
os.Exit(0)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user