release/0.21.1

azophy/sshifurelease/0.21.1Jul 21, 2026by krlvi

AI Summary

Adds Bitbucket Cloud as a first-class forge and enhances the CLI/TUI with better project management, search capabilities, and the introduction of 'Change IDs' for stable commit tracking.

Key Highlights

  • Bitbucket Cloud as a first-class forge
  • Introduction of Change IDs to identify commits
  • Enhanced TUI details view with actionability
  • CLI Bitbucket Cloud support

New Features

  • Bitbucket Cloud integration
  • Change ID system for commit tracking
  • PR search by branch name or number
  • TUI action bar for marking, discarding, and moving changes

Full Release Notes

## Changes

- Adds Bitbucket Cloud as a first-class forge — create, update, merge, and track pull requests with CI status, right in the app
- The header project selector now groups projects by recency
- You can now find a pull request in the branches list by branch name or number
- Commit details now show the change ID next to the commit SHA
- C/C++ header files now show the correct language icon

## TUI

- The details view is now actionable — mark, discard, commit, and move changes right from it, including individual hunks and committed files
- You can now search within the help view
- Press `y` to copy a commit's change ID
- You can now manually reload from the details view
- Fixes an issue where commands run from command mode did not execute in the active project's directory

## CLI

- Adds Bitbucket Cloud support to `but` — create, update, and merge pull requests, plus CI check status
- `but status` and mutation commands (`commit`, `reword`, and more) now identify commits by their change ID — GitButler's stable ID that survives rebases — rather than the commit SHA
- `but` now auto-detects more AI coding agents (including Pi and Poolside) and tailors its output for them by default
- `but pull`, `but resolve`, and `but status` now walk you through resolving conflicts, listing each conflicted commit and how to fix it
- `but commit` now explains failures caused by conflicting commit dependencies, naming the branch that owns them
- Adds `but config push-remote [remote]` to view or set the fork remote your branches push to, independent of the target branch
- `but uncommit` can now uncommit files from multiple commits or branches in one operation
- `but absorb` now errors on an invalid source instead of silently absorbing all changes
- Fixes an issue where `but commit` in a linked Git worktree suggested GitButler setup instead of reporting that linked worktrees are unsupported
- New branches now appear at the top of the branch list instead of the bottom

## Fixes

- Fixes an issue where dismissing the update banner stopped it from reappearing on a manual update check
- Fixes an issue where conflicted (unmerged) files in the working directory could cause operations to fail
- Fixes an issue where unapplying a stack could show a spurious "branch not found" error and leave the branch showing in the workspace
- Fixes an issue where undoing a commit deletion could fail when an uncommitted change touched the same file
- Fixes an issue where a repeated branch name in a stack could show a phantom "(no commits)" branch head
- Fixes a Windows-specific issue with handling deep links

## New Contributors
* @arthurzam made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/14465
* @sidfishus made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/14633
* @reneleonhardt made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/14796

**Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.21.0...release/0.21.1

## Downloads

Download bins from https://gitbutler.com/