Écrit par GuillaumeTechnoProjet Gitnetix

Gitnetix, deux semaines plus tard : de la v0.7 à la v0.20

Du 25 octobre au 9 novembre 2026, 37 versions de mon client Git : un nouveau thème, le blame dans le diff, GitLab, Bitbucket et Gitea, les sprints Jira dans les statistiques, des profils, la dictée locale et des agents qu'on peut relancer pendant qu'ils travaillent.

Gitnetix 0.20.5 avec le thème Tokyo Night Storm : l'arbre des branches d'acme-web avec la version 0.6.0 à venir, une branche de correctif où un agent travaille dans son worktree, la branche extraite et les versions livrées regroupées en bas.

Gitnetix est mon client Git centré sur les versions. Les captures de sa page de projet dataient du 25 octobre 2026, à la version 0.7.1. Le 9 novembre, il est à la version 0.20.5, 37 versions et 341 commits plus tard. Ces commits touchent 190 fichiers du moteur, de l’interface et de l’app, avec 34 067 lignes ajoutées et 4 368 retirées. Cet article met chaque ancienne capture à côté de la nouvelle, puis montre les écrans qui n’existaient pas encore.

Les anciennes captures montrent mes propres dépôts. Les nouvelles utilisent les données inventées de la démo de gitnetix.app : l’équipe d’Acme, ses dépôts acme-web, acme-api et design-system, ses pull requests et son tableau Jira.

Table des matières

Un nouveau thème et un nouveau cadre

Le 25 octobre, Gitnetix avait un thème sombre et un thème clair, avec un accent orange. La version 0.8.0 a ajouté des thèmes au choix, avec un panneau Apparence qui montre leurs couleurs. Il y en a maintenant 36, dont Tokyo Night, Catppuccin, Rosé Pine, Dracula, Nord, Everforest et Kanagawa. Depuis la 0.13.0, l’app démarre sur Tokyo Night Storm tant qu’on n’en a pas choisi un autre. Depuis la 0.12.0, le logo est dessiné avec les couleurs du thème.

Le cadre a changé aussi. Le menu en haut à gauche a disparu. Le bouton de profil, en haut à droite, ouvre maintenant le menu, et les réglages, la configuration de l’IA et les gabarits s’ouvrent dans un panneau par-dessus la page (0.15.0). Worktrees et agents n’est plus un onglet de page. Il a son propre bouton carré en haut à gauche, et l’ouvrir ne dérange plus la page du projet ouvert (0.14.0).

L'espace de travail de Gitnetix 0.7.1 avec le thème sombre d'origine : l'historique de main dans le dépôt Gitnetix, les tags v0.7.1 et v0.7.0, et à droite les fichiers modifiés par le commit choisi.
Avant, version 0.7.1 : l'historique de main, avec le menu en haut à gauche et Worktrees et agents dans les onglets.

L'espace de travail de Gitnetix 0.20.5 avec le thème Tokyo Night Storm : l'historique de main d'acme-web, le tag v0.5.2 présent en local et sur origin, un commit de fusion choisi et ses trois fichiers à droite.
Après, version 0.20.5 : le même écran sur le dépôt de démo, avec le bouton de profil en haut à droite.

La liste des commits charge les plus anciens en défilant, jusqu’au premier commit du dépôt (0.13.0). Le clic droit sur un commit permet maintenant de créer ou de supprimer un tag (0.9.1 et 0.10.0).

L’arbre des branches

L’arbre reste l’écran principal, avec main en haut, les versions en dessous, et les fonctionnalités et les correctifs sous leur version. Le 28 octobre, la version 0.12.0 a ajouté un aperçu du graphe des commits à côté de l’arbre, avec les pointes locales et distantes, les tags et HEAD. La version 0.13.0 l’a retiré le lendemain.

L'arbre des branches de Gitnetix 0.7.1 : main, la version 0.1.0 à venir encore locale, la branche mine-systems extraite, et à droite les 22 fichiers modifiés par la branche.
Avant, version 0.7.1 : l'arbre de Deep Core, avec le chemin orange jusqu'à la branche extraite.

