v0.3.0
Validated via v0.3.0-rc.1, v0.3.0-rc.2, v0.3.0-rc.3 (pre-releases published on 2026-05-19).
- TUI fuzzy filter (
/) - press/on the worktree list to open an inline filter bar at the bottom of the table. As you type, the table narrows in real time vianucleo-matcher(same matcher as Helix / Zellij), ranking contiguous substring hits above spread-out subsequence hits.Enterconfirms (filter sticks, navigation returns to the table);Escclears the filter and restores the full list.j/k/gg/Gcontinue to work on the filtered subset. Table title showsworktrees (N/M)while a filter is active.Escon the plain list view clears any sticky filter before it considers quitting, so a stale filter can’t accidentally exit the TUI. Closes #21. gwm completions <shell>- prints a static completion script on stdout, generated from the live clap argument tree viaclap_complete. Supported shells:zsh,bash,fish,powershell,elvish. Closes #18.gwm list --format=names- prints one worktree name per line (no header, no marker, no STATUS column). Suitable for backing dynamic completion of the<pattern>arg ofpath/remove/bootstrap(see the README “shell completions” section for a zsh wiring example).gwm cd <pattern>- fuzzy-resolve a worktree and print its on-disk path. Same semantics asgwm path, exposed under an explicit name for the cd flow.gwm shell-init <bash|zsh|fish|powershell>- prints a shell wrapper defininggcd <pattern>(the function does the actualcd, since the binary can’t change the parent shell’s directory). One-liner install:eval "$(gwm shell-init zsh)"in your rc file →gcd authjumps to the matching worktree. The bash/zsh and PowerShell variantsunalias gcdfirst so the function takes effect even if the shell already had agcdalias (e.g. oh-my-zsh’sgcd=git checkout). Closes #19.gwm doctor- diagnose the gwm setup. Aggregates 7 cheap checks (.gwm.tomlparses, guard references resolve,whenpredicates supported, external binaries on PATH, no prunable worktrees, no orphan gwm branches, base directory writable) and reports each with✓ / ! / ✗. Exit code0(all green),1(any warning),2(any failure) - wirable into CI / pre-commit. Newsrc/doctor.rsmodule exposingDoctorReport/Check/Severity/DoctorCtxfor library users. Closes #20.
Changed
Section titled “Changed”gwm doctorno longer flags gwm-style branches as orphan when they’re already fully merged into one of the trunk branches (dev,main). CONTRIBUTING.md mandates preserving the source branch post-merge, so the previous behaviour produced N false-positives on every successful release. The Ok detail now reads e.g.7 merged gwm-style branch(es) preserved per CONTRIBUTING, no unmerged orphans. Genuine WIP branches (no worktree, no merge into a trunk) still surface as Warning. Closes #47.
- New advisory job
gwm doctorin.github/workflows/ci.yml- runscargo build --releasethen./target/release/gwm doctoragainst the repo on every push todevand on every PR targetingdev.continue-on-error: trueso it never blocks a merge, but a non-zero exit surfaces config / env / worktree-state regressions for human review. Closes #49.
CLAUDE.md(new, repo root) - house rules for AI-assisted contributions. Promotes TDD as the primordial contribution rule (red → green → refactor, mandatory failing test before production code).CONTRIBUTING.md-TDD expectationssection rewritten as🔴 TDD is mandatory — non-negotiable: explicit loop, narrow exceptions, reviewer enforcement viagit log --stat tests/.CODE_OF_CONDUCT.md- newEngineering conductsection anchoring the TDD rule as a contribution-conduct expectation (applies equally to human and AI-assisted PRs).CHANGELOG.mdtrimmed to the in-progress release only; past releases moved underchangelogs/.CLAUDE.md- two new house rules: pre-validate environment-dependent tests with a strippedPATHbefore push (one-liner included), and rungwm doctorlocally on PRs that touch.gwm.toml/ bootstrap / doctor. Codifies the recipe that would have spared the 3 CI round-trips on PR #43.
Dependencies
Section titled “Dependencies”clap_complete4.5(new).nucleo-matcher0.3(new) - fuzzy match engine for the TUI/filter.
Known issues
Section titled “Known issues”Tracked under #54 - post-0.3.0 cleanup:
is_writable_dirin the doctor uses a fixed write-probe filename (theoretical race with concurrent runs).extract_binaryin the doctor doesn’t parse shell-quoted strings - false-positive “not on PATH” if a[[bootstrap.command]].runuses quoted args.CheckStatusandSeverityare duplicate enums (cosmetic).- README sample doctor output is from before #47 - flips Warning to Ok with the new wording.
- README test count is stale (says “81”, actual ~110+).
None of these affect the documented contracts of the new subcommands or the 0/1/2 exit-code behaviour.