v1.2.0
Five new ways to install gwm, and a sixth queued. This release is almost entirely about reach: Windows users get Scoop, Debian/Ubuntu and Fedora/RHEL/openSUSE get native packages, Arch gets an AUR package, and aqua users get it from the standard registry. winget publishing is wired up but the channel is not usable yet, because Microsoft has not merged the manifest; it is counted separately for that reason. None of it changes how gwm behaves - the binary is the same, there are just more ways to get it. Tracked under #383.
One theme ran through the whole batch and is worth recording: gwm shells out
to the git binary, beyond the vendored libgit2 it links. That is invisible
to every dependency scanner, because it is an exec, not a link. It surfaced
three separate times in this cycle - in the AUR depends, in the .deb/.rpm
metadata, and again in the Nix build sandbox - each time through a different
symptom. It is now declared everywhere it needs to be.
-
aqua install channel (#380) -
aqua g -i kbrdn1/gwm-cli. gwm is registered in the aqua standard registry (aquaproj/aqua-registry#57117), so no custom registry wiring is needed. aqua pulls the prebuilt binary for the platform from the matching GitHub Release and verifies itssha256against the published.sha256sidecar; Linux, macOS and Windows are covered on both Intel and ARM, with Windows-on-ARM falling back to the x64 build under emulation. Requires standard registryv4.539.0or newer, the release that first shipped it. -
Scoop install channel for Windows (#376) -
scoop bucket add gwm https://github.com/kbrdn1/scoop-gwm; scoop install gwm. A newscoop-bucket-updatejob inrelease.ymlrenderspackaging/scoop/gwm.json.templateand pushesbucket/gwm.jsonto thekbrdn1/scoop-gwmbucket on every stable release (mirroring the Homebrew tap; pre-releases filtered out).scoop update gwmpicks up each new version once the release job pushes the refreshed manifest. -
.debpackages for Debian / Ubuntu (#377) -x86_64andaarch64, built bycargo-deband attached to every stable release (sudo apt install ./gwm-cli_<ver>-1_amd64.deb). The package is namedgwm-clito avoid Debian’s unrelatedgwmwindow-manager package; the command staysgwm. -
.rpmpackages for Fedora / RHEL / openSUSE (#378) -x86_64andaarch64, built bycargo-generate-rpmand attached to every stable release (sudo dnf install ./gwm-cli-<ver>-1.x86_64.rpm). -
AUR package for Arch Linux (#379) -
yay -S gwm-cli-bin(orparu). A newaur-publishjob inrelease.ymlrenderspackaging/aur/PKGBUILD.templateand pushes thegwm-cli-binprebuilt-binary package to the AUR on every stable release, via the SHA-pinnedKSXGitHub/github-actions-deploy-auraction, which regenerates.SRCINFOand builds the package withmakepkgagainst the real binary. Installsgwmplus the license and bash/zsh/fish completions;dependsongit;provides/conflictsgwm-cliandgwm. Pre-releases filtered out. -
winget publishing automation (#381) - a new
winget-publishjob inrelease.ymlopens a manifest PR tomicrosoft/winget-pkgs(kbrdn1.gwm) for each stable release, building the manifest from the Windows.zipwith a pinned, checksum-verifiedkomac. It runs komac directly rather than through an action that would install tooling from mutable refs at runtime with the publishing token in scope, and the expected komac digest is pinned in this repository rather than fetched from the same release as the binary it verifies.winget install kbrdn1.gwmbecomes available once Microsoft merges the manifest; the job is advisory until then.
Changed
Section titled “Changed”-
README leads with the pitch instead of the spec sheet. The hero was one dense sentence of implementation detail; it now opens with what gwm does, a concrete
gwm createexample, and a scannable block of what it gives you over agit worktree addwrapper. The install-channel spread is stated up front, which is the point of this release. The feature list below is unchanged, and no new behaviour is claimed. -
Repository discovery metadata. The GitHub description was rewritten in plain terms, and the repository had no topics at all - it now carries the fourteen that describe it (
git-worktree,tui,ratatui,rust,developer-tools, and so on). Cosmetic to the binary, but it is how the project gets found at all. -
Docs tree description corrected. The README claimed
docs/was “structured for Nuxt Content and ready to drop into the future static site”. It now states the real page counts (39 English, 36 French), that the in-repo tree is the source of truth, and points at #423 for publishing.
-
.deb/.rpmpackages now depend ongit(#388) - gwm shells out to thegitbinary (sync, worktree rename, clean, TUI previews) beyond the vendored libgit2, so a minimal Debian/Fedora install without git would break those features.gitis now declared inDepends/Requires. The documented install commands moved fromdpkg -i/rpm -itoapt install ./…/dnf install ./…, since the low-level tools do not resolve dependencies and would now fail on a machine without git. -
The Nix flake reports the right version (#393) - it advertised
0.3.0-rc.3while the code was at1.1.1, sonix profile list,nix flake showand the store path all named a release eight versions old. The built binary was always correct (gwm --versionreported1.1.1), so this was mislabelling rather than a broken build, which is why it survived unnoticed. The root cause was a comment promising a lockstep bump that nothing enforced, so the version is now read out ofCargo.tomlat eval time rather than restated inflake.nix- the drift is impossible now, not merely fixed.
Dependencies
Section titled “Dependencies”-
Bumped
serde(and its stack),anyhowto 1.0.104,thiserrorto 2.0.19,regexto 1.13.1, andclapto 4.6.2 (#400, #402, #403, #404, #406). Patch-level updates with no behaviour change for gwm.The clap bump needed a companion fix (#405): 4.6.2 renders a lone subcommand alias as
[alias: cd]where 4.6.1 printed[aliases: cd], which broke two--helpassertions that matched the plural string exactly. They now match\[alias(es)?: …\], so the grammatical number can flip either way without breaking the suite again.
Two further channels are submitted and waiting on external review, and are deliberately not documented yet - a channel gets an install command in the README only once it actually works:
- winget (#381) - microsoft/winget-pkgs#403295, validation passed, awaiting a moderator.
- Nixpkgs (#382) - NixOS/nixpkgs#542900, lint, eval and build green across platforms.
main is now a protected branch
(#397): releases go through a
dev → main pull request rather than a local merge. This is the first release
cut on that rail.