release/0.22.1
elie222/inbox-zerorelease/0.22.1Aug 24, 2026by krlvi
AI Summary
Adds conflict resolution capabilities and improves CLI/TUI usability with new commands, aliases, and performance optimizations.
Key Highlights
- New CLI commands for inspecting and resolving conflicts without checking out
- Automatic detection of terminal light/dark theme
- Improved TUI performance and mode switching
New Features
- `but resolve conflicts` and `but resolve apply` commands
- Aliases `c`, `m`, and `s` for commit, move, and squash
- DeepSeek Harness detection as a coding agent
- Support for directory paths in `but squash` and `but discard`
Full Release Notes
## Changes - macOS: Holding `⌘` while selecting a project now shows that it will open in a new window - Adds "Create PR" and "Land" to the branch context menu, so both actions are available regardless of the "Land branches directly" setting - When updates from the target branch conflict with uncommitted work, GitButler now keeps both versions, shows the files as conflicted, and lets you mark them as resolved ## Fixes - Fixes unexpected vertical scrolling of the workspace while dragging branches between lanes - Fixes tracked files being deleted in some workspaces after landing a branch - Fixes failed GitHub operations showing a generic response-decoding error instead of GitHub's actual error message - Fixes rebase operations unexpectedly moving tags - Fixes conflicted commits losing their conflict state when reworded - Fixes stale uncommitted files being shown after commits made by the CLI or another process - Fixes clean commits being incorrectly treated as conflicted - Fixes commit and merge request links using the wrong URL for self-hosted forges reached over SSH on a non-standard port - Fixes workspace updates failing after a branch in a stack was squash-merged upstream - Fixes "Open in browser" requiring a second click from the branch menu - Fixes the diff view failing to highlight commits that uncommitted changes depend on - Fixes successful pushes to branches tracking a non-default remote being reported as failures - Fixes GitLab projects with many merge requests not showing all of them - Fixes some GitHub pull requests getting stuck at "mergeability is unknown", leaving the Merge action disabled - Fixes GitHub repositories with more than 100 open pull requests not showing all of them - Fixes a branch-not-found error in the branch view after the displayed branch was integrated, landed, or deleted - Fixes project-not-found errors that could appear after deleting a project or cancelling project setup ## CLI - Adds `but resolve conflicts` and `but resolve apply` for inspecting and resolving individual conflicts in conflicted commits without checking them out - `but commit` can now target any branch chosen from the picker, including branches lower in a stack - `but commit`, `but amend`, `but move`, and `but squash` now show example commands when arguments are invalid - `but move <branch> --branch <other-branch>` can now stack one branch onto another - `but` now detects the terminal's light or dark theme automatically; `BUT_THEME` still overrides it - Adds `c`, `m`, and `s` as default aliases for `but commit`, `but move`, and `but squash` - `but pick` now supports branch targeting with `--branch`, `--above`, and `--below` - `but squash` and `but discard` now accept directory paths to select the uncommitted changes within them - `but discard` with no target now discards all uncommitted changes - `but uncommit <branch>` now moves the branch's commits back to uncommitted changes and removes the branch - `but discard --json` and `but move --json` now include a `type` field on each result - The `but push` picker now shows one entry per stack and which ancestor branches will also be pushed - `but branch new` now supports `--above` and `--below` for positioning branches; `--anchor` and `-a` remain deprecated aliases for `--above` - `but land` now deletes the branch from its push remote after landing succeeds - `but branch --help` now points to `but reword` for renaming branches - Improved the guidance shown to coding agents when the GitButler skill is missing or a CLI update is available - DeepSeek Harness (`dsh`) is now detected as a coding agent, with automatic skill setup - `but pull` now keeps both versions when target-branch updates conflict with uncommitted work; resolve the files with `but resolve <path>...` - `but pr new` now reports the branch and remote that were actually pushed to - `but push --json` now includes the destination branch name in each `branchToRemote` entry - `but unapply` now explains how to create a branch when the commits being unapplied are not attached to one - `but push` now exits non-zero when one or more branches in a batch fail to push - `but reword` now preserves conflict state when rewording a conflicted commit - `but status`, `but pull`, and `but commit` no longer fail when a clean commit is incorrectly marked as conflicted - Fixes `but push` failing to detect conflicted commits in ancestor branches before pushing - Fixes `but land` and `but pull` deleting tracked files in some workspaces - Fixes `but status` failing with a "too many IDs" error in repositories with a very large number of untracked files - Fixes `but pull` failing when a branch in a stack was squash-merged upstream ## TUI - Improved diff rendering performance, especially for uncommitted files - You can now switch directly between commit, squash, and move modes in the TUI - `but tui <ID>` can now open directly on a branch, commit, file, or hunk; `--diff` opens the diff view immediately and replaces the deprecated `but diff --tui` - Improved the TUI graph preview when moving a branch out of a stack - You can now uncommit an entire branch in the TUI - You can now press `p` in the TUI to cherry-pick the selected commit - The TUI action bar now lists `commit` before `squash` when both are available - Fixes ANSI color codes appearing in TUI error messages - Fixes stale selection marks remaining after closing a commit's file list in the TUI - Fixes conflicted commits losing their conflict state when reworded in the TUI ## New Contributors * @C0rn3j made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/15404 **Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.22.0...release/0.22.1