mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 22:48:11 +02:00
v0.6.8 : les modeles peuvent vivre ailleurs que dans le dossier jean
Un .gguf pose sur un disque externe etait invisible dans l'UI : la liste des modeles ne scannait que JEAN_HOME et un preset pointant ailleurs affichait « introuvable ». On peut desormais declarer des dossiers de modeles supplementaires (replies derriere une ligne dans l'editeur de preset, persistes dans model_dirs.json, ou via JEAN_MODEL_DIRS). Acces distant : la pastille affiche « non connecte » au lieu de rester vide quand le serveur n'est lie a aucun compte.
This commit is contained in:
1 parent
acf094f961
commit
73a772520c
15 files changed
+584
-59
No files matched your search
+33
-14
@@ -261,25 +261,44 @@ func handleLlamacppUninstallCustom(w http.ResponseWriter, r *http.Request) {
|
||||
sendJSON(w, 200, map[string]any{"ok": true})
|
||||
}
|
||||
|
||||
// handleModels lists *.gguf files in JEAN_HOME (size in bytes) for the preset
|
||||
// editor's model picker.
|
||||
// handleModels lists *.gguf files (size in bytes) for the preset editor's model
|
||||
// picker, dans JEAN_HOME ET dans les dossiers supplémentaires déclarés (disque
|
||||
// externe…). "value" est ce qu'il faut écrire dans MODEL= : un simple nom de
|
||||
// fichier pour JEAN_HOME (compatibilité avec l'existant), le chemin complet
|
||||
// pour un dossier externe.
|
||||
func handleModels(w http.ResponseWriter, r *http.Request) {
|
||||
entries, err := os.ReadDir(JeanHome())
|
||||
if err != nil {
|
||||
sendJSON(w, 200, []map[string]any{})
|
||||
return
|
||||
}
|
||||
out := []map[string]any{}
|
||||
for _, e := range entries {
|
||||
if e.IsDir() || !strings.HasSuffix(strings.ToLower(e.Name()), ".gguf") {
|
||||
seen := map[string]bool{}
|
||||
home := JeanHome()
|
||||
for _, dir := range modelDirs() {
|
||||
entries, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
info, _ := e.Info()
|
||||
size := int64(0)
|
||||
if info != nil {
|
||||
size = info.Size()
|
||||
isHome := normDir(dir) == normDir(home)
|
||||
for _, e := range entries {
|
||||
if e.IsDir() || !strings.HasSuffix(strings.ToLower(e.Name()), ".gguf") {
|
||||
continue
|
||||
}
|
||||
full := filepath.Join(dir, e.Name())
|
||||
if seen[normDir(full)] {
|
||||
continue
|
||||
}
|
||||
seen[normDir(full)] = true
|
||||
info, _ := e.Info()
|
||||
size := int64(0)
|
||||
if info != nil {
|
||||
size = info.Size()
|
||||
}
|
||||
value := full
|
||||
if isHome {
|
||||
value = e.Name()
|
||||
}
|
||||
out = append(out, map[string]any{
|
||||
"name": e.Name(), "size": size, "value": value,
|
||||
"path": full, "dir": dir, "home": isHome,
|
||||
})
|
||||
}
|
||||
out = append(out, map[string]any{"name": e.Name(), "size": size})
|
||||
}
|
||||
sendJSON(w, 200, out)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user