MCP : les serveurs actifs se connectent en parallele au lieu de la file
indienne (quatre serveurs npx n'additionnent plus leurs demarrages) et sont
prechauffes au lancement du service, donc le premier message ne paie plus le
handshake. Une session est publiee dans le pool avant d'aboutir : deux
appelants simultanes partagent la meme tentative au lieu de lancer deux
process.
Interface : la vitesse de generation (prefill/decode) reapparait sous chaque
reponse, en fondu, avec un interrupteur pour la masquer ; infobulles " ? "
qui n'etaient plus rognees ; espace superflu en haut des cartes du mode
agent ; pastilles d'etat redessinees et plaquees a droite ; moteurs renommes
en llama.cpp precompile / compile / personnalise ; badge conseille lisible en
sombre ; section Service fondue dans Moteur ; plus qu'un enregistrement
automatique pour l'acces internet.
Documentation : le README dit desormais que Crawl4AI est un serveur a
heberger soi-meme, avec la commande Docker.
- Flux : le reliquat retenu par la garde « </think> » est vidé dès qu'un appel
d'outil arrive, au lieu de la fin du flux. Sans ça il partait APRÈS
l'événement d'outil et la fin de phrase — souvent coupée en plein mot —
atterrissait dans une bulle séparée sous l'outil.
- Le plafond d'appels d'outils par tour (TOOL_LIMIT) et l'anti-boucle « appel
identique répété » sont SUPPRIMÉS : ils coupaient des tours légitimes (une
recherche enchaîne facilement des dizaines d'appels). Le bouton stop reste
le seul frein. Endpoint /api/agent/tool-limit et son interrupteur retirés.
- Prompt système : « You are Jean » (majuscule) — le modèle recopiait la casse
et se présentait en minuscule.
- UI : titres du menu tous en monospace capitales via une seule règle (la casse
vient du CSS, plus du HTML).
- UI : le message envoyé s'affiche tout de suite en gris (« envoi… ») et
s'éclaircit quand le serveur le confirme ; il ne disparaît plus pendant
l'aller-retour, et il est retiré si l'envoi échoue.
- UI : voile de chargement du fil (« chargement de la conversation… » /
« connexion au serveur… ») — un chat vide ne se confond plus avec une
connexion lente.
- UI mobile : hauteur de coque 100dvh hors PWA (100vh en PWA), et plus aucun
défilement du document. Le mode PWA est détecté par navigator.standalone :
le média display-mode ne matche pas, faute de manifeste.
Coque en 100vh au lieu de 100dvh : mesure faite sur iPhone en PWA, la vue web
couvre 956 pt mais la fenetre de mise en page n'en fait que 894, calee en haut.
100dvh (comme height:100%) vaut 894 -> il restait une bande morte de 62 pt sous
la carte de saisie, qui se recalait au premier defilement. 100vh se refere au
grand viewport et vaut bien 956.
La marge de zone sure passe du <body> a la carte elle-meme : geometrie
identique, mais l'arrondi bas reste detache du fond.
Listes deroulantes : la liste ouverte d'un <select> n'herite pas du fond de son
select ; nos selects transparents a texte clair donnaient du texte clair sur
fond blanc en theme sombre (signale sur Cache KV, en fait toutes les listes).
Les <option>/<optgroup> portent desormais les couleurs du theme.
- Les notifications du bas d'ecran (#toast) n'avaient pas de z-index. Depuis
que la mise en page en colonne rend le composer absolu (z-index 4), elles
etaient peintes DESSOUS et n'apparaissaient plus. Elles passent au-dessus du
composer, sous les modales.
- La zone de chat reserve une gouttiere de barre de defilement de chaque cote
(scrollbar-gutter: stable both-edges) ; le composer, lui, n'est pas defilant.
Les messages etaient donc en retrait d'une gouttiere (~15 px) par rapport a
la zone de saisie, ecart bien visible quand la barre laterale est escamotee.
La gouttiere reelle est mesuree en JS et reportee sur le composer.
Interface
- Un seul theme, en deux variantes claire et sombre. Les themes Classique,
Doux, ChatGPT et AJEAN sont retires, ainsi que le reglage de police et ses
quatre variantes (plus aucun telechargement Google Fonts).
- La disposition en colonne centree devient celle de l'application : reponses
sans bulle, question en pastille a droite, composer en pilule.
- Menu lateral refondu sur un gabarit unique repris des listes de la modale de
preset : cartes, lignes de 34 px, intitule a gauche et controle a droite.
Menu replie = 462 px, plus de defilement au chargement.
- GPU et RAM fusionnes en une section Machine, avec un vrai bloc de
statistique (nom, valeur alignee, jauge, detail).
- Palette sombre plus contrastee : gris de texte a 7,6:1 (contre 5,6),
bordures et surfaces enfin distinctes du fond.
- Le logo affiche toujours AJEAN (le A n'apparaissait qu'en mode agent) et
passe en couleur d'accent quand l'agent est actif.
- Les garde-fous du serveur ([stop: ...]) s'affichent en encart discret.
Corrections
- Fond d'accent + texte blanc en dur : illisible en mode sombre (bouton
enregistrer de l'editeur de preset, boutons accoles, bulle utilisateur).
- Pave des interrupteurs invisible sur piste claire, piste trop proche du fond.
- Valeurs cle/valeur inversees (« Go 24 / 18,2 ») : direction:rtl sans
unicode-bidi:plaintext.
- Jauge de VRAM invisible (fond de la jauge = couleur de sa carte).
- Badges d'etat flottants dans les en-tetes (deux margin-left:auto).
- Ombres et voiles calibres pour un fond sombre, trop lourds sur du blanc.
Preferences
- /api/prefs n'accepte plus que theme=light|dark et les quatre drapeaux
d'affichage ; les cles obsoletes (police, anciens themes) sont purgees a la
premiere ecriture, et le client normalise un theme herite.
- 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.
- renommage : « Jean » devient « AJEAN » dans tous les textes visibles (titre de
l'UI, proprietes du binaire Windows, barre de menus macOS / zone de
notification, messages du terminal, README). La commande, les services, les
chemins et le depot ne changent pas.
- nouveau thème « AJEAN sombre » (même habillage pixel, palette nuit) ; les
regles de mise en page sont partagees via [data-theme^="ajean"].
- l'IA montre ce qu'elle ecrit : les outils edit / mem_add / mem_edit renvoient
un diff ligne a ligne, affiche en vert (+) et rouge (-) dans la bulle d'outil
et persiste avec la conversation (chat_diff.go).
- ecritures idempotentes : si la modification est deja en place, edit et
mem_edit repondent « deja a jour » au lieu d'une erreur trompeuse ; un appel
d'outil rigoureusement identique n'est plus rejoue dans le meme tour.
- saisie du chat auto-agrandissante (une ligne au repos en thème ChatGPT, deux
ailleurs), bouton d'envoi enfin aligne, astuce clavier detachee de la carte.
- editeur de preset relu pour le thème AJEAN (plus de double encadrement), champ
+ bouton de telechargement recolles dans tous les thèmes, interrupteurs carres.
- emojis retires de l'interface (les glyphes monochromes restent).
- theme "AJEAN" : fond clair quadrille, bleu #1f6feb, aucun arrondi, bordures de
2 px, ombres en blocs decales, boutons en capitales qui s'enfoncent au survol.
Meme charte que la landing ajean.app.
- il devient le theme par defaut (registre, initTheme, script anti-flash du head).
- correctif : "ajean" manquait dans la liste blanche serveur (web_prefs.go), donc
le choix etait rejete et le thème "sautait" a chaque rafraichissement.
- logo : le mot AJEAN est dessine en pixels (SVG, grille 4x5 par lettre, trait
d'un module, j repris de la tuile du favicon) au lieu d'etre ecrit en texte ;
le "a" du mode agent garde son animation d'apparition.
- dyld IGNORE LD_LIBRARY_PATH : sur macOS les .dylib livrees a cote de
llama-server n'etaient pas trouvees, le moteur mourait sans un mot
- nouvelle route GET /api/service/log (journalctl sous Linux, fichier de
log ailleurs) + panneau repliable ouvert en cliquant la pastille d'etat :
on voit enfin POURQUOI un modele ne charge pas
- Presets : la détection du preset actif compare désormais l'ENSEMBLE des
KEY=VALUE effectifs (ordre, commentaires, lignes vides et clés appareil
ignorés) au lieu d'un hash ligne à ligne. Fini le preset qui n'apparaît plus
en surbrillance après un reformatage de config.env (toggle mémoire/internet…).
Couvert par un test unitaire.
- UI : toggles « Paramètres » du mode agent dans des cartes bordées ; champs de
la modale MCP correctement espacés ; section MOTEUR sans contours colorés ;
liens « mettre à jour » / « vérifier la version » sans soulignement.
- Chat : valide le JSON des arguments d'outil avant de les stocker dans
l'historique. Un modèle très quantifié pouvait émettre des arguments
tronqués/non-JSON (non vides) qui, persistés, faisaient échouer le template
de chat de llama.cpp à chaque requête → 500 en boucle jusqu'au reset.
json.Valid remplace le simple test != "" (llm_client.go).
- UI : section « Accès OpenAI » remise au propre (adresses locale/publique
groupées, clé API), sans émojis ; « Accès distant » sans émojis. Classes
.io-input/.io-cap partagées.
Jean peut désormais se connecter à des serveurs MCP tiers pour enrichir la
palette d'outils de l'IA (accès fichiers, bases de données, APIs métier…).
- Transports stdio (process local npx/uvx/binaire) et http (Streamable HTTP
distant, en-têtes d'auth possibles), via le SDK officiel go-sdk.
- Outils namespacés mcp__<serveur>__<outil>, exposés seulement en mode agent
(même niveau de confiance que le shell : exécution de code sur l'hôte).
- Sessions persistantes (connexion paresseuse + cachée, reconnexion auto).
- Gestion complète dans l'UI web : ajout/édition de serveurs, activation par
serveur ET par outil (pour maîtriser le contexte), état de connexion en direct.
- Config dans mcp.json (format Claude Desktop mcpServers, copiable).
- Banniere "Compactage du contexte en cours" pendant le resume (emis avant/apres
via deltas compacting), au lieu d'une UI figee sans info.
- Le bouton "compacter" declenche desormais une VRAIE compaction manuelle
(/api/chat/compact -> CompactNow, detache) ; visible des 50% de contexte. Fini
le toast "c'est automatique" qui ne faisait rien.
- Erreurs de transport llama-server (connection refused / timeout / EOF)
traduites en message clair ("le moteur demarre/charge, reessaie") au lieu du
brut "dial tcp 127.0.0.1:8080: connect: connection refused".
- Libelle "Telecharger depuis Hugging Face" -> "Telecharger un modele"
(pas forcement HF, juste un lien direct .gguf).
- Le bouton devient une icone compacte (⬇) collee au champ (input-btn) au lieu
d'un gros bouton "telecharger" qui prenait toute la largeur.
Corrige la confusion : deux endroits ecrivaient la ligne BIN et se battaient
(la barre laterale changeait le BIN global + redemarrait, puis selectionner un
preset remettait le BIN du preset). Desormais :
- la section laterale 'Backend llama.cpp' sert UNIQUEMENT a installer / mettre
a jour les moteurs (rapide / optimisee), elle ne change plus le BIN actif
- le choix du moteur se fait PAR MODELE, dans l'editeur de preset, avec 3
options claires : Rapide (precompile) / Optimise (compile) / Personnalise
(chemin libre ou backend depose dans le dossier backends de jean, detecte)
- detection auto de l'option a l'ouverture selon le BIN du preset ; l'astuce
indique le dossier ou deposer un binaire custom
- /api/llamacpp expose backends_dir ; l'endpoint /use n'est plus utilise par l'UI
v0.4.11
Refonte de la section pour la rendre utilisable sans connaissances techniques :
- suppression du badge a cote du titre et de tous les details (commit, retard
git, arch CUDA, nombre de jobs, chemins) ; une seule ligne 'Moteur actif : …'
- deux cartes claires : Version rapide (precompile, conseillee) / Version
optimisee (compilee) ; un clic installe, active ou bascule
- bascule instantanee entre deux versions deja installees (nouvel endpoint
/api/llamacpp/use : repointe BIN + redemarre, sans recompiler)
- carte active : '✓ Actif' + 'mettre a jour' ; progression et logs replies sous 'details'