4.0 KB · updated 2026-07-06 · md

v0.7.2.fr.md

docs/i18n/release-notes/v0.7.2.fr.md

Tesserae v0.7.2 — la découverte et la compilation ne se bloquent plus

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Deutsch

<!-- translations:end -->

Publié le 2026-06-12 · PyPI · GitHub release · pip install --upgrade tesserae==0.7.2

Une version corrective qui supprime trois façons dont Tesserae pouvait se figer sur des machines avec un gros historique de sessions d'agents : une découverte de sessions qui ne rendait jamais la main, des sous-processus d'agents CLI bloqués à jamais après expiration du délai, et des compilations concurrentes qui s'empilaient sur le même état de projet.

1. tesserae sessions discover rend la main — même avec des dizaines de Go d'historique

La découverte analysait auparavant l'intégralité du JSON de chaque transcription de tous les projets sous chaque racine de compte avant de filtrer. Sur une machine avec ~57 Go d'historique Claude Code / Codex, la commande ne rendait en pratique jamais la main.

Trois correctifs qui se multiplient :

  • Préfiltre par marqueur — une transcription ne peut appartenir au projet ciblé que si le chemin du projet apparaît littéralement dans le fichier ; les transcriptions étrangères sont donc désormais écartées par un balayage d'octets bruts (~50× plus rapide que l'analyse) avant tout travail JSON.
  • Déduplication des racines symlinkées~/.claude pointant vers ~/.claude-personal1 ne provoque plus un double balayage de chaque transcription.
  • Cache de balayage indexé par mtime — les résultats du criblage sont conservés dans ~/.cache/tesserae/discovery_scan.sqlite (modifiable via TESSERAE_DISCOVERY_CACHE), de sorte que les exécutions suivantes ne relisent que les transcriptions nouvelles ou modifiées.

Mesuré sur la machine concernée : ne rend jamais la main → 3 min 16 s à froid → 1 min 26 s à chaud, 4 048 sessions trouvées. tesserae refresh et l'import de sessions empruntent le même chemin et accélèrent d'autant.

2. Les délais d'expiration des agents CLI ne peuvent plus figer une compilation

Les appels codex exec / claude -p utilisaient subprocess.run(capture_output=True, timeout=...), qui ne tue que l'enfant direct à l'expiration, puis vide les tuyaux de sortie sans délai limite. Les CLI d'agents engendrent leurs propres enfants qui héritent de ces tuyaux : une expiration pouvait donc laisser une compilation bloquée à 0 % de CPU indéfiniment (observé : ~2 jours) derrière des petits-enfants orphelins.

Les appels aux CLI LLM s'exécutent désormais dans leur propre groupe de processus, et une expiration tue le groupe entier avec un vidage borné — un timeout signifie toujours mort, jamais figé.

3. Une seule compilation par projet à la fois

ProjectWiki.compile détient désormais un verrou exclusif sur .tesserae/compile.lock. Un refresh déclenché par un hook alors qu'une compilation est déjà en cours échoue immédiatement avec un message clair indiquant le pid du détenteur, au lieu de s'empiler silencieusement sur le même état .tesserae. Définissez TESSERAE_COMPILE_LOCK_WAIT=<secondes> pour attendre le verrou à la place. Le verrou repose sur flock(2) : une compilation qui plante ne laisse jamais de verrou périmé.

4. tesserae --version

L'aide racine commence désormais par la version installée, et tesserae --version (ainsi que -V / version) l'affiche directement.

Mise à niveau depuis v0.7.1

Remplacement direct. Aucun changement de configuration. Le premier sessions discover / refresh après la mise à niveau paie une passe de criblage unique pour remplir le cache de balayage ; les exécutions suivantes sont rapides.