release/0.22.1

wxt-dev/wxtrelease/0.22.1Aug 24, 2026by krlvi

AI Summary

Adds conflict resolution commands to the CLI, improves TUI performance, and adds 'Create PR' and 'Land' options to the branch context menu.

Key Highlights

  • Conflict resolution CLI commands
  • TUI performance improvements
  • Context menu actions

New Features

  • `but resolve conflicts` and `but resolve apply`
  • TUI diff rendering performance
  • Context menu 'Create PR' and 'Land'

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