mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-22 14:38:12 +02:00
v0.5.11 : themes clair/sombre par famille + police reglable + affichage a la carte + cle API Crawl4AI
- Apparence repensee : la liste ne montre plus que les FAMILLES de theme (Classique, AJEAN, Doux, ChatGPT) avec un interrupteur clair/sombre, au lieu d'une entree par variante. Nouveau theme « ChatGPT sombre » (fond quasi noir). - Le theme par defaut redevient « clair ». - Nouveau reglage « police », independant du theme : du theme / Mono / Systeme / Lexend / Serif (Lexend n'est telechargee que si elle est choisie). - Le mode « complet / simple » laisse place a quatre interrupteurs : masquer le raisonnement, masquer les appels d'outils, garder les bulles repliees, barre laterale escamotable (tiroir meme sur ordinateur). L'ancien reglage est repris. - Cle API du serveur Crawl4AI reglable depuis l'UI (et `jean internet key`) : envoyee en Authorization: Bearer sur toutes les requetes, jamais relue par l'API (indice sur 4 caracteres), preservee au changement de preset. - Mise en page : colonne de lecture bornee a 900 px en mode escamotable, marges d'origine sinon ; tiroir de meme largeur que la barre fixe ; bouton ☰ qui ne recouvre plus le fil ; logo et numero de version recales.
This commit is contained in:
1 parent
e2475c6688
commit
dbd4a6a570
16 files changed
+563
-197
No files matched your search
@@ -481,7 +481,8 @@ func handleAgentToggle(w http.ResponseWriter, r *http.Request) {
|
||||
// handleInternet pilote l'accès web de l'IA (serveur Crawl4AI).
|
||||
//
|
||||
// GET → {enabled, url, reachable}
|
||||
// POST {enabled, url} → enregistre CRAWL4AI_URL + le drapeau .internet_enabled
|
||||
// POST {enabled, url, key} → enregistre CRAWL4AI_URL / CRAWL4AI_KEY + le
|
||||
// drapeau .internet_enabled. La clé n'est jamais relue par GET (juste un indice).
|
||||
//
|
||||
// handleAPIKey expose et pilote la clé d'accès à l'endpoint compatible OpenAI
|
||||
// (llama-server /v1). GET renvoie l'état ; POST {action:"generate"|"set"|"clear",
|
||||
@@ -579,8 +580,19 @@ func handleInternet(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
Enabled *bool `json:"enabled"`
|
||||
URL *string `json:"url"`
|
||||
Key *string `json:"key"`
|
||||
}
|
||||
_ = json.NewDecoder(r.Body).Decode(&req)
|
||||
// Clé d'accès au serveur Crawl4AI : chaîne vide = on l'enlève.
|
||||
if req.Key != nil {
|
||||
if err := SetConfigKey("CRAWL4AI_KEY", strings.TrimSpace(*req.Key)); err != nil {
|
||||
sendJSON(w, 500, map[string]any{"ok": false, "error": err.Error()})
|
||||
return
|
||||
}
|
||||
reachMu.Lock()
|
||||
reachURL = ""
|
||||
reachMu.Unlock()
|
||||
}
|
||||
if req.URL != nil {
|
||||
u := strings.TrimRight(strings.TrimSpace(*req.URL), "/")
|
||||
if err := SetConfigKey("CRAWL4AI_URL", u); err != nil {
|
||||
@@ -598,11 +610,21 @@ func handleInternet(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
}
|
||||
// La clé n'est JAMAIS renvoyée en clair : l'UI n'a besoin que de savoir
|
||||
// qu'elle existe (et de ses 4 derniers caractères pour la reconnaître).
|
||||
key, hint := crawl4aiKey(), ""
|
||||
if n := len([]rune(key)); n > 4 {
|
||||
hint = "…" + string([]rune(key)[n-4:])
|
||||
} else if key != "" {
|
||||
hint = "…"
|
||||
}
|
||||
sendJSON(w, 200, map[string]any{
|
||||
"ok": true,
|
||||
"enabled": internetEnabled(),
|
||||
"url": crawl4aiURL(),
|
||||
"reachable": crawlReachable(),
|
||||
"key_set": key != "",
|
||||
"key_hint": hint,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user