Changelog

Toutes les modifications notables apportées à VelaTerm, du plus récent au plus ancien.

v0.1.91 est la première version publique ; les versions antérieures étaient des itérations internes et ne sont pas prises en compte.

v0.2.15

Dernières mises à jour
  • 🆕 Un onglet Nouvelle session permet de choisir, autour d’une zone de saisie centrée, le projet, l’agent, le modèle, l’effort de raisonnement, les autorisations, la vue et un worktree isolé, puis démarre la session avec votre première tâche ; il s’ouvre depuis « Nouvelle session… » dans les menus de nouvelle session, depuis le bouton en forme d’étoile de la barre d’onglets ou depuis le volet central vide.
  • 🐋 DeepSeek Harness (dsh) rejoint les agents de la vue conversation, avec les cartes d’outils, le raisonnement, les demandes d’autorisation, le changement de modèle et d’effort, l’utilisation du contexte et un historique qui reprend après la réouverture.
  • 🧩 Copilot, Cursor, Kimi et Grok peuvent désormais s’exécuter dans la vue conversation.
  • 🤖 ZCode de Zhipu rejoint les agents de la vue conversation : il utilise l’agent intégré de l’application de bureau ZCode lorsque celle-ci est installée, et vous pouvez vous connecter avec Z.ai ou Zhipu BigModel, ou passer de l’un à l’autre, sans quitter la conversation.
  • 📊 Pour les sessions ZCode, le panneau Info affiche les jetons, le taux de succès du cache et la vitesse de génération du tour en cours, l’utilisation du contexte, ainsi que l’utilisation sur 5 heures et hebdomadaire du GLM Coding Plan.
  • 📦 ZCode (sous macOS et Windows) et DeepSeek Harness s’installent depuis la conversation avec « Installer », et le message qui avait échoué est renvoyé une fois l’installation terminée.
  • ⬆️ Un clic sur « Mise à jour » dans le badge de version d’un agent ouvre une boîte de dialogue qui exécute la commande de mise à jour propre à cet agent en affichant sa sortie en direct, et propose « Redémarrer l’agent » pour poursuivre la conversation avec la nouvelle version.
  • 🔌 Les connexions distantes comportant de nombreux terminaux actifs ne se coupent plus à répétition après la reconnexion.
  • 🔄 Après le redémarrage d’un serveur distant, les sessions ne restent plus bloquées en synchronisation pendant le démarrage de leurs terminaux.
  • 🔁 Lorsqu’une conversation ne parvient pas à se synchroniser, elle réessaie automatiquement, et l’espace situé sous la zone de saisie affiche l’état avec un bouton « Réessayer ».
  • 🐢 Les connexions SSH vers un hôte distant très chargé n’expirent plus pendant l’attente de la réponse du serveur.
  • 🔗 « Reconnecter maintenant » dans une fenêtre distante rétablit immédiatement le tunnel SSH au lieu d’attendre la prochaine tentative automatique.
  • 🪟 Sous macOS et Windows, la fermeture de la fenêtre principale demande une confirmation et laisse les fenêtres distantes ouvertes ; sous macOS, l’application reste dans le Dock, et la réouverture de la fenêtre principale restaure votre espace de travail enregistré.
  • 🧾 Les fichiers modifiés de la liste « This turn » et du panneau Git ouvrent leurs diffs dans un onglet plutôt que dans une boîte de dialogue.
  • ⌨️ Les suggestions de commandes du terminal n’apparaissent plus pendant la saisie : Zsh affiche en gris, dans la ligne, la dernière commande correspondante de l’historique, que → ou Fin permet d’accepter, et la liste ne s’affiche que lorsque vous appuyez sur Tab ; choisissez « En ligne + Tab », « Tab uniquement » ou « Désactivées » dans les paramètres.
  • 💬 Dans les aperçus Artifact, vous pouvez cliquer sur des éléments de la page pour laisser des commentaires à la session, et les options marquées sur la page sont listées au-dessus de l’aperçu pour passer de l’une à l’autre et en choisir une.
  • 🔍 La recherche dans une conversation s’effectue en texte intégral, trouve tous vos mots dans n’importe quel ordre et affiche « Aucun résultat » au lieu de « Chargement de la conversation… » lorsque rien ne correspond.
  • 🧰 Les compétences fournies, comme vspawn et vrefer, s’installent désormais dans le dossier partagé ~/.agents/skills, ce qui permet à Pi, ZCode et DeepSeek Harness de les utiliser, et Codex n’affiche plus chaque compétence en double.
  • 📋 Dans la vue conversation, les résultats de /code-review s’affichent sous forme de liste de constats avec des emplacements de fichiers cliquables.
  • 🌐 Lorsque la traduction des réponses est désactivée pour une session, les cartes de question proposent un bouton « Traduction » qui traduit uniquement la carte concernée.
  • ✂️ Les questions et les options des cartes de question peuvent être sélectionnées et copiées.
  • 🌳 L’arborescence des sessions place sous la ligne d’un worktree les groupes et les sessions parentes qui lui appartiennent, y compris les sessions démarrées directement dans le dossier de ce worktree.
  • 🌲 Les groupes imbriqués utilisent le worktree du groupe parent le plus proche qui en possède un, pour les nouvelles sessions, les actions Git et les fusions.
  • 🔎 Renommer un élément pendant que l’arborescence des sessions est filtrée ne le fait plus disparaître des résultats.
  • ⏳ Lorsque OpenCode atteint une limite d’utilisation, une seule ligne d’erreur indique la limite concernée, et la conversation reprend automatiquement après la réinitialisation lorsque OpenCode en communique l’heure.
  • 📸 La superposition de capture d’écran apparaît plus rapidement après l’appui sur le raccourci.
  • 🚀 Les fenêtres affichent une ébauche de la disposition dès leur ouverture et chargent au démarrage moins de la moitié du code qu’auparavant.
  • ⚡ vspawn --yes crée directement la session enfant, sans afficher la carte de lancement.
  • 🛡️ Les audits de code utilisent Codex Security 0.8.2 et peuvent s’exécuter avec DeepSeek, et les formulaires d’audit et « Ajouter à la base de connaissances » reprennent les champs d’agent, de modèle et d’effort des nouvelles sessions, en acceptant les modèles absents de la liste.
  • 🌗 Sous macOS, lorsque le thème suit le système, la barre de titre passe en sombre en même temps que le reste de la fenêtre.
  • 📥 Les installations en un clic ne signalent leur fin qu’une fois la commande d’installation terminée, et une installation incomplète de Zoo Code est considérée comme absente au lieu de provoquer un plantage au démarrage.
  • 🖥️ Le passage d’une session à la vue terminal n’échoue plus avec l’erreur « The initial task was already claimed ».
  • 🧟 Les sessions ne signalent plus « The previous agent is still running » lorsque l’identifiant de processus de l’ancien agent a été réutilisé par un autre programme.
  • 🧯 Après la reconnexion du navigateur, les conversations ne conservent plus de ligne TransportError liée à la déconnexion.
  • 🪞 Avec le mode miroir activé, l’ouverture et la fermeture d’onglets ne transforment plus les sessions en vue conversation en cartes de remplacement « Restauré depuis l'espace de travail enregistré ».
  • 📜 Les conversations Claude contenant une réponse abandonnée chargent de nouveau leur historique normalement.
  • 🧠 Les modèles Claude intégrés qui manquent au catalogue de modèles du site apparaissent toujours dans les formulaires de nouvelle session et de lancement.

v0.2.14

Dernières mises à jour
  • 🔌 Les connexions distantes ne se coupent plus et ne se reconnectent plus chaque seconde lorsque plusieurs longues conversations sont ouvertes ; ces conversations s’ouvrent de nouveau normalement.
  • ⏹️ Les connexions SSH et WSL affichent un bouton « Arrêter » pendant la connexion, ce qui permet de l’interrompre à n’importe quelle étape, y compris pendant la préparation du serveur ; pendant une connexion, « Annuler » dans la boîte de dialogue du mot de passe l’interrompt également.
  • 🌿 L’arborescence des sessions et les libellés de branche n’accumulent plus de processus Git dans les grands dépôts, et les lectures Git en arrière-plan s’arrêtent au bout de 30 secondes au lieu de rester bloquées.
  • 🧩 Le panneau Git se met à jour beaucoup plus vite dans les dépôts comportant des sous-modules : des modifications à l’intérieur d’un sous-module ne le font plus apparaître dans le dépôt parent, mais un sous-module qui pointe vers un nouveau commit reste listé.
  • 📁 Les groupes peuvent être glissés vers d’autres projets avec leurs groupes imbriqués et leurs sessions, et ces sessions démarrent ensuite dans le dossier du nouveau projet.
  • ⏳ À l’ouverture d’une longue conversation, un petit indicateur « Chargement de la conversation… » remplace « L’indexation de l’historique est en cours ».
  • 🖱️ Le menu contextuel des sessions affiche « Tuer le processus » tant que le processus de la session est en cours d’exécution, y compris lorsqu’il a été lancé depuis un autre client, et le masque une fois le processus terminé.

v0.2.13

Dernières mises à jour
  • 📱 Sur téléphone, les agents exécutés dans la vue terminal s’ouvrent directement sur le terminal, avec une zone de saisie flottante pour rédiger ou dicter des messages entiers ; de petits boutons « Transcription » et « Terminal » dans l’en-tête permettent de passer de l’un à l’autre, et la transcription ne propose plus de passer à la vue conversation.
  • 🔑 Sur les connexions partagées, le propriétaire de l’hôte peut ouvrir le terminal des agents exécutés dans la vue terminal et y saisir du texte, et la liste des sessions affiche aussi les agents sans vue conversation, comme Kiro ; les comptes invités voient toujours une transcription en lecture seule.
  • 🌐 Traduire manuellement une réponse dans une session inactive affiche la traduction au lieu de « Traduction indisponible ».
  • 📜 Quand vous remontez dans une longue conversation, les nouvelles réponses ne restent plus bloquées derrière « Charger les messages plus récents », et redescendre depuis l’historique plus ancien charge automatiquement les messages plus récents.
  • 🧭 La vue téléphone ne propose plus « Passer à la version bureau », et les téléphones qui étaient passés à la version bureau reviennent automatiquement à la vue téléphone.
  • 🧹 Les enregistrements d’exécution de vrun sont supprimés automatiquement 24 heures après la fin de la tâche.

v0.2.12

Dernières mises à jour
  • 🛑 L’arrêt d’un tour Claude dans la vue conversation prend effet immédiatement, et votre message suivant part aussitôt, même lorsque l’ordinateur est très sollicité.
  • 🪟 Les raccourcis de menu comme Cmd+D et les clics sur les notifications n’agissent que dans la fenêtre concernée : les fenêtres distantes ne se divisent plus en même temps que la fenêtre principale.
  • 🔎 La recherche globale renvoie des résultats pendant l’indexation et indique combien de sessions restent à indexer.
  • ⚡ La recherche globale indexe les conversations Claude, Codex, Pi et OMP directement depuis leurs fichiers, bien plus vite et sans remplir le cache d’historique des conversations, et l’ouverture d’un résultat mène au message exact.
  • 🧠 L’historique des conversations est lu directement dans les enregistrements d’origine des agents plutôt que dans une copie distincte sur le disque ; les dossiers chat-index et chat-spool sont supprimés au démarrage pour libérer de l’espace disque.
  • 📱 Sur téléphone, les sessions exécutées dans la vue terminal proposent de passer à la vue conversation ; après confirmation, l’application de bureau bascule aussi la session.
  • 👀 Les connexions partagées affichent en lecture seule les sessions exécutées dans la vue terminal, et seul le propriétaire de l’hôte peut les passer en vue conversation.
  • 🌐 Les paramètres de traduction ajoutent « Activer la traduction par défaut », qui définit l’état initial de la traduction pour les sessions sans choix enregistré.
  • 🌳 L’arborescence des sessions regroupe sous une même ligne de worktree les sessions qui utilisent ce worktree.
  • 📄 Les réponses courtes dans la vue conversation, y compris les messages avec images, n’affichent plus le lien « Lire le contenu intégral ».
  • 🔕 Le bouton qui efface tous les badges de notification se trouve désormais à l’extrémité gauche de la barre inférieure de l’arborescence des sessions.
  • 🤖 Les boîtes de dialogue de nouvelle session et de reprise de session affichent l’icône de chaque agent dans la liste des types d’agent, et la liste des autorisations s’ouvre vers le haut quand la place manque en dessous.
  • 🩹 La vue conversation ne signale plus d’enregistrements endommagés dans l’historique lorsque le stockage est très sollicité, et reprend le chargement peu après.
  • 📝 Dans l’éditeur Markdown, Retour arrière et Maj+Tab retirent la numérotation d’un élément de liste vide ou d’un paragraphe non numéroté à l’intérieur d’une liste.
  • 🔵 La puce « Tâches » de la vue conversation passe au cyan, la couleur qu’utilise l’arborescence des sessions pour le travail en arrière-plan, tant que des tâches d’arrière-plan sont en cours ; dans la liste des tâches, celles qui sont en cours s’affichent aussi en cyan avec la mention « En cours ».
  • 🗑️ La suppression d’une session ne propose plus de retirer les worktrees git ; utilisez « Delete worktree… » pour en retirer un.
  • 🔁 L’état de la traduction se met à jour dès qu’il change, et non plus toutes les 10 secondes, et les paramètres de traduction revérifient les agents installés à chaque ouverture.
  • 💤 Le panneau Info suspend l’échantillonnage des ressources du processus tant que la fenêtre est masquée.
  • ⏱️ L’indicateur d’activité et le minuteur du tour dans la vue conversation ne disparaissent plus et ne restent plus affichés à tort lorsqu’un tour commence ou se termine pendant que vous changez de session.
  • 🔗 vrefer numérote les messages de la même façon que vsearch, et pour les sessions Codex dérivées, vrefer et la recherche globale incluent l’historique de la conversation parente.

v0.2.11

Dernières mises à jour
  • 🧪 Les aperçus HTML expérimentaux s’ouvrent à côté des conversations ou dans des onglets, s’actualisent avec les fichiers et proposent source, console et versions ; la validation native et multiplateforme reste à effectuer.
  • 📜 Les longues conversations chargent les anciens messages par pages et développent les contenus longs à la demande, sans doublons de messages ou d’outils dans les conversations Claude et Codex en direct.
  • 🔎 La recherche globale actualise plus vite les conversations modifiées, reprend l’indexation après une interruption et ignore les conversations illisibles tant que leurs fichiers ne changent pas.
  • 📊 Le nombre de fichiers modifiés du panneau Info ouvre la liste des fichiers édités pendant ce tour, avec les nombres de lignes ajoutées et supprimées lorsqu’ils sont disponibles.
  • 🗂️ Les conversations archivées suivent leurs projets, groupes et sessions parentes d’origine dans des lignes compactes, avec des projets repliables et des commandes pour tout développer ou replier.
  • 🧩 Les compétences des plugins du compte Codex apparaissent dans les suggestions de complétion, dont les menus se parcourent avec les flèches.
  • ⌨️ Sous Windows et Linux, Ctrl+Maj+C copie le texte sélectionné dans le terminal et peut être modifié dans Paramètres ▸ Raccourcis.
  • 🧹 Après /clear dans le terminal Claude, rouvrir la session ou passer à la vue conversation ne reprend plus la conversation effacée.
  • 📏 Le panneau Info affiche la limite de contexte du modèle pour les conversations OpenCode.
  • 🌐 La traduction ajoute Bing Translator sans clé API, des réglages de langue compacts et la traduction avant le renvoi des messages modifiés dans Claude et Codex.
  • 🔤 Les traductions existantes restent visibles après un changement de moteur ou de modèle et peuvent être retraduites.
  • ⏱️ vrun rapporte sa progression toutes les 180 secondes avec le code de sortie 75, permet de poursuivre l’attente avec --wait et protège les tâches actives contre la réutilisation de leur nom.
  • 🧵 Les réponses de Claude déclenchées par la fin d’une tâche en arrière-plan ont leur propre résumé de tâche et séparation de conversation, y compris dans l’historique.
  • ⚠️ Le passage entre les vues terminal et conversation demande confirmation lorsque des tâches s’exécutent en arrière-plan.
  • 🏠 Les sessions sans dossier de travail ou dont le dossier a disparu démarrent dans le dossier personnel dans les deux vues.
  • 🪟 Sous Windows, VelaTerm et le panneau de connexion ne proposent plus d’installer WSL lorsqu’aucune distribution n’est enregistrée.
  • 🔐 Les échecs de connexion à distance comptent dans la limite des tentatives même si la connexion se ferme pendant la vérification du mot de passe.
  • 🏷️ Les badges de version des agents affichent un lien explicite Update: vX lorsqu’une nouvelle version du CLI est disponible.
  • 🔵 Les indicateurs de tâches en arrière-plan restent cyan sans clignoter, et les points d’état sont conservés dans les onglets et la barre latérale plutôt que dans les titres des volets.
  • ✍️ La bordure de saisie des conversations est plus nette, avec un contour externe au focus, et les valeurs du panneau Info ont la même luminosité que leurs libellés dans le thème sombre.
  • 🌿 Les boutons de clonage de projet utilisent une icône de branche avec un repère de projet.

