Anthropic corrige le scintillement du terminal Claude Code : de l’analyse des causes profondes à la reconstruction du système de rendu Une présentation du développeur de Claude Code @trq212 détaille le problème de scintillement d'écran persistant dans Claude Code et comment l'équipe a réduit le scintillement d'environ 85 % en réécrivant le système de rendu. La cause première du problème de scintillement est que l'interface du terminal se compose de deux parties : • Zone d'affichage : La zone inférieure actuellement visible par l'utilisateur. • Tampon de défilement : le contenu historique survolé. Les outils en ligne de commande classiques (comme `ls` ou `echo`) affichent leur résultat une seule fois puis se terminent, sans mettre à jour fréquemment l'interface. En revanche, Claude Code est une interface utilisateur interactive de longue durée qui peut redessiner la fenêtre d'affichage des dizaines de fois par seconde. Lorsque le contenu dépasse la hauteur de la fenêtre d'affichage, la première ligne est repoussée dans la mémoire tampon de défilement, ce qui provoque un rendu partiel « hors écran ». Pour éviter les erreurs de rendu ou toute confusion lors du redimensionnement du contenu par le terminal, les anciens systèmes nécessitaient de vider la totalité de la mémoire tampon de défilement à chaque fois, ce qui entraînait un scintillement perceptible. Solution : Refonte du système de rendu. Ces derniers mois, l’équipe a entièrement réécrit le moteur de rendu. Principales améliorations : • Diffing : Compare les modifications dans chaque cellule terminale une par une et n'émet que les séquences d'échappement ANSI nécessaires pour mettre à jour les parties modifiées. Minimiser le rafraîchissement en plein écran : n’effectuer un rafraîchissement complet qu’en cas d’absolue nécessité (par exemple, lorsque la taille du terminal change). Pourquoi ne pas utiliser le mode « écran alternatif » ? Certaines applications de terminal (telles qu'Emacs ou Vim) basculeront en mode « écran alternatif » : • Le programme contrôle entièrement le défilement, la sélection et les autres fonctions. • À la fermeture du terminal, le contenu d'origine sera automatiquement restauré. Cela permet d'éliminer complètement le scintillement. L’inconvénient réside toutefois dans la perte de l’expérience utilisateur native de l’appareil, par exemple : • Recherche globale Cmd+F. • Sélection de texte à la souris. • Fonctionnalité copier/coller, etc. L'équipe accorde une grande importance aux fonctionnalités natives de l'appareil et se concentre donc actuellement sur le maintien du mode d'écran principal. D'autres options d'affichage pourraient être envisagées ultérieurement, mais les exigences sont élevées et aucun compromis ne sera fait. Pourquoi la réparation prend-elle autant de temps ? Le code de rendu initial ne comportait pas suffisamment de tests automatisés. La modification d'une partie entraînait souvent des erreurs inattendues ailleurs, ralentissant ainsi le développement. L'avancée majeure a été l'introduction des tests basés sur les propriétés : Générez des milliers d'états d'interface utilisateur aléatoires (avec différentes largeurs de terminal, longueurs de contenu, cas limites Unicode, etc.). • Afficher simultanément le même état via les anciens et nouveaux systèmes, et comparer automatiquement les résultats pour vérifier leur cohérence.
Chargement du thread
Récupération des tweets originaux depuis X pour offrir une lecture épurée.
Cela ne prend généralement que quelques secondes.
