gwm-cli 1.1.1

git worktree manager — TUI + CLI, native libgit2, per-repo bootstrap
Documentation
---
title: Roadmap
description: Ce qui est livré — la surface stable v1.0.0 (contrats machine gelés au-dessus du train v0.10.0 éditabilité + enrichissement TUI, overlays PTY, mode workspace, presets, API JSON/daemon, review/statusline, fleet chores et le registre de confiance TOFU) — et le lien vers le tracker d'issues.
---

# Roadmap

La roadmap complète (avec les catégories groupées et les liens d'issues par item) vit dans [`ROADMAP.md`](https://github.com/kbrdn1/gwm-cli/blob/main/ROADMAP.md) à la racine du repo. Le tracker d'issues est la source de vérité pour les détails de scope, les critères d'acceptation et les alternatives considérées.

## état courant — stable v1.0.0

La ligne **stable** courante est **v1.0.0** (`Cargo.toml` `version = "1.0.0"`, taguée le 2026-06-26) — le jalon SemVer. La surface est complète et les **contrats lisibles par machine sont désormais gelés** : les sous-commandes / flags / codes de sortie de la CLI, les schémas `--format=json`, le protocole JSON-RPC du daemon et l'ensemble des sections `.gwm.toml` ne casseront pas sans un bump majeur (voir [Stabilité & compatibilité](/fr/development/stability)).

1.0.0 promeut l'intégralité du **train v0.10.0** — les pre-releases `rc.1` … `rc.4`, découpées par thème dans les deux sections `v0.10.0 — …` plus bas — et ajoute le travail du **jalon 1.0** décrit dans la section suivante. Les cycles v0.9.0 et v0.8.0 précédents les suivent pour référence. Le MSRV du projet est **1.86** (relevé par les dépendances `portable-pty` / `tui-term` de l'overlay PTY ; les bumps de MSRV suivent une version mineure selon la [politique de stabilité](/fr/development/stability)).

## v1.0.0 — le jalon 1.0