L'arbre des branches de Gitnetix 0.20.5 : main, la version 0.6.0 à venir, un groupe de branches déjà fusionnées dans la 0.6.0, la branche fix/stale-remote marquée working parce qu'un agent y travaille, la branche feat/branch-tree extraite, et le groupe des versions livrées.
Après, version 0.20.5 : un agent travaille sur fix/stale-remote dans son worktree.

Ce qui a changé dans l’arbre :

  • L’état des agents. L’étiquette d’un worktree montre l’état de son agent (en train de travailler, en attente ou terminé) au lieu de « worktree », et elle s’allume pendant que l’agent travaille (0.13.2 et 0.14.0).
  • Le ménage des versions livrées. Un bouton supprime les branches des versions livrées, en local et sur origin, et garde leurs tags (0.13.2).
  • La recherche. Ctrl+F cherche dans l’arbre et dans le diff, marque chaque résultat et passe de l’un à l’autre avec les flèches (0.15.0).
  • Renommer et rebaser. On peut renommer une branche ou une version ouverte, en local et sur origin (0.9.0), et rebaser une branche sur n’importe quelle autre avec « Rebase onto… » (0.11.0).
  • Les opérations arrêtées. Une branche arrêtée au milieu d’un rebase, d’une fusion, d’un cherry-pick ou d’un revert le montre dans l’arbre, et on peut annuler l’opération depuis son menu (0.17.2).
  • Les changements en cours. Changer de branche ou tirer avec des changements non commités demande quoi en faire : les emporter, ou les mettre dans un stash (0.11.1 et 0.11.2). Avant, git refusait et Gitnetix affichait son erreur.

Le diff et le blame

Il n’y avait pas de blame le 25 octobre. La version 0.20.0 l’a ajouté comme une vue à part, avec l’historique d’un fichier, renommages compris. Le lendemain, la version 0.20.4 a mis le blame dans le diff lui-même et retiré la vue. On survole une ligne, ou on en sélectionne quelques-unes, et l’auteur du commit qui l’a changée en dernier apparaît sur son numéro de ligne. Un clic sur l’avatar ouvre ce commit dans l’historique du fichier.

Le diff complet de BranchTree.tsx dans Gitnetix 0.20.5 : chaque bloc de lignes porte l'avatar de son auteur sur son numéro de ligne, et une infobulle montre le commit de Jules Laurent qui a changé la ligne survolée, avec le lien vers l'historique du fichier.
Le blame dans le diff : quatre auteurs dans un seul fichier, et le commit derrière la ligne survolée.

Le reste du diff a aussi bougé :

  • Stager une partie d’un fichier. On choisit des lignes dans la colonne des numéros, ou un bloc entier depuis son en-tête, et un fichier peut être à la fois indexé et non indexé (0.11.0). Les lignes choisies peuvent aussi être annulées, après une confirmation.
  • La coloration syntaxique, chargée par langage sans bloquer l’interface, une pastille de couleur devant les valeurs hexadécimales, et une vue code pour les SVG (0.10.0).
  • Le début de la branche. La liste des commits d’une branche se termine par le commit où elle a quitté sa base, dans une section « Branched from » avec ses propres actions de reset (0.20.5).

Les pull requests

En octobre, Gitnetix lisait les pull requests de GitHub et d’Azure DevOps. La version 0.18.0 a ajouté GitLab, Bitbucket Cloud et Gitea : leurs pull requests, leurs révisions, leurs branches protégées et la liste de leurs dépôts à cloner fonctionnent comme avec GitHub, et les versions se publient sur GitLab et Gitea. GitLab se connecte avec un code, sur gitlab.com ou sur un serveur auto-hébergé, et Bitbucket et Gitea par le navigateur.

L'écran des pull requests de Gitnetix 0.7.1 : l'onglet Closed avec cinq PR fusionnées et trois fermées, et le détail d'une PR fusionnée avec ses vérifications et sa description.
Avant, version 0.7.1 : les PR du dépôt Gitnetix.

L'écran des pull requests de Gitnetix 0.20.5 : une recherche, les filtres Mine, Others et All, et le détail de la PR 148 avec ses vérifications en cours, ses réviseurs, sa description et un fil de discussion.
Après, version 0.20.5 : la PR 148 d'acme-web, approuvée par Ana Moreau, deux vérifications encore en cours.

