release/0.18.4
gitbutlerapp/gitbutlerrelease/0.18.4Jan 20, 2026by krlvi
AI Summary
A major CLI overhaul featuring new commands like 'but diff' and 'but show', improved status output with upstream data, and numerous UI/fix improvements including drag-and-drop enhancements and performance tweaks.
Key Highlights
- New 'but diff' and 'but show' commands
- Renamed commands: 'but review' -> 'but pr'
- Async fetching from remotes and improved progress output
- Improved diff rendering performance
Breaking Changes
- Command 'but log' has been removed
- Command 'but snapshot' moved to 'but oplog snapshot'
- Command 'but describe' renamed to 'but reword'
- Multiple command aliases updated
New Features
- Diff preview command for files and branches
- Show command for commit and branch details
- Alias command for custom aliases
- Resolve and discard commands for conflicts
- Async remote fetching with progress bars
Full Release Notes
## Changes - Drag-and-drop operations now indicate what the operation would be on hover while dragging - Adds drag and drop support for hunks to create a new branch on drop - Adds an option for configuring allowed image sources under the CSP config (applicable for self-hosted forges) - Ctrl + a now selects all files in lists (similar to Cmd + a on Mac) - Amending commits no longer resets author dates (commit dates are still updated, same as git) - Improved Gerrit support with including a fallback URL generation the pushing a commit is a noop - Renaming a branch to the same name is now a noop instead of an error - Adds a new setting under "Appearance" for displaying file names first in the path - Improved diff rendering performance - Linux: added docs for Linux specific workarounds and fixes in https://github.com/gitbutlerapp/gitbutler/blob/master/LINUX.md ## Fixes - Fixes a bug causing several operations to error out with "Stack is uninitialised" - Fixes a Windows specific issue with poor performance with file watching under WSL - Fixes a high CPU usage under Linux - Fixes a bug preventing the creation of a branch underneath an existing stack - Fixes an issue that was preventing the discarding of binary files - Fixes an issue with Cursor hooks under Windows - Fixes a GitLab specific issue where the rebase and squash method of merging did not work from the app - Fixes a Claude Code UI bug where WebFetch permissions are stored in a wrong format ## CLI specific notes ### Changed - Adds async fetching from remotes as well as forge info (e.g. PRs, CI) - Invoking `but` without arguments is now defaulting to `but status` (configurable with `but alias`) - Slow operations like pushing and fetching now have progress output - Improved `but help` output - `but status` no longer invokes a pager - `but status` now includes PR and CI information by default - `but status` now displays context-aware hints (disable by aliasing `but status --no-hint`) - `but status --upstream` now shows upstream commits as well as merge-ability status of branches - `but status` now indicates Git mode and `but switch-back` reverts the repository to GitButler managed branch (necessary until https://github.com/gitbutlerapp/gitbutler/issues/11866 is done) - Fixes an issue where `but status --files` was assigning duplicate short IDs - `but commit` now supports --file for providing commit message - `but absorb` now provides detailed output of where changes went and why - `but absorb` - fixed an issue where untracked files did not get absorbed correctly - `but rub` now supports short IDs from `but diff` that can be used for assigning, amending etc - `but push` - if no branch is specified, it now prompts the user - `but push --dry-run` provides a summary of what would be pushed ### Renamed / aliased commands - `but snapshot` was moved to `but oplog snapshot` - `but review` is now `but pr` - `but describe` is now `but reword` - `but base update` is now `but pull` - `but base check` is now `but pull --check` - `but fetch` is now an alias to `but pull --check` - `but uncommit <commit/file-in-commit>` is now an alias to the equivalent `but rub` - `but amend <file> <commit>` is now an alias to the equivalent `but rub` - `but stage <file/hunk> <branch/stack>` is now an alias to the equivalent `but rub` - `but unstage <file/hunk>` is now an alias to the equivalent `but rub` - `but squash` is now an alias to the equivalent `but rub` with an optional flag for picking a commit message ### New commands - `but diff` - a new command for previewing diffs in files changes as well as branches and commits - `but show` displays commit and branch details - `but alias` allows setting up custom aliases (e.g `but stfu` -> `but status --files --upstream`) - `but resolve` for resolving merge conflicts - `but discard` removes/drops uncommitted changes - `but update check` check for app updates - `but update suppress` for suppressing app update hints - `but pr new` now includes a commented section with a list of commits and modified files - `but pull` now has more detailed output and has support for the --json flag - `but reword` now has a `--format` option for fixing the 72 char wrapping of a commit ## New Contributors * @alerque made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/11555 * @Rettend made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/11622 * @Mrmaxmeier made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/11631 * @godnight10061 made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/11699 * @senekor made their first contribution in https://github.com/gitbutlerapp/gitbutler/pull/11804 **Full Changelog**: https://github.com/gitbutlerapp/gitbutler/compare/release/0.18.3...release/0.18.4 ## Downloads Download bins from https://gitbutler.com/