v0.2.10

Dernières mises à jour
  • 🧩 OpenCode v2 est pris en charge en plus de v1, et la liste des modèles se charge correctement avec OpenCode v2.0.26.
  • 🏷️ L’en-tête de session affiche la version de la CLI de l’agent ; lorsqu’une version plus récente existe, le numéro de version renvoie aux instructions officielles de mise à niveau.
  • 🗂️ Le panneau Git affiche jusqu’à 1 000 fichiers modifiés et propose d’ajouter les dossiers volumineux comme node_modules à .gitignore.
  • 🔤 Le panneau Git affiche correctement les noms de fichiers non ASCII, indexe, désindexe et annule les modifications uniquement sur les fichiers choisis, et regroupe les conflits à part.
  • 📜 L’historique Git conserve la plage chargée, les éléments dépliés et la position de défilement lors de l’actualisation.
  • 🌿 La branche affichée dans le panneau de droite, la barre d’état, le titre du terminal et la barre latérale se met à jour dès que vous changez de branche, sans redémarrage.
  • 📁 L’arborescence des fichiers actualise automatiquement les dossiers ouverts et signale ceux qui contiennent des modifications Git.
  • 🧹 Windows : les mises à jour automatiques ne laissent plus d’installateur dans le dossier Temp, et les restes des mises à jour précédentes sont supprimés.
  • 🪝 Windows : Codex, Crush, Kiro, Cursor, Kimi, Antigravity, Copilot et Grok transmettent l’état des sessions directement à VelaTerm, sans scripts PowerShell.
  • 🖱️ Windows : les programmes plein écran du terminal comme vim reçoivent les clics et le défilement de la souris ; la molette n’est plus convertie en touches fléchées.
  • 🕘 Les terminaux zsh lisent et écrivent de nouveau votre propre ~/.zsh_history : history et la flèche haut affichent aussi les commandes des autres terminaux.
  • 🖥️ Les nouvelles sessions Claude et Codex s’ouvrent en vue conversation ; les autres agents s’ouvrent par défaut dans le terminal.
  • 🚀 vspawn accepte --pi et --agent <nom> et peut ainsi lancer n’importe quel agent qui accepte des tâches.
  • ⏱️ Si la liste des modèles n’est pas chargée au bout de 30 secondes, une erreur s’affiche avec Retry.
  • 🗑️ Les préréglages enregistrés peuvent être supprimés dans Paramètres ▸ Agents.
  • ⌨️ L’info-bulle du bouton de capture d’écran indique le raccourci actuel, et son icône se distingue mieux du bouton de partage.
  • 🧭 Le panneau de droite revient de nouveau de Connaissances vers Info et les autres onglets.
  • ✍️ macOS : saisir / dans le terminal avec une méthode de saisie ne l’insère plus deux fois.

v0.2.9

Dernières mises à jour
  • ✨ Le renommage par IA mémorise le modèle et le niveau de raisonnement choisis pour chaque agent.
  • ⛔ Vous pouvez annuler la génération d’un titre par IA avec Cancel, Échap ou un clic en dehors de la boîte de dialogue, puis réessayer.
  • 🧭 Les nouveaux workflows Plan/Execute désactivent par défaut le rôle Review indépendant, que vous pouvez activer dans la boîte de dialogue de lancement ou avec --review.
  • 🤖 Le sélecteur de modèle Chat affiche les états de chargement, d’erreur et de liste vide avec Retry, et les modèles Codex proposés correspondent au compte et à la configuration de la session actuelle.
  • 📊 Le panneau Info affiche une estimation du débit moyen de sortie, y compris les tokens de raisonnement signalés, ou un tiret si cette estimation est indisponible.
  • 🩺 Les paramètres avancés proposent un diagnostic facultatif de la latence de saisie avec un seuil réglable, sans enregistrer le texte saisi.
  • ✂️ L’outil expérimental de capture d’écran dispose d’un bouton dans la barre de titre sur les plateformes de bureau Tauri compatibles, même lorsque son raccourci clavier est désactivé.
  • 🌬️ Les indicateurs cyan des tâches en arrière-plan utilisent la même animation de pulsation dans l’arborescence des sessions, les filtres d’état et la barre d’état.
  • 📁 Les groupes créés avec un filtre d’état actif restent visibles jusqu’à l’actualisation de l’état ou au changement du filtre, à condition de correspondre à la recherche par nom.
  • 🎨 Les journaux des commandes en arrière-plan affichent les couleurs, les styles de texte et la dernière ligne de progression, et la barre d’exécution laisse visible l’indicateur de focus du panneau.

v0.2.8

Dernières mises à jour
  • 🪟 Windows : au retour dans la fenêtre, le focus clavier reste en place lorsqu’il se trouve déjà dans la page.

  • 🛡️ Windows : l’antivirus Huorong ne signale plus VelaTerm ni vela-server comme Trojan/MSIL.ShellLoader.q. Il s’agissait d’un faux positif : pour exécuter des commandes shell depuis la vue de conversation, VelaTerm créait chaque processus à l’état suspendu avant de le relancer, une séquence d’appels qu’utilisent aussi les logiciels malveillants pour injecter du code. Les processus sont désormais lancés normalement, et le code à l’origine de la détection a été supprimé.

  • 🔕 Windows : la création de sessions et l’actualisation de la liste des modèles n’exécutent plus PowerShell en arrière-plan, et l’état des sessions Cursor est désormais déterminé d’après la sortie du terminal, ce qui peut être un peu moins précis.

  • ⛔ Windows : dans la vue de conversation, une saisie commençant par ! n’est plus exécutée comme commande shell ; un avertissement s’affiche et la saisie est conservée, tandis que les commandes déjà présentes dans l’historique restent affichées.

  • 🔐 Les connexions SSH vers des hôtes Windows utilisant le serveur OpenSSH intégré ne lancent plus PowerShell avec -EncodedCommand.

  • 🚀 Les sessions d’agents TUI démarrent correctement lorsque le PATH est long, sans commande de lancement tronquée dans le terminal.

  • ⬇️ Les sessions d’agents TUI reviennent en bas lorsqu’un tour se termine ou que l’agent demande une autorisation, sauf si vous consultez une sortie antérieure.

  • 💾 La récupération expérimentale des conversations introduite dans la v0.2.7 est retirée : Chat n’affiche plus de messages Saved submission en double ni d’avis d’interruption, et les messages en attente non envoyés ne sont plus conservés après un redémarrage.

  • 🔁 Les workflows de planification et d’exécution proposent un rôle Review indépendant et facultatif, activé par défaut pour les nouveaux workflows, avec son propre agent, son modèle et son niveau de raisonnement ; vspawn --plan-execute accepte --review, --no-review, --review-agent, --review-model et --review-effort.

  • 🏷️ « Renommer avec l’IA… » demande d’abord une confirmation et permet de choisir l’agent, le modèle et le niveau de raisonnement pour ce renommage ; la boîte de dialogue s’affiche au centre pendant le chargement des options.

  • 🔍 Les sessions, les groupes et les projets peuvent être déplacés par glisser-déposer lorsqu’une recherche par nom, un filtre d’état ou un filtre de repère est actif.

  • ➕ Lorsqu’un filtre d’état est actif, une nouvelle session reste sous son groupe ou sa session parente jusqu’à l’actualisation de l’état ou la modification du filtre.

  • 🪟 Les fenêtres de l’application s’ouvrent par défaut en plus grand, selon la zone disponible de l’écran, et les fenêtres de connexion s’ouvrent centrées sur l’écran de la fenêtre principale.

  • 🎨 Les collections ont une nouvelle icône à couches empilées, les icônes de la barre de titre sombre sont légèrement atténuées, les quatre boutons de la barre latérale vide ont la même largeur et les boîtes de dialogue de formulaire utilisent un seul style d’étiquette.

v0.2.7

Dernières mises à jour
  • 🪐 Antigravity rejoint la vue de conversation à titre expérimental avec le texte, les outils, les messages en attente et la reprise de l’historique natif ; les images, les consignes en cours de réponse, les approbations interactives, les bifurcations et le retour en arrière restent indisponibles, et la validation complète de la récupération sur toutes les plateformes reste à effectuer.

  • 🗂️ Les collections peuvent contenir des sous-collections, des projets et des groupes de sessions, se créer ou s’importer depuis l’espace de travail, et leur suppression conserve les projets et les sessions archivées.

  • ⚠️ Les versions précédentes ne doivent pas utiliser une base de données dont les dossiers ont été migrés en collections ; revenir à une ancienne version nécessite de restaurer une sauvegarde antérieure à la migration.

  • 🏷️ Le renommage intelligent nomme une session d’après sa conversation avec les réglages de l’agent actuel et propose de choisir un agent lorsque ces réglages ne sont pas utilisables.

  • 🌱 Les nouvelles sessions utilisent le dernier environnement shell et les agents récemment installés sans redémarrer VelaTerm.

  • 💾 Après un redémarrage, la récupération expérimentale des conversations restaure les messages, les images et les entrées en attente enregistrés et suspend le travail interrompu jusqu’à une reprise explicite ; la validation complète en environnement natif et sur toutes les plateformes reste à effectuer.

  • 📸 La capture d’écran expérimentale des applications Tauri sur macOS et Windows permet de sélectionner une zone, de l’annoter, de la copier ou d’enregistrer le PNG d’origine ; la validation sur les applications natives reste à effectuer, et Electron, le navigateur et les vues distantes ne sont pas pris en charge.

  • 🧵 Les onglets des tâches Claude en arrière-plan affichent leur historique de conversation natif complet, y compris les appels d’outils parallèles.

  • 🖼️ Un message de conversation peut contenir jusqu’à 20 images, dans la limite de 5 MiB par image.

  • 📍 Les repères de messages permettent de prévisualiser le contenu et d’accéder directement aux messages précédents de l’utilisateur.

  • 🧭 Les sélecteurs de répertoires pour les projets, le clonage et Enregistrer sous proposent la saisie des chemins et la complétion des emplacements.

  • 🪪 vself lit les réglages enregistrés des sessions et leurs relations parent-enfant, tandis que vflow list répertorie les workflows de planification et d’exécution associés sans les modifier.

  • ⌨️ Tout sélectionner dans le terminal se configure dans les raccourcis, utilise Cmd+A sur macOS et Ctrl+Shift+A ailleurs par défaut, et ne s’applique que lorsque le terminal a le focus.

  • 🐚 La complétion Bash gère les chemins commençant par ~, et les anciennes versions de Bash ouvrent les sessions sans erreur PS0.

  • 🛑 Les hooks des tâches enfants ne modifient plus l’état de conversation de leur parent, et fermer un onglet de conversation arrête son processus Chat actif.

  • 🪟 Windows rétablit le focus clavier du terminal au retour dans la fenêtre et supprime la ligne bleue pendant la composition de texte chinois.

  • 🎨 Le thème sombre classique offre un contraste plus net, les icônes de bureau suivent le thème du système, les icônes de projets sont bleues et les collections n’affichent plus le nombre de projets.

  • 📚 Les menus des sessions et des collections utilisent un libellé plus clair pour l’ajout à la base de connaissances.

  • 🌐 L’accès à VelaTerm en HTTP simple sur un réseau local ouvre correctement la page.

  • 🌍 Les vérifications de mise à jour transmettent la langue de l’interface pour adapter les notes de version, et le service accepte le programme de mise à jour Electron de Linux.

  • 🧰 Les noms d’agents Kimi Code et Grok Build ne comportent plus de numéro de version du modèle.

v0.2.6

Dernières mises à jour
  • 🐧 La version Linux repose désormais sur Electron. L’AppImage conserve son nom de fichier et vos données, ne nécessite plus WebKitGTK ni libfuse2, et les installations existantes y passent via le système de mise à jour intégré.

  • 🛰️ Les machines inaccessibles en SSH, comme WSL sur un autre ordinateur ou un conteneur Docker, peuvent être associées à votre compte après l’installation de vela-server en une seule commande ; elles apparaissent alors dans la liste Remote pour les conversations avec l’IA. Une fois que le propriétaire a accordé l’accès complet sur l’hôte, l’application de bureau peut aussi utiliser son terminal, ses fichiers et son panneau Git.

  • 📂 Les dossiers glissés dans la barre latérale depuis le Finder, l’Explorateur de fichiers ou un gestionnaire de fichiers Linux sont ajoutés comme projets.

  • 📝 L’éditeur Markdown propose les raccourcis de Typora pour les titres, les listes, les blocs de code et les tableaux, la fermeture automatique des parenthèses et des guillemets, l’ouverture des liens par Cmd/Ctrl+clic, les modes concentration et machine à écrire, ainsi que le nombre de mots et de caractères dans la barre d’état. Le front matter YAML s’affiche dans un champ distinct au-dessus du document et reste inchangé tant que vous ne le modifiez pas.

  • 🗃️ Lorsqu’un dossier n’est pas lui-même un dépôt Git mais en contient plusieurs, le panneau Git propose un sélecteur de dépôt et agit sur le dépôt choisi.

  • ⏳ Dans la vue conversation, une session dont la réponse est terminée mais dont des tâches d’arrière-plan sont encore en cours affiche le nouvel état « Tâches actives », avec un point cyan, au lieu de rester sur « En cours ». Les sessions qui exécutent de longues tâches avec vrun affichent le même état.

  • 🍴 Dans la vue conversation, une session dupliquée démarre sa propre conversation lors de sa première exécution, et la session d’origine ne reçoit plus ses messages.

  • 🛡️ Dans la vue conversation, l’étiquette de mode d’une session Claude suit le mode d’autorisation réellement utilisé par Claude, par exemple après son passage en mode Plan, et les cartes d’autorisation indiquent la raison donnée par Claude pour sa demande.

  • 📏 La zone de saisie de la vue conversation peut être redimensionnée en faisant glisser son bord supérieur ; un double-clic sur ce bord rétablit la hauteur par défaut. La hauteur s’applique à tous les volets et est conservée après un redémarrage.

  • 🗂️ Lorsque plusieurs dossiers sont sélectionnés dans la barre latérale, le menu contextuel permet de les archiver avec leurs sessions.

  • 📚 Les collections apparaissent toujours au-dessus des projets dans la barre latérale.

  • 🧠 Lorsqu’un enregistrement de traitement de la base de connaissances n’a créé qu’une seule entrée, son titre ouvre directement cette entrée, et les boutons d’entrée affichent les titres des entrées au lieu de numéros.

  • 📊 Le panneau Info affiche la bonne limite de contexte pour les modèles Claude récents comme Opus 5.5, au lieu de 200k.

  • 🎨 Changements mineurs : les trois options d’ouverture en volet du menu contextuel des sessions sont regroupées dans le sous-menu « Ouvrir dans un volet », la confirmation de fermeture indique que les fenêtres distantes ouvertes seront également fermées, et les listes déroulantes des formulaires se ferment dès qu’une option est choisie.

v0.2.5

Dernières mises à jour
  • 🐧 L’application de bureau Windows permet d’ouvrir des espaces de travail distincts dans WSL1 et WSL2, avec les agents, les fichiers et l’historique des sessions de la distribution Linux choisie.

  • 🔄 Les espaces de travail WSL permettent de se reconnecter après l’arrêt du serveur et, à la fermeture d’une fenêtre, de choisir entre arrêter le serveur et laisser les sessions actives.

  • 🌐 Les sessions Claude disposent d’une option « Chrome » dans la zone de saisie, qui active ou désactive Claude in Chrome sans redémarrer la conversation. Chaque session conserve son propre choix, et les sessions sans choix suivent la valeur par défaut.

  • 📟 L’onglet d’une tâche shell en arrière-plan affiche la commande exécutée et sa sortie la plus récente, actualisée pendant l’exécution de la tâche.

  • 🧩 Tant que les Vela Skills ne sont pas installées, la barre d’état propose de les installer. La fenêtre décrit chaque compétence, les installe directement et permet de ne plus afficher ce rappel.

  • 🪪 Les sessions enfants créées avec vspawn reçoivent l’identifiant de leur session parente dans VLX_PARENT_SESSION_ID, ce qui permet à un agent de la joindre avec vrefer et vtell. La nouvelle commande vself affiche la session courante et les sessions situées au-dessus.

  • 🖥️ L’AppImage Linux n’ouvre plus de fenêtre vide sur les distributions récentes comme Fedora 44.

  • 🎨 Changements mineurs : « Tâches en arrière-plan » s’affiche par défaut sous la zone de saisie et reste dans le menu « Plus » si vous l’y replacez ; lorsqu’un lien ne peut pas être ouvert, un message indique qu’un clic droit permet d’en copier l’adresse.

v0.2.4

