Files
Loki/RELEASE_NOTES.md
T
Claude 513aca1c7b Version 0.13.0
Le rattrapage de l'amont (navigateur piloté, chiffrement de la mémoire,
notifications, tâches script, sous-agents, anglais) était parti sur main
sous le numéro 0.12.3 : huit fonctionnalités sous un numéro de correctif.

Bump des trois porteurs de version — la constante Go, versioninfo.json et
les .syso Windows régénérés (go generate) — et notes de release réécrites
pour 0.13.0. Sans ça, `loki update` et le bandeau de mise à jour comparaient
une version qui ne bougeait pas.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6CAgoLJzufeA8rZTSpSpY
2026-09-23 07:52:59 +00:00

100 lines
5.0 KiB
Markdown

# Loki 0.13.0
Loki rattrape deux versions majeures d'AJEAN (0.14 → 0.15.4) et reprend deux
idées d'OpenFox. L'IA peut piloter un navigateur, la mémoire se chiffre sur le
disque, et le serveur sait te prévenir quand c'est prêt.
## L'IA pilote un navigateur
Un interrupteur dans *Réglages → Contrôle du navigateur* et l'IA ouvre des pages
dans le Chromium déjà embarqué dans l'image. Elle en reçoit les éléments
interactifs **numérotés** (`[12] bouton « Se connecter »`) et agit par numéro :
`browser_open`, `browser_find`, `browser_click`, `browser_type`, `browser_key`,
`browser_scroll`. **Aucune vision requise** — ça marche avec un petit modèle
texte. Avec un projecteur `mmproj` chargé s'ajoutent `browser_screenshot`
(capture quadrillée tous les 100 px) et `browser_click_xy`, pour ce que l'arbre
d'accessibilité ne montre pas : canvas, bandeau cookies en iframe.
Ce sont des actions réelles sur le web : l'interrupteur est distinct de l'accès
internet et n'agit qu'en **mode agent**, au même niveau de confiance que `bash`.
En CLI : `loki computer [on|off|status]`.
## La mémoire se chiffre
*Réglages → Mémoire → chiffrer la mémoire sur le disque* : pages mémoire,
discussions, blocs archivés au compactage et trackers passent en **AES-256-GCM**
sous `/data`. La clé de données est enfermée dans un coffre par une clé dérivée
en **Argon2id** ; ce qui l'ouvre, c'est la **clé de pilotage de cet appareil**
(le serveur n'en garde qu'une empreinte — il ne peut pas ouvrir le coffre seul)
ou une **clé de récupération** affichée une seule fois à l'activation.
La clé ne vit qu'en RAM : après un redémarrage à froid, la mémoire reste
verrouillée jusqu'à ce qu'un navigateur se reconnecte. Verrouillé, Loki n'écrase
jamais du chiffré par du clair — il refuse d'écrire. Un **snapshot** est pris
avant chaque bascule, une migration interrompue reprend au démarrage, et rien
n'est supprimé avant que son remplaçant ait été relu et vérifié.
**Sauvegarde chiffrée** : *exporter* télécharge un paquet scellé (mémoire,
presets, réglages) que *importer* rejoue sur un autre serveur avec la seule clé —
de quoi remonter le conteneur ailleurs. Le fichier reste chez toi : aucun envoi
vers un service tiers.
## Notifications, même app fermée
Le serveur pousse une notification à la fin d'une réponse **et à la fin d'une
tâche planifiée**, succès comme échec — c'est le cas qui compte, personne ne
regarde. Interrupteur dans *Réglages → Mode agent*, à armer sur chaque appareil.
Demande HTTPS (ou localhost) ; sur iPhone, ajoute d'abord Loki à l'écran
d'accueil.
## Tâches : des scripts qui tournent sans modèle
Un nouveau dossier `/data/scripts`, **hors du workspace jetable** : supprimer une
discussion n'y touche pas. Une tâche peut désormais être un **script seul** — le
planificateur le lance sans charger le modèle ni consommer un jeton. Une
sauvegarde, une synchro, un nettoyage n'ont rien à demander à un LLM.
L'IA dispose aussi de `task_create`, `task_list`, `task_update` et `task_delete` :
elle se pose ses propres rappels et veilles, cloisonnés par projet.
## Mode code : des sous-agents
L'outil `subagent` délègue une recherche (`explorer`), une relecture
(`code-reviewer`) ou un découpage (`planner`) à un rôle qui travaille dans **son
propre contexte** et ne rend que sa réponse. Sur un modèle local, c'est la
fenêtre de contexte qu'on sauve : « trouve où est géré le cache » coûte dix
lectures de fichiers, qui restaient sinon dans l'historique alors que seule la
réponse comptait. Tous les rôles délégués sont en lecture seule.
Le builder ne publie plus de lui-même : sans demande explicite, ni commit, ni
push, ni redémarrage de service.
## Interface
- **Anglais** (*Apparence → Langue*) : la coque — navigation, intitulés,
boutons — passe en anglais. Ce qui n'est pas encore traduit reste en français
plutôt que d'afficher une clé technique, et le fil de discussion n'est jamais
touché.
- **Résultats d'outils** : le flux ne transporte plus qu'un aperçu ; « voir
plus » charge le reste à la demande et déplie vraiment le bloc. Le compteur
« ~N tok » dit enfin la taille réelle, pas celle de l'aperçu.
- **Longues discussions** : à l'ouverture, seule la fin du fil est rejouée. Un
bandeau dit combien d'événements sont masqués et charge le début d'un clic.
- **Images** : l'orientation EXIF est cuite dans les pixels (fini les photos de
téléphone couchées pour le modèle) et le grand côté ramené sous 1568 px.
## Corrections
- Un outil qui porte une image dans un message séparé (`see_image`,
`browser_screenshot`) renvoyait « [déjà fait] » **sans** l'image et le modèle
bouclait. Relancer la même commande `bash` est de nouveau permis.
- **MCP** ne tronque plus sa réponse à 12000 caractères avant le modèle.
- Le dossier mémoire n'est plus joignable qu'aux outils `mem_*` : un `cat
memory/…` contournait l'index `MEMORY.md`.
## Mise à jour
```
docker compose pull && docker compose up -d
```