release/0.22.0
leaningtech/webvmrelease/0.22.0Jul 30, 2026by krlvi
AI Summary
This release introduces native GitHub Stacked PR Support and overhauls CLI commands (commit, squash, move) while removing staging commands, alongside significant TUI enhancements.
Key Highlights
- Native GitHub Stacked PR Support
- CLI overhaul: Removed 'rub', 'stage', and 'unstage' commands
- TUI enhancements: External program opening, Catppuccin syntax highlighting
- Cherry-picking creates conflicted commits instead of blocking
- History-editing commands now refuse to modify merged commits
Breaking Changes
- CLI commands 'rub', 'stage', and 'unstage' have been removed
- CLI no longer reads change assignments from desktop app
- Flag '--format json' replaced by '--json'
- History-editing commands now refuse to modify merged commits by default
New Features
- Native GitHub Stacked PR Support
- TUI external program opening support
- TUI '--remember-selection' flag
- TUI Catppuccin syntax highlighting
- Cherry-picking creates conflicted commits
Full Release Notes
## Changes Native GitHub Stacked PR Support is available in gitbutler 🥞🎉 - GitButler now automatically uses GitHub's native stacked pull requests for enrolled repositories, falling back to description footers otherwise - You can now choose per project whether GitButler adds stack metadata to pull and merge request descriptions - Cherry-picking now creates conflicted commits when a pick conflicts instead of blocking it ## CLI Breaking changes: This release overhauls the `commit`, `amend`, `squash`, `discard` and `move`. The commands `rub`, `stage` and `unstage` have been removed. For agentic use its important to update the skill (`but skill check --update`) - The CLI no longer reads change assignments from the desktop app. All worktree changes are treated as uncommitted; `but stage`, `but unstage`, and `but commit --only` have been removed - `but commit` now takes sources positionally and uses `-b/--branch` for the target branch and `--above` or `--below` for stacking - `but squash` still takes sources positionally but now uses `-t/--target` for the target. It can squash all types of sources into commits, branches, and the uncommitted area. - `but amend` and `but uncommit` work similarly to `but squash` - `but move` still takes sources positionally but now uses `-t/--target`, `--above`, or `--below` for the target. It can move commits, committed files, and branches. Use `--unstack` to unstack a branch - `but rub` has been replaced by `but squash` - `but amend` and `but squash` now default to uncommitted changes when you omit the source argument - Mutation commands now print concise results with change IDs by default - `--json` is now the standard machine-readable output flag, replacing `--format json` - History-editing commands now refuse to modify commits already merged upstream, with `--allow-merged` available for deliberate overrides - Errors now include recovery guidance for history edits, pull conflicts, cherry-picks, and pull or merge request actions, including newly conflicted commits and operations rejected by commit dependencies ## TUI - The TUI now has a dedicated squash mode that lets you select the source or target first and squash across multiple branches, replacing rub mode - The TUI can now open files and hunks in configured external programs, with multi-file selection, user-defined macOS apps, and per-extension defaults - The TUI can now discard multiple branches at once - The TUI now supports `--remember-selection`, restoring the previous selection when reopened - TUI diffs now use Catppuccin syntax highlighting - Fixes tab indentation in TUI diffs ## Fixes - Fixes web links for self-hosted forges that use a custom port - Fixes an issue where failed cherry-picks could fail silently - Fixes merge handling so adjacent edits to the same file are detected as conflicts, matching Git's behavior - Bitbucket: Fixes an issue where pull requests created through GitButler omitted default reviewers **Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.21.2...release/0.22.0 ## Downloads Download bins from https://gitbutler.com/