release/0.20.4

mickael-kerjean/filestashrelease/0.20.4Jun 26, 2026by krlvi

AI Summary

This release introduces an interactive agent setup wizard, significantly improves the CLI and TUI workflows for managing stacked branches, and enhances diff view customization. It also removes legacy commands and adds various usability improvements.

Key Highlights

  • New `but agent setup` interactive wizard for tuning agent behavior
  • Added font size setting in diff views (Settings → Appearance)
  • CLI enhancements including `but amend --changes` and `but uncommit` diff output
  • TUI improvements allowing stack reordering and multi-item copying
  • Removed `but mark` and `but unmark` commands

Breaking Changes

  • Removed the `but mark` and `but unmark` commands

New Features

  • Interactive agent setup wizard
  • Font size setting in diff views
  • CLI enhancements (amend, uncommit, commit, status, completions)
  • TUI improvements (reorder stacks, apply branches, copy details)

Full Release Notes

## Agentic Use

There is now a new command `but agent setup` which makes the overall setup easier. It is an interactive wizard for tuning version control behavior (similar to https://docs.gitbutler.com/ai-agents/tuning-agent-behavior but easier to setup). Running this is a good idea for best performance.

- Multi-committing, amending and splitting of commits now complete quicker and use less tokens
- Improved PR stacking workflows

## Changes

- There is now a "Font size" setting for the diff views (Settings → Appearance) 

## CLI

- `but amend` now accepts `--changes` to amend specific changes into a commit
- You can now provide a message when creating an empty commit with `but commit`
- `but uncommit` now supports a diff output option to print the resulting changes
- `but status` now shows stacked branches that have been merged upstream
- Hunk IDs are now stable across commits and discards
- `but completions` now appears in the help output, making it discoverable when you grab the `but` binary without an installer
- `but` output now labels "unassigned changes" as "uncommitted"
- Fixes a bug where `but apply` could report success while leaving a branch unapplied when workspace metadata was stale
- Removed the `but mark` and `but unmark` commands
- Improved error messages when `stdin` isn't a terminal

## TUI

- You can now reorder stacks in the TUI
- You can now apply branches from the TUI
- You can now move multiple commits at once in the TUI
- You can now commit above or below the selected commit in the TUI
- You can now copy more things in the TUI — commit details, diff hunks, branch names and more — with `shift+y`
- Improved scroll keybindings: `j`/`k`/arrows move by line, `ctrl+d`/`ctrl+u` jump by 10 lines, and `shift+j`/`shift+k` jump by section
- Unapplying a branch and undoing no longer prompt for confirmation in the TUI, since both can be undone

## Fixes

- Fixes a bug where moving empty branches did not work correctly
- Fixes a bug where commit-message and branch-name generation failed for non-OpenAI providers (Anthropic, Ollama, and others)
- Fixes an issue where commit signing failed when `gpg.ssh.program` pointed at a path containing a tilde (`~`)
- Fixes an issue where being offline produced repeated error toasts from background pull-request polling
- Fixes an issue where updating the workspace was not handling squash-merge integrated branches properly

## New Contributors
* @ameyypawar made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/14245
* @tobeycodes made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/14348

**Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.20.3...release/0.20.4

## Downloads

Download bins from https://gitbutler.com/