La liste a maintenant une recherche et un bouton de synchronisation (0.11.2), et un filtre Mine, Others et All qui reste d’une visite à l’autre (0.10.0). L’écran d’accueil clone un dépôt, avec la liste de ses dépôts GitHub, les plus récents en premier (0.18.0). Quand git n’arrive pas à se connecter à un hôte en HTTPS, Gitnetix demande un nom d’utilisateur et un jeton, les garde dans le trousseau du système et relance l’action.

Les agents

L’ancienne capture montrait la fenêtre de lancement d’une session d’agent. Elle a peu changé. On choisit toujours le projet, la base, le ticket, le type de branche et l’agent. Elle se réduit maintenant en pastille dans un coin de la fenêtre (0.13.0), garde son brouillon d’une page à l’autre et après un redémarrage, et a un micro pour la dictée.

La fenêtre New agent session de Gitnetix 0.7.1 : une nouvelle branche depuis main dans le projet Gitnetix, le type Feature, l'agent Claude Opus 5.5 en effort xhigh, et une demande de raccourcis clavier.
Avant, version 0.7.1 : lancer un agent sur une nouvelle branche.

La fenêtre New agent session de Gitnetix 0.20.5 par-dessus le journal d'un agent : une nouvelle branche depuis main dans acme-web, le type Feature, Claude Opus 5.5 en effort xhigh, une demande pour les touches Début et Fin dans l'arbre, et le micro dans la zone de texte.
Après, version 0.20.5 : la même fenêtre, qui se réduit et garde son brouillon.

Le travail a surtout porté sur ce qui se passe après le lancement :

  • Écrire à un agent pendant qu’il travaille. Les messages attendent dans une file et partent ensemble à la fin de son tour (0.9.2). On peut les modifier, les retirer ou les envoyer tout de suite (0.18.0).
  • Les questions. Les questions d’un agent s’affichent comme ses bulles de discussion, une par question, avec des boutons de réponse, et une question peut prendre plusieurs réponses (0.17.2).
  • Les fichiers de chaque tour. Le journal liste les fichiers que chaque tour a changés, avec les lignes ajoutées et retirées. Un clic ouvre le diff de ce tour (0.18.0).
  • Les limites d’utilisation. Quand un CLI s’arrête sur une limite d’utilisation, la session attend la remise à zéro, puis continue avec ses messages en file (0.19.0).
  • Les modèles de chaque CLI. GitHub Copilot, Codex et Gemini choisissent leur modèle dans un menu, lu depuis leur CLI, et le menu d’effort ne montre que les niveaux que le modèle accepte (0.20.5).
  • Une app qui reste fluide. Les agents et toutes les commandes qu’ils lancent tournent sous la priorité CPU de l’app. Avant, un build sur tous les cœurs ralentissait le dessin de l’app d’environ 4 fois (0.17.3).

L'onglet Worktrees et agents de Gitnetix 0.20.5 : la branche fix/stale-remote en cours, son journal avec les étapes repliées et la réponse de l'agent, un message en attente avec les actions Edit et Remove, et en bas le choix de l'agent et du modèle.
Le journal d'un agent au travail, avec un message en file qui partira à la fin de son tour.

Les notes de version

L’écran a gardé sa forme : une plage de tags ou de branches, un gabarit, une langue, puis le texte. Le choix de langue a une troisième option, « Template base ». Avec elle, l’IA écrit dans chaque langue que le gabarit demande, alors un gabarit qui demande le français et l’anglais donne les deux (0.18.1). Les invites comprennent maintenant les pull requests, les fichiers modifiés et le diff.

L'écran des notes de version de Gitnetix 0.7.1 : la plage de v0.6.0 à HEAD, 41 commits, le gabarit par défaut en anglais, et les notes de la v0.7.1.
Avant, version 0.7.1 : les notes de la v0.7.1, écrites par Claude Sonnet 5.5.

L'écran des notes de version de Gitnetix 0.20.5 : la plage de v0.5.2 à release/0.6.0, 9 commits et une fusion, le choix English, Français ou Template base, et les notes de la v0.6.0 d'acme-web.
Après, version 0.20.5 : les notes de la 0.6.0 d'acme-web, et un bouton Publish release pour GitHub, GitLab ou Gitea.

