diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 14671c6..c6d7b1d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,36 +1,14 @@ -Une correction qui compte, et la fenêtre d'export refaite d'après vos retours. +Une seule correction, mais elle touche l'accès distant. -## Le chat qui s'arrête sans un mot +## Changer la clé de pilotage ne coupe plus ajean.link -Symptôme rapporté : l'agent réfléchit, lance quelques commandes, puis s'arrête au milieu du travail et rend la main sans avoir terminé ni commenté. Aucune erreur nulle part, et dans le journal du moteur un « stop processing » parfaitement normal. +Si vous changiez la clé de pilotage, depuis l'interface ou avec `ajean set-web-key`, l'accès distant tombait aussitôt et ne revenait qu'au redémarrage du service. -La cause est dans AJEAN, pas dans le moteur. La lecture du flux de réponse s'arrête aussi bien à la fin normale qu'à la première erreur, et AJEAN ne regardait jamais laquelle des deux venait de se produire. Une connexion coupée en plein milieu était donc traitée comme une réponse terminée : le tour se refermait en silence. +La cause : le tunnel lisait la clé une seule fois, à son ouverture, puis l'injectait dans chaque requête venue du relais. Après un changement, il continuait donc à présenter l'ancienne, et tout passait en refus d'authentification. -Plus ennuyeux, un cas que personne n'avait encore vu passer : quand la coupure tombait pendant que le modèle demandait un outil, l'appel à moitié reçu était exécuté quand même, avec des arguments tronqués. +Le symptôme, lui, ne disait rien du problème. Le chat n'affiche pas le code d'erreur d'un flux qui n'arrive jamais : on voyait « chargement de la conversation » tourner à l'infini, sans un mot d'explication, alors que le serveur allait très bien. -Désormais, un flux coupé est annoncé, avec la cause exacte dans le message, et le tour est abandonné plutôt que de lancer un appel incomplet. Le texte déjà reçu reste affiché. Un arrêt que vous demandez vous même reste silencieux, comme avant. - -À noter : cette correction rend la coupure VISIBLE, elle ne l'empêche pas. Si le message apparaît chez vous, l'erreur qu'il nomme (« unexpected EOF », « connection reset », « ligne trop longue »…) est exactement ce qu'il nous faut pour trouver la suite. Signalez la. - -La taille maximale d'une ligne du flux passe de 1 à 8 Mio au passage : la seule chose qui puisse la dépasser est un appel d'outil démesuré, et jusqu'ici il partait dans le même silence. - -## La fenêtre d'export - -Elle est arrivée en 0.8.4 sous forme de deux boutons qui ne laissaient aucun choix. C'est maintenant une vraie fenêtre. - -Le format, Markdown à lire ou JSON à retraiter, ne décide plus que du contenant : les trois mêmes options de contenu valent pour les deux, raisonnements, appels d'outils, sorties des outils. La version précédente proposait des options différentes selon le format, dont un obscur « journal d'affichage » côté JSON que personne ne pouvait comprendre. - -La portée se règle à présent avec un curseur qui va de 1 au nombre réel d'échanges de votre conversation, butée à droite pour tout prendre, au lieu de valeurs prédéfinies qui proposaient « 25 derniers échanges » sur un fil qui en comptait trois. - -Conversation vide, la fenêtre le dit simplement au lieu d'offrir des réglages pour un fichier qui serait vide. - -Enfin, « clear chat » descend en dernière position du panneau Actions et se retrouve seul sur sa ligne : c'est la seule action destructive de ce panneau, elle n'a rien à faire sous le doigt qui visait « refresh ». - -## Corrections plus discrètes - -Le prompt système et la description de l'outil de recherche en mémoire annonçaient encore au modèle une mémoire rangée dans `MEMORY/`, nom d'avant la 0.8. Il pouvait donc aller chercher un dossier qui n'existe plus. Merci à qui l'a remarqué. - -Le mécanisme qui met de côté l'ancien binaire pendant une mise à jour tirait son nom de l'horloge seule. Sous Windows, deux appels rapprochés pouvaient obtenir la même valeur, et le second écrasait le binaire mis de côté par le premier. +La clé est maintenant relue à chaque requête. Si l'accès distant vous a lâché après un changement de clé, cette version suffit à le rétablir. ## Mise à jour @@ -38,6 +16,10 @@ Le mécanisme qui met de côté l'ancien binaire pendant une mise à jour tirait ajean update ``` -Puis, si vous utilisez l'accès distant, rechargez la page du portail pour prendre la nouvelle interface. +Puis redémarrez le service d'interface pour rouvrir le tunnel : -Ce qui n'a pas été vérifié sur machine réelle : le téléchargement d'un modèle découpé en plusieurs fichiers de bout en bout (arrivé en 0.8.4, couvert par des tests mais pas par un vrai transfert), et le comportement sur macOS, toujours pas testé sur un Mac. +```bash +ajean ui restart +``` + +Si vous utilisez le portail, rechargez la page ensuite. diff --git a/cmd/ajean/resource_windows_amd64.syso b/cmd/ajean/resource_windows_amd64.syso index a9d4a77..b6a983d 100644 Binary files a/cmd/ajean/resource_windows_amd64.syso and b/cmd/ajean/resource_windows_amd64.syso differ diff --git a/cmd/ajean/resource_windows_arm64.syso b/cmd/ajean/resource_windows_arm64.syso index f551d10..c217d2b 100644 Binary files a/cmd/ajean/resource_windows_arm64.syso and b/cmd/ajean/resource_windows_arm64.syso differ diff --git a/cmd/ajean/versioninfo.json b/cmd/ajean/versioninfo.json index b64293f..8e11ce9 100644 --- a/cmd/ajean/versioninfo.json +++ b/cmd/ajean/versioninfo.json @@ -3,13 +3,13 @@ "FileVersion": { "Major": 0, "Minor": 8, - "Patch": 5, + "Patch": 6, "Build": 0 }, "ProductVersion": { "Major": 0, "Minor": 8, - "Patch": 5, + "Patch": 6, "Build": 0 }, "FileFlagsMask": "3f", @@ -25,7 +25,7 @@ "LegalCopyright": "Copyright (c) 2026 AJEAN contributors. MIT License.", "OriginalFilename": "ajean.exe", "ProductName": "AJEAN", - "ProductVersion": "0.8.5", + "ProductVersion": "0.8.6", "Comments": "https://github.com/nathaninline/ajean — projet open source (MIT)" }, "VarFileInfo": { diff --git a/internal/ajean/run.go b/internal/ajean/run.go index 85566eb..dcd75c7 100644 --- a/internal/ajean/run.go +++ b/internal/ajean/run.go @@ -10,7 +10,7 @@ import ( "strings" ) -const Version = "0.8.5" +const Version = "0.8.6" // Main est le vrai main() du binaire (cmd/ajean ne fait que l'appeler). func Main() {