gwm-cli 1.6.0

git worktree manager — TUI + CLI, native libgit2, per-repo bootstrap
Documentation
---
title: Roadmap
description: Ce qui est livré, la ligne v1.6.0 (correctif de sécurité + souplesse de nommage) au-dessus du multi-forge v1.5.0, du help overlay v1.4.0 et des contrats v1.0.0 gelés, plus 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.6.0

La ligne **stable** courante est **v1.6.0** (`Cargo.toml` `version = "1.6.0"`, taguée le 2026-08-03). **Elle porte un correctif de sécurité et toutes les versions antérieures sont affectées** : voir [`changelogs/1.6.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.6.0.md) et la section v1.6.0 ci-dessous. Les **contrats lisibles par machine gelés en 1.0.0 sont inchangé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)). Le MSRV du projet est **1.95**.

Depuis le jalon 1.0.0 (tagué le 2026-06-26) : trois patchs 1.0.x ont durci la ligne stable, **v1.1.0** a livré la première paire issue d'un rapport externe ([#363](https://github.com/kbrdn1/gwm-cli/issues/363) : layout de sidebar persisté + fallback presse-papier OSC52 en SSH) avec **v1.1.1** corrigeant la résolution de la config globale sur macOS, **v1.2.0** a livré le train de distribution ([#383](https://github.com/kbrdn1/gwm-cli/issues/383) : Scoop, `.deb` / `.rpm`, AUR, aqua, automatisation winget), **v1.3.0** a rendu gwm conscient des agents, **v1.4.0** a complété le help overlay et le trio de polish TUI, **v1.5.0** a rendu gwm multi-forge, et **v1.6.0** corrige une injection de commande via le nom de branche dans les hooks de cycle de vie tout en livrant la ligne souplesse de nommage : la section ci-dessous. Les notes par version vivent sous [`changelogs/`](https://github.com/kbrdn1/gwm-cli/tree/main/changelogs).

## v1.6.0 : correctif de sécurité et souplesse de nommage

La ligne v1.6.0 ferme une injection de commande et lève l'obligation du triplet `<type> <issue> <desc>`. Notes consolidées : [`changelogs/1.6.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.6.0.md). Points clés :

- **Sécurité : un nom de branche pouvait injecter une commande dans un hook de cycle de vie** ([GHSA-fffq-vg6f-gxqm](https://github.com/kbrdn1/gwm-cli/security/advisories/GHSA-fffq-vg6f-gxqm), élevée, CWE-78 / CWE-88) : les placeholders du hook étaient substitués dans la chaîne `run` de l'étape puis passés à `sh -c`, et git autorise `;`, `|`, `&`, `$`, les backticks et les redirections dans un nom de ref. Une branche poussée par quelqu'un d'autre, une branche de PR de fork suffit, pouvait donc exécuter des commandes arbitraires sous l'identité de qui avait fait confiance aux hooks de son propre dépôt, sans aucun prompt de confiance sur le chemin : le gate demande si vous faites confiance aux hooks du dépôt, et n'a jamais couvert le nom de branche qui y entre. **Toutes les versions jusqu'à la 1.5.0 incluse sont affectées, et il n'y a pas de backport.** Les valeurs sont désormais échappées pour le shell à l'expansion ; les valeurs `env` restent non échappées puisqu'elles ne voient jamais de shell.
- **Noms de worktree libres** ([#416](https://github.com/kbrdn1/gwm-cli/issues/416)) : `gwm create --name spike-redis` nomme un worktree librement au lieu de composer le triplet `<type> <issue> <desc>`. Le nom devient la branche telle quelle, donc `branch_pattern` / `path_pattern` ne s'appliquent pas, et les fonctionnalités qui relisent un nom de branche (auto-liaison d'issue, gitmoji) restent inactives dessus ; `gwm link` reste disponible.
- **Les formulaires TUI suivent les patterns du dépôt** ([#418](https://github.com/kbrdn1/gwm-cli/issues/418)) : création et renommage présentent les champs que les patterns configurés demandent réellement, dans l'ordre où ces patterns les écrivent, plutôt que le triplet canonique. Un dépôt dont la convention est `{type}/{desc}` ne se voit plus imposer un champ Issue qu'il jetterait. Les deux formulaires basculent entre forme structurée et forme libre avec le même verbe, dans les deux sens.
- **Le contexte des hooks en variables d'environnement** : `GWM_BRANCH`, `GWM_PATH`, `GWM_TYPE`, `GWM_ISSUE`, `GWM_DESC`, `GWM_USER`, `GWM_OWNER`, `GWM_REPO` à côté de la syntaxe `{placeholder}`. Un hook qui lit `"$GWM_BRANCH"` n'a jamais à penser au quoting, car un shell ne re-parse pas les métacaractères qui sortent d'une variable.
- **Le MSRV déclaré est 1.95, et la CI le tient** ([#491](https://github.com/kbrdn1/gwm-cli/issues/491)) : `Cargo.toml` annonçait 1.86 pendant toute une ligne de release alors que le graphe verrouillé exigeait davantage, en silence, parce que le `libsqlite3-sys` embarqué par `rusqlite` ne déclare aucun plancher et qu'aucune lecture de manifeste ne le trouve. Un job installe désormais le plancher déclaré et résout **et** compile le lockfile committé contre lui, sur les trois runners.
- **Durcissements trouvés en vérifiant ce qui précède** : les valeurs de `.gwm.toml` n'atteignent plus le terminal avec leurs octets de contrôle intacts ([#473](https://github.com/kbrdn1/gwm-cli/issues/473)), l'expansion des placeholders est en une seule passe donc une expansion est une valeur et non du template ([#494](https://github.com/kbrdn1/gwm-cli/issues/494)), un `gwm create` en échec ne laisse plus derrière lui la branche qu'il a créée ([#487](https://github.com/kbrdn1/gwm-cli/issues/487)), et un nom libre est validé contre les règles de chemin Windows sur toutes les plateformes ([#475](https://github.com/kbrdn1/gwm-cli/issues/475)).

## v1.5.0 — multi-forge (GitLab)

La ligne v1.5.0 pose un trait `Forge` derrière la couche réseau et livre un second backend pour lui. Notes consolidées : [`changelogs/1.5.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.5.0.md). Ajouts clés :

- **Un trait `Forge` et un backend GitLab (`glab`)** ([#419](https://github.com/kbrdn1/gwm-cli/issues/419)) : les recherches d'issues et de pull/merge requests passent par une abstraction à deux implémentations, `gh` et `glab`. Les worktrees, le bootstrap, le nommage des branches et le stockage de liens `branch.<name>.gwm-*` sont inchangés et neutres vis-à-vis de la forge, donc rien dans un dépôt ne devient spécifique à une forge sur le disque. Page complète : [GitLab (multi-forge)](/fr/integrations/gitlab).
- **Sélection explicite de la forge** ([#419](https://github.com/kbrdn1/gwm-cli/issues/419)) : une nouvelle clé `forge = "github" | "gitlab"` dans `.gwm.toml`. Omise, la forge est inférée depuis l'hôte de l'`origin`, mais uniquement sur les domaines propres aux éditeurs (`github.com`, `ghe.com`, `gitlab.com`) : une instance auto-hébergée vit sur un domaine arbitraire, donc la clé explicite est la façon de nommer le backend, et elle l'emporte toujours sur l'inférence.
- **Autoriser un hôte auto-hébergé est une décision distincte** ([#419](https://github.com/kbrdn1/gwm-cli/issues/419)) : un hôte que gwm ne reconnaît pas n'est **pas** supposé être GitHub, parce que deviner enverrait un appel authentifié, et le jeton présent dans l'environnement, vers l'hôte que l'`origin` d'un dépôt cloné se trouve nommer. L'autorisation vient d'une nouvelle table `[forge_hosts]` lue dans **votre propre** config globale, ou de l'approbation du `.gwm.toml` du dépôt dans la barrière de confiance TOFU. Le nouveau `gwm trust add` approuve un dépôt sans rien exécuter, puisque le prompt existant ne se déclenche que s'il y a une surface de bootstrap à exécuter.
- **Les spécificités GitLab sont absorbées à la frontière de parsing** ([#419](https://github.com/kbrdn1/gwm-cli/issues/419)) : `iid` comme numéro visible par l'utilisateur, les chemins de sous-groupes imbriqués, l'infixe d'URL `/-/`, les dates d'échéance de jalon sans heure, les labels de projet séparés des labels de groupe hérités, et un mappage pipeline vers état CI où un statut non reconnu est rapporté comme `unknown` et n'agrège jamais vers une CI verte. `$GWM_GLAB` surcharge le binaire, en miroir de `$GWM_GH`.
- **La barrière de confiance est de nouveau clé sur le dépôt, pas sur son hôte** ([#463](https://github.com/kbrdn1/gwm-cli/issues/463)) : la nouvelle barrière de forge construisait sa moitié de la clé `(origin, sha256)` à partir du schéma et de l'hôte seuls, ce qui partageait une même approbation entre tous les dépôts de cet hôte dont le `.gwm.toml` avait la même empreinte. Les quatre points d'appel passent désormais par un helper unique.

## v1.4.0 — help overlay complet + polish TUI

La ligne v1.4.0 clôt le trio de polish TUI [#436](https://github.com/kbrdn1/gwm-cli/issues/436) / [#437](https://github.com/kbrdn1/gwm-cli/issues/437) / [#438](https://github.com/kbrdn1/gwm-cli/issues/438) et complète le help overlay `?`. Notes consolidées : [`changelogs/1.4.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.4.0.md). Ajouts clés :

- **Help overlay complet** ([#453](https://github.com/kbrdn1/gwm-cli/issues/453)) — l'overlay `?` documente chaque contexte de touches : une section par overlay modal, chaque verbe résolu en live contre `[tui.keys.modal.<contexte>]` pour que les rebinds transparaissent, avec un guard de complétude par section étendant celui de #334 à chaque verbe modal. Le which-key de la statusline a été ré-audité (`exec` / `agents` rejoignent le footer worktrees), et la boucle de review a durci un **contrat de saisie réservée** dans chaque sous-mode input : une touche que la saisie consomme légitimement ne peut pas être bindée sur un verbe modal (rejet au chargement de la config), et un Backspace modifié non bindé efface toujours.
- **Overlay de checks CI** ([#436](https://github.com/kbrdn1/gwm-cli/issues/436)) — `C` (ou `c` quand le pane Status a le focus) liste chaque check du `statusCheckRollup` de la PR liée : icône d'état par ligne, workflow propriétaire + durée du run dans une colonne de détail atténuée, sélection `j` / `k`, `Enter` ouvre l'URL de détail du check, `/` filtre, `f` re-fetch en place ; verbes remappables sous `[tui.keys.modal.ci_checks]`.
- **Scroll du Working Tree** ([#437](https://github.com/kbrdn1/gwm-cli/issues/437)) — avec le pane Status au focus, `J` / `K` (remappables `wt_scroll_down` / `wt_scroll_up`) font défiler l'arbre de fichiers indépendamment, borné au viewport réellement accordé ; l'offset se réinitialise à la navigation entre worktrees et au basculement commits ↔ stashes.
- **Hauteurs de sidebar responsives** ([#438](https://github.com/kbrdn1/gwm-cli/issues/438)) — les sections Agents / Working Tree / Recent Commits partagent la colonne via un solveur de layout pur : hauteurs naturelles tant que tout tient, planchers garantis sur les terminaux courts (7 lignes pour Working Tree, 5 pour Recent Commits), reste réparti proportionnellement, le pane Agents non défilable jamais tronqué, et une scrollbar sur un Working Tree qui déborde.
- **Entretien** — un logo projet (paire SVG dark / light en tête du README), `persist-credentials: false` sur chaque checkout de workflow en lecture seule ([#433](https://github.com/kbrdn1/gwm-cli/issues/433)), et le job `winget-publish` rouge à chaque release retiré au profit de la recette `komac` manuelle ([#448](https://github.com/kbrdn1/gwm-cli/issues/448)).

## v1.3.0 — sessions d'agents + le daemon Windows

La ligne v1.3.0 rend gwm conscient des sessions d'agents IA qui travaillent dans ses worktrees, et complète l'histoire multi-plateforme du daemon. Notes consolidées : [`changelogs/1.3.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/1.3.0.md). Ajouts clés :

- **Pane de sessions d'agents** ([#408](https://github.com/kbrdn1/gwm-cli/issues/408)) — gwm détecte les sessions de coding d'agents IA (Claude Code, Codex, opencode, Mistral Vibe) par worktree en lisant les artefacts de session sur disque de chaque outil (`std::fs` uniquement, pas de scan de processus, comportement identique sur Linux / macOS / Windows). Surfacé comme : une colonne **AGENT** dans la table des worktrees, une ligne `Agent:` de résumé plus un pane de sessions épinglées dans la sidebar, un overlay de détail interactif sur `a` (sélection / pin / unpin, remappable sous `[tui.keys.modal.detail]`), un champ `agents` additif de tier expérimental sur les lignes JSON / daemon (`SCHEMA_VERSION` reste 1), et un segment agent-actif dans `gwm statusline`.
- **`gwm agents` + épinglage manuel** ([#408](https://github.com/kbrdn1/gwm-cli/issues/408)) — la même détection en surface CLI : `gwm agents` liste les sessions par worktree (humain ou `--format=json`), la table `gwm list` gagne la colonne AGENT, et `gwm agents attach <worktree> <session-id>` / `detach` épinglent une session quand le répertoire enregistré ne suffit pas. Les sessions portent un nom lisible quand leurs artefacts en ont un.
- **Transport named pipe Windows pour le daemon** ([#439](https://github.com/kbrdn1/gwm-cli/issues/439)) — `gwm daemon` et `gwm statusline` fonctionnent désormais sous Windows : le daemon écoute un named pipe owner-only sous `\\.\pipe\` avec la même surface JSON-RPC, les mêmes gardes DoS et la même dégradation gracieuse que la socket unix, et le client statusline l'utilise. Les caveats Unix-only de la doc sont levés.
- **Vivacité au niveau processus pour les sessions Claude Code** ([#441](https://github.com/kbrdn1/gwm-cli/issues/441)) — sous Unix, une session Claude Code dont le PID enregistré a disparu retombe immédiatement en idle au lieu de profiter de la fenêtre d'activité de 5 minutes.
- **Durcissement + correctifs** ([#429](https://github.com/kbrdn1/gwm-cli/issues/429) / [#430](https://github.com/kbrdn1/gwm-cli/issues/430) / [#440](https://github.com/kbrdn1/gwm-cli/issues/440) / [#445](https://github.com/kbrdn1/gwm-cli/issues/445)) — les checkouts du workflow de release ne persistent un credential que s'ils poussent, le job de publication AUR qui échouait en silence est retiré, `gwm clean --yes` tolère les races ENOTEMPTY des watchers concurrents, et le prompt d'attache de l'overlay agents garde un cadre fixe pendant la saisie.

## 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 a été relevée à **1.86** 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"`) ; le plancher courant est indiqué en haut de cette page.

## 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

Les files actives, dans l'ordre où la [`ROADMAP.md`](https://github.com/kbrdn1/gwm-cli/blob/main/ROADMAP.md) racine les liste :

- **Souplesse de nommage** ([#415](https://github.com/kbrdn1/gwm-cli/issues/415) / [#416](https://github.com/kbrdn1/gwm-cli/issues/416) / [#417](https://github.com/kbrdn1/gwm-cli/issues/417) / [#418](https://github.com/kbrdn1/gwm-cli/issues/418)) — noms de worktree libres (`gwm create --name`), un parseur dérivé de `branch_pattern`, et un formulaire de création par tokens avec preview en direct.
- **Vue PR / Issue riche** ([#420](https://github.com/kbrdn1/gwm-cli/issues/420)) — métadonnées, checks, reviews et commentaires dans 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`.