# Changelog All notable changes to this project will be documented in this file. ## [0.41.0] - 2026-03-11 ### 🚀 Features - *(rebase)* Use new picker when selecting a rebase target - Convert branch operations to interactive picker - Use new interactive picker when merging (#496) - Interactive picker functionality and ui - Align menu key and label spacing (#476) ### 🐛 Bug Fixes - Keys double press on Windows (#385) (again) - Make `backtab` key bindable (shift-tab) ## [0.40.0] - 2025-12-15 ### 🚀 Features - Add customizable UI styles for menus and messages (#475) - Add fetch from upstream and push remote - Rename 'Toggle Section' to 'Fold/Unfold', make it context aware ### 🐛 Bug Fixes - Handle non-UTF8 bytes in git command output - Do not rely on srcdir being named exactly `gitu` to run tests - *(config)* `style.syntax_highlight.enabled`had no effect ## [0.39.0] - 2025-11-12 ### 🚀 Features - Gitu now boosts its own - more flexible layout module. - *(config)* Recognize "space" special character in key parser (#449) - Implement spinoff branch command (#445) ### 🐛 Bug Fixes - Discarding files/hunks/lines now covers more cases - [un]staging of deleted files did not work - Crash when file mode changed - Close menu when errors occur - Potential cause of terminal codes being printed after exit - Parse filenames w.o. prefix, quoted unicode. Improve parse errors ### ⚡ Performance - Replace `similar` dep with the more performant `imara_diff` - *(file-watcher)* Start the watcher without blocking the main thread ### 🎨 Styling - Add some padding to the menu ## [0.38.0] - 2025-10-10 ### 🚀 Features - Don't refresh previous screen when closing a nested one - Revert to using Crossterm as backend (fixes rendering/input bugs) ### ⚡ Performance - Revert back to forking out to git to check status (faster) - Skip status check if `status.showUntrackedFiles false`, helps in large repos - Avoid excessive allocation while computing hunk highlights - Change rendering output from Stderr to Stdout - more efficient ## [0.37.0] - 2025-09-28 ### 🚀 Features - Support file line positions for the micro editor (#424) - Add mouse wheel scrolling support - Simple mouse interactions - Show the diff on the stash detail screen ### 🐛 Bug Fixes - Mouse clicks on invalid screen lines trigger actions - Avoid redrawing for unhandled mouse events - Disable mouse reporting when mouse support is disabled - Workaround Termwiz mouse scroll event buggy handling ## [0.36.0] - 2025-09-16 ### 🚀 Features - Allow configuring recent commits and stash list limits - *(config)* Removed support of sequences of keys (e.g. abc) ### 🐛 Bug Fixes - *(config)* Report invalid key binding errors - Process bug when running show commands on Windows (#330) ## [0.35.0] - 2025-09-06 ### 🚀 Features - Ability to invoke merge operations (#401) - Add config cli arg to override the config file to use (#400) ### 🐛 Bug Fixes - Crash when opening PHP files (#405) ## [0.34.0] - 2025-06-29 ### 🚀 Features - Ability to delete a remote - Commit extend (#396) - Optimize & defer rendering of items in editor, esp. diff hunk highlights (#392) - Ability to rename a remote - Switch terminal backend from Crossterm to Termwiz ### 🐛 Bug Fixes - Shift modifier & uppercase key events would not work in certain terminals (#395) ### ⚡ Performance - More efficiently keep track of changes between updates ## [0.33.0] - 2025-06-07 ### 🚀 Features - Discard line by line (+ configure when to confirm discard) - Ability to add a remote ### 🐛 Bug Fixes - *(highlighting)* Update tree-sitter, replace dated toml lib with toml-ng - *(show)* Crash when sometimes attempting to show a commit - Opening hunk in EDITOR used wrong line number - Unmerged branches could not be deleted via discard action ## [0.32.0] - 2025-05-24 ### 🚀 Features - Hint external commands to output colors - Add delete option to branch menu ### 🐛 Bug Fixes - Ignore diff.external, in case its set to an unsupported tool #369 - *(prompt)* Freeze when a command would fail after a prompt occurred ## [0.31.0] - 2025-05-05 ### 🚀 Features - Disable filewatcher when `status.showUntrackedFiles` is off - Replace `ignore` lib with `libgit2` ignore functionality - FileWatcher now ignores changes from patterns in .gitignore ### 🐛 Bug Fixes - Support custom path prefixes in Git diff parser (e.g. i/... w/...) (#361) - Disable filewatcher when it fails to initialize ## [0.30.3] - 2025-04-21 ### 🐛 Bug Fixes - *(crates-io-release)* Resolve issue with publishing to crates-io ## [0.30.2] - 2025-04-21 ### 🐛 Bug Fixes - *(crates-io-release)* Specify gitu-diff to not be published ## [0.30.1] - 2025-04-21 ### 🐛 Bug Fixes - Issue with project lockfile/release ## [0.30.0] - 2025-04-21 ### 🚀 Features - Print command stderr to screen as they run (e.g. git hooks) - Fall back to remote.pushDefault when branch pushRemote is not set - `GITU_SHOW_EDITOR` env var as an option above `EDITOR` etc. - Improve on error-handling. Errors should now provide more context. - Change "conflicted" file status to "unmerged", remove redundant "unmerged" section - New diff-parser, easier to maintain, integrates better ### 🐛 Bug Fixes - *(file-watcher)* Freeze on startup, log error and stop on failure - Accurate --version in Github releases ## [0.29.0] - 2025-03-10 ### 🚀 Features - Add support for `nvr` command with line number navigation ## [0.28.2] - 2025-02-19 ### 🐛 Bug Fixes - Rebase menu opening after closing Neovim ## [0.28.1] - 2025-02-13 ### 🐛 Bug Fixes - Change logging level to reduce inotify spam - Don't refresh on `gitu.log` writes (gitu --log) ## [0.28.0] - 2025-02-04 ### 🚀 Features - *(Revert)* Add --no-edit flag (bound to -E) - Update on file changes - Open help with `?` too, close with `h` / `?` (#280) ### 🐛 Bug Fixes - Cursor sometimes hidden when spawning editor - 'Standard input is not a terminal' when opening editor - Staircased git output ### 🔧 Configuration - Add `refresh_on_file_change` bool to en/disable file watcher ## [0.27.0] - 2024-11-05 ### 🚀 Features - *(config)* Collapse screen headers via e.g. `general.collapsed_sections = ["recent_commits"]` ### 🐛 Bug Fixes - Set version properly in Github release ## [0.26.0] - 2024-10-24 ### 🚀 Features - Support "The Two Remotes": https://magit.vc/manual/3.2.0/magit/The-Two-Remotes.html ### 🔧 Configuration - Bind 'Pu' to new action: `push_to_upstream` - Bind 'Pp' to new action: `push_to_push_remote` - Bind 'Fu' to new action: `pull_from_upstream` - Bind 'Fp' to new action: `pull_from_push_remote` - Remove 'Pp' <-> `git push` (depended on `push.default`) - Remove 'Fp' <-> `git pull` (from upstream) - Rename `push_elsewhere` to `push_to_elsewhere` - Rename `pull_elsewhere` to `pull_from_elsewhere` ## [0.25.0] - 2024-09-03 ### 🚀 Features - Change priority order of editor envvar lookup ## [0.24.0] - 2024-08-05 ### 🚀 Features - *(status)* Detect renamed files ## [0.23.1] - 2024-07-23 ### 🐛 Bug Fixes - *(instant fixup commit)* Would not work with some versions of Git - *(instant fixup commit)* Use --keep-empty and --autostash like Magit - *(instant fixup commit)* Errors wouldn't show ## [0.23.0] - 2024-07-18 ### 🚀 Features - *(commit)* Instant fixup ### 🐛 Bug Fixes - Invisible menu after closing an input prompt ### 🎨 Styling - Wording in menus made more consistent to Magit ## [0.22.1] - 2024-07-04 ### 🐛 Bug Fixes - Upgrade libgit2 to 1.8.1 to support new `index.skipHash` git config ## [0.22.0] - 2024-06-27 ### 🚀 Features - Make cursor and selection symbol configurable ## [0.21.1] - 2024-06-19 ### 🐛 Bug Fixes - Tabs would not be rendered, render them as 4 spaces for now - *(flake)* Add AppKit to build inputs ## [0.21.0] - 2024-06-16 ### 🚀 Features - -n argument to limit log - -F to grep for commits in log menu - Support value arguments ### 🐛 Bug Fixes - Pin exact tree-sitter version to prevent common build breaks ## [0.20.1] - 2024-05-08 ### 🐛 Bug Fixes - Bad diffs when git's `autocrlf` was enabled ## [0.20.0] - 2024-05-08 ### 🚀 Features - Add "elsewhere" option to fetch, pull and push menu - Syntax highlighting for Elixir ## [0.19.2] - 2024-04-25 ### 🐛 Bug Fixes - Hint/preserve missing newlines in diffs/patches ## [0.19.1] - 2024-04-21 ### 🐛 Bug Fixes - Crash when trying to highlight `.tsx` files ## [0.19.0] - 2024-04-21 ### 🚀 Features - Move to parent section with alt+h - Move to next/prev sections with alt+j and alt+k - On MacOS: load `~/.config/gitu/config.toml` instead of `~/Library/Application Support/gitu/config.toml` - Add Revert commit/abort/continue - Show revert status ### 🐛 Bug Fixes - Scala syntax highlighter would not load ## [0.18.4] - 2024-04-20 ### 🐛 Bug Fixes - *(ci)* Release dir would not be created ## [0.18.3] - 2024-04-20 ### 🐛 Bug Fixes - Release to windows ## [0.18.0] - 2024-04-20 ### 🚀 Features - Syntax highlighting with tree-sitter and revamp of diff style config ### 🐛 Bug Fixes - *(log)* Ignore `prefetch/remotes/` refs ## [0.17.1] - 2024-04-17 ### 🐛 Bug Fixes - Moving page up/down resulted in view being refreshed ## [0.17.0] - 2024-04-17 ### 🚀 Features - Log whether config file is being loaded or not on startup (--log flag) - Add blank lines between refs sections, don't show empty sections - Segregate remotes into separate sections - Make 3 sections in show refs screen: branches, remotes, tags ### 🐛 Bug Fixes - When head detached show "?" instead of "*" on target match; update tests ## [0.16.0] - 2024-04-14 ### 🚀 Features - Copy commit hash with "y", move Show Refs to "Y" - Cursor is kept in view when scrolling - Togglable stash flags: --all & --include-untracked ### 🐛 Bug Fixes - Typo in descriptions on menu ### 🎨 Styling - Update stash promps to be more like in Magit ## [0.15.0] - 2024-04-10 ### 🚀 Features - Config option: general.always_show_help.enabled - Add all args to rebase menu - Add --prune and --tags flags to Fetch menu - Add all on/off arg flags to Commit menu - Add --rebase pull arg - Add --force /--no-verify /--dry-run push args ### 🐛 Bug Fixes - Main screen is more smart about scrolling when menu is open - Redraw screen even if command failed - Only stderr would show in log popup ### 🎨 Styling - Display args more like Magit ## [0.14.0] - 2024-04-06 ### 🚀 Features - Remove move p/n from default bindings (move up/down) - Make keybinds configurable ### 🐛 Bug Fixes - Existing terminal text would bleed into gitu on startup - Discarding staged files would not work & use git clean for removing untracked files ## [0.13.1] - 2024-04-04 ### 🐛 Bug Fixes - Handle EDITOR args, and better deal with absolute paths ## [0.13.0] - 2024-04-04 ### 🚀 Features - Support sending keys on startup with a cli flag (-k) ### 🐛 Bug Fixes - Prompt stash action instead of always "Stash index" - Edge cases and error handling for stashing worktree (#103) ### 🎨 Styling - Improve menu layout and define new keybind display ## [0.12.1] - 2024-04-01 ### 🐛 Bug Fixes - Resolve issue showing files with crlf ## [0.12.0] - 2024-04-01 ### 🚀 Features - Set '--jobs' to 10 when running 'git fetch' - Run fetch, pull and push without blocking the ui - Implement 'rebase elsewhere', it prompts you where to rebase - Prompt for rev on reset soft/mixed/hard - Show multiple command outputs in popup ### 🐛 Bug Fixes - Improve error-handling of external commands - Discarding staged files wouldn't work ### 🎨 Styling - Change command popup to be more intuitive ## [0.11.0] - 2024-03-27 ### 🚀 Features - Togglable argument '--force-with-lease' when pushing ### 🎨 Styling - Show quit/close keybind on all menus ## [0.10.0] - 2024-03-24 ### 🚀 Features - Prompt input rev for 'log other' ### 🎨 Styling - Style.selection_area now includes cursor line - Change cursor to a vertical bar, add config `style.cursor` ## [0.9.1] - 2024-03-23 ### 🐛 Bug Fixes - Crash when trying to show diff of binary files ## [0.9.0] - 2024-03-23 ### 🚀 Features - Unstage individual lines with ctrl-up/down and 'u' - Stage individual lines with ctrl-up/down and 's' - Add configurable quit confirmation ### 🐛 Bug Fixes - Cursor now skips unselectable lines more deterministically ## [0.8.0] - 2024-03-22 ### 🚀 Features - Show stash status, add 'save', 'pop', 'apply' and 'drop' actions - Unstage all staged changes by hovering 'Staged' section - Stage all unstaged changes by hover 'Unstaged' section - Stage all untracked files by hovering 'Untracked' section ## [0.7.0] - 2024-03-16 ### 🚀 Features - Add --version flag - Add Nix flake via ipetkov/crane ### 🐛 Bug Fixes - Crate would not build (due to trying to get version via git) ## [0.6.3] - 2024-03-13 ### 🐛 Bug Fixes - Interactive rebase includes parent (like magit) - Target binds in help-menu had wrong name formatting ## [0.6.2] - 2024-03-12 ### 🐛 Bug Fixes - Include changelog entry in github release ## [0.6.1] - 2024-03-12 ### 🐛 Bug Fixes - Release to Github ## [0.6.0] - 2024-03-12 ### 🚀 Features - Prompt what to checkout, default to selected item (like Magit) ## [0.5.5] - 2024-03-11 ### 🐛 Bug Fixes - Gitu would not open inside submodules ## [0.5.4] - 2024-03-10 ### 🐛 Bug Fixes - Fixed scrolling after breaking in previous update ## [0.5.3] - 2024-03-09 ### 🐛 Bug Fixes - Rebase --continue freeze ## [0.5.2] - 2024-03-08 ### 🐛 Bug Fixes - Cursor would disappear when staging the last hunk of a delta - Issue when cursor would disappear after external git updates ### 🎨 Styling - Remove trailing space in 'Create and checkout branch: ' ## [0.5.1] - 2024-03-07 ### 🐛 Bug Fixes - Would not start on windows due to nix signal handling ## [0.5.0] - 2024-03-07 ### 🚀 Features - Move 'reset' keybind to capital 'X' to mimic magit - Proper y/n prompt when discarding things ### 🐛 Bug Fixes - Annotated tags would not display ## [0.4.0] - 2024-03-06 ### 🚀 Features - Add `style.line_highlight.[un]changed` config options ### 🐛 Bug Fixes - Terminal would corrupt text when quitting gitu after opening editor - Terminal would corrupt text when gitu crashed ## [0.3.0] - 2024-03-05 ### 🚀 Features - Read not just EDITOR env var, but GIT_EDITOR & VISUAL too - Add error popup and more graceful error handling - Improve CHANGELOG.md format - Replace --exit-immediately cli flag with new --print ### 🐛 Bug Fixes - Show author date (not commit date) on commits like 'git log' ### 🎨 Styling - Selection_line & selection_area now extend fully to left ## [0.2.0] - 2024-03-04