mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-16 03:39:29 +02:00
Historique : plusieurs discussions, et mise à jour par l'image en conteneur
L'amont ne connaît qu'un fil unique (bkChat/conversation) que « clear chat »
effaçait définitivement. On garde toute la machinerie (un seul conv en
mémoire, mêmes flux SSE, même compactage) mais rangée par discussion :
bkChat/index liste des discussions (métadonnées seules)
bkChat/active discussion ouverte, partagée par tous les appareils
bkChat/conv:<id> état complet d'une discussion
Basculer réutilise le mécanisme d'epoch du reset : les abonnés SSE reçoivent
{reset:true} et rejouent le nouveau fil — aucun code de rendu à toucher. Le
fil unique existant est repris comme première discussion au premier
démarrage, et sa clé d'origine est laissée intacte.
- routes /api/conversations (liste, new, switch, rename, delete)
- barre latérale : liste (titre déduit du 1er message, date, nb d'échanges),
bouton +, renommer, supprimer ; lignes construites en DOM et non en
innerHTML, les titres venant de messages utilisateur
- suppression de la dernière discussion : convCreate et non convNew, qui
aurait réenregistré celle qu'on vient d'effacer
Le bouton « Vérifier les mises à jour » répondait « GitHub a répondu 404 » :
il interrogeait les releases du dépôt du fork, qui n'en publie aucune. En
conteneur, remplacer le binaire n'a de toute façon pas de sens — l'UI, l'API
et la CLI renvoient désormais « docker compose pull ».
Vérifié en conteneur : création, bascule, renommage (titre accentué avec
< > &), suppression de l'active puis de la dernière ; /api/update et
loki update renvoient la note Docker.
This commit is contained in:
12 files changed
+586
-17
No files matched your search
@@ -239,6 +239,10 @@ func cmdUpdate(args []string) error {
|
||||
checkOnly = true
|
||||
}
|
||||
}
|
||||
if containerManaged() {
|
||||
fmt.Println(containerUpdateNote)
|
||||
return nil
|
||||
}
|
||||
fmt.Println("recherche de la dernière version…")
|
||||
info, err := checkForUpdate()
|
||||
if err != nil {
|
||||
@@ -422,8 +426,21 @@ func cleanupOldBinary() {
|
||||
removeOldBinaries(filepath.Join(filepath.Dir(exe), "loki.exe"))
|
||||
}
|
||||
|
||||
// containerManaged : le binaire appartient à l'image Docker, la mise à jour
|
||||
// passe donc par elle (docker compose pull) et non par un remplacement du
|
||||
// fichier — que l'image, en lecture seule à l'exécution, ne permettrait pas.
|
||||
// Sans ce garde-fou, l'UI interrogeait les releases GitHub du dépôt du fork,
|
||||
// qui n'en publie aucune : « GitHub a répondu 404 Not Found ».
|
||||
func containerManaged() bool { return os.Getenv("LOKI_CONTAINER") == "1" }
|
||||
|
||||
const containerUpdateNote = "Mise à jour par l'image Docker : docker compose pull && docker compose up -d"
|
||||
|
||||
// handleUpdateCheck (GET /api/update) : renvoie l'état de mise à jour pour l'UI.
|
||||
func handleUpdateCheck(w http.ResponseWriter, r *http.Request) {
|
||||
if containerManaged() {
|
||||
sendJSON(w, 200, map[string]any{"current": Version, "available": false, "note": containerUpdateNote})
|
||||
return
|
||||
}
|
||||
info, err := checkForUpdate()
|
||||
if err != nil {
|
||||
sendJSON(w, 200, map[string]any{"current": Version, "available": false, "error": err.Error()})
|
||||
@@ -437,6 +454,10 @@ func handleUpdateCheck(w http.ResponseWriter, r *http.Request) {
|
||||
// d'UI (loki-ui : il sert l'UI, le chat et le tunnel) pour appliquer la MAJ sans
|
||||
// avoir à SSH — voir restartAfterUpdate. Renvoie la version + le message de statut.
|
||||
func handleUpdateApply(w http.ResponseWriter, r *http.Request) {
|
||||
if containerManaged() {
|
||||
sendJSON(w, 409, map[string]any{"ok": false, "error": containerUpdateNote})
|
||||
return
|
||||
}
|
||||
newVer, err := applyUpdate()
|
||||
if err != nil {
|
||||
// 500 : un client script peut tester le statut HTTP ; l'UI, elle, lit le JSON.
|
||||
|
||||
Reference in new issue
Block a user