Dernières mises à jour
  • 📋 Une copie depuis la conversation reprend le texte tel qu'il apparaît à l'écran : pas d'accents graves autour du code en ligne, pas d'astérisques autour de la mise en valeur, les liens réduits à leur libellé, les blocs de code sans délimiteurs, les cellules de tableau séparées par des tabulations et les listes conservant les puces visibles. La mise en forme enrichie reste placée dans le presse-papiers en parallèle, et le menu contextuel propose désormais « Copier en Markdown » pour obtenir le source Markdown de la sélection.

  • ⏳ La reprise automatique après la réinitialisation d'un quota est activée par défaut. Si vous aviez modifié ce réglage vous-même, votre choix est conservé.

  • ↩️ Le retour en arrière dans une conversation n'est plus bloqué par une tâche déjà terminée : une tâche au premier plan est considérée comme terminée à la fin de son tour, et une progression qui arrive ensuite ne la remet plus en cours d'exécution. Lorsqu'une tâche d'arrière-plan tourne réellement encore, le message indique son nom.

  • 🧹 Les fils des sous-agents de Codex n'apparaissent plus dans la liste de l'historique des sessions, comme c'est déjà le cas des chaînes latérales de Claude.

  • ⌨️ Complétion dans le terminal : après un déplacement parmi les candidats avec les flèches, Entrée valide celui qui est sélectionné, exactement comme Tab. Entrée est toujours transmise au shell si vous n'avez pas déplacé la sélection, si vous avez continué à taper après l'avoir faite, ou si une touche de modification est enfoncée.

  • 📱 Android est construit sur deux canaux. La version par défaut intègre les canaux de notification Getui, Huawei, Xiaomi, OPPO, vivo, Meizu et Honor ; la version Play en est dépourvue et signale les notifications de tâche comme dépourvues de canal configuré.

  • 🎨 Changements d'interface mineurs : les listes de tâches n'affichent plus la case à cocher en double, la barre de notification et l'avis de reprise automatique se placent entre la conversation et la zone de saisie, à la largeur du texte des messages, et sur le téléphone le bouton d'envoi reste à côté du champ lorsque les options sont repliées.

v0.2.3

Dernières mises à jour
  • 🪟 Les sessions existantes peuvent être placées dans les volets. Le menu contextuel de la barre latérale ouvre une session dans un volet à droite, un volet en bas ou le volet actif ; en faisant glisser une session depuis la barre latérale vers le bord d'un volet, la division suit cette direction, et un dépôt au centre remplace la session affichée. Deux à quatre sessions sélectionnées se disposent en mosaïque dans un même onglet divisé à parts égales, et les sessions présentes dans les autres volets de l'onglet courant sont signalées dans la barre latérale.

  • 🗂️ Les tâches d'arrière-plan lancées par un agent s'ouvrent dans leurs propres onglets à côté de la conversation, avec l'état, le temps écoulé, les jetons, le nombre d'appels d'outils, le dernier outil signalé et les phases de chaque agent. Une tâche possède sa propre adresse et, lorsque vous la quittez, vous revenez au volet depuis lequel elle a été ouverte.

  • 💬 Dans la vue conversation, un message commençant par ! s'exécute dans le shell de la session. La sortie s'affiche au fil de l'eau, le code de sortie apparaît à la fin, la commande peut être annulée pendant son exécution et elle reste dans l'historique de lecture des sessions Claude, Codex, OpenCode, Pi et OMP.

  • ⏱️ La nouvelle commande vrun lance une commande longue et l'attend en un seul appel : l'agent sait ainsi quand le travail s'est réellement terminé. Les commandes lancées de cette façon apparaissent au-dessus du terminal avec leur durée d'exécution, une fenêtre de journal et un bouton d'arrêt qui demande confirmation.

  • ⌨️ La création d'une session d'agent dispose de sa propre page et d'un raccourci clavier : recherchez les agents et les préréglages, reprenez celui utilisé la dernière fois et choisissez si la session est créée au même niveau que la session courante ou sous celle-ci.

  • 🧰 La barre d'outils de saisie se configure dans les réglages : choisissez les éléments affichés à côté du message et leur ordre. Les éléments désactivés, comme ceux qui ne tiennent pas dans la largeur, restent accessibles depuis le menu Plus.

  • 📥 Le téléchargement d'un fichier dans une fenêtre de connexion URL ou SSH commence par une boîte de dialogue d'enregistrement sur cette machine, puis affiche la progression du téléchargement, avec un bouton pour l'annuler.

  • 🗃️ Les sessions Kiro peuvent être importées dans un projet puis consultées : l'import associe les sessions par répertoire de travail et chacune s'ouvre dans une vue d'historique en lecture seule avec recherche. Seuls les enregistrements textuels sont pris en charge pour l'instant.

  • 🧠 L'organisation de la base de connaissances fonctionne avec Grok, OpenCode, Pi et OMP en plus de Claude et Codex, et l'agent se choisit dans le même type de liste déroulante que partout ailleurs dans l'application.

  • 📱 iOS et Android : la page d'accueil conserve vos connexions SSH et URL, permet de se connecter à un compte VelaTerm et liste les appareils qui partagent leur contenu. L'empreinte d'un hôte se confirme une fois et reste mémorisée, un code QR remplit l'adresse du service, et tous les écrans natifs et messages système sont traduits dans les 11 langues de l'interface.

  • 🔐 Les sessions Claude démarrent dans le mode d'autorisation choisi : les arguments de lancement supplémentaires conservent leur priorité, le mode est confronté à celui que le CLI signale au démarrage, et une session démarrée sans confirmations reste signalée comme telle.

  • 🧩 Le menu des modèles propose Opus 5.5 et ajoute les modèles supplémentaires signalés par le CLI sélectionné tout en conservant l'ordre intégré ; un modèle apporté par une mise à jour du CLI apparaît sans redémarrer l'application.

  • 🌱 Les demandes de session dérivée résistent aux interruptions : une demande dont la réponse a été perdue peut être récupérée après reconnexion, un lancement déjà confirmé réutilise la même session et les mêmes réglages lors d'une nouvelle tentative, et un arbre de travail qui n'a pas pu être créé est annulé sans toucher à ce qui existait auparavant.

  • ⚡ L'application démarre plus vite : le code chargé au démarrage représente environ la moitié de sa taille précédente, et les pages base de connaissances, audit de sécurité, import de sessions et projets partagés se chargent à leur ouverture.

  • 🖼️ Les images collées ou déposées dans un message sont réduites à 1568 pixels sur le plus grand côté avant l'envoi.

  • 🐚 Les sessions Bash chargent la complétion du shell depuis un fichier de démarrage : une nouvelle session Bash ne s'ouvre plus avec une commande déjà saisie. Les fichiers de profil de connexion sont toujours lus dans l'ordre propre à Bash.

  • ✍️ Markdown : un tilde isolé ne barre plus le reste de la ligne, ce qui laisse lisible une invite de shell collée, et le gras ou l'italique se terminant juste après des caractères chinois, japonais ou coréens se ferme correctement au lieu de laisser des astérisques à l'écran.

  • 📨 vtell --steer insère le message dans le tour en cours du destinataire au lieu d'attendre la fin de ce tour. Un destinataire arrêté sur une question répond blocked, car le message n'est lu qu'une fois cette question traitée.

  • 🔁 Dans la vue conversation, l'état d'une session se termine en même temps que son tour, la marque « non lu » disparaît lorsque le travail commence réellement, et une session dont le travail d'arrière-plan continue reste signalée comme active.

  • 🪟 Windows : les hooks de Cursor démarrent correctement et la couche fenêtre a été mise à jour pour les problèmes de saisie clavier signalés après une reconnexion RDP ou un changement de bureau virtuel.

  • 🛡️ Audit de sécurité : la liste des modèles et les noms d'agents proviennent du même catalogue de lancement que le reste de l'application, si bien que les exécutions passées affichent le nom actuel de chaque agent.

  • 🩹 Corrections diverses : les messages d'erreur de la conversation s'alignent sur la colonne centrale ; les deux boîtes de dialogue de lancement peuvent toujours être fermées et un lancement confirmé mais échoué peut être annulé ; les messages et les messages en attente indiquent leur expéditeur ; une file d'attente longue défile dans une hauteur fixe ; les ancres HTML vides n'affichent plus de repère pendant l'édition d'un document ; et le filtre d'état du téléphone prend en compte les sessions qui y correspondent par la suite.

v0.2.2

Dernières mises à jour
  • ⏳ Reprise automatique après une limite d’utilisation, désactivée par défaut dans les paramètres : lorsque Claude ou Codex s’arrête sur une limite de 5 heures ou hebdomadaire, la session reprend d’elle-même une fois la limite réinitialisée. Un bandeau au-dessus de la zone de saisie affiche l’heure de réinitialisation avec un bouton « Annuler » ; l’attente survit au redémarrage de l’application et se termine dès que vous envoyez un message, revenez en arrière, videz la session ou désactivez le réglage.

  • 🪟 Windows : les installations en un clic d’OpenCode, Grok et Crush passent --allow-scripts, ce qui permet à npm de générer l’exécutable ; Cursor, OMP et Antigravity sont recherchés dans leur véritable dossier d’installation sous %LOCALAPPDATA%, et OMP respecte aussi PI_INSTALL_DIR.

  • 🪟 Windows : les fichiers encore en cours de téléchargement ou de copie ne sont plus considérés comme installés, la carte d’installation attend la fin réelle de l’installation avant d’annoncer le succès, et un ancien chemin enregistré est remplacé par celui qui vient d’être localisé.

  • 🧩 Vue conversation : la réflexion, les appels d’outils et les réponses intermédiaires d’un tour peuvent être masqués avec « Masquer les étapes » pour ne garder que la réponse finale ; la barre d’outils masque ou affiche tous les tours d’un coup, et la recherche déploie un tour masqué pour localiser une correspondance.

  • 🔐 Le bouton des autorisations affiche désormais le mode avec lequel la session a été lancée au lieu de « Autorisations actuelles non confirmées » ; la ligne « réglage de lancement » en double a disparu, et une session lancée en ignorant les confirmations est de nouveau mise en évidence dans la barre d’état.

  • 🔐 Une session sans autorisation propre suit la valeur par défaut globale de son type d’agent dans les deux vues, et modifier une session ne fige plus la valeur héritée comme choix propre à la session.

  • ↩️ Les pages de la base de connaissances gagnent un bouton « Remonter d’un niveau » : une entrée revient à sa session, puis à son projet, puis à l’accueil, et les sessions archivées, les notes et les dossiers remontent de la même façon.

  • 🌱 Une session enfant s’ouvre dans la même vue que sa session parente : depuis une session en vue conversation, la tâche arrive comme premier message et les images comme pièces jointes ; depuis une session en terminal, elle démarre dans le terminal avec la tâche passée en argument de lancement.

  • 🎨 macOS : la fenêtre et la bande de la barre de titre prennent les couleurs du thème avant l’apparition de la fenêtre, et changer de thème en cours d’exécution les redessine immédiatement.

  • 🗜️ Les sessions Claude conservent dans l’historique de lecture les tours antérieurs à une compaction, tandis qu’un retour en arrière supprime toujours la branche abandonnée.

  • 🔎 La recherche dans la conversation garde la correspondance sélectionnée en place pendant le chargement de l’historique plus ancien ; Entrée passe à la correspondance précédente et Maj+Entrée à la suivante.

  • 🩹 Revenir à une conversation laissée au milieu de son historique restaure la position de lecture au lieu d’afficher un panneau vide.

  • 🧭 Les informations de diagnostic du catalogue de modèles n’apparaissent qu’en ouvrant le menu des modèles avec la touche Option enfoncée ; les lignes d’erreur s’alignent sur le texte des messages, et la base de connaissances en anglais affiche « Archived Sessions ».

v0.2.1

Dernières mises à jour
  • 🔎 La page d’accueil de la base de connaissances gagne un champ de recherche : une requête explore à la fois les connaissances de session et les notes locales, et regroupe les résultats par source. Les correspondances exactes passent en premier ; une recherche approximative (abréviations, sous-séquences et fautes de frappe) ne s’active que s’il n’y a aucune correspondance exacte, et les requêtes en chinois restent en sous-chaîne.

  • 🗂️ Les sessions archivées rejoignent la base de connaissances. Le bouton de la barre latérale y renvoie au lieu d’ouvrir son propre panneau, l’arborescence ajoute une racine « Sessions archivées » groupée par projet d’origine, et la zone principale liste toutes les sessions archivées avec restauration, réorganisation, export et suppression sur place.

  • 🔍 Les sessions archivées disposent de leur propre recherche plein texte : les résultats sont groupés par session avec un nombre de correspondances, et le volet d’aperçu parcourt chaque correspondance avec la même mise en évidence que la recherche globale. Une session ouverte bascule entre sa conversation et ses entrées de connaissances.

  • 🤖 Vue conversation : lorsqu’un exécutable d’agent est introuvable, un guide d’installation s’affiche sous le message au lieu de l’erreur de démarrage brute ; « Installer maintenant » bascule vers la vue terminal, qui exécute la commande recommandée. Si l’agent est installé hors du PATH, le guide accepte directement le chemin de l’exécutable, avec un sélecteur de fichiers système sur le bureau.

  • 🩹 Les installations qui semblent présentes mais sont cassées sont désormais détectées : un wrapper npm global dont la cible a été supprimée ou remplacée est considéré comme non installé, et un chemin configuré qui pointe vers un tel wrapper ouvre le guide d’installation sans modifier votre réglage.

  • 🔐 L’entrée du mode d’autorisation affiche directement le mode choisi, et son menu indique pour chaque ligne si le choix est actif ou attend le prochain tour.

  • 🔽 Tous les menus déroulants utilisent désormais le composant Select intégré au lieu du contrôle natif : leur apparence est identique sous macOS 15 et 26, sans superposition du contrôle système.

  • ℹ️ Les projets et les collections ont une fenêtre d’informations dans leur menu contextuel.

  • 🪟 Windows : les sous-processus lancés par la vue conversation (agents, catalogue de modèles et vérifications git) ne font plus clignoter de fenêtre de console.

  • 💡 Le bouton de retour d’information de la barre de titre passe après le bouton de partage.

v0.2.0

Dernières mises à jour
  • 📱 Application VelaTerm pour iOS et Android (version préliminaire) : connectez-vous à une machine par SSH ou par URL après avoir confirmé l’empreinte de l’hôte, chargez l’interface distante complète dans l’application, remplissez les informations de connexion par code QR et connectez-vous à un compte distant.

  • 🛡️ Audit de code expérimental : lancez depuis le menu contextuel d’un projet un audit du dépôt entier, d’un dossier ou d’un fichier, ou des modifications de l’arbre de travail, avec Codex ou Claude Code ; vérifiez les résultats par rapport au code source et exportez un rapport Markdown ou JSON.

  • 📓 Base de connaissances locale : ouvrez un dossier de notes Markdown depuis le panneau de droite, modifiez les notes dans l’éditeur WYSIWYG, recherchez par chemin et en plein texte, gérez étiquettes et favoris et restaurez les notes supprimées depuis la corbeille. Les agents peuvent interroger les notes avec vkb ; les imports de dossiers s’exécutent en arrière-plan et conservent un historique consultable et annulable.

  • 🤖 Sessions de planification et d’exécution : vspawn --plan-execute ouvre une session de planification qui découpe la tâche en sessions d’exécution ; vflow propose le découpage, vtell --report renvoie le résultat de chaque exécution pour validation et une reprise réutilise la session d’exécution d’origine. Les worktrees peuvent être partagés par tous les rôles ou créés par session.

  • 🔗 Les projets et sessions partagés chargent désormais la véritable interface de l’hôte derrière l’URL partagée, transmise par un tunnel sortant et limitée au projet ou à la session autorisé. Les appareils et les autorisations se gèrent depuis les pages de compte.

  • 🧠 La base de connaissances de session ajoute des groupes de projets, de sessions et d’entrées, avec glisser-déposer, renommage et suppression ; une nouvelle organisation de la même session remplace celle qui est en attente.

  • 💬 Vue de conversation : les longs historiques se chargent page par page jusqu’au premier message, tous les agents compatibles avec le moteur de conversation (y compris OMP) ouvrent la vue de conversation par défaut, et les tours consécutifs d’un même agent partagent une seule ligne d’auteur.

  • ⌨️ Terminal : les suggestions natives du shell offrent la complétion par Tab pour zsh, bash, fish et PowerShell sous macOS et Linux, les flèches continuent de rappeler les commandes précédentes pendant que la liste est ouverte, et le cœur du terminal passe à xterm 6.

  • 📊 Le panneau Info affiche les statistiques du tour en cours pour Claude, Codex, Grok, OpenCode, Pi et OMP : jetons d’entrée et de sortie, taux de cache, vitesse de génération, appels d’outils et modifications de fichiers enregistrées. Les commandes peu utilisées de la zone de saisie passent sous « Plus ».

  • 🔐 La zone de saisie affiche le mode d’autorisation configuré, celui en vigueur et celui en attente, et demande confirmation lorsqu’un redémarrage est nécessaire pour appliquer un changement.

  • 🔔 Les notifications affichent le nom de la session et un court aperçu ; un clic ouvre la session correspondante, et l’application mobile peut les recevoir via le service de notifications push du système.

  • 🌐 La liste des modèles Claude provient désormais du catalogue publié sur le site, mis en cache localement et actualisé toutes les six heures, fusionné avec les modèles signalés par la CLI.

  • 🧵 Les flèches haut et bas de la zone de saisie rappellent vos messages précédents, y compris ceux en file d’attente ou en attente de confirmation, et restaurent le brouillon non envoyé à la fin.

  • ↩️ Le retour arrière d’un message replace ses images dans la zone de saisie pour pouvoir les renvoyer.

  • 🔑 Les agents lancés sous macOS héritent de l’environnement complet du shell de connexion : les outils installés hors du PATH par défaut sont donc trouvés.

  • 💡 Une entrée « Votre avis » dans la barre de titre ouvre la page de retour.

  • 🕹️ Une entrée Centre de jeux dans la barre d’onglets ouvre le centre de jeux du site (PIXEL WING) ; sur ordinateur, le jeu s’ouvre dans le navigateur intégré.

v0.1.108

Dernières mises à jour
  • 💬 Vue de conversation expérimentale pour Claude, Codex et OpenCode : réponses en continu, raisonnement, détails des outils, autorisations et formulaires de questions. Les nouvelles configurations utilisent toujours le terminal par défaut.

  • 🎛️ Les commandes de conversation proposent les réglages du modèle, la file de messages, les interventions, la complétion de fichiers et les images jointes, selon les capacités du moteur.

  • 🔎 Recherche dans les conversations, liens de fichiers, actions sur les images et polices distinctes facilitent la lecture. L’historique distant se charge progressivement et les détails des outils à la demande.

  • 📨 Les accusés de soumission permettent de rapprocher les résultats après une déconnexion. Les envois incertains restent en attente de confirmation, sans renvoi automatique.

  • 🤝 Les nouvelles commandes vrefer et vsearch lisent et recherchent dans les autres sessions ; vrefer --ask délègue la lecture à un agent. vorch et vstat ajoutent la coordination multi-agent et la consultation des états.

  • 🧠 Les entrées mémoire acceptent les étiquettes, l’édition directe, la protection des modifications non enregistrées et les réglages d’organisation. Le filtrage et la sélection à l’import de l’historique ainsi que la navigation du graphe sont améliorés.

  • 🌐 Le client de partage public prend en charge l’association compte/appareil, l’accès limité à des sessions AI et les connexions relais chiffrées. L’envoi d’images par les invités et les formulaires MCP complexes restent indisponibles.

  • 🔄 Les ID de reprise Codex sont vérifiés dans l’historique enregistré. Un historique confirmé manquant produit une erreur explicite au lieu d’ouvrir une session vide ; les terminaux déjà actifs restent accessibles.

  • ↩️ Le retour arrière dépend du moteur : Codex restaure uniquement la conversation, sans restaurer les fichiers. La gestion de la portée et les contrôles préalables du répertoire dans OpenCode restent des limites connues.

  • 📦 Le changement de version conserve les versions verrouillées des dépendances. La validation des installations et mises à niveau multiplateformes et de l’intégration AI réelle reste à effectuer ; les contrôles automatisés ne la remplacent pas.

v0.1.107

Dernières mises à jour
  • 🧠 Mémoire globale (expérimental) : Claude ou Codex transforme vos conversations en un wiki partagé organisé par thème
  • 🕸️ Graphe de code (expérimental) : indexez un répertoire de travail, parcourez les relations entre symboles et reliez-les à vos mémoires
  • 🔎 Les agents peuvent interroger le code et la mémoire en cours de session avec vknowledge
  • 🖥️ SSH peut refléter l'application de bureau distante : mêmes onglets, mêmes divisions et même session active des deux côtés
  • 🪟 Les machines distantes SSH peuvent désormais tourner sous Windows
  • 📥 Importez les sessions Codex, Claude et OpenCode déjà présentes dans un dossier de projet
  • 🤖 Nouvel agent : OMP
  • 🎚️ vspawn permet de choisir le modèle et l'effort de raisonnement d'une session enfant
  • 🌿 vspawn-tree fonctionne dans les collections, et les sessions worktree en cours affichent une icône de branche
  • 🔤 La recherche privilégie les mots entiers et surligne exactement ce qu'elle a trouvé
  • 🖱️ Un clic du bouton central ferme un onglet
  • ⌨️ Navigateurs macOS : ⌘D et ⌘⇧D divisent les panneaux
  • 💬 La saisie avec une méthode d'entrée ne décale plus l'affichage, et le curseur reste visible pendant la composition
  • 🪓 Une division lancée depuis le menu n'affecte que la fenêtre active, et chaque division est consignée dans logs/split.log
  • 📁 Le sélecteur de dossier distant conserve le chemin que vous saisissez
  • ℹ️ Panneau Informations : heure de démarrage et durée d'exécution sur une même ligne, avec la charge moyenne sur macOS
  • 🔑 Les champs de mot de passe n'affichent plus le bouton d'affichage propre au navigateur

v0.1.106

Dernières mises à jour

Espace de travail

  • La barre latérale s'enrichit de collections : des conteneurs de premier niveau qui ne sont rattachés à aucun dossier sur le disque. Certaines sessions n'ont pas vocation à faire partie d'un dépôt — comme les sessions distantes, les pages de navigateur ou un terminal ouvert pour un simple test. Jusqu'à présent, il fallait obligatoirement les placer au sein d'un projet, où elles n'avaient pas vraiment leur place. Une collection est une entrée autonome dotée d'un nom, sans dossier sous-jacent sur le disque. Comme il n'y a pas de racine de projet, les actions non pertinentes sont masquées d'emblée plutôt que d'échouer après coup : « New Worktree Session », « Move to Worktree… » et le sélecteur de worktree dans la boîte de dialogue de nouvelle session sont tous masqués pour les collections au lieu de renvoyer une erreur lorsqu'on clique dessus. À la place, la boîte de dialogue de nouvelle session intègre un champ Répertoire de travail qui pointe par défaut vers votre dossier utilisateur (home), avec un sélecteur de dossier natif sur desktop. Les sessions lancées sans répertoire spécifié s'ouvrent désormais dans votre dossier utilisateur au lieu d'hériter du chemin de lancement de l'application (qui était / sur macOS).

  • Le panneau Ressources affiche désormais l'ensemble de la machine, et non plus seulement la session active. Auparavant, le panneau n'indiquait la consommation du processeur et de la mémoire que pour l'arbre de processus propre à la session, ce qui empêchait de savoir si la session consommait toutes vos ressources ou si la machine était déjà saturée. Le panneau est désormais divisé en deux sections : THIS SESSION et SYSTEM. La section SYSTEM affiche des barres de progression pour le processeur, la mémoire et le swap (qui passent à l'orange au-delà de 70 % et au rouge au-delà de 90 %), accompagnées d'une ligne propre à la plateforme : la pression mémoire sur macOS, la charge moyenne rapportée au nombre de cœurs sur Linux, et aucune sur Windows (qui ne dispose pas de métrique équivalente). Si seule votre session vous intéresse, décochez « system » dans l'en-tête du panneau : les lignes système disparaissent et l'échantillonnage en arrière-plan s'arrête totalement. Ce réglage est conservé et s'applique au panneau de chaque session.

  • Windows et Linux disposent d'une barre de menus, accessible avec la touche Alt. macOS bénéficie de menus système natifs, mais sur Windows et Linux, les paramètres, la recherche de mises à jour et le découpage des volets n'étaient accessibles que depuis l'icône de la barre de titre. Un appui sur la touche Alt seule permet désormais d'afficher ou de masquer la barre de menus. Les combinaisons de touches avec Alt restent inchangées : comme Alt sert de préfixe Meta dans les terminaux, les raccourcis comme Alt+B et Alt+F continuent d'être transmis au shell ; seul un appui isolé sur Alt, qui n'envoie rien au terminal, ouvre le menu. La barre comprend File (paramètres, recherche de mises à jour), Terminal (nouveau terminal, scinder à droite, scinder en bas) et Help (site web, retours, partage), et affiche les raccourcis correspondant à votre configuration de touches personnalisée. Elle se contrôle aussi bien à la souris qu'au clavier : appuyer sur Échap ferme le menu ouvert, masque la barre et redonne le focus au terminal.

  • L'option « Clear notification badges » du menu efface les badges que rien d'autre ne pouvait supprimer. Le badge du dock comptabilise les sessions non lues ainsi que les cartes de confirmation de création de processus restées sans réponse. Or, le bouton de nettoyage de la barre latérale n'apparaissait qu'en présence de sessions non lues et ne traitait que ces dernières. Si une carte de confirmation sans réponse persistait — par exemple après la fermeture d'une fenêtre ou la suppression d'une session où la carte ne pouvait plus s'afficher —, le badge du dock restait bloqué sur 1 sans aucun moyen de le faire disparaître. Cette nouvelle option de menu marque toutes les sessions comme lues, traite toutes les demandes de création en attente comme refusées et remet directement à zéro le compteur de badge du système d'exploitation. C'est particulièrement appréciable sur macOS, qui conserve le compteur de badge du dock même après le redémarrage de l'application.

  • La fenêtre ne se fige plus pendant que les commandes lisent des fichiers ou attendent le système. Les commandes synchrones de Tauri s'exécutent sur le thread principal, bloquant l'interface utilisateur pendant toute leur durée. Un audit des 43 commandes a révélé que 13 d'entre elles effectuaient des opérations d'E/S sur le thread principal : la demande d'autorisation pour les notifications sur macOS pouvait geler l'interface jusqu'à une minute en attendant l'accord de l'utilisateur ; la lecture des enregistrements de longues sessions parcourait des dizaines de mégaoctets par blocs de 64 Ko ; le collage de captures d'écran écrivait directement sur le disque ; et la récupération du dossier de travail d'une session lançait lsof. Ces 13 commandes s'exécutent désormais en dehors du thread principal. Le traitement des frappes au clavier reste quant à lui sur le chemin rapide, sans changement.

Accès à distance

  • Les hôtes affichent désormais les clients distants connectés. Le partage de session étant bidirectionnel, un client distant peut réorganiser la disposition de l'hôte — or, l'hôte n'avait jusqu'ici aucun moyen de savoir si quelqu'un était connecté, et encore moins qui. La barre de titre affiche désormais un badge « Mirrored by N » ; cliquer dessus dévoile la liste des clients connectés avec leur nom, leur adresse IP et l'heure de leur connexion. Le nom du client est transmis lors de la négociation chiffrée (avec « Unnamed » par défaut si aucun nom n'est fourni).

Agents IA

  • L'utilisation du compte est désormais récupérée une seule fois par machine au lieu d'une fois par session. Les quotas d'utilisation sont associés au compte, mais le panneau Info de chaque session les récupérait jusqu'ici séparément. Ouvrir dix sessions entraînait dix requêtes en double pour les mêmes données — ce qui déclenchait souvent les limites de débit strictes de Claude et vidait le panneau. Un service centralisé d'interrogation en arrière-plan conserve désormais un instantané unique dans lequel toutes les sessions viennent lire, et diffuse les mises à jour dès que les données changent. Il interroge uniquement les fournisseurs que vous utilisez activement — détectés par la présence de ~/.claude, ~/.codex ou ~/.grok/auth.json — sans toucher au trousseau d'accès du système pour éviter les demandes d'autorisation superflues. Les instantanés sont enregistrés sur le disque afin que le panneau affiche immédiatement les chiffres en cache dès le redémarrage, sans attendre la première interrogation. La sortie de veille d'un ordinateur portable actualise également les données sans délai au lieu d'attendre le prochain intervalle planifié. En cas d'échecs consécutifs, le délai d'interrogation augmente progressivement jusqu'à 8x. Dans les Paramètres, l'intervalle de rafraîchissement s'accompagne désormais d'un interrupteur marche/arrêt explicite à côté du champ de saisie, remplaçant la valeur ambiguë de 0 seconde.

  • Les échecs d'actualisation de l'utilisation sont clairement signalés comme obsolètes au lieu de paraître à jour. Auparavant, lorsqu'une demande d'actualisation échouait, le client renvoyait silencieusement sa copie en cache tout en enregistrant un rafraîchissement réussi — ce qui avançait l'horodatage, masquait les erreurs et réinitialisait le délai exponentiel. En cas de dépassement des limites de débit, le panneau semblait ainsi opérationnel alors même qu'il continuait ses interrogations toutes les cinq minutes. Les requêtes ayant échoué conservent désormais les valeurs en cache mais affichent un badge orange stale à côté du fournisseur. Survoler ce badge affiche une info-bulle précisant l'heure de l'échec, le motif de l'erreur et l'ancienneté de la valeur affichée. L'horodatage « Updated » reflète la dernière synchronisation réussie, et les délais retry-after renvoyés par les serveurs limitant le débit sont respectés, les actualisations manuelles s'exécutant toujours immédiatement.

  • Les quotas hebdomadaires par modèle apparaissent dans le panneau d'utilisation. En plus des limites globales du compte sur 5 heures et 7 jours, le point de terminaison de consommation fournit des quotas hebdomadaires spécifiques à chaque modèle. Ceux-ci étaient jusqu'alors ignorés : les utilisateurs travaillant avec des modèles comme Fable ne pouvaient voir que l'utilisation globale du compte plutôt que leur quota restant pour ce modèle. Ces lignes détaillées sont désormais affichées sous les totaux, regroupées par famille de modèles.

  • La réouverture d'une session OpenCode restaure son historique de discussion. L'application vérifiait auparavant si une session existait encore à l'aide de opencode session list, qui ne recherche que les sessions situées dans le répertoire de travail actuel. Comme l'application de bureau s'exécute depuis son répertoire de lancement (/ sur macOS), les identifiants de session existants n'étaient jamais trouvés, et les tentatives de reprise ouvraient silencieusement des sessions vides. La vérification interroge désormais directement l'identifiant spécifique de la session et ne la considère comme supprimée que si la commande le confirme explicitement. Les autres erreurs sont traitées comme indéterminées et l'application poursuit la reprise, évitant ainsi toute perte accidentelle de l'historique de session.

Interface

  • La saisie avec un éditeur de méthode d'entrée (IME) affiche désormais le texte en cours de composition. Le texte saisi avec un IME (comme Pinyin ou Kana) était jusqu'alors invisible sur les trois plateformes tant qu'il n'avait pas été validé avec Entrée. Cela venait d'une règle CSS personnalisée : xterm affiche le texte de composition dans un conteneur superposé non contraint, où notre contrainte right ajoutée (destinée à renvoyer les longues lignes du terminal à la ligne) aboutissait à une largeur nulle, tandis que overflow: hidden masquait complètement le texte. Cette règle a été supprimée, et le seul élément encore redéfini est le jeu de couleurs noir sur blanc par défaut de la superposition, qui ne correspond à aucun thème. Un problème connexe a été corrigé au même moment : xterm agrandissait son champ texte masqué pour l'adapter à la taille de la superposition afin de positionner les suggestions de l'IME, mais ne le réduisait jamais par la suite, laissant une zone invisible qui bloquait les clics de souris et la sélection de texte sur cette ligne.

  • Sur macOS, les raccourcis Ctrl ne déclenchent plus les combinaisons de touches associées à Commande. La vérification des touches modificatrices traitait auparavant Cmd et Ctrl comme interchangeables sur macOS. En conséquence, les raccourcis standard du terminal entraient en conflit avec ceux de l'application : Ctrl+D (EOF) scindait les volets, Ctrl+W (supprimer un mot) fermait les volets, et des raccourcis comme Ctrl+F, Ctrl+T et Ctrl+O étaient interceptés par l'application. Comme les nouveaux volets s'ouvrent silencieusement, ils semblaient souvent surgir de nulle part. L'application de bureau pour macOS utilise désormais exclusivement Cmd pour les raccourcis, tandis que les autres plateformes (ainsi que les navigateurs web connectés à un Mac) utilisent exclusivement Ctrl.

  • Les menus déroulants ne se rouvrent plus immédiatement après la sélection d'une option. Un élément englobant <label> propageait les clics sur l'ensemble de la ligne jusqu'au bouton de déclenchement, provoquant la réouverture du menu déroulant dès qu'un élément était sélectionné.

Corrections

  • Linux : l'AppImage démarre à nouveau. L'AppImage 0.1.105 plantait sur Ubuntu 22.04 avant même l'apparition d'une fenêtre, incapable de lancer les processus auxiliaires de WebKit. Les outils d'empaquetage AppImage réécrivent les chemins littéraux /usr dans les binaires en ././ (en préservant la longueur de la chaîne pour les correctifs sur place), ce qui nécessite que le script de lancement change le répertoire de travail vers $APPDIR/usr pour que ces chemins soient résolus. Dans la version 0.1.105, notre script de lancement personnalisé — introduit pour empêcher la fuite de variables d'environnement vers les shells enfants — transmettait bien les variables d'environnement mais avait omis ce changement de répertoire. Le lanceur change désormais correctement de répertoire, avec une assertion à la compilation pour éviter toute régression. Les versions 0.1.104 et antérieures n'étaient pas concernées.

  • Windows : les notifications émettent à nouveau un son, et cliquer dessus redirige vers leur session. Les notifications Windows envoyaient auparavant un identifiant de son macOS au plugin de notifications. Le nom ne pouvant être interprété, il était converti en silence — ce qui signifie que les notifications Windows n'émettaient aucun son, quels que soient les paramètres. Les notifications Windows avaient été redirigées via ce plugin il y a deux versions pour contourner un problème qui avait été résolu dans cette même version. Ce détour est désormais supprimé : les notifications repassent par le canal natif, ce qui rétablit à la fois le son et la navigation vers la session d'un simple clic.

  • Windows : les caractères de tracé de cadres et de blocs s'alignent correctement. Les cadres de terminal étaient auparavant rendus avec une police de substitution proportionnelle, provoquant des défauts d'alignement visuel. Même après avoir corrigé cela, les caractères de bloc (utilisés dans les barres de progression et la mascotte de Claude Code) présentaient encore un très fin interstice vertical le long du bord droit de chaque cellule, car la police de substitution était légèrement plus étroite que la police principale du terminal. Ces deux plages de caractères sont désormais fournies par un sous-ensemble intégré de JetBrains Mono, garantissant une largeur de glyphe parfaitement identique.

  • Windows : git fonctionne dans la variante complète de Git Bash. Même lorsque l'installation complète de Git Bash réussissait, exécuter git dans le terminal renvoyait « command not found », incitant à plusieurs reprises les utilisateurs à installer la version complète de Git Bash. Git Bash n'ajoute mingw64/bin au PATH que lorsqu'on lui indique dans quelle arborescence de répertoires il s'exécute. Notre lanceur de shell omettant ce paramètre, les binaires situés exclusivement dans ce répertoire — comme git et curl — étaient introuvables. De plus, l'invite de téléchargement sélectionne désormais le programme d'installation correspondant à l'architecture du système hôte plutôt que d'opter par défaut pour le 64 bits.

  • Windows : la suppression d'un worktree fonctionne, et la réinstallation des hooks Kiro ne les duplique plus. Les commandes de suppression de worktree étaient auparavant exécutées depuis le répertoire du worktree cible. Comme Windows empêche la suppression du répertoire de travail actuel d'un processus actif, l'opération échouait systématiquement avec une erreur d'autorisation ; les commandes Git s'exécutent désormais depuis la racine principale du dépôt. De plus, la logique de détection des hooks comparait des chemins contenant des barres obliques (slashs) à des chemins Windows contenant des barres obliques inverses (antislashs), ce qui faisait échouer la vérification et ajoutait des entrées de hook en double à chaque réinstallation.

v0.1.105

Dernières mises à jour

Espace de travail

  • L'état d'une session, les marques de non-lu et le fait qu'une session tourne encore sont désormais tranchés par le backend, et tous les clients voient la même réponse. Chaque client déduisait ces informations de ce qu'il avait pu observer lui-même, si bien que « non lu » signifiait en réalité « non lu dans cette fenêtre » : lire une session dans le navigateur laissait la copie du bureau en non-lu, et le filtre d'état dynamique remettait sans cesse cette ligne dans la liste partagée, où même « Actualiser l'état » n'arrivait pas à la retirer. Les événements d'état n'étaient en outre enregistrés qu'une fois que le client avait lui-même lancé une session : un navigateur tout juste connecté affichait donc des pastilles pour les sessions qu'il avait ouvertes, et rien pour les autres. Le backend tient maintenant un enregistrement faisant autorité par session — l'agent, son état, si son processus est vivant, et l'indicateur de non-lu —, répond à une requête groupée lorsqu'un client se connecte ou se reconnecte, et diffuse chaque changement à tout le monde. Les clients rapportent ce qu'ils observent ; c'est le backend qui en tire les conclusions. Lire une session sur un téléphone efface la marque sur le bureau, un navigateur tout juste connecté affiche les bonnes pastilles pour des sessions qu'il n'a jamais ouvertes, et les règles d'arbitrage qui vivaient dans le frontend ont déménagé avec leurs raisons et leurs tests : un hook qui a signalé une fois verrouille tout ce qui serait déduit de la sortie brute, une sortie continue n'implique l'état actif que pour une session qui a un agent, qui n'est pas Codex et pour laquelle aucun rapport faisant autorité n'existe encore, et une retenue de 1200 ms empêche une tâche tout juste démarrée d'être annulée par un événement de fin arrivant juste derrière elle. La lecture de l'écran fait exception, parce qu'elle a besoin de la grille rendue et que celle-ci n'existe que dans un client : le client qui détient la taille du terminal rapporte ce qu'il a lu, et c'est le backend qui décide de l'accepter ou non — un rapport venu de n'importe quel autre client est refusé. Si quelque chose tourne mal là-dedans, régler vlx-arbitration sur frontend dans localStorage rend l'arbitrage à l'ancienne chaîne du frontend.

  • Redémarrer une session ne ferme plus son onglet sur l'autre client. pty://killed ne transportait aucune donnée : l'autre côté ne pouvait donc pas distinguer un redémarrage d'une fermeture. Il traitait tout comme une fermeture, retirait le volet, puis renvoyait cette disposition en miroir. L'événement indique désormais quel client a tué le processus et pourquoi, si bien qu'un redémarrage conserve le volet et attend l'arrivée du nouveau processus. Une raison absente ou non reconnue compte toujours comme une fermeture — laisser un volet ouvert pour une session qui ne reviendra jamais met un terminal mort à l'écran, ce qui est pire que de fermer un volet qui allait redémarrer.

  • Un navigateur qui se connecte à un bureau venant de restaurer son espace de travail ne démarre plus réellement toutes les sessions. Restaurer un espace de travail affiche des cartes de remplacement au lieu de lancer les processus, mais cette décision n'existait que sur le bureau ; le navigateur suivait la disposition mise en miroir, ne pouvait pas distinguer « pas en cours d'exécution » de « en cours d'exécution, simplement jamais ouverte ici », et montait les terminaux — or monter un terminal, c'est le lancer. Une feuille qui arrive avec la disposition de quelqu'un d'autre affiche maintenant une carte de remplacement quand le backend indique qu'aucun processus ne se trouve derrière elle. Ouvrir une session vous-même reste une intention de la démarrer, et un terminal que vous êtes en train de regarder n'est jamais remplacé par une carte à la sortie de son processus, parce que vous voulez peut-être encore lire ce qu'il a affiché.

  • Une modification de réglage atteint immédiatement les autres clients. Le backend a toujours détenu les réglages faisant autorité, mais il les modifiait sans en avertir personne : l'autre client ne l'apprenait qu'à son lancement suivant. Sur une connexion distante, c'est plus qu'un affichage discordant : désactiver « étendre dynamiquement le filtre d'état » sur un client ne servait à rien tant qu'un autre continuait d'ajouter des lignes à la liste partagée, et le client ayant la plus petite limite d'onglets actifs évinçait les onglets d'arrière-plan sous le nez de tous les autres. Écrire un réglage diffuse désormais la clé qui a changé, et chaque client la relit par le même chemin qu'au démarrage : les règles qui masquent les valeurs protégées aux appelants distants continuent donc de s'appliquer — la diffusion ne transporte que des noms de clés, jamais des valeurs. Les téléphones, qui auparavant n'envoyaient ni ne recevaient de réglages, y participent eux aussi.

  • Un navigateur attend la disposition mise en miroir avant de restaurer la sienne. Une fenêtre distante a deux sources de disposition — celle de son propre localStorage et celle que l'hôte lui pousse en mode miroir — et la première arrivée était écrasée par l'autre. Afficher la locale d'abord coûtait plus qu'un scintillement : monter une feuille de terminal lance un vrai processus, et pour une session dont le processus était déjà parti, cela revenait à démarrer un shell que personne ne regarderait jamais, lequel restait ensuite en place, puisqu'un navigateur détache ses terminaux au lieu de les arrêter. Le navigateur attend maintenant que le premier alignement se stabilise avant de restaurer quoi que ce soit, pendant deux secondes au plus ; si le backend est lent ou injoignable, il se rabat sur la disposition locale plutôt que de rester sur une fenêtre vide. Les téléphones, et tout client dont le mode miroir est désactivé, passent immédiatement.

Accès à distance

  • Une connexion SSH peut activer le mode miroir pour le service qu'elle démarre. L'interrupteur se trouve dans le panneau d'accès à distance, mais SSH démarre un service sans interface sur la machine distante, et là-bas il n'y a aucun panneau où cliquer. Maintenez Option en cliquant sur « Connexion distante » et le formulaire SSH propose désormais une case « Mettre l'interface en miroir sur tous les clients », décochée par défaut. La valeur voyage avec la connexion et reste en mémoire du service au lieu d'être écrite dans la base de données de la machine distante : quand vous réutilisez en plus la base du bureau distant, une connexion SSH ne doit pas retourner discrètement un interrupteur sur le panneau de quelqu'un d'autre. Le choix est mémorisé par hôte : reprendre la même machine dans l'historique le rétablit. Réutiliser un service déjà en cours d'exécution exige maintenant que la version, le mode de données et le mode miroir concordent tous les trois — si l'un des trois diffère, l'ancien service est remplacé, ce qui met fin aux sessions qui y tournaient ; cette option est donc placée derrière Option, à côté de celle qui choisit la base de données.

  • Un client mis en miroir l'annonce. Les onglets et les divisions d'un client suiveur se réorganisaient sans que rien à l'écran n'explique d'où venait le changement. La barre de titre porte désormais un badge « Mirrored », avec une explication au survol. L'hôte n'en affiche pas : c'est lui qui tient l'interrupteur.

  • Les fichiers circulent désormais entre votre machine et celle qui exécute le terminal. L'accès à distance affichait les fichiers de la machine distante sans permettre d'en rapatrier un ni d'en déposer un : seule une commande dans le terminal le permettait. Le panneau Fichiers propose maintenant Télécharger dans le menu contextuel d'un fichier et Envoyer dans son en-tête, et glisser des fichiers depuis votre bureau sur la ligne d'un dossier les y envoie. Les deux sens empruntent la même connexion authentifiée que le reste, ce qui fonctionne aussi bien depuis un navigateur du réseau local que depuis un téléphone ou une fenêtre de connexion distante. Les transferts avancent par blocs, avec une file de progression sous l'arborescence, et se poursuivent pendant que vous consultez un autre panneau. Télécharger est un lien de téléchargement ordinaire, pris en charge par le gestionnaire de téléchargement du navigateur : il écrit sur le disque au fil de l'eau, affiche le débit et le temps restant, et se met en pause puis reprend — quelle que soit la taille du fichier et dans tous les navigateurs, téléphone compris. Le lien porte un jeton émis pour ce seul fichier et valable quelques minutes, car ce serveur conserve les identifiants dans un en-tête et un navigateur qui suit un lien n'en envoie aucun. Un envoi s'écrit sous un nom temporaire et n'est renommé qu'une fois terminé : un transfert interrompu ne laisse donc jamais un fichier à moitié écrit là où il devrait y en avoir un complet ; un nom déjà pris est refusé avant tout transfert. Les envois affichent leur débit et le temps restant, et survivent à une coupure : un bloc en échec patiente puis réessaie pendant environ une minute, en demandant au serveur jusqu'où son fichier temporaire est réellement allé plutôt que de renvoyer un bloc peut-être déjà arrivé. Même en abandonnant, ces octets sont conservés : reglissez le même fichier sur le même dossier et l'envoi reprend là où il s'était arrêté, y compris après un rechargement — seule l'annulation jette le fichier partiel.

Agents IA

  • Les sessions Antigravity et Copilot sont nommées d'après leur premier message. Toutes deux manquaient au renommage automatique, ce qui laissait des rangées d'« Antigravity 1, 2, 3 » dans la barre latérale. Les événements de hook d'Antigravity ne transportent aucun texte de l'utilisateur, seulement un identifiant de conversation et un chemin de transcription : le premier message est donc lu dans la transcription, et le bloc de métadonnées qui le suit est laissé hors du titre. Les événements de Copilot ne portent pas non plus de nom d'événement et se distinguent à leur forme : un corps contenant une invite et aucun nom d'outil est désormais considéré comme une soumission — ce qui laisse correctement de côté l'invite avec laquelle une session est démarrée, ainsi que les appels d'outils.

  • Une session Antigravity se rouvre avec son historique. La reprise a besoin de l'identifiant de conversation, et l'analyseur qui extrait un identifiant de session des arguments de lancement ne reconnaissait pas la façon dont Antigravity l'écrit : --conversation=<id> n'avait donc jamais d'ancrage où pointer, et chaque session rouverte revenait vide.

  • vspawn --yes lance une sous-tâche sans passer par la carte de confirmation. Quiconque garde « confirmer avant de lancer une sous-tâche » activé devait cliquer sur une carte pour chaque session enfant d'une exécution. L'option — qui s'écrit aussi -y ou --no-confirm — saute la carte pour cet appel-là et démarre la session avec les réglages par défaut. Elle ne modifie pas le réglage lui-même : le lancement suivant, sans elle, repose la question.

  • Le champ de modèle de la carte de sous-tâche accepte tout ce que vous tapez. C'était un simple menu déroulant : seuls les modèles de la liste pouvaient être choisis — alors qu'un agent comprend bien plus d'identifiants que cela, des noms datés comme claude-opus-4-6, des noms préfixés par le fournisseur, des alias configurés localement. C'est maintenant un champ de texte, avec les modèles connus suspendus à un menu déroulant voisin en guise de raccourcis. La liste est une suggestion, pas une liste blanche : ce que vous tapez est ce qui sera transmis, un champ vide signifie pas de --model du tout, et la liste se filtre à mesure que vous tapez puis se replie quand un identifiant personnalisé ne correspond à rien.

Interface

  • Un seul menu déroulant, utilisé partout. Les menus déroulants de l'application avaient été copiés depuis le même code plus d'une dizaine de fois, puis avaient divergé : trois fonds de panneau, quatre ombres, trois couleurs de survol, des hauteurs de déclencheur de 26, 28 et 32 pixels, et des coches sur les lignes sélectionnées dont seule une liste à choix multiple a besoin. Un composant unique alimente désormais les sélecteurs de branche de la fusion, les sélecteurs de langue, de shell par défaut et de police dans les réglages, le sélecteur d'agent, les boîtes de dialogue de worktree, le type d'agent des sessions nouvelles et restaurées, ainsi que le dernier select natif de la fenêtre de formulaire. Il apporte aussi le contrôle au clavier, dont aucun ne disposait : les flèches pour se déplacer, Entrée pour choisir, Échap pour fermer sans fermer la boîte de dialogue qui se trouve derrière, Début et Fin pour aller aux extrémités. Les deux menus de la barre d'état se comportent comme avant, et le filtre d'état de la barre latérale garde ses coches, parce qu'il est réellement à choix multiple.

  • Le champ de mot de passe du panneau d'accès à distance peut être révélé. C'était un champ de mot de passe nu : impossible de voir ce que vous aviez tapé. Le bouton en forme d'œil existait, mais seulement à l'intérieur du fichier du panneau de connexion. Les deux partagent maintenant un seul composant, et l'état révélé se réinitialise à la fermeture du panneau.

  • Le sélecteur d'IP ne ressemble plus à un contrôle du système. C'était un select natif, que WKWebView habille d'un style système qui s'accorde mal à un panneau sombre — le même reproche que celui fait aux menus déroulants remplacés plus haut. Il utilise désormais le composant partagé, et son libellé est raccourci en « IP », puisque le texte à côté dit déjà à quoi il sert.

Corrections

  • La recherche de mises à jour interroge le serveur à chaque fois. Un client laissé en marche restait figé sur la première version qu'il avait vue : ayant trouvé la 0.1.101, il continuait de proposer la 0.1.101 après la sortie de la 0.1.104, et « Rechercher des mises à jour » ne faisait que rouvrir la même boîte de dialogue, parce que l'ancien code sortait immédiatement dès qu'un avis était déjà en attente. Chaque vérification est maintenant une vraie requête. Une version plus récente remplace l'avis à l'écran, une version identique ou un téléchargement en cours le laisse tel quel, et un serveur qui ne signale aucune mise à jour retire un avis devenu périmé — la version a été retirée, ou vous l'avez installée vous-même entre-temps. Le bouton « Télécharger manuellement » ouvre désormais la page de téléchargement du site ; il remettait auparavant le paquet propre au programme de mise à jour, qui se décompresse sur place et ne peut pas être installé à la main.

  • Un calque d'erreur plein écran n'apparaît plus quand les terminaux sont détruits rapidement. La zone d'affichage de xterm planifie une synchronisation de la zone de défilement à sa construction, puis une autre à sa réinitialisation, et n'annule ni l'une ni l'autre à la libération : un terminal ouvert et fermé dans la même tâche — ce que fait précisément la reconstruction de l'arbre des sessions pendant une connexion distante — exécutait quand même ces rappels, tombait sur un moteur de rendu déjà vidé, et levait une erreur. Cette erreur vient d'un minuteur, où ni try/catch ni frontière d'erreur ne peuvent l'atteindre : elle est donc capturée globalement et filtrée étroitement — seule une pile ou un message nommant cette synchronisation, accompagné d'une mention du moteur de rendu ou de ses dimensions, est avalé comme inoffensif et écrit dans le journal des requêtes. Les vrais plantages font toujours apparaître le calque.

v0.1.104

Dernières mises à jour

Agents IA

  • La carte de sous-tâche propose désormais les vrais modèles de chaque agent, et l'option d'effort que cet agent comprend réellement. La carte construisait ses arguments de lancement avec --model et --effort pour tout le monde, alors que seuls Claude, Kiro et Antigravity écrivent ainsi l'effort de raisonnement — Grok et Zoo l'appellent --reasoning-effort, Cline l'appelle --thinking. Choisir un niveau d'effort pour l'un des autres passait à la CLI une option dont elle n'avait jamais entendu parler, et la session ne démarrait pas. Chaque agent fournit maintenant ses propres noms d'options et ses propres valeurs. Le sélecteur de modèle suit ce que chaque CLI est capable de nous dire : celles qui savent énumérer leur catalogue (OpenCode, Grok, Crush, Antigravity, Cursor, pi, Kiro) sont interrogées et proposent la vraie liste, celles qui ont un ensemble figé (Claude, Codex, Kimi Code) proposent cet ensemble, et les autres vous laissent un champ de texte avec un exemple de la forme attendue. Un agent qui n'est pas installé ou pas connecté le dit, au lieu de tourner indéfiniment. Choisir « Par défaut » efface désormais une valeur héritée au lieu de laisser l'ancienne en place, et choisir un niveau d'effort ne fait plus tomber le modèle hérité de la session parente.

  • Une sous-tâche lancée depuis une session Kimi Code reste en Kimi Code. Kimi Code manquait dans la liste dont le chemin de lancement se sert pour hériter de l'agent du parent : ses sessions enfants revenaient donc silencieusement avec l'agent par défaut.

Espace de travail

  • Un groupe peut être déplacé vers un worktree après sa création. Le worktree se choisissait à la création du groupe et restait figé ensuite ; changer d'avis obligeait à supprimer le groupe et à le reconstruire. Faites un clic droit sur un groupe et choisissez « Move to Worktree… » pour créer un nouveau worktree, en rattacher un existant, ou réorienter un groupe déjà rattaché. Seul le groupe lui-même change : les sessions déjà à l'intérieur gardent le répertoire avec lequel elles ont été créées — une session en cours d'exécution ne peut pas être déplacée vers un autre répertoire situé sous elle-même — tandis que les sessions créées ensuite démarrent dans le worktree.

  • Le mode miroir couvre maintenant tout l'arbre de la barre latérale. Il partageait la sélection et les panneaux repliés ; le champ de recherche et les filtres d'état et de marque restaient locaux, au motif que les synchroniser interrompt celui qui est en train de chercher quelque chose. Le raisonnement était à l'envers : mettre en miroir signifie que les deux fenêtres tiennent le même état, pas que l'une rejoue les frappes de l'autre — un filtre actif ici est actif là-bas. Ce qui interrompt vraiment les gens, ce sont deux côtés qui montrent des arbres différents. Chaque projection de la barre latérale voyage désormais : la disposition des divisions, le nom de chaque projection, son texte de recherche, ses filtres d'état et de marque, et son propre état de repli. Le format de l'instantané passe en version 2, et un client resté sur une version antérieure cesse de se mettre en miroir plutôt que d'appliquer la moitié d'une trame : rechargez donc toute fenêtre que vous avez laissée ouverte pendant la mise à jour.

Interface

  • Fermer la fenêtre sous macOS pose la même question que quitter. ⌘Q et l'entrée de menu passaient par la confirmation de l'application, mais le bouton rouge de fermeture détruisait la fenêtre sur-le-champ — or c'est cette fenêtre qui héberge la webview où vit la boîte de confirmation. Vous n'aviez donc aucune confirmation du tout, ou bien le repli natif réduit à l'essentiel, sans case « enregistrer l'espace de travail » et avec un texte non traduit. Les trois plateformes maintiennent désormais la fenêtre ouverte jusqu'à votre réponse.

  • « Enregistrer l'espace de travail » est coché par défaut, et reste comme vous l'avez laissé. Perdre une disposition coûte plus cher qu'un instantané dont on n'avait pas besoin : la case démarre donc cochée. Elle oubliait aussi votre choix : le réglage était écrit en base de données à travers un anti-rebond de 400 ms, et quitter tuait le processus pendant cette fenêtre, si bien que le lancement suivant se réconciliait avec l'ancienne valeur et remettait votre modification en place. L'écriture est maintenant vidée avant la sortie, avec un plafond de 600 ms pour qu'un backend bloqué ne laisse pas le bouton de confirmation tourner indéfiniment. (Contribution de FarhadGSRX.)

  • Les mots de passe du panneau de connexion distante peuvent être révélés. Le mot de passe de l'URL comme celui du SSH disposent d'un bouton en forme d'œil qui bascule entre masqué et texte en clair. L'état révélé est propre au champ et se réinitialise à la fermeture du panneau : un mot de passe ne reste donc jamais affiché à l'écran.

  • Le badge de filtre de la barre latérale compte tous les filtres actifs. Un filtre de marque se contentait d'allumer le bouton sans rien dire, si bien que le badge pouvait afficher 1 alors que deux filtres étaient actifs. Il additionne désormais les états et les marques et correspond aux coches du menu déroulant ; un filtre d'état seul garde sa pastille colorée.

Corrections

  • Les mises à jour automatiques fonctionnent de nouveau sous macOS. Les paquets de la v0.1.103 transportaient des entrées compagnes AppleDouble (._VelaTerm.app) ; le programme de mise à jour retire le premier composant de chaque chemin — ce qui ne laissait ici qu'un chemin vide — et refusait alors de décompresser l'archive. Les deux architectures étaient touchées : tous les utilisateurs macOS en v0.1.103 restaient donc bloqués. L'empaquetage n'écrit plus ces entrées.

  • Les contrôles natifs suivent le thème de l'application quand il diffère de celui du système. Appliquer un thème définissait bien les couleurs de l'application, mais ne mettait jamais à jour color-scheme, initialisé une seule fois au démarrage depuis la préférence du système et jamais retouché ensuite : les cases à cocher, les menus déroulants et les barres de défilement restaient sombres sous une application claire posée sur un système sombre. (Contribution de FarhadGSRX.)

  • Un clone tout neuf se compile de nouveau. La crate Rust embarque ../dist à la compilation, et la commande de développement ne le produit pas : un dépôt fraîchement cloné échouait donc à compiler avant même de pouvoir tourner. Le script de build crée maintenant le répertoire quand il manque. (Contribution de FarhadGSRX.)

v0.1.103

Dernières mises à jour

Corrections

  • Les sessions Codex sous Windows ne refusent plus de démarrer. Chaque session Codex échouait immédiatement avec unexpected argument '--codex-hook' parce que la table TOML des hooks de cycle de vie, passée en ligne de commande, contient des espaces et des guillemets doubles, et codex.cmd installé par npm repasse cela par cmd.exe, qui supprime les guillemets et découpe la valeur en plusieurs arguments. L'injection des hooks est désormais ignorée sous Windows ; la détection d'état revient aux heuristiques existantes notify / screen / busy, qui continuent de signaler les états actif et inactif, mais avec moins de précision que les hooks. macOS et Linux ne sont pas affectés et continuent d'utiliser les hooks.

  • La correction du pré-édit IME Windows de la v0.1.102 a été annulée. La correction qui restaurait l'overlay de composition pour la saisie en chinois, japonais et coréen lui ajoutait également une couleur de fond, une bordure de 1px et des coins arrondis, ce qui dessinait un petit cadre autour du texte de pré-édition dans le terminal — ce qui ne devrait pas y apparaître. Comme le dimensionnement de l'overlay, la géométrie du conteneur auxiliaire et le nettoyage du textarea étaient interdépendants, l'ensemble de la modification a dû être annulé. Le problème sous-jacent — saisie CJK à l'aveugle sous Windows — reste ouvert et est suivi dans l'issue #6.

v0.1.102

Dernières mises à jour

Agents IA

  • Préréglages d'agent : faites tourner côte à côte plusieurs CLI compatibles. Chaque type d'agent était lié en dur à un seul exécutable ; un fork, une version nightly ou une seconde CLI parlant le même protocole n'avaient donc aucun moyen d'entrer — on modifiait les arguments de lancement d'un type existant et on perdait l'original. Un préréglage désigne désormais son propre exécutable, sa propre icône et ses propres arguments de lancement, et apparaît dans le menu de nouvelle session à côté des types intégrés. Les sessions retiennent le préréglage qui les a créées : forker l'une d'elles conserve donc le même exécutable, et un préréglage créé sur le bureau apparaît aussi sur les navigateurs appairés et les clients distants, icône comprise, parce que l'icône voyage sous forme de données et non de chemin sur une machine donnée. Les sessions existantes ne bougent pas : une base de données issue d'une version antérieure démarre exactement comme avant.

  • La carte de sous-tâche choisit le modèle et le niveau d'effort, et une seule réponse tranche partout. Quand un agent demande à lancer une sous-tâche, la carte de confirmation propose désormais le modèle et — lorsque l'agent le prend en charge — le niveau d'effort de raisonnement, préremplis depuis les arguments de lancement de la session parente, si bien que le cas courant tient en un clic. Basculer la carte sur un autre agent recalcule les deux valeurs : un nom de modèle venu d'une CLI ne peut donc plus se retrouver sur la ligne de commande d'une autre. La carte s'affiche sur tous les clients connectés, et y répondre depuis l'un la fait disparaître sur les autres ; la première réponse réserve aussi la tâche sur le serveur, si bien que confirmer sur un téléphone et sur un ordinateur dans la même seconde crée un seul worktree et une seule session enfant au lieu de deux.

Espace de travail

  • Mode miroir : une disposition partagée sur tous les clients. Le flux du terminal a toujours été partagé — un seul PTY, un seul flux d'octets — mais la disposition autour de lui ne vivait que dans le stockage du navigateur de chaque client : un navigateur ouvert depuis le réseau local affichait ses propres onglets et ses propres divisions, et réorganiser un écran ne changeait rien à l'autre. Avec le mode miroir activé, les onglets, les divisions, la session active, la sélection dans la barre latérale et les panneaux repliés sont publiés vers tous les clients et suivis par tous. C'est l'hôte qui commande l'interrupteur, depuis le panneau d'accès à distance. Réorganiser d'un côté prend effet de l'autre ; une session qui quitte la disposition de cette fenêtre est détachée et non arrêtée, si bien que suivre un pair ne met jamais fin au processus de quelqu'un ; et appliquer la disposition d'un pair ne vole pas le clavier à celui qui est en train de taper en local. Les téléphones restent à l'écart : leur navigation à deux niveaux est une interface d'une autre forme, et y recopier un arbre de divisions de bureau n'aiderait personne.

  • L'onglet Git de la barre latérale droite est devenu un client Git utilisable. Il ne faisait qu'énumérer les fichiers modifiés. Il permet désormais d'indexer et de désindexer des fichiers isolés ou des groupes entiers, d'abandonner des modifications, d'écrire un commit (y compris en amend) et de consulter l'historique avec, pour chaque commit, ses fichiers et ses diffs — le tout réparti en sections indexé, modifié, non suivi et validé, qui se replient. Les chemins sont traités depuis la racine du dépôt : une session ouverte dans un sous-répertoire agit donc bien sur les fichiers qu'elle annonce, et un HEAD détaché est signalé comme tel au lieu d'afficher une branche nommée HEAD.

Interface

  • ⌘Q pose désormais la même question que la fermeture de la fenêtre. L'entrée Quitter du menu de l'application était celle du système, qui met fin au processus sur-le-champ : appuyer sur ⌘Q sautait la confirmation d'enregistrement de l'espace de travail qu'affiche le bouton de fermeture, si bien qu'une même intention se comportait différemment selon la manière de l'exprimer. Les deux chemins passent maintenant par une seule confirmation. Si la fenêtre qui l'affiche s'est rechargée ou a planté entre-temps, un nouvel appui sur ⌘Q repose la question et se rabat sur une boîte de dialogue native, plutôt que de laisser l'application impossible à quitter.

  • Les indications de raccourci affichent les touches qui fonctionnent vraiment. Les valeurs par défaut diffèrent d'une plateforme à l'autre, et un navigateur se réserve les combinaisons ⌘/Ctrl + lettre — ⌘D met en favori, ⌘T ouvre un onglet —, si bien que sous macOS les raccourcis ⌘ de l'application n'atteignaient jamais la page lorsque VelaTerm était ouvert comme une simple URL. Les onglets de navigateur ordinaires utilisent désormais les combinaisons Ctrl+Alt sur tous les systèmes d'exploitation, tandis que les applications de bureau et les fenêtres de connexion distante conservent ⌘. Les infobulles et l'indication de l'onglet vide affichent la combinaison réellement en vigueur, y compris celle que vous avez redéfinie vous-même, au lieu d'une combinaison ⌘ figée dans le code ; et le terminal bloque exactement les combinaisons que l'application s'est réservées, si bien que redéfinir une action déplace la touche avec elle.

  • Les préréglages de police couvrent les Nerd Fonts et le CJK, et une police personnalisée absente du système le dit. La liste des préréglages accueille désormais les familles Nerd Font et CJK courantes, et une police saisie à la main est réaffichée puis vérifiée : si le système ne la possède pas, la page des réglages le signale au lieu de retomber en silence sur une police par défaut qui ne ressemble en rien à ce que vous aviez demandé.

  • Les champs de texte sous macOS ne mettent plus de majuscules et ne corrigent plus ce que vous tapez. La mise en majuscule automatique, la correction automatique et la vérification orthographique du système s'appliquaient à chaque champ de saisie de l'application, y compris les noms de session et les champs de commande, où « npm » devenait « Npm ». Elles sont désormais désactivées partout.

Windows

  • La saisie en chinois, en japonais ou en coréen réaffiche le texte de composition et la fenêtre de candidats. Les deux étaient invisibles : on tapait à l'aveugle et on ne voyait le résultat qu'après avoir appuyé sur Entrée. Deux de nos propres règles CSS en étaient responsables : le conteneur du calque de composition s'effondrait à une largeur nulle, et le décalage right de ce calque s'y résolvait à rien du tout. La fenêtre de candidats suivait, puisque le système d'exploitation la positionne d'après le rectangle du calque. Le calque est de nouveau dessiné, aux couleurs de l'application, et le champ de saisie invisible qui le porte relâche sa géométrie dès la fin de la composition : cliquer et glisser sur cette zone atteint donc le terminal, et non plus un élément vide qui la recouvrait sans cesse.

  • La barre de titre native suit le réglage clair/sombre. L'application conserve la barre de titre du système, et Windows la peint en clair tant qu'on ne lui dit pas le contraire : une interface sombre portait donc un bandeau blanc au-dessus d'elle. Elle s'accorde désormais à l'application, y compris pour les fenêtres ouvertes plus tard comme les fenêtres SSH et de connexion distante. Choisir « suivre le système » rend la main au système d'exploitation au lieu de figer une valeur.

  • Le carré parasite au démarrage à froid a disparu. Le plugin d'instance unique crée une fenêtre de messages cachée sans jamais lui donner la transparence que son propre style annonçait ; Windows agrandissait donc parfois cette fenêtre de taille nulle jusqu'à sa taille minimale et peignait un petit carré pendant le démarrage. Elle est maintenant correctement transparente ; le comportement d'instance unique est inchangé.

Performances

  • L'accès à distance charge bien moins de choses au premier affichage. Les ressources statiques sont désormais compressées à la demande et servies avec des validateurs de cache : une seconde visite revalide au lieu de tout retélécharger, et les paquets de langue ainsi que les moteurs de rendu optionnels du terminal ne se chargent que lorsque quelque chose en a besoin, au lieu de faire partie du premier envoi. Au total, le transfert initial tombe à environ un cinquième de ce qu'il était.

Corrections

  • Une session enfant démarre désormais comme la session qui l'a demandée. Les sessions enfants n'héritaient ni du mode d'autorisation ni des arguments de lancement de leur parent : l'enfant d'une session lancée en ignorant les confirmations les redemandait, et un modèle fixé sur le parent était perdu. Les deux sont désormais hérités, avec repli sur les valeurs par défaut globales du type d'agent — les mêmes que celles qu'applique le menu « Nouvelle session d'agent ».

  • Reconnecter une fenêtre distante ne signale plus un faux « échec d'authentification ». À la reconnexion, le nouveau WebSocket et celui qu'il remplaçait se faisaient la course ; la fermeture du perdant était signalée comme un échec d'authentification, et la bannière accusait un appairage parfaitement valide d'avoir été refusé.

  • Un groupe ne peut plus être glissé dans son propre sous-arbre. Déposer un groupe sur l'un de ses propres descendants détachait toute cette branche de l'arborescence, et les sessions qu'elle contenait disparaissaient de la barre latérale jusqu'à réparation manuelle de la base de données. Le déplacement est désormais refusé.

  • La sortie des agents garde ses couleurs quand VelaTerm est lancé depuis un autre outil. Un terminal hérite de l'environnement de ce qui l'a démarré : lancer VelaTerm depuis un IDE ou un harnais d'agent qui exporte NO_COLOR, CI ou FORCE_COLOR=0 rendait donc monochrome toute TUI d'agent à l'intérieur de VelaTerm, alors même que le terminal annonce la couleur complète. Ces valeurs héritées sont écartées au démarrage d'une session ; les mêmes variables exportées depuis votre propre profil de shell continuent de s'appliquer, puisque ce profil s'exécute à l'intérieur de la session.

v0.1.101

Dernières mises à jour

Accès à distance

  • Choisissez l’adresse utilisée par le lien de partage — les adresses Tailscale apparaissent désormais. La liste d’adresses n’acceptait que les plages IPv4 privées classiques ; les maillages VPN comme Tailscale, qui attribuent des adresses de la plage NAT d’opérateur (100.64.0.0/10), étaient donc silencieusement écartés du panneau d’accès à distance et du lien d’appairage, alors que le serveur y était déjà joignable. Ces adresses sont désormais listées ; les tunnels VPN sont classés en dernier afin de ne jamais devenir la valeur par défaut. Un nouveau sélecteur d’IP dans le panneau — visible avant le démarrage comme pendant l’exécution — affiche chaque candidate avec le nom de son interface et signale les tunnels VPN ; en choisir une place son URL en tête et régénère le lien d’appairage avec exactement cet hôte, si bien que le lien copié fonctionne sur un appareil qui n’atteint cette machine que par le VPN, sans modifier l’URL à la main. Un code QR sous le lien d’appairage se scanne directement avec le téléphone. Le choix est mémorisé ; si l’interface choisie disparaît, le panneau revient à « Automatique » sans l’oublier. Le serveur lui-même est inchangé et continue d’écouter sur toutes les interfaces. Choisir une adresse apparue seulement après le démarrage du serveur — un VPN connecté plus tard, par exemple — met désormais aussi à jour immédiatement l’URL copiée et le code QR, au lieu du seul lien d’appairage jusqu’au prochain redémarrage ; les tunnels VPN restent derrière les adresses LAN sur toutes les plateformes, une adresse choisie serveur arrêté détermine le tout premier lien d’appairage après le démarrage, et des régénérations de lien qui se chevauchent ne peuvent plus écraser un lien plus récent par un plus ancien.

  • Le partage survit désormais à un redémarrage. Le jeton d'appairage était régénéré à chaque démarrage du serveur : fermer puis rouvrir VelaTerm invalidait silencieusement tous les liens partagés, et chaque téléphone devait être appairé à nouveau. Le jeton, les appareils appairés et la liste des appareils bloqués sont désormais enregistrés dans un fichier du répertoire de données lisible uniquement par son propriétaire : un appareil déjà appairé se reconnecte avec son URL enregistrée après un redémarrage — le mot de passe d'accès reste un second facteur obligatoire — et un appareil révoqué reste révoqué. VelaTerm se souvient aussi que le partage était actif : quittez l'application pendant que le serveur tourne, et le prochain lancement le relance sur le même port, dans l'application de bureau comme sur un serveur sans interface avec --serve ; arrêtez-le vous-même, et rien ne démarre automatiquement. Si le démarrage automatique échoue, par exemple parce que le port est occupé, l'application démarre normalement et le panneau d'accès à distance en affiche la raison. Le champ du port retient désormais le port réellement utilisé au lieu de revenir à la valeur par défaut, et « Régénérer le lien » reste le coupe-circuit explicite : il émet immédiatement un nouveau jeton, invalide tous les anciens liens et écrase l'état enregistré. Le mot de passe d'accès lui-même n'est jamais écrit sur le disque — seul un hachage exigeant en mémoire (Argon2id) est conservé.

Sécurité

  • Un appareil appairé ne peut plus administrer le partage lui-même. N'importe quel navigateur appairé pouvait appeler les mêmes commandes d'administration que l'application de bureau — créer un nouveau lien d'appairage (ce qui vide aussi la liste de blocage des appareils), lister et révoquer d'autres appareils, ou arrêter et reconfigurer le serveur — et le magasin de réglages livrait à chaque client la table complète des réglages, y compris le hachage à mémoire dure du mot de passe d'accès et les réglages de démarrage automatique lus au prochain lancement. Les commandes d'administration sont désormais réservées à l'application de bureau et au shell Electron ; l'API des réglages filtre les clés d'accès à distance et le jeton Gitea de chaque lecture venant d'un appareil appairé et refuse les écritures sur ces clés. Un appareil appairé conserve ce pour quoi l'appairage existe — ses sessions de terminal avec accès complet au shell — mais il ne peut plus lire le vérificateur du mot de passe, inviter ou évincer d'autres appareils, ni détourner le port que le prochain démarrage utilisera. Les commandes qui lisent, écrivent ou suppriment des secrets enregistrés — le jeton Gitea et les mots de passe d'hôte mémorisés — sont désormais refusées elles aussi pour un appareil appairé, et les commandes qui prennent un chemin — lecture, aperçu, écriture, création, renommage et suppression, de même que l'affichage du diff git d'un fichier ou le choix du dossier où cloner un dépôt — résolvent d'abord les liens symboliques et rejettent les chemins situés dans le répertoire de données de VelaTerm, où résident l'état d'appairage et les clés ; tout autre chemin continue de fonctionner, si bien que la navigation et l'édition de fichiers à distance restent intactes. Un test énumère chaque commande distante qui accepte un chemin, si bien qu'une nouvelle commande ne peut pas contourner ce contrôle sans être remarquée. Quand l'une de ces protections rejette une requête, le navigateur affiche désormais un message correctement traduit au lieu d'une erreur brute en anglais.

  • Une révocation ou un lien régénéré survit désormais aussi à la configuration à double instance. Sur un serveur sans interface (--serve) avec démarrage automatique activé, deux instances du serveur détenaient chacune leur propre copie de l'état d'appairage enregistré et le réécrivaient en entier : une révocation ou un nouveau lien passé par l'une pouvait être défait en silence par l'autre. Toutes les instances d'un même processus partagent désormais un seul état d'appairage par répertoire de données : révocation et rotation prennent effet partout immédiatement, et exactement un écrivain persiste le fichier, qui reste la source de vérité entre les vrais redémarrages.

  • Les connexions échouées répétées sont freinées. La vérification du mot de passe d'accès utilise Argon2id, volontairement coûteux — et quiconque atteint le port peut essayer. Après cinq échecs depuis une même adresse, les tentatives suivantes sont rejetées pendant une minute avant tout travail de hachage, et le hachage lui-même s'exécute désormais hors de la boucle d'événements du serveur, avec un plafond strict de vérifications simultanées : un déluge de mauvais mots de passe ne peut plus saturer le serveur de hachage à mémoire dure ni le ralentir pour les appareils déjà connectés. Le frein vit en mémoire et se réinitialise avec le serveur ; le jeton d'appairage et le mot de passe restent la véritable barrière. La limite est désormais partagée par toutes les instances du serveur utilisant le même répertoire de données — la configuration à double instance avec --serve ne double plus le budget de tentatives — et chaque tentative est réservée avant le début de la vérification du mot de passe, de sorte que des requêtes parallèles venant d'une même adresse ne puissent pas passer sous la limite. Un navigateur freiné voit désormais un message dédié de limitation sur l'écran de connexion au lieu de s'entendre dire que le mot de passe était faux ; le freinage n'est en outre plus mémorisé comme un mot de passe erroné : la pause passée, la tentative suivante aboutit de nouveau sans recharger la page. Une tentative abandonnée en cours de route — l'onglet fermé pendant que le mot de passe était encore vérifié — libère désormais immédiatement sa réservation au lieu de compter contre l'adresse pour le reste de la minute, et une connexion réussie ne libère que sa propre réservation au lieu d'effacer tout l'historique de l'adresse : derrière une adresse réseau partagée, une connexion correcte ne remet plus à zéro le budget de tentatives d'un attaquant, et les échecs enregistrés n'expirent qu'avec leur minute.

  • Les secrets sur disque et dans les journaux sont traités avec plus de soin. Le fichier de l'état d'appairage et la clé de chiffrement de bout en bout sont désormais créés lisibles par le seul propriétaire dès l'origine, au lieu d'être restreints après la première écriture, et la base de données de sessions — qui contient le hachage du mot de passe — est elle aussi restreinte au propriétaire. Un serveur sans interface (--serve) n'imprime plus le secret longue durée du lien d'appairage dans les journaux : si la sortie n'est pas un terminal, le lien est retenu et une indication s'affiche à la place ; --print-pairing le réactive explicitement. Le registre des appareils est plafonné à 32 entrées aux noms de longueur limitée, afin qu'un client appairé ne puisse pas faire grossir le fichier enregistré sans limite, et si l'enregistrement d'une révocation ou d'un nouveau lien échoue, l'erreur remonte désormais à l'appelant au lieu de finir dans une ligne de journal. Le démarrage automatique ne remplace plus un serveur déjà lancé à la main, et une erreur de démarrage automatique périmée disparaît dès que vous arrêtez le serveur vous-même.

Corrections

  • L'appairage peut désormais être géré depuis le shell Electron. La création d'un lien d'appairage, la liste des appareils appairés et la révocation d'un appareil n'existaient que comme commandes de bureau (Tauri) ; le répartiteur WebSocket utilisé par le shell Electron et les clients navigateur répondait « Unknown command », laissant le panneau d'accès distant inopérant à cet endroit. Les trois commandes passent désormais par les mêmes fonctions centrales sur les deux transports, si bien qu'elles ne peuvent plus diverger, et des tests de régression couvrent les nouvelles routes de répartition — y compris la création d'un véritable lien d'appairage auprès d'un serveur local en cours d'exécution.

v0.1.100

Dernières mises à jour

Agents IA

  • Kiro CLI devient un type de session de premier plan. Les sessions Kiro disposent de leur propre nœud dans l'arborescence, d'une pastille d'état Travail/Attente faisant autorité et pilotée par les lifecycle hooks de Kiro lui-même, de notifications à la fin d'un tour, de la reprise automatique de la même conversation à la réouverture du nœud, d'arguments de lancement et d'une option pour ignorer les confirmations, ainsi que du lancement via vspawn — tout ce dont les autres agents disposaient déjà. VelaTerm clone votre agent Kiro par défaut vers son propre agent vlx-term, ajoute à la copie des lifecycle hooks en observation seule, puis lance celle-ci : votre propre fichier d'agent n'est jamais modifié, et votre invite, vos outils et vos serveurs MCP suivent sans changement. Kiro ne dispose d'aucun hook de demande d'autorisation, si bien que la pastille reste sur Travail pendant qu'il attend votre accord.

Corrections

  • Les programmes lancés depuis le terminal n'héritent plus de l'environnement propre à l'AppImage (Linux). Le lanceur AppImage fait pointer PYTHONHOME, PYTHONPATH, PERLLIB, QT_PLUGIN_PATH et les chemins de plugins GStreamer vers le répertoire de montage temporaire du bundle, et place les répertoires du bundle avant tout le reste dans PATH et LD_LIBRARY_PATH. Un terminal transmet tout son environnement au shell qu'il démarre : le python3 du système cherchait donc sa bibliothèque standard à l'intérieur du bundle et refusait purement et simplement de s'exécuter, tandis que d'autres programmes liés dynamiquement chargeaient la copie d'une bibliothèque fournie par le bundle plutôt que celle du système. VelaTerm retire désormais ces chemins du bundle avant de démarrer un shell ou un outil externe, et laisse intactes les valeurs que vous avez définies vous-même. APPDIR et APPIMAGE restent visibles, si bien que les programmes qui vérifient s'ils s'exécutent depuis une AppImage obtiennent toujours leur réponse. Seules les versions AppImage étaient concernées ; le paquet deb, macOS et Windows se comportent comme avant.

v0.1.99

Dernières mises à jour

Terminal

  • Shift+Entrée insère un saut de ligne au lieu d'envoyer. Les terminaux ne disposent d'aucun encodage pour Entrée avec une touche de modification : les CLI d'agents comme Claude Code et Codex ne recevaient qu'un retour chariot ordinaire et envoyaient l'invite alors qu'on était encore en train de l'écrire. VelaTerm émet désormais ESC+CR, la séquence même que ces outils attendent d'une correspondance de touches iTerm2, ce qui rend les saisies multilignes utilisables — y compris sur macOS, où le gestionnaire de touches personnalisé n'était tout simplement pas installé. La composition dans une méthode de saisie reste inchangée : Entrée valide toujours le candidat.

Projets et organisation

  • Actualiser l'état d'une seule session. Dans un volet filtré par état, les sessions disposent d'une action « Actualiser l'état » qui réévalue uniquement cette session selon les conditions propres au volet, l'ajoutant ou la retirant tandis que toutes les autres restent en place. L'action appartient au volet depuis lequel le menu a été ouvert, si bien que les divisions imbriquées n'empruntent jamais le filtre d'un autre volet. Le résultat est conservé par volet et restauré après un redémarrage.
  • Retirer un marqueur ne demande qu'un clic. Choisir l'emoji déjà appliqué le supprime, ce qui rend inutiles l'entrée dédiée au retrait et son séparateur. La pastille emoji du bouton de filtre disparaît elle aussi : la mise en évidence indique déjà qu'un filtre par marqueur est actif, et le menu précise lequel.

Corrections

  • L'intégration au bureau de l'AppImage Linux s'installe sur n'importe quelle machine. L'icône fournie était un lien symbolique vers un chemin absolu de la machine de compilation ; des outils comme Gear Lever et AppImageLauncher ne parvenaient donc pas à l'extraire, alors même que l'application fonctionnait normalement. Le lien est désormais relatif. L'exigence glibc annoncée a également été corrigée à 2.35 après mesure des bibliothèques fournies et non du seul exécutable, ce qui fait d'Ubuntu 22.04 la plus ancienne distribution prise en charge par l'application de bureau.

v0.1.98

Dernières mises à jour

Agents IA

  • Grok Build devient un agent de premier plan dans VelaTerm. Installez, lancez et reprenez Grok 4.5 avec des identifiants de session stables, les lifecycle hooks officiels, des états de travail et d’autorisation précis, des transcriptions fusionnées, le détail de l’utilisation et une icône officielle adaptée au thème, de façon cohérente sur ordinateur, navigateur et mobile.

Projets et organisation

  • Divisez la barre latérale des projets en vues de travail indépendantes. Chaque volet de l’arborescence peut à nouveau être divisé vers le bas et retrouve après redémarrage sa recherche, ses filtres d’état et d’emoji, son état de repli et son ratio de redimensionnement. Tous les volets restent des projections de la même arborescence gérée par le backend : les modifications se synchronisent sans dupliquer les données métier.
  • Marquez et filtrez les nœuds sans perdre leur contexte. Les projets, groupes et sessions peuvent porter des marqueurs emoji. Un conteneur marqué conserve tout son sous-arbre, l’appartenance aux états reste stable pendant le travail, l’ajout dynamique et l’actualisation manuelle sont disponibles, et les conditions d’état et d’emoji sont réunies par union.
  • Créez un projet vide sur place. Choisissez le répertoire parent, validez le nom, puis créez et importez le dossier dans un même parcours. En cas d’échec partiel, seule l’importation est relancée, sans créer de répertoire en double.

Interface

  • Partagez VelaTerm là où se trouve votre communauté. La boîte de dialogue prend désormais en charge WeChat Moments, Weibo, Xiaohongshu, X, Reddit, Hacker News, LinkedIn, Facebook, Telegram et WhatsApp, avec un parcours par code QR pour WeChat et une invitation au partage dans la fenêtre de mise à jour.
  • Des interactions plus soignées jusque dans les détails. Les onglets de terminal temporaires peuvent être renommés avant de devenir des sessions enregistrées. Les champs ordinaires désactivent la mise en majuscule automatique des claviers mobiles sans modifier la saisie dans le terminal.

v0.1.97

Dernières mises à jour

Agents IA

  • Les sessions ne restent plus bloquées sur « en cours ». Codex signalait l’activité des outils et la fin d’un tour depuis des processus éphémères distincts, dont les rappels pouvaient arriver dans le désordre et laisser un tour terminé affiché comme encore en cours. Les rapports intermédiaires arrivant après la fin de leur propre tour sont désormais ignorés, et un nouveau hook de fin de session couvre les sessions qui se terminent sans événement de complétion.
  • Les tours interrompus se stabilisent en quelques secondes. Appuyer sur Esc, ou une erreur de flux, met fin à un tour Claude ou Codex sans le moindre rappel de complétion. Six secondes de silence du terminal corrigent maintenant discrètement une telle session en attente, sans déclencher de notification « a répondu ».

Interface

  • Raccourcis de division fiables sous macOS. Diviser à droite (Cmd+D) et diviser vers le bas (Cmd+Shift+D) sont désormais enregistrés comme commandes du menu Terminal natif, si bien que macOS n’intercepte plus la combinaison avant VelaTerm.
  • Un seul enregistrement par frappe. Cmd+S était traité à la fois par le raccourci global et par l’éditeur actif, ce qui pouvait écrire deux fois le même fichier en une seule frappe.

v0.1.96

Dernières mises à jour

Agents IA

  • L’état de Codex repose sur les lifecycle hooks, pas sur des suppositions tirées du terminal. Les sessions Codex récentes utilisent désormais uniquement les lifecycle hooks officiels comme source d’activité. Une poignée de main SessionStart vérifie la liaison, l’absence de rappel affiche « État indisponible », et le texte ou l’activité du terminal ne peut plus écraser les états de travail, de confirmation ou de fin.
  • Une utilisation Codex plus fraîche après chaque tour. Le panneau Info affiche immédiatement le snapshot rollout local, le rapproche des limites en direct, actualise à nouveau après l’écriture du snapshot token final par Codex et ignore les réponses tardives d’une ancienne session.

Interface

  • Ciblage fiable dans l’arborescence des projets sous macOS. Les lignes virtuelles ne dépendent plus des transform du compositeur, ce qui empêche d’anciennes coordonnées de hit-test WKWebView d’envoyer le survol, le clic ou le glisser vers une autre ligne après un défilement ou une mise à jour de l’arborescence.

v0.1.95

Dernières mises à jour

Agents IA

  • Kimi Code et Zoo Code rejoignent l’arborescence des sessions. VelaTerm peut désormais lancer, reprendre, installer et configurer ces deux agents. Kimi utilise ses lifecycle hooks officiels pour signaler précisément les états de travail, d’autorisation et d’attente ; Zoo Code conserve un identifiant de tâche stable et utilise la détection du terminal en l’absence de hooks externes.
  • Actualisation en direct de l’utilisation Codex. Le panneau Info interroge le Codex app server pour obtenir les limites actuelles, avec repli compatible sur l’instantané rollout local.

Projets et terminaux

  • Ouvrez un projet avec vela <path>. Les versions empaquetées peuvent installer une commande shell à la manière de VS Code. Un second appel transmet le projet à la fenêtre VelaTerm existante au lieu d’ouvrir une instance en double.
  • Clonage Git visible et annulable. Clone Project affiche les étapes Git, le pourcentage et le temps écoulé, avertit en cas de blocage et peut arrêter tout l’arbre de processus Git sans laisser de cible incomplète. Les identifiants et query tokens sont masqués dans les erreurs et journaux d’audit.
  • Terminaux WSL sous Windows. Toutes les distributions WSL installées sont proposées avec PowerShell, cmd et Git Bash pour les terminaux ordinaires. Les agents restent dans le shell hôte Windows afin de préserver la fiabilité des hooks et des chemins exécutables.

Interface et fiabilité

  • Contrôle plus clair des sessions en arrière-plan. Les menus affichent l’état en direct de chaque session et la boîte de dépassement de limite peut fermer plusieurs onglets sélectionnés à la fois.
  • Cycle de vie plus sûr et notes multilingues. Une confirmation précède l’arrêt des sessions actives ; l’identité lifecycle exacte de Codex prime sur les scans rollout ambigus ; les notes de mise à jour couvrent toutes les langues intégrées.

v0.1.94

Dernières mises à jour

Localization

  • Interface en vietnamien. Tiếng Việt est désormais disponible dans le sélecteur de langue et est sélectionné automatiquement pour les localisations vietnamiennes du système.

Navigateur

  • Démarrage plus rapide dans le navigateur intégré. Chaque onglet de navigateur dispose désormais de raccourcis en un clic pour ChatGPT, Claude, Gemini et Google. Les menus contextuels de projet et de groupe peuvent également créer une page de navigateur permanente directement dans cette partie de l’arbre de session.

Images et documents

  • Collage fiable des chemins d’image sur macOS. Lorsque WebKit ne expose pas une image copiée en tant que fichier, VelaTerm la lit depuis le presse-papiers natif et la télécharge néanmoins en tant que chemin de fichier, au lieu de passer silencieusement à un placeholder d’image natif de l’agent. Les fenêtres distantes affichent toujours la configuration de collage d’image, expliquent pourquoi le mode chemin de fichier est requis, et désactivent l’option native indisponible.

  • Coller des images dans les documents sources. L’éditeur source accepte désormais les images du presse-papiers. Les documents Markdown enregistrés les stockent à côté du document sous assets/ et insèrent une syntaxe d’image Markdown portable ; les brouillons non enregistrés incorporent les données de l’image afin qu’elles ne soient pas perdues lors du nettoyage des fichiers temporaires.

Interface

  • Les menus contextuels restent visibles et ciblent le bon élément. Les menus ouverts près du bord droit sont mesurés et déplacés correctement. Un clic droit sur un nœud d’arbre met désormais en surbrillance uniquement l’élément ciblé par le menu sans modifier la sélection existante, et les menus de groupe incluent une console limitée à ce groupe.

  • Édition et étiquettes d’état plus propres. Le texte source ne rend plus de ligatures de police ressemblant à des flèches pour des séquences telles que les commentaires HTML, les pourcentages d’utilisation sont explicitement étiquetés comme utilisés, et le menu contextuel natif non pertinent du WebView hôte n’apparaît plus derrière les menus propres à VelaTerm.

Corrections

  • Codex reste dans l’historique normal de la console. Les sessions Codex lancées par VelaTerm utilisent désormais le mode console en ligne, de sorte que la pression sur Esc pour interrompre ou revenir en arrière ne change plus les buffers d’écran de la console et ne fait pas basculer la vue de défilement en haut. Votre propre configuration Codex reste inchangée.

v0.1.93

Dernières mises à jour

Mises à jour

  • Voir ce qui a changé avant d’installer. Lorsqu’une nouvelle version est disponible, un indicateur dans la barre d’état et une boîte de dialogue dédiée affichent désormais les notes de version. Vous pouvez mettre à jour immédiatement, sauter cette version, continuer à télécharger en arrière-plan, ou ouvrir manuellement le téléchargement de l’installateur ; l’avancement est affiché en temps réel et l’application redémarre pour finaliser l’opération. Si vous avez sauté plusieurs versions, les notes de chacune d’entre elles sont affichées ensemble, et non seulement celles de la dernière version.

Agents IA

  • Les sessions Codex se nomment elles-mêmes. Une session Codex est renommée dès votre premier message, de la même manière que les sessions Claude l’étaient déjà — ainsi, l’arbre n’est plus rempli de "Codex 1", "Codex 2". Un nom que vous avez défini manuellement n’est jamais écrasé.

  • vspawn et vopen fonctionnent désormais aussi dans Codex. Les compétences intégrées vspawn, vspawn-tree et vopen sont installées dans le répertoire des compétences de Codex ainsi que dans celui de Claude, de sorte que $vspawn <task> et $vopen <file> fonctionnent depuis une session Codex.

  • Reprise plus fiable de Codex. La capture d’une conversation Codex pour une reprise ultérieure ne dépend plus d’un délai fixe, donc elle fonctionne toujours même si vous faites une pause avant d’écrire le premier message ; de plus, deux sessions Codex lancées dans le même dossier ne peuvent plus être reliées entre elles par une conversation commune.

  • Utilisation du modèle et du contexte pour Codex. Le panneau Info affiche désormais le modèle actuel, l’utilisation de la fenêtre de contexte et l’outil en cours d’exécution pour les sessions Codex, tout comme c’était déjà le cas pour Claude, en lisant en temps réel les informations fournies par la session.

Distants et console

  • Navigateur de fichiers distant reconstruit. Le sélecteur de dossiers pour les sessions distantes dispose désormais de recherche en temps réel, d’un accès direct au chemin (avec ~), de navigation vers le haut / le début / les derniers fichiers, ainsi que d’une fonction Nouveau dossier en ligne.

  • Les liens s’ouvrent sur votre propre machine. Un clic sur un lien dans la console — y compris un lien de connexion à un agent — s’ouvre désormais dans votre navigateur local, y compris depuis les fenêtres distantes.

  • L’option « réutiliser la base de données distante » est cachée. Elle n’apparaît que lorsque vous cliquez avec la touche Option/Alt sur « Se connecter au distant » ; un clic normal se connecte toujours à une base de données indépendante.

Corrections

  • Les outils sont trouvés lorsqu’ils sont lancés depuis le Dock. Lancer VelaTerm depuis le Dock ou le Finder ne le laisse plus avec une version simplifiée de PATH ; ainsi, git et les autres outils installés via Homebrew dont les agents ont besoin sont localisés correctement.

  • De nouvelles consoles s’ouvrent dans le bon dossier. Créer une console à partir d’un projet ou d’un groupe dans la barre latérale l’ouvre désormais dans le répertoire de ce nœud, au lieu de réutiliser le dossier de la dernière session active.

v0.1.92

Dernières mises à jour

Corrections

  • Plus d’avertissements faux de « lien SSH perdu ». Le moniteur de tunnel traitait auparavant la fin du processus enfant de port-forwarding comme une perte de lien, affichant une bannière rouge et reconstruisant le tunnel. En réalité, l’écouteur de redirection se trouve dans le processus ControlMaster, donc la redirection continue de fonctionner après la fin du processus enfant — la console reste parfaitement utilisable tandis que l’interface affichait que le lien était down, et la reconstruction détruisait inutilement une connexion valide.

Le lien est désormais vérifié en deux étapes : lorsque le processus enfant se termine, VelaTerm vérifie d’abord si le port de redirection local possède encore un écouteur. S’il y en a un, rien ne se passe. Ce n’est que lorsque le port a également disparu que le lien est considéré comme mort et reconstruit. La bannière rouge est également déboussolée — elle n’apparaît que après l’échec de la première tentative de reconstruction, de sorte qu’un problème qui se résout en quelques secondes ne provoque plus d’avertissement.

Les déconnexions réelles se rétablissent toujours automatiquement. Si le processus ControlMaster est arrêté ou que le réseau disparaît pendant une longue période, le tunnel se reconstruit automatiquement ; une fois les tentatives de réconnection épuisées, l’affichage passe à « SSH link is down », et Reconnect restaure alors la session — les processus distants continuent de fonctionner et reprennent là où ils s’étaient arrêtés.

v0.1.91

Dernières mises à jour

Première version publique. Tout ce qui suit est inclus dans cette version.

Les agents AI en tant que composants principaux

  • Soutien intégré pour neuf agents — Claude Code, Codex, OpenCode, Copilot CLI, Cursor CLI, Cline, Pi, Antigravity (Gemini CLI) et crush. Choisissez un type lors de la création d’une session, et elle démarre prête à l’emploi.

  • L’état de l’agent est rapporté, non deviné. VelaTerm insère le mécanisme de rappel officiel de chaque fournisseur au démarrage (hooks pour Claude, notify pour Codex, un plugin pour OpenCode, etc.), de sorte que chaque changement d’état est transmis immédiatement. L’arbre de session affiche un point indiquant l’état « en cours », « en attente » ou « terminé mais non consulté » ; la barre latérale filtre par état et la barre d’état affiche un comptage en temps réel.

  • Des notifications système sont déclenchées lorsque un agent a besoin d’une décision de permission ou termine une tâche, et un clic dessus vous amène directement à cette session. La détection d’écran sert de solution de secours pour tout agent sans mécanisme de rappel.

  • Les conversations survivent à tout. L’ID de session propre à chaque agent est capturé et stocké, de sorte que fermer une session, redémarrer l’application ou restaurer une session archivée permet de reprendre la conversation originale — après vérification de son existence. Claude Code, Codex et Pi peuvent également créer une session parallèle à partir de la conversation actuelle.

  • Les sessions génèrent des sessions. Les sous-tâches deviennent des sessions enfants, générées soit par l’agent lui-même, soit par vous, éventuellement dans un worktree git isolé afin que plusieurs agents puissent travailler sur le même répertoire en même temps. Un dialogue de fusion graphique réunit les branches une fois le travail terminé.

  • Les agents manquants reçoivent une carte d’installation avec une commande recommandée et une installation en un clic, suivie d’une découverte automatique du chemin. Un panneau latéral affiche les quotas d’utilisation de Claude et Codex, et toute conversation peut être consultée sur place ou exportée sous forme de transcription complète Markdown.

Organisation des sessions

  • Un arbre à trois niveaux — projet, groupe, session — avec un nombre illimité de niveaux de groupe et des sessions enfants sous les sessions. Les nœuds peuvent être déplacés librement et l’état plié persiste après les redémarrages.

  • Tout sous-arbre peut être archivé : il est caché dans le panneau d’archive sans suppression des données, peut être restauré à tout moment et continue de pouvoir reprendre sa conversation.

  • Recherche de contenu globale (⌘⇧F) assurée par un index SQLite FTS5 couvrant à la fois les transcriptions des agents et les sorties de terminal, avec un arbre des résultats à gauche, une prévisualisation liée à droite, et une navigation pas à pas entre les sessions.

Un terminal correct, en premier lieu

  • Un vrai PTYs (portable-pty, provenant de wezterm), de sorte que vim, htop et les interfaces TUI des agents fonctionnent exactement comme prévu.

  • Plusieurs onglets avec des divisions arbitraires — chaque onglet possède son propre arbre de division, divisé horizontalement ou verticalement selon vos préférences.

  • Cycle de vie des onglets de style navigateur : les onglets en arrière-plan restent actifs et leurs processus continuent de fonctionner, le budget d’onglets actifs est configurable, et son dépassement entraîne la fermeture de la session inactive la plus ancienne. La fermeture d’un onglet met fin au processus correspondant.

  • La saisie reste réactive même sous charge, grâce à un planification par priorité d’entrée et à un regroupement des frames de sortie — un agent qui inonde l’écran ne vous fait plus perdre de caractères.

  • Recherche dans le terminal (⌘F), enregistrement et lecture des sessions, collage ou glisser-déposer d’images directement vers un agent, et basculement gratuit entre cmd, PowerShell et Git Bash sur Windows.

Au-delà du terminal

  • Exécutez vopen <file> dans n’importe quelle session pour ouvrir une page de document à côté de vos terminaux : Markdown s’ouvre en tant qu’éditeur WYSIWYG et exporte vers PDF vectoriel, les images s’ouvrent dans le visualiseur intégré, et les fichiers sources bénéficient d’un soulignement syntaxique.

  • Un onglet navigateur intégré peut être utilisé comme onglet temporaire ou fixé dans l’arbre de projet en tant que nœud permanent.

Distanciel et multi-appareils

  • L’application desktop propose la même interface via le web, partageant un ensemble unique de sessions en temps réel. Les flux de sortie sont envoyés à chaque client en temps réel et n’importe lequel d’eux peut taper — le desktop et le navigateur voient et contrôlent le même terminal.

  • Chiffrement de bout en bout avec un boîtier NaCl par frame, association par code QR ou lien, et gestion par appareil incluant une révocation individuelle.

  • Mode sans interface graphique : --serve exécute le même service sur un serveur sans GUI, prêt pour une connexion depuis un navigateur.

  • Les connexions SSH distantes ajoutent des machines distantes à votre arbre. VelaTerm se connecte directement depuis le desktop, déploie un vela-server léger du côté distant, et les sessions distantes se comportent comme des sessions locales. Le tunnel se répare et se reconnecte automatiquement.

  • Mobile : le service inclut une vue web mobile, ainsi qu’un noyau d’application native (affichage xterm avec entrée native et barre de touches d’accès).

Plateforme et finitions

  • macOS, Linux et Windows.

  • Mises à jour automatiques, avec des versions macOS notariées.

  • Thèmes clair et foncé suivant le système, et les sessions d’agents en cours sont informées du changement via la notification de terminal standard (DEC 2031) — les couleurs de l’interface TUI changent instantanément, sans besoin de redémarrage.

  • Anglais par défaut, avec 10 langues intégrées suivant la configuration locale du système.

Chaque version inclut des mises à jour automatiques — VelaTerm proposera automatiquement la dernière version. Téléchargez-la vous-même depuis la page de téléchargement.