---
title: Roadmap
description: What's shipped — the v0.10.0 surface (the editability + TUI-enrichment cycle, PTY overlays, workspace mode, presets, JSON API/daemon, review/statusline, fleet chores, and the TOFU trust ledger) — and the link to the issue tracker.
---
# Roadmap
The full roadmap (with grouped categories and per-item issue links) lives in [`ROADMAP.md`](https://github.com/kbrdn1/gwm-cli/blob/main/ROADMAP.md) at the repo root. The issue tracker is the source of truth for scope details, acceptance criteria, and alternatives considered.
## current state — v0.10.0 stable
The current **stable** line is **v0.10.0** (`Cargo.toml` `version = "0.10.0"`). It promotes the editability + TUI-enrichment cycle that landed across the `v0.10.0-rc.1` … `rc.3` pre-release trains. The two `v0.10.0 — …` sections further down split the release into the themes those trains carried; the preceding v0.9.0 and v0.8.0 cycles follow them for reference.
### preceding TUI cycle — v0.9.0
The v0.9.0 line built on the v0.8.0 configurability cycle and added the TUI train:
- **Full theme-role coverage** ([#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)) — the resolved `[theme]` is threaded through every TUI render site, with dedicated `name`, `path`, `staged`, `modified`, and `untracked` roles. Defaults are preserved and pinned by `tests/tui_theme_audit_tests.rs`.
- **`git2` 0.21 source migration** ([#169](https://github.com/kbrdn1/gwm-cli/issues/169)) — the breaking accessor API change from the deferred v0.8.0 bump is now handled in source, pruning the old `url` transitive tree.
- **TUI statusbar, layout, and modal polish** ([#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)) — contextual statusbar, animated GitHub-fetch spinner, direct pane-focus keys (`1` / `2`), stacked-by-default sidebar, wider overlays, and refined create/link/delete/Issue-PR modals.
- **Async-task spine** ([#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)) — worktree refresh, GitHub fetch, `sync` (`S`), and bootstrap (`b`) now run off-thread with coalescing, late-result drop, and statusbar progress instead of freezing the event loop.
- **Pane-key family `1` / `2` / `3` / `4`** ([#226](https://github.com/kbrdn1/gwm-cli/issues/226) / [#232](https://github.com/kbrdn1/gwm-cli/issues/232)) — direct focus for Worktrees / Status, a Command Logs overlay, and a Configuration panel showing the resolved config with repo / user / default source attribution.
- **Docs key (`.`)** ([#233](https://github.com/kbrdn1/gwm-cli/issues/233)) — open the documentation from inside the TUI; rebindable as `open_docs`.
The full v0.9.0 release notes live at [`changelogs/0.9.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/0.9.0.md). The project MSRV is **1.86** — raised in the v0.10.0 line by the PTY overlay's `portable-pty` / `tui-term` dependencies (`tui-term` declares `rust-version = "1.86.0"`).
## v0.10.0 — Settings editability + TUI enrichment
The first theme of v0.10.0 (originally cut as `v0.10.0-rc.1`, 2026-06-10) is **Settings editability + TUI enrichment**. RC notes: [`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). Key additions:
- **Editable Settings panel** ([#279](https://github.com/kbrdn1/gwm-cli/issues/279)) — category tabs (Theme / Worktree / TUI / All), per-project ↔ global layer selector (`L`), live-persist into TOML with on-the-fly apply; herdr-style scrollbar on all scrollable modals.
- **Working Tree colour-coded counts** ([#287](https://github.com/kbrdn1/gwm-cli/issues/287)) — nerdfont created / modified / deleted footer counts + matching row recolouring; Status pane `Diff +ins -del` vs base (three-dot semantics).
- **Issue/PR enrichment** ([#283](https://github.com/kbrdn1/gwm-cli/issues/283) / [#285](https://github.com/kbrdn1/gwm-cli/issues/285)) — `●/●` pastilles in the worktree table, nerdfont state-chip badges, cached GitHub state that survives restarts, initial startup refresh, periodic `[tui].auto_refresh_secs` auto-refresh.
- **Async loaders** ([#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)) — reusable `LoaderWidget`, async create-worktree and quit-wait on the spine (delete, create, and quit no longer block the render loop).
## v0.10.0 — overlays, workspace, JSON API, and the GitHub inbound half
The second theme of v0.10.0 (the post-rc.1 trains, `rc.2` / `rc.3`) is the larger feature batch: embedded overlays, multi-repo workspace mode, the JSON API + daemon and its first consumers, config presets, fleet chores, and the TOFU trust ledger. Per-RC deltas live under [`changelogs/pre-releases/`](https://github.com/kbrdn1/gwm-cli/tree/main/changelogs/pre-releases). Key additions:
- **Embedded PTY overlays** ([#35](https://github.com/kbrdn1/gwm-cli/issues/35)) — `l` / `L` open lazygit, `r` / `R` open the configured review tool, and `o` / `O` open a native `$SHELL` session inside the TUI (no alternate-screen swap; `Esc` closes), powered by `portable-pty` + `tui-term`. This is what raised the project MSRV to **1.86**.
- **TUI keymap redesign** ([#290](https://github.com/kbrdn1/gwm-cli/issues/290)) — unified list-view bindings (`p` / `P` pull / push, `c` edit-worktree, `e` exit-to-worktree, `y` / `w` yank, `t` mux pane, `h` / `H` macros) plus user-defined `[tui.macro1]` / `[tui.macro2]`. Pre-#290 slugs still load via backward-compat aliases.
- **Rebindable contextual modal keys** ([#219](https://github.com/kbrdn1/gwm-cli/issues/219) / [#294](https://github.com/kbrdn1/gwm-cli/issues/294)) — every modal verb is remappable under nested `[tui.keys.modal.<context>]` tables, and the Settings panel gains a **Keys** tab to edit every binding live (keystroke capture + validated write-back).
- **Multi-repo workspace mode** ([#36](https://github.com/kbrdn1/gwm-cli/issues/36)) — `gwm --workspace ~/Projects` (and bare-`gwm` auto-detect) opens the TUI across every git repo one level below a root with a REPO column; `gwm list --workspace` prints the merged table; `gwm create --repo <name>` picks the target.
- **Config presets** ([#37](https://github.com/kbrdn1/gwm-cli/issues/37)) — `gwm init --preset <name>` seeds an opinionated `.gwm.toml` for `laravel` / `node` / `nuxt` / `rust` / `go` / `python-uv` / `generic`; `--list-presets` enumerates them, `--show` prints the resolved TOML without writing.
- **JSON API + daemon** ([#38](https://github.com/kbrdn1/gwm-cli/issues/38)) — `--format=json` on `gwm list` / `doctor` / `path` (stable schemas under `docs/schema/`), and `gwm daemon`, a JSON-RPC 2.0 server over a unix socket with `list` / `doctor` / `path` methods plus a `subscribe` push stream, for editor / statusbar integration.
- **Status sidebar** ([#299](https://github.com/kbrdn1/gwm-cli/issues/299) / [#300](https://github.com/kbrdn1/gwm-cli/issues/300)) — the Issue/PR section surfaces the linked PR's overall CI state (passing / failing / running, derived from the already-fetched rollup), and the Working Tree pane renders `git status` as a git-coloured nerd-font file-explorer tree.
- **Inbound GitHub — `gwm review <PR#>`** ([#308](https://github.com/kbrdn1/gwm-cli/issues/308)) — materialise an existing GitHub PR (cross-fork aware) into an isolated worktree by fetching `refs/pull/<N>/head` and creating a `review/pr-<N>-…` branch, so you can check out a teammate's PR to review / test / fix it. Safe-by-default: bootstrap and lifecycle hooks are **off** unless you pass `--bootstrap` (the PR's code is untrusted input); `--name` overrides the local branch name. This closes the inbound half of the worktree⇄GitHub loop and turns the CI indicator (#299) into a complete review workflow.
- **First daemon consumer — `gwm statusline`** ([#309](https://github.com/kbrdn1/gwm-cli/issues/309)) — a dependency-free one-line worktree summary for shell prompts (tmux / starship / zsh), the first real client of `gwm daemon` (#38). Prints once by default; `--watch` rides the `subscribe` push stream and reprints on every change; `--socket` overrides the socket path. Degrades to a blank line when no daemon is running.
- **Fleet chores across worktrees** ([#313](https://github.com/kbrdn1/gwm-cli/issues/313)) — `gwm exec [<slug>...] -- <cmd>` runs a command in each worktree sequentially (every non-main worktree by default, or the slugs listed before `--`; everything after `--` is forwarded verbatim), prints a per-worktree `✓ / ✗` rollup, and exits non-zero if any failed. `gwm clean [<slug>...] [--yes]` reports — and with `--yes` reclaims — heavy build artifacts (`target/`, `node_modules/`, `dist/`, `build/`); `--yes` only deletes directories git treats as ignored, so a tracked `dist/` or `build/` is skipped.
- **TOFU trust ledger on `.gwm.toml`** ([#95](https://github.com/kbrdn1/gwm-cli/issues/95)) — the first `gwm create` / `gwm bootstrap` against a repo prints the bootstrap surface and prompts before running it; an approval is recorded in `$XDG_CONFIG_HOME/gwm/trust.toml` keyed on `(origin URL, sha256 of .gwm.toml)`, and any byte change re-prompts. For non-interactive environments, the global `--allow-bootstrap` flag (or `GWM_ALLOW_BOOTSTRAP=1`) bypasses the prompt and `--deny-bootstrap` refuses bootstrap outright. Inspect and manage the ledger with `gwm trust list` / `gwm trust revoke <origin>` / `gwm trust show`.
## previous stable cycle — v0.8.0
For reference, **v0.8.0** promoted the large configurability and personalisation cycle:
- **Release hardening, Windows CI, CLI aliases, and Gitmoji tooling** (`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)) — reliable release publishing, `[Unreleased]` duplicate guard, `windows-latest` in the test matrix, `[aliases]`, `gwm commit-prefix`, `gwm types --gitmoji`, and an opt-in `commit-msg` hook.
- **Safety daily** (`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` on `gwm remove` / `gwm prune`, plus `gwm undo` / `gwm history` backed by `$XDG_DATA_HOME/gwm/history.toml`.
- **Config CLI, lifecycle hooks, GitHub templates, and TUI personalisation** (`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`, remappable `[tui.keys]`, the `:` command palette, role-based `[theme]` presets, and sidebar stashes mode.
- **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]` and `cargo-binstall` support.
- **Global config and chrome polish** (`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)) — user-level `~/.config/gwm/config.toml`, responsive sidebar, `claude-dark`, modal polish, single-line statusline, working-tree colourisation, ephemeral PR auto-detection, and `{repo_path}` / `{repo_parent}` placeholders.
The full v0.8.0 notes live at [`changelogs/0.8.0.md`](https://github.com/kbrdn1/gwm-cli/blob/main/changelogs/0.8.0.md).
## what's next
v0.10.0 closed the big-ticket roadmap items: the PTY overlay (#35), multi-repo workspace mode (#36), config presets (#37), the JSON-RPC API + daemon (#38), the GitHub inbound half (`gwm review`, #308), the first daemon consumer (`gwm statusline`, #309), fleet chores (`gwm exec` / `gwm clean`, #313), and the TOFU trust ledger (#95) all shipped in this line.
Housekeeping:
- [#304](https://github.com/kbrdn1/gwm-cli/issues/304) — workspace follow-up (nuanced review items left open after the multi-repo PR #303 landed).
- [#206](https://github.com/kbrdn1/gwm-cli/issues/206) — docs screenshots (replace the provisional placeholders with real TUI captures).
For fresh work, start from the issue tracker:
- [Open issues — `enhancement`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3Aenhancement)
- [Open issues — `good first issue`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
- [Open issues — `roadmap`](https://github.com/kbrdn1/gwm-cli/issues?q=is%3Aopen+label%3Aroadmap)
## how to contribute
1. Pick an issue or open a new one with `--label enhancement` / `--label bug` describing the scope.
2. `gwm create <type> <issue> <slug>` to spin up an isolated worktree (the issue auto-links itself — see [GitHub linking](/integrations/github-linking#auto-detection)).
3. Follow the conventions in [`CONTRIBUTING.md`](https://github.com/kbrdn1/gwm-cli/blob/main/CONTRIBUTING.md) — see [Contributing](/development/contributing) for the docs-site version.
4. Open a PR targeting `dev`. Stable releases ship via a `dev → main` merge PR following the convention `🔀 chore(release): merge dev → main for vX.Y.Z`.