Commit Graph
7 Commits
Author SHA1 Message Date
nathaninline 6cb678d42d replay: coalescer aussi les tool_used (garder l'etat final done, jeter le streaming d'args) - divise par ~100 les events d'outils rejoues, fix lenteur mobile au refresh 2026-07-22 09:35:09 +02:00
nathaninline faa377e64f SSE: padding APRES caught_up (16Ko) au lieu de dessus - le dernier message n'est plus la queue coincee dans le tampon proxy 2026-07-22 09:19:39 +02:00
nathaninline 51c2c2d80f v0.4.3 : anti-buffering SSE (Cloudflare) - fin des derniers messages en retard au refresh
Le chat E2E d'app.ajean.link traverse Cloudflare (ajean.link, proxy orange) qui
bufferise le flux SSE par lots : la queue du replay arrivait 20-30s apres le reste,
de facon intermittente (surtout Safari iOS). Corrige par la technique standard :
padding d'amorcage en tete de flux + padding sur caught_up (force le flush de la
queue), Cache-Control: no-transform (interdit a Cloudflare de bufferiser/compresser),
et heartbeat 15s->4s (borne le pire cas).
2026-07-22 09:15:15 +02:00
nathaninline 2f56d99d04 perf + robustesse: replay coalesce + envoi resilient
- Subscribe rejoue le journal COALESCE (deltas texte consecutifs fusionnes en un
  evenement, avec toks + bornes ts) : chargement rapide meme sur longue conv, fini
  le rendu markdown quadratique token par token
- send() resilient : retry, 409/generating traite comme succes -> plus de 'network
  error' alarmiste alors que l'IA repond quand meme ; reconnexion du flux plus rapide
2026-07-21 20:40:08 +02:00
nathaninline e28bc45557 UI: pas d'animation de repli au refresh + reorg reglages
- serveur emet {caught_up} quand le replay est draine ; le client cree alors les
  bulles raisonnement/outil DEJA repliees (collapseInstant, sans animation) tant
  qu'on rejoue le journal -> au refresh elles apparaissent fermees direct
- 'Mise a jour' passe au-dessus de 'Actions'
- le toggle compactage rejoint la section Parametres (sous le mode agent)
2026-07-21 20:28:10 +02:00
nathaninline 54e14c7935 vitesse des bulles calculee depuis les horodatages serveur (ts par evenement)
Le calcul cote client (performance.now) donnait une vitesse presente ou non selon
que le tour etait live ou rejoue. On horodate chaque LogEvent cote serveur (TS) et
le client derive tok/s de firstTs->lastTs : correct en direct ET au replay. Hack
replayTarget supprime.
2026-07-21 17:38:28 +02:00
nathaninline 4514a96585 conversation persistee cote serveur + generation autonome (multi-appareils)
L'historique et la generation vivent desormais sur le serveur jean, plus dans le
localStorage du navigateur :
- conversation.go : store unique (Messages vue modele + Log d'evenements rejouable),
  persistance disque JeanHome/conversation.json, generation dans une goroutine
  detachee (context.Background) -> fermer le navigateur ne coupe plus la reponse
- runChatStream devient un pur abonne (rejoue Log[from:] puis suit le direct) ;
  nouveaux endpoints /api/chat/send|stop|reset|state
- UI : flux d'abonnement permanent + replay du journal (outils/vitesses/raisonnement
  reviennent apres refresh), synchro live inter-appareils, reconnexion auto
- compactage manuel neutralise (auto cote serveur), vitesses rendues depuis les
  stats persistees
2026-07-21 17:20:27 +02:00