La livraison peut mettre à jour et dater le changelog au moment de livrer (0.9.1), et pousse maintenant avant d’avancer main et de poser le tag, pour qu’un push refusé laisse la version ouverte (0.19.6). La version 0.17.2 a aussi ajouté des compétences globales, placées devant chaque gabarit. Celle livrée par défaut, Unslop, garde l’écriture loin des mots et des tournures qui trahissent un texte écrit par une machine.

Les statistiques et les tickets

L’onglet des commits ressemble à celui d’octobre. Un clic sur un jour montre ses commits par personne et par type, et un clic sur une version montre ses fonctionnalités, ses correctifs et ses branches fusionnées (0.9.0). Depuis la 0.19.0, on peut ne compter qu’une ou quelques personnes, et les adresses d’une même personne sont regroupées sous son nom.

Les statistiques de Gitnetix 0.7.1 sur 14 jours : 24 versions livrées, 14 fusions et 316 commits, et l'activité par jour en barres orange.
Avant, version 0.7.1 : deux semaines de Gitnetix lui-même.

Les statistiques de Gitnetix 0.20.5 sur 30 jours pour acme-web : 3 versions livrées, un délai médian de 10 jours, 10 fusions et 52 commits, avec les onglets Commits et Jira · GitHub et le filtre All people.
Après, version 0.20.5 : un onglet de tickets à côté des commits, et un filtre par personne.

Le nouvel onglet porte le nom des outils de tickets connectés. Pour Jira, il trace le sprint en cours et les précédents : le burndown face à la ligne idéale, la vélocité, les bogues corrigés, les heures estimées qui restent sur les tickets pas terminés, et l’avancement par personne. Chaque ticket montre le temps entre le début du travail et sa fin, tiré de son historique Jira, et les tickets ouverts plus longtemps que 85 % des tickets terminés sont signalés. Chaque graphique s’ouvre en tableau et s’exporte en CSV, et « Ask AI » répond aux questions sur les sprints à l’écran (0.19.0). La vue Weekly compte les tickets faits par semaine et par personne dans Jira, Trello, Asana et, depuis la 0.19.2, les issues GitHub.

L'onglet Jira · GitHub des statistiques de Gitnetix 0.20.5 : le sprint 14 en cours, marqué à risque, sa vélocité, son rythme, ses bogues corrigés et son avancement, puis le burndown face à la ligne idéale et la composition du sprint.
Le sprint en cours du tableau WEB, au 6e jour sur 10.

La configuration de l’IA

La configuration de l’IA s’ouvre maintenant dans le panneau du menu au lieu de remplacer l’écran. Gemini passe par le CLI Antigravity (agy) depuis la 0.18.0, avec son propre choix d’effort depuis la 0.20.5, et Claude a maintenant un niveau d’effort Max. Gitnetix trouve aussi les CLI absents du PATH, comme ceux installés avec nvm ou fournis par l’app Claude Desktop.

La configuration de l'IA de Gitnetix 0.7.1 en plein écran : Claude par défaut avec son CLI trouvé mais pas testé, les autres fournisseurs, le modèle Claude Sonnet 5.5 en effort Medium et le début du routage des tâches.
Avant, version 0.7.1 : la configuration de l'IA remplaçait l'écran.

La configuration de l'IA de Gitnetix 0.20.5 dans le panneau du menu : Claude et Codex connectés par leur CLI, Gemini et GitHub Copilot trouvés, Claude Sonnet 5.5 en effort Medium avec un niveau Max, et le routage des tâches.
Après, version 0.20.5 : le même écran dans le panneau du menu.

Les messages de commit, les noms de branches et les descriptions de PR démarrent plus vite, parce qu’ils n’ouvrent plus une session complète de Claude Code dans le dépôt (0.17.3).

Des profils et une première configuration

La version 0.15.0 a ajouté les profils. Chacun garde ses propres projets, connexions, jetons, configuration de l’IA et réglages, avec un nom, un émoji, une photo ou un Gravatar, et une couleur. Depuis la 0.16.0, un profil a une seule identité Git pour tous ses projets, préremplie depuis la configuration git (0.17.3). Le panneau des réglages montre le profil actif en haut, avec les autres à côté.

Le panneau des réglages de Gitnetix 0.20.5 : le profil Acme, qui commite en tant que Grace Hopper, avec 3 projets, GitHub et Jira, les profils Personal et Open source à côté, puis les réglages du projet acme-web et ceux de l'app.
Le profil Acme, et deux autres profils à un clic.

Un nouveau profil s’ouvre sur une première configuration : le thème, le profil, l’agent, l’hôte Git, Jira, l’identité Git, le raccourci de dictée et le jumelage du téléphone (0.16.0). Depuis la 0.18.0, chaque étape peut être sautée sauf la configuration de l’agent. On ne passe pas tant qu’un CLI d’agent (Claude Code, Codex, Antigravity, GitHub Copilot ou Ollama) n’a pas répondu à un test, et chacun a un bouton qui ouvre sa page de téléchargement.

L'étape Agent setup de la première configuration de Gitnetix 0.20.5, marquée comme la seule étape obligatoire : Claude, Codex, Gemini et GitHub Copilot trouvés sur l'ordinateur avec un bouton Test chacun, et Ollama avec un bouton Install.
L'étape obligatoire de la première configuration.

La page des raccourcis clavier liste chaque raccourci et permet de les modifier (0.17.0).

La dictée

Depuis la 0.10.0, on peut dicter dans n’importe quelle zone de texte avec un raccourci, ou avec le micro sur le téléphone. La transcription se fait sur l’ordinateur. La première version utilisait Whisper, avec un modèle par langue. Depuis la 0.13.1, c’est Parakeet Ultra, qui détecte la langue tout seul, en anglais, en français et dans 23 autres langues européennes, même mélangées dans une phrase. Le modèle de 740 Mo se télécharge une fois. La dictée reçoit le nom des projets, de la branche et des fichiers modifiés comme vocabulaire, et l’IA peut récrire le texte au propre. Sans cette réécriture, rien de ce qu’on dit ne quitte l’ordinateur.

Le panneau Voice dictation de Gitnetix 0.20.5 : le texte qui explique la transcription locale en 25 langues et le modèle de 740 Mo, le raccourci Ctrl+D et la case Rewrite with AI.
Les réglages de la dictée : le raccourci, et la réécriture par l'IA.

Plus rapide et plus sûr

Une partie des 341 commits ne se voit pas sur les captures :

  • Moins d’appels à git. Gitnetix surveille les fichiers de chaque copie de travail et se rafraîchit à l’enregistrement, au lieu de vérifier toutes les 4 secondes. Il ne récupère origin que si ses branches ou ses tags ont bougé, avec un ls-remote toutes les 5 secondes pendant que la fenêtre est visible. Toutes les références se lisent en un seul appel git, parce que chaque processus git coûte environ 40 ms sur Windows (0.17.4).
  • Moins de travail pour l’interface. Les animations sans fin tournent sur une seule horloge à 12 images par seconde et s’arrêtent après 30 secondes sans activité (0.13.1 et 0.17.1). Les fenêtres de dialogue n’ont plus d’ombre floue (0.17.3).
  • Des contrôles de sécurité. La version 0.19.6 n’accepte un retour OAuth que s’il porte l’état de la connexion en cours, refuse un jeton enregistré quand le serveur change, retire l’utilisateur et le mot de passe des URL dans les journaux, vérifie le jeton avant de lire le corps d’une requête RPC, et ignore les noms de références qui commencent par un tiret, pour qu’aucune commande git ne les lise comme des options.

Comment les nouvelles captures ont été faites

Les nouvelles captures montrent la vraie interface de la version 0.20.5, ouverte dans un navigateur et reliée à un serveur Gitnetix sans fenêtre. Ce serveur tourne sur des dépôts git créés pour l’occasion avec les personnes et les branches de la démo du site : Grace Hopper, Ana Moreau, Jules Laurent, Riya Kapoor et Tom Becker, les versions 0.4.0 à 0.5.2 livrées et la 0.6.0 en cours. L’arbre, l’historique, le blame et les statistiques des commits viennent de ces dépôts. Les pull requests, le tableau Jira, les notes écrites par l’IA, la session d’agent et les modèles des CLI sont des réponses inventées, glissées entre l’interface et le serveur.

La suite

La liste des prochaines choses dans le dépôt commence par une refonte de Worktrees et agents, une fonction Annuler, et un tableau de bord qui réunit les pull requests et les statistiques de tous les dépôts.