Le delta stable post-`rc.4` complète le jalon 1.0 : contrats machine gelés et versionnés, plus les fonctionnalités additives que ce gel anticipait. Notes consolidées : [`changelogs/1.0.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.0.0.md). Ajouts clés :

- **Contrats machine gelés et versionnés** ([#317](https://github.com/kbrdn1/gwm-cli/issues/317)) — `tests/contract_tests.rs` fige `SCHEMA_VERSION = 1`, le `schema_version` du daemon et les quatre surfaces machine (`--format=json` sur `list` / `doctor` / `path`, plus `status --json`) contre des baselines ; les tiers par champ vivent dans [`docs/schema/README.md`](https://github.com/kbrdn1/gwm-cli/blob/main/docs/schema/README.md).
- **Politique de stabilité & compatibilité publiée** ([#318](https://github.com/kbrdn1/gwm-cli/issues/318)) — ce qui est couvert par SemVer versus ce qui est libre de changer en mineur / patch, EN + FR ([Stabilité & compatibilité](/fr/development/stability)).
- **Surface `exec` / `clean` gelée** ([#319](https://github.com/kbrdn1/gwm-cli/issues/319)) — la surface de flags de `gwm exec` / `gwm clean` est verrouillée pour la ligne 1.0 (toutes les extensions non gelées différées en additif), épinglée par un canari `contract_tests`.
- **Profils `[exec]` / `[clean]` nommés + `--jobs` borné** ([#324](https://github.com/kbrdn1/gwm-cli/issues/324)) — profils de commande / reclaim réutilisables sélectionnés par `--profile`, plus un parallélisme borné opt-in (`--jobs`) pour le fan-out.
- **Fan-out `--workspace` pour `gwm exec` / `gwm clean`** ([#326](https://github.com/kbrdn1/gwm-cli/issues/326)) — exécute les fleet chores sur chaque repo un niveau sous une racine de workspace, pas seulement les worktrees du repo courant.
- **Overlays TUI exec / clean** ([#325](https://github.com/kbrdn1/gwm-cli/issues/325)) — `x` lance un profil `[exec]` et `X` un profil `[clean]` depuis la TUI, avec un overlay de sortie en direct.
- **Polish de l'overlay d'aide** ([#334](https://github.com/kbrdn1/gwm-cli/issues/334)) — l'overlay d'aide `?` documente désormais chaque action (épinglé par un test de complétude), plus divers raffinements d'overlays.

### cycle TUI précédent — v0.9.0

La ligne v0.9.0 s'est appuyée sur le cycle de configurabilité v0.8.0 et a ajouté le train TUI :

- **Couverture complète des rôles de thème** ([#170](https://github.com/kbrdn1/gwm-cli/issues/170) / [#210](https://github.com/kbrdn1/gwm-cli/issues/210) / [#211](https://github.com/kbrdn1/gwm-cli/issues/211) / [#214](https://github.com/kbrdn1/gwm-cli/issues/214)) — le `[theme]` résolu est propagé à tous les sites de rendu TUI, avec des rôles dédiés `name`, `path`, `staged`, `modified` et `untracked`. Les valeurs par défaut sont conservées et verrouillées par `tests/tui_theme_audit_tests.rs`.
- **Migration source vers `git2` 0.21** ([#169](https://github.com/kbrdn1/gwm-cli/issues/169)) — le changement cassant d'API d'accesseurs, issu du bump différé en v0.8.0, est maintenant absorbé dans le code source et l'ancien arbre transitif `url` disparaît.
- **Polish de la statusbar, du layout et des modales TUI** ([#217](https://github.com/kbrdn1/gwm-cli/issues/217) / [#220](https://github.com/kbrdn1/gwm-cli/issues/220) / [#222](https://github.com/kbrdn1/gwm-cli/issues/222) / [#224](https://github.com/kbrdn1/gwm-cli/issues/224)) — statusbar contextuelle, spinner animé pendant le fetch GitHub, touches directes de focus de pane (`1` / `2`), sidebar empilée par défaut, overlays plus larges et modales create/link/delete/Issue-PR affinées.
- **Spine de tâches async** ([#231](https://github.com/kbrdn1/gwm-cli/issues/231) / [#255](https://github.com/kbrdn1/gwm-cli/issues/255) / [#258](https://github.com/kbrdn1/gwm-cli/issues/258) / [#256](https://github.com/kbrdn1/gwm-cli/issues/256)) — refresh des worktrees, fetch GitHub, `sync` (`S`) et bootstrap (`b`) tournent maintenant hors thread avec coalescing, abandon des résultats tardifs et progression dans la statusbar au lieu de figer la boucle d'événements.
- **Famille de touches de pane `1` / `2` / `3` / `4`** ([#226](https://github.com/kbrdn1/gwm-cli/issues/226) / [#232](https://github.com/kbrdn1/gwm-cli/issues/232)) — focus direct Worktrees / Status, overlay Command Logs et panneau Configuration affichant la config résolue avec attribution de source repo / user / default.
- **Touche docs (`.`)** ([#233](https://github.com/kbrdn1/gwm-cli/issues/233)) — ouverture de la documentation depuis la TUI ; rebindable via `open_docs`.

Les notes de release complètes de la v0.9.0 vivent dans [`changelogs/0.9.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/0.9.0.md). La MSRV du projet est **1.86** — relevée dans la ligne v0.10.0 par les dépendances `portable-pty` / `tui-term` de l'overlay PTY (`tui-term` déclare `rust-version = "1.86.0"`).

## v0.10.0 — Éditabilité des Settings + enrichissement TUI

Le premier thème de v0.10.0 (initialement coupé en `v0.10.0-rc.1`, 2026-06-10) est l'**éditabilité des Settings + enrichissement TUI**. Notes RC : [`changelogs/pre-releases/0.10.0-rc.1.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/pre-releases/0.10.0-rc.1.md). Ajouts clés :

- **Panneau Settings éditable** ([#279](https://github.com/kbrdn1/gwm-cli/issues/279)) — onglets de catégories (Theme / Worktree / TUI / All), sélecteur de couche projet ↔ global (`L`), persistance en temps réel dans le TOML avec application à la volée ; scrollbar herdr-style sur toutes les modales défilables.
- **Compteurs colorés Working Tree** ([#287](https://github.com/kbrdn1/gwm-cli/issues/287)) — compteurs nerdfont créés / modifiés / supprimés dans le footer + recoloriage des lignes correspondantes ; ligne `Diff +ins -del` vs base dans le pane Status (sémantique three-dot).
- **Enrichissement Issue/PR** ([#283](https://github.com/kbrdn1/gwm-cli/issues/283) / [#285](https://github.com/kbrdn1/gwm-cli/issues/285)) — pastilles `●/●` dans la table des worktrees, badges nerdfont de chips d'état, état GitHub mis en cache qui survit aux redémarrages, refresh initial au démarrage, auto-refresh périodique via `[tui].auto_refresh_secs`.
- **Loaders async** ([#257](https://github.com/kbrdn1/gwm-cli/issues/257) / [#276](https://github.com/kbrdn1/gwm-cli/issues/276) / [#267](https://github.com/kbrdn1/gwm-cli/issues/267)) — `LoaderWidget` réutilisable, create-worktree et quit-wait asynchrones sur la spine (delete, create et quit ne bloquent plus la boucle de rendu).

## v0.10.0 — overlays, workspace, API JSON et la moitié entrante GitHub

Le second thème de v0.10.0 (les trains post-rc.1, `rc.2` / `rc.3`) est le plus gros lot de fonctionnalités : overlays embarqués, mode workspace multi-repos, l'API JSON + daemon et ses premiers consommateurs, presets de configuration, fleet chores et le registre de confiance TOFU. Les deltas par RC vivent sous [`changelogs/pre-releases/`](https://github.com/kbrdn1/gwm-cli/tree/main/changelogs/pre-releases). Ajouts clés :

- **Overlays PTY embarqués** ([#35](https://github.com/kbrdn1/gwm-cli/issues/35)) — `l` / `L` ouvrent lazygit, `r` / `R` ouvrent l'outil de review configuré et `o` / `O` ouvrent une session `$SHELL` native à l'intérieur de la TUI (sans bascule d'écran alterné ; `Esc` ferme), propulsés par `portable-pty` + `tui-term`. C'est ce qui a relevé la MSRV du projet à **1.86**.
- **Refonte du keymap TUI** ([#290](https://github.com/kbrdn1/gwm-cli/issues/290)) — bindings unifiés de la vue liste (`p` / `P` pull / push, `c` edit-worktree, `e` exit-to-worktree, `y` / `w` yank, `t` pane multiplexeur, `h` / `H` macros) plus les `[tui.macro1]` / `[tui.macro2]` définis par l'utilisateur. Les slugs pré-#290 chargent encore via des alias de rétrocompatibilité.
- **Touches de modales contextuelles rebindables** ([#219](https://github.com/kbrdn1/gwm-cli/issues/219) / [#294](https://github.com/kbrdn1/gwm-cli/issues/294)) — chaque verbe de modale est remappable sous des tables imbriquées `[tui.keys.modal.<context>]`, et le panneau Settings gagne un onglet **Keys** pour éditer chaque binding en direct (capture de touche + write-back validé).
- **Mode workspace multi-repos** ([#36](https://github.com/kbrdn1/gwm-cli/issues/36)) — `gwm --workspace ~/Projects` (et l'auto-détection de `gwm` seul) ouvre la TUI sur chaque dépôt git situé un niveau sous une racine, avec une colonne REPO ; `gwm list --workspace` affiche la table fusionnée ; `gwm create --repo <name>` choisit la cible.
- **Presets de configuration** ([#37](https://github.com/kbrdn1/gwm-cli/issues/37)) — `gwm init --preset <name>` amorce un `.gwm.toml` opinionné pour `laravel` / `node` / `nuxt` / `rust` / `go` / `python-uv` / `generic` ; `--list-presets` les énumère, `--show` imprime le TOML résolu sans écrire.
- **API JSON + daemon** ([#38](https://github.com/kbrdn1/gwm-cli/issues/38)) — `--format=json` sur `gwm list` / `doctor` / `path` (schémas stables sous `docs/schema/`), et `gwm daemon`, un serveur JSON-RPC 2.0 sur une socket unix avec les méthodes `list` / `doctor` / `path` plus un flux de notifications `subscribe`, pour l'intégration éditeur / statusbar.
- **Sidebar Status** ([#299](https://github.com/kbrdn1/gwm-cli/issues/299) / [#300](https://github.com/kbrdn1/gwm-cli/issues/300)) — la section Issue/PR fait remonter l'état CI global de la PR liée (passing / failing / running, dérivé du rollup déjà récupéré), et le pane Working Tree rend `git status` en arbre de fichiers nerd font coloré par git.
- **Entrant GitHub — `gwm review <PR#>`** ([#308](https://github.com/kbrdn1/gwm-cli/issues/308)) — matérialise une PR GitHub existante (cross-fork aware) dans un worktree isolé en récupérant `refs/pull/<N>/head` et en créant une branche `review/pr-<N>-…`, pour que tu puisses checkout la PR d'un collègue afin de la review / tester / corriger. Safe-by-default : les hooks de bootstrap et de cycle de vie sont **désactivés** sauf si tu passes `--bootstrap` (le code de la PR est une entrée non fiable) ; `--name` surcharge le nom de branche local. Ceci ferme la moitié entrante de la boucle worktree⇄GitHub et transforme l'indicateur CI (#299) en workflow de review complet.
- **Premier consommateur du daemon — `gwm statusline`** ([#309](https://github.com/kbrdn1/gwm-cli/issues/309)) — un résumé de worktree sur une ligne, sans dépendance, pour les prompts shell (tmux / starship / zsh), le premier vrai client de `gwm daemon` (#38). Imprime une fois par défaut ; `--watch` chevauche le flux de notifications `subscribe` et réimprime à chaque changement ; `--socket` surcharge le chemin de la socket. Dégrade vers une ligne vide quand aucun daemon ne tourne.
- **Fleet chores sur les worktrees** ([#313](https://github.com/kbrdn1/gwm-cli/issues/313)) — `gwm exec [<slug>...] -- <cmd>` exécute une commande dans chaque worktree séquentiellement (chaque worktree non-main par défaut, ou les slugs listés avant `--` ; tout ce qui suit `--` est transmis verbatim), imprime un rollup `✓ / ✗` par worktree et sort en non-zéro si un échec survient. `gwm clean [<slug>...] [--yes]` rapporte — et avec `--yes` récupère — les artefacts de build lourds (`target/`, `node_modules/`, `dist/`, `build/`) ; `--yes` ne supprime que les répertoires que git traite comme ignorés, donc un `dist/` ou `build/` suivi est sauté.
- **Registre de confiance TOFU sur `.gwm.toml`** ([#95](https://github.com/kbrdn1/gwm-cli/issues/95)) — le premier `gwm create` / `gwm bootstrap` contre un repo imprime la surface de bootstrap et demande confirmation avant de l'exécuter ; une approbation est enregistrée dans `$XDG_CONFIG_HOME/gwm/trust.toml`, indexée sur `(URL d'origine, sha256 du .gwm.toml)`, et tout changement d'octet redemande confirmation. Pour les environnements non interactifs, le flag global `--allow-bootstrap` (ou `GWM_ALLOW_BOOTSTRAP=1`) contourne la confirmation et `--deny-bootstrap` refuse le bootstrap d'emblée. Inspecte et gère le registre avec `gwm trust list` / `gwm trust revoke <origin>` / `gwm trust show`.

## cycle stable précédent — v0.8.0

Pour référence, **v0.8.0** a promu le grand cycle configurabilité et personnalisation :

- **Durcissement de release, CI Windows, alias CLI et tooling Gitmoji** (`v0.8.0-rc.1`, [#146](https://github.com/kbrdn1/gwm-cli/issues/146) / [#147](https://github.com/kbrdn1/gwm-cli/issues/147) / [#112](https://github.com/kbrdn1/gwm-cli/issues/112) / [#85](https://github.com/kbrdn1/gwm-cli/issues/85) / [#86](https://github.com/kbrdn1/gwm-cli/issues/86)) — publication de release fiable, guard de doublons `[Unreleased]`, `windows-latest` dans la matrice de test, `[aliases]`, `gwm commit-prefix`, `gwm types --gitmoji` et hook `commit-msg` opt-in.
- **Sécurité au quotidien** (`v0.8.0-rc.2`, [#29](https://github.com/kbrdn1/gwm-cli/issues/29) / [#31](https://github.com/kbrdn1/gwm-cli/issues/31)) — `--dry-run` sur `gwm remove` / `gwm prune`, plus `gwm undo` / `gwm history` adossés à `$XDG_DATA_HOME/gwm/history.toml`.
- **Config CLI, hooks de cycle de vie, templates GitHub et personnalisation TUI** (`v0.8.0-rc.3`, [#88](https://github.com/kbrdn1/gwm-cli/issues/88) / [#89](https://github.com/kbrdn1/gwm-cli/issues/89) / [#83](https://github.com/kbrdn1/gwm-cli/issues/83) / [#84](https://github.com/kbrdn1/gwm-cli/issues/84) / [#87](https://github.com/kbrdn1/gwm-cli/issues/87) / [#32](https://github.com/kbrdn1/gwm-cli/issues/32) / [#33](https://github.com/kbrdn1/gwm-cli/issues/33) / [#34](https://github.com/kbrdn1/gwm-cli/issues/34)) — `gwm config`, `[hooks.*]`, `gwm new`, `gwm pr`, `[tui.keys]` remappable, palette de commandes `:`, presets `[theme]` par rôles et mode stashes en sidebar.
- **Quick wins** (`v0.8.0-rc.4`, [#24](https://github.com/kbrdn1/gwm-cli/issues/24) / [#27](https://github.com/kbrdn1/gwm-cli/issues/27)) — `gwm sync [<pattern>] [--merge]` et support `cargo-binstall`.
- **Config globale et polish du chrome** (`v0.8.0-rc.5`, [#190](https://github.com/kbrdn1/gwm-cli/issues/190) / [#188](https://github.com/kbrdn1/gwm-cli/issues/188) / [#185](https://github.com/kbrdn1/gwm-cli/issues/185) / [#187](https://github.com/kbrdn1/gwm-cli/issues/187) / [#180](https://github.com/kbrdn1/gwm-cli/issues/180) / [#179](https://github.com/kbrdn1/gwm-cli/issues/179) / [#181](https://github.com/kbrdn1/gwm-cli/issues/181) / [#175](https://github.com/kbrdn1/gwm-cli/issues/175)) — config utilisateur `~/.config/gwm/config.toml`, sidebar responsive, `claude-dark`, polish des modales, statusline sur une ligne, colorisation working-tree, auto-détection de PR éphémère et placeholders `{repo_path}` / `{repo_parent}`.

Les notes complètes de la v0.8.0 vivent dans [`changelogs/0.8.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/0.8.0.md).

## la suite

**1.0.0 est cut** (2026-06-26). Le train v0.10.0 a bouclé les gros items de la roadmap — l'overlay PTY (#35), le mode workspace multi-repos (#36), les presets de configuration (#37), l'API JSON-RPC + daemon (#38), la moitié entrante GitHub (`gwm review`, #308), le premier consommateur du daemon (`gwm statusline`, #309), les fleet chores (`gwm exec` / `gwm clean`, #313) et le registre de confiance TOFU (#95) — et le travail du jalon 1.0 (contrats gelés #317, politique de stabilité #318, le gel de la surface `exec` / `clean` #319 et ses suites additives #324 / #325 / #326, le polish de l'overlay d'aide #334) a promu toute la surface vers la ligne stable.

Entretien :

- [#304](https://github.com/kbrdn1/gwm-cli/issues/304) — suivi workspace (items de review nuancés restés ouverts après l'atterrissage de la PR multi-repos #303).
- [#206](https://github.com/kbrdn1/gwm-cli/issues/206) — captures d'écran de la doc (remplacer les placeholders provisoires par de vraies captures de la TUI).

Pour démarrer un nouveau travail, partez du tracker d'issues :

- [Issues ouvertes — `enhancement`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3Aenhancement)
- [Issues ouvertes — `good first issue`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
- [Issues ouvertes — `roadmap`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3Aroadmap)

## comment contribuer

1. Choisissez une issue ou ouvrez-en une nouvelle avec `--label enhancement` / `--label bug` décrivant le scope.
2. `gwm create <type> <issue> <slug>` pour démarrer un worktree isolé (l'issue s'auto-link — voir [linking GitHub](/fr/integrations/github-linking#détection-automatique)).
3. Suivez les conventions de [`CONTRIBUTING.md`](https://github.com/kbrdn1/gwm-cli/blob/main/CONTRIBUTING.md) — voir [Contribuer](/fr/development/contributing) pour la version site-de-docs.
4. Ouvrez une PR ciblant `dev`. Les releases stables sont publiées via une PR de merge `dev → main` suivant la convention `🔀 chore(release): merge dev → main for vX.Y.Z`.