Releases: jesseduffield/lazygit
v0.59.0
What's Changed
Enhancements π₯
- Have "Find base commit for fixup" ignore fixup commits for the found base commit by @stefanhaller in #5210
- Exclude commit trailers from line wrapping by @stefanhaller in #5230
- Limit popup panel widths to a maximum width by @stefanhaller in #5231
- Support using the selected commit's message in a fixup by @jesseduffield in #5233
- Fix gitignore path collisions by @DawidPietrykowski in #5245
Fixes π§
- Don't log the "git rev-list" call when marking bisect commits by @stefanhaller in #5236
- Fix opening a menu when a previous menu was scrolled down by @stefanhaller in #5238
- When moving commits up/down and the selection leaves the view, scroll to make it visible again by @stefanhaller in #5247
- Fix rendering of CRLF sequence ('\r\n') by @stefanhaller in #5237
- Fix rendering of the Reflog panel when using up/down to scroll it by @stefanhaller in #5248
- Add Nushell support for nvim-remote preset by @baiyeidk in #5250
Maintenance βοΈ
- Update devcontainer
VARIANTto1-trixieby @mricherzhagen in #5204 - chore: Update outdated GitHub Actions versions by @pgoslatara in #5220
- Disable the automatic, scheduled release by @stefanhaller in #5272
- Auto-update cheatsheets after updating translation by @stefanhaller in #5275
Docs π
- Update README to add GitArbor TUI as an alternative by @cadamsdev in #5257
- Update docs and schema for release by @stefanhaller in #5276
I18n π
- Update translations from Crowdin by @stefanhaller in #5274
New Contributors
- @pgoslatara made their first contribution in #5220
- @cadamsdev made their first contribution in #5257
- @baiyeidk made their first contribution in #5250
Full Changelog: v0.58.1...v0.59.0
v0.58.1
This is a hotfix release that fixes the known issues with 0.58.
To expand on this a bit: in 0.58 we updated our TUI library tcell to a new version that made significant under-the-hood changes; this allowed us to fix several rendering issues, mostly related to wide characters like some emojis. Apart from that, there are few user visible changes with this update, but it lays the ground for future enhancements like support for more keybindings.
However, since the changes are so fundamental it also introduced a number of regressions, and I'm not really surprised about that. Most of these were bugs in tcell that have been fixed upstream now, but some were on our side. This release fixes the ones I know about. If you still have issues, please report them!
What's Changed
Enhancements π₯
- Update search position (match x of y) when changing the selection in a list view by @stefanhaller in #5169
Fixes π§
- When doing ctrl-f, and the resulting commit is not visible, scroll it into view by @stefanhaller in #5182
- Fix pasting multi-line text into the commit description by @stefanhaller in #5186
- Fix keypad keys, and pasting emojis in Windows Terminal by @stefanhaller in #5192
- Don't log the "git ls-remote" call when opening a PR by @stefanhaller in #5195
- Fix rendering artefacts after double-width characters (e.g. "
β οΈ ") on some terminals by @stefanhaller in #5198
Maintenance βοΈ
- Request info about terminal in issue template by @stefanhaller in #5194
Full Changelog: v0.58.0...v0.58.1
v0.58.0
What's Changed
Enhancements π₯
- Add keys for command log menu items by @PeterCardenas in #5096
- Add Codeberg as a supported git hosting service by @yaadata in #5130
- Change keybinding of "keep" item in Merge Conflict menu back to 'k' by @stefanhaller in #5132
- Support custom keybindings in custom command menu prompts by @HerrNaN in #5129
- Show an error when checking out a file would overwrite local modifications by @stefanhaller in #5154
Fixes π§
- Remove confirmation for opening the merge tool by @stefanhaller in #5094
- Allow using 'j', 'k', 'H', or 'L' as keybindings in custom command menus by @stefanhaller in #5131
- Prevent many hyperlinks from launching while mouse moving by @stefanhaller in #5133
- Fix the main view display after reverting a commit by @stefanhaller in #5138
- Avoid scrolling the selection into view on refresh by @stefanhaller in #5134
- Fix rendering of certain emojis by @stefanhaller in #5116
Docs π
- Fix small issues with the Breaking Changes texts by @stefanhaller in #5114
- Add a note about delta's
--navigateoption not working in lazygit by @stefanhaller in #5155 - Update docs and schema for release by @stefanhaller in #5168
I18n π
- Update translations from Crowdin by @stefanhaller in #5167
Performance Improvements π
- Fix annoying UI stalls after refresh (e.g. background fetch) when the reflog is very long by @stefanhaller in #5135
New Contributors
Full Changelog: v0.57.0...v0.58.0
v0.57.0
What's Changed
Enhancements π₯
- Open pull requests in browser with extra leading slashes removed by @hrzlgnm in #5018
- Allow using SelectedSubmodule in CustomCommands by @rlkandela in #5015
- Don't allow empty input in most prompts by @stefanhaller in #5043
- Suppress output from background fetch (unless there were errors) by @stefanhaller in #5044
- feat: add fork remote command by @karolzwolak in #4831
- Trigger immediate background fetch when switching repos by @stefanhaller in #5047
Fixes π§
- Keep cursor at top/bottom when navigating by page by @RaphaeleL in #5019
- Switch to branches view when checking out a commit by @stefanhaller in #5048
- Fix deleting a remote tag when a remote branch with the same name exists, or vice versa by @stefanhaller in #5075
- Show fixup base commits in correct order in ctrl-f error message by @stefanhaller in #5073
- Band-aid fix for rare crashes when refreshing files by @stefanhaller in #5074
- Fix to support creating MRs for repositories cloned with SSH alias by @roveo in #5082
Maintenance βοΈ
- Keep config and schema unchanged during a release by @stefanhaller in #5010
- Modernize all codes by @phanen in #5036
- Bump golang.org/x/crypto from 0.37.0 to 0.45.0 by @dependabot[bot] in #5054
- Don't use "HEADLESS" environment variable for running tests by @stefanhaller in #5064
- refactor: use strings.Builder and strings.Repeat to simplify code by @boqishan in #5068
- chore: fix function name in comment by @riyueguang in #4481
Docs π
- Add a "Commit history" section to CONTRIBUTING.md by @stefanhaller in #5022
- Update table of contents in README.md by @madscientist16 in #5045
- Update docs and schema for release by @stefanhaller in #5091
I18n π
- Update translations from Crowdin by @stefanhaller in #5090
Performance Improvements π
- Fix and speed up the file list for the "Enter path to filter by" feature by @stefanhaller in #5056
New Contributors
- @hrzlgnm made their first contribution in #5018
- @RaphaeleL made their first contribution in #5019
- @rlkandela made their first contribution in #5015
- @phanen made their first contribution in #5036
- @madscientist16 made their first contribution in #5045
- @karolzwolak made their first contribution in #4831
- @boqishan made their first contribution in #5068
- @riyueguang made their first contribution in #4481
- @roveo made their first contribution in #5082
Full Changelog: v0.56.0...v0.57.0
v0.56.0
What's Changed
Enhancements π₯
- Don't break line after footnote symbol in commit messages by @stefanhaller in #4912
- Give better visual feedback when checking out the previous branch by @stefanhaller in #4929
- Add merge menu with conflict resolver by @lmnek in #4889
- When entering a commit in path filtering mode, select the filtered path by @stefanhaller in #4942
- Document a workaround for using custom pagers on Windows by @stefanhaller in #4941
- Show "Log (x of y)" in the title bar when there is more than one branch log command by @stefanhaller in #4943
- Support multiple pagers by @stefanhaller in #4953
- Add config option gui.skipSwitchWorktreeOnCheckoutWarning by @stefanhaller in #4964
- Add no-ff merge option by @stefanhaller in #4966
Fixes π§
- Don't log the git rev-list command that we use for IsBranchMerged by @stefanhaller in #4896
- Hide the cursor when the password prompt is showing by @stefanhaller in #4878
- Update Merge conflicts menu keybinding to use p instead of k by @zingazzi in #4934
- Update diff of conflicted file in the main view after conflicts have been resolved by @stefanhaller in #4945
- Don't depend on en_US locale to be installed by @stefanhaller in #4949
- Fix dropping submodule changes from a commit by @stefanhaller in #4937
- Fix support for Git copy status when status.renames=copies by @kapral18 in #4892
- When pasting multi-line text into a prompt, don't treat the line feeds as "confirm" by @stefanhaller in #4955
- Offer to force-delete a worktree if it contains submodules by @stefanhaller in #4959
- Fix window arrangement when a popup or the search prompt is open by @stefanhaller in #4961
- Fix lazygit getting unresponsive when pasting commits that become empty by @stefanhaller in #4958
- Show a better error message if the temp directory is not writeable by @stefanhaller in #4968
- Avoid auto-stashing when only submodules are out of date by @stefanhaller in #4969
- Use a PTY when using external diff command from git config by @brandondong in #4983
- Fix fixup's false filename detection in hunks containing dashed lines by @abobov in #5004
Maintenance βοΈ
- Make running with --debug and running integration tests work when built with go 1.25 by @stefanhaller in #4910
- Update go to 1.25 by @kyu08 in #4844
- feat(nix): add comprehensive Nix flake by @doprz in #4826
- Fix normalisedSelectedNodes function by @stefanhaller in #4920
- Add
synchronizeevent to the hooks of "Check Required Labels" by @kyu08 in #4974 - Use ignore directive to ignore test files not to be passes to gofumpt by @kyu08 in #4936
Docs π
- Fix MoveCommitsToNewBranch description typo by @deventon in #4867
- Wrap long lines in comments in Config.md by @stefanhaller in #4951
- Fix keybinding cheatsheets with regard to pipe characters in key or description by @stefanhaller in #5007
I18n π
- Update translations from Crowdin by @stefanhaller in #5005
New Contributors
- @deventon made their first contribution in #4867
- @zingazzi made their first contribution in #4934
- @doprz made their first contribution in #4826
- @lmnek made their first contribution in #4889
- @kapral18 made their first contribution in #4892
- @abobov made their first contribution in #5004
Full Changelog: v0.55.1...v0.56.0
v0.55.1
This hotfix release fixes two bugs that have crept in in v0.55.0: one is a regression that broke displaying the enter key in the keybindings menu, the other is a problem with a newly added feature that didn't work quite correctly. See below for details.
For the changes in 0.55.0, see https://github.com/jesseduffield/lazygit/releases/tag/v0.55.0.
What's Changed
Fixes π§
- Don't hide keybindings that match the confirmMenu key in the keybindings menu by @stefanhaller in #4880
- Fix staging when using the new useExternalDiffGitConfig config by @stefanhaller in #4895
Full Changelog: v0.55.0...v0.55.1
v0.55.0
Breaking Changes
- The 'redo' command, which used to be bound to ctrl-z, is now bound to shift-Z instead. This is because ctrl-z is now used for suspending the application; it is a commonly known keybinding for that in the Linux world. If you want to revert this change, you can do so by adding the following to your config:
keybinding:
universal:
suspendApp: <disabled>
redo: <c-z>- The
git.paging.useConfigoption has been removed. If you were relying on it to configure your pager, you'll have to explicitly set the pager again using thegit.paging.pageroption.
What's Changed
Enhancements π₯
- Allow filtering the keybindings menu by keybinding by @stefanhaller in #4821
- Add support for suspending LazyGit with Ctrl+Z on Unix systems by @cowboy8625 in #4757
- Add "CopyToClipboard" command to
ConfirmationControllerby @kyu08 in #4810 - Add a user config for using git's external diff command for paging by @stefanhaller in #4832
- Log the hash of dropped stashes by @stefanhaller in #4850
Fixes π§
- Fix right-alignment of divergence from base branch for branch checked out in a worktree by @stefanhaller in #4824
- Support Azure DevOps vs-ssh.visualstudio.com SSH remotes as hosting provider by @Kahitar in #4822
- Improve display of "esc" keybinding in the keybindings status bar by @stefanhaller in #4819
- Use external diff command in stashes panel by @stefanhaller in #4836
- Remove the git.paging.useConfig option by @stefanhaller in #4837
- Don't auto-forward branches that are checked out in another worktree by @stefanhaller in #4833
- Fix dropping range selection of filtered stashes by @stefanhaller in #4849
- Fix rare crash in interactive rebase (merge command without comment) by @stefanhaller in #4872
- Make it possible to rebind the Confirm keybinding by @stefanhaller in #4860
Maintenance βοΈ
- Pass only Git-tracked Go files to gofumpt by @kyu08 in #4809
- Update donation wording so that it's clear there's no strings attached by @jesseduffield in #4827
- Enhance PR/Issue templates readability by @kyu08 in #4829
- Run label check workflow only on label events and open pr event by @kyu08 in #4830
Docs π
- Add installation with gah by @marverix in #4820
- docs(VISION): fix "Dicoverability" typo by @Rudxain in #4866
- Add dev container feature as installation method to README by @HenningLorenzen-ext-bayer in #4876
I18n π
- Update translations from Crowdin by @stefanhaller in #4873
New Contributors
- @marverix made their first contribution in #4820
- @Kahitar made their first contribution in #4822
- @cowboy8625 made their first contribution in #4757
- @Rudxain made their first contribution in #4866
- @HenningLorenzen-ext-bayer made their first contribution in #4876
Full Changelog: v0.54.2...v0.55.0
v0.54.2
Here's another point release; this one fixes a performance regression in 0.54.0 that made flicking through diffs a little less snappy (or a lot less, in some scenarios) than it could be.
For the changes in 0.54.0, see https://github.com/jesseduffield/lazygit/releases/tag/v0.54.0.
What's Changed
Fixes π§
- Fix scrollbar in certain popup panels (e.g. the intro message for new users) by @stefanhaller in #4804
- Fix delay with flicking through files or commits when git diff is very slow by @stefanhaller in #4803
Maintenance βοΈ
- Stop bumping our homebrew formula by @stefanhaller in #4799
- Update the badges of golangci-lint and homebrew in
README.mdby @kyu08 in #4807
Docs π
- Fix the useHunkModeInStagingView hint in the breaking changes message by @stefanhaller in #4800
- Update
CONTRIBUTING.mdto clarify translation contribution process by @kyu08 in #4806
Full Changelog: v0.54.1...v0.54.2
v0.54.1
This hotfix release fixes a regression in 0.54.0 that made lazygit fail on startup when multiple users use it on a single machine.
For the changes in 0.54.0, see https://github.com/jesseduffield/lazygit/releases/tag/v0.54.0.
What's Changed
Fixes π§
- Fix temp dir permission problem on multi-user machines by @stefanhaller in #4796
Maintenance βοΈ
- Stop updating Jesse's homebrew tap by @stefanhaller in #4797
Docs π
New Contributors
Full Changelog: v0.54.0...v0.54.1
v0.54.0
Again we don't have any major new features this time (unless you count the support for alt-backspace for deleting words in the commit message editor, which is one of my favorite additions), but lots of smaller quality-of-life improvements and bug fixes. The most notable one is probably the fix for the stale index.lock problem, which was a very long-standing bug that seemed to affect some users much more than others for some reason.
Breaking Changes
- The default sort order for local and remote branches has changed: it used to be 'recency' (based on reflog) for local branches, and 'alphabetical' for remote branches. Both of these have been changed to 'date' (which means committerdate). If you do liked the old defaults better, you can revert to them with the following config:
git:
localBranchSortOrder: recency
remoteBranchSortOrder: alphabetical- The default selection mode in the staging and custom patch building views has been changed to hunk mode. This is the more useful mode in most cases, as it usually saves a lot of keystrokes. If you want to switch back to the old line mode default, you can do so by adding the following to your config:
gui:
useHunkModeInStagingView: falseWhat's Changed
Enhancements π₯
- Add confirmation for hard reset by @stefanhaller in #4704
- Provide user config defaults for UI-changeable settings by @stefanhaller in #4717
- Improve mouse handling of suggestions panel by @stefanhaller in #4726
- Add new command "Checkout previous branch" by @kyu08 in #4728
- Add confirmation for nuking the working tree by @DawidPietrykowski in #4727
- Support Alt+Backspace for word deletion in text areas by @rtzll in #4741
- Don't use hunk mode for added or deleted files even when useHunkModeInStagingView config is on by @stefanhaller in #4758
- Show [0] keybinding in main view title by @stefanhaller in #4754
- Draw divergence from base branch right-aligned in branches view by @stefanhaller in #4785
- Enable hunk staging mode by default by @stefanhaller in #4780
Fixes π§
- Fix scrolling hunk into view when selecting next hunk by @stefanhaller in #4709
- Fix stale main view content when entering/exiting filtering view by @stefanhaller in #4719
- Detect double-clicks properly by @stefanhaller in #4725
- Fix commit searching during rebase or in divergence from upstream view by @stefanhaller in #4730
- Fix amending commits whose commit message is empty by @aidancz in #4732
- Several small fixes to filtering mode (by path or author) by @stefanhaller in #4749
- Show diff for renamed file when filtering by path by @stefanhaller in #4750
- Allow rewording or dropping commits in filtering mode by @stefanhaller in #4756
- Fix index out of bounds panic when repository has massive tags by @chojs23 in #4776
- When pressing
ato stage all files, don't include untracked files when showing only tracked files by @stefanhaller in #4779 - Fix commit hash colors when filtering by path or aythor by @stefanhaller in #4789
- Improve temp dir handling by @stefanhaller in #4784
- Terminate git processes more gracefully to avoid the stale index.lock problem by @stefanhaller in #4782
Maintenance βοΈ
- Raise sponsors PRs as a draft by @jesseduffield in #4694
- Update the peter-evans/create-pull-request action to v7 by @stefanhaller in #4695
- Update release workflow by @stefanhaller in #4703
- Clean up the .gitignore file by @stefanhaller in #4706
- Remove unused code and texts by @stefanhaller in #4715
- Remove deprecated edit configs by @stefanhaller in #4716
- Bump minimum required git version to 2.32 by @stefanhaller in #4718
- Use a better way of pinning the version of golangci-lint by @stefanhaller in #4733
- Make the minimum required git version a placeholder in the error text by @stefanhaller in #4778
- refactor: use slices.Equal to simplify code by @jishudashu in #4764
Docs π
- Fix broken markdown in auto-generated keybindings documentation by @KEY60228 in #4690
- Remove the homebrew tap from the readme by @stefanhaller in #4705
I18n π
- Update translations from Crowdin by @stefanhaller in #4791
Performance Improvements π
- Fix performance regression on startup in repos with many tags by @stefanhaller in #4777
New Contributors
- @KEY60228 made their first contribution in #4690
- @DawidPietrykowski made their first contribution in #4727
- @rtzll made their first contribution in #4741
- @chojs23 made their first contribution in #4776
- @jishudashu made their first contribution in #4764
Full Changelog: v0.53.0...v0.54.0