Releases: jesseduffield/lazygit
v0.62.1
This fixes a regression (crash) introduced in 0.62.0. For the full list of changes in 0.62, see here.
What's Changed
Fixes π§
- Fix crash when keybindings are disabled that normally show in the status bar by @stefanhaller in #5655
Docs π
- Add docs for how to add the default, non-pager diff to the list of pagers by @stefanhaller in #5656
Full Changelog: v0.62.0...v0.62.1
v0.62.0
The big change in this release is what I have been referring to as the "keybinding revamp": it allows you to use richer keybindings than the few that were available before; see Custom_Keybindings.md for details. It also describes a new keybinding syntax that is a bit more intuitive than the previous <c-x> notation (but the old one is still supported for backwards compatibility).
Note the section about Terminal compatibility in that document; not all terminals support the new protocol equally well, so it may be a good idea to switch to one that does.
Breaking change: The default keybinding for submitting a commit from the commit description editor has changed from alt-enter to command-enter on Mac, or ctrl-enter on Linux and Windows; these are the same bindings that are used in many multi-line edit field situations, e.g. in GitHub comments. Unfortunately these are not supported by all terminals; see the above-mentioned terminal compatibility for more on that. If you want to revert this change, you can do so by adding the following to your config:
keybinding:
universal:
confirmInEditor: [<alt+enter>, <ctrl+s>]The complete list of changes follows:
What's Changed
Enhancements π₯
- Retry on ref lock errors during fetch/pull by @majiayu000 in #5161
- Preserve whitespace when remembering commit message by @stefanhaller in #5528
- Define PR colors as hex colors to make them the same as GitHub's by @stefanhaller in #5480
- Revamp keybinding mechanism to support richer keybindings (e.g.
ctrl-alt-shift-x) by @stefanhaller in #5563 - Platform-specific edit bindings for move-by-word and backspace-word by @stefanhaller in #5564
- Change canonical keybinding syntax (
<ctrl+a>instead of<c-a>) by @stefanhaller in #5565 - Use more widely-supported Unicode symbols for the commit graph by @stefanhaller in #5573
- Show push URLs for remotes that have any by @stefanhaller in #5576
- Support GitHub Enterprise for the Pull Requests feature by @stefanhaller in #5596
- Allow keybindings to configure more than one key by @stefanhaller in #5634
- Add
<alt+up>/<alt+down>as alternate keybindings for moving commits up/down by @stefanhaller in #5637 - Add support for git flow using the git-flow-next tool by @hmaddocks in #5288
Fixes π§
- Fix copying a file's absolute path when running in a linked worktree by @stefanhaller in #5523
- Preserve commit message when quitting while the commit message panel is open by @stefanhaller in #5524
- Stop showing cached PRs when we no longer have a base remote by @stefanhaller in #5543
- If multiple remotes exist but only one is a Github remote, pick it without prompting by @stefanhaller in #5544
- Fix cherry-picking a range selection of commits by @stefanhaller in #5599
- Dont log GitHub PR fetching errors to the Command log by @stefanhaller in #5600
- Avoid auto-forwarding main branches checked out in other worktrees by @stefanhaller in #5621
- Fix cycling pagers when main view is focused by @stefanhaller in #5639
Maintenance βοΈ
- Bump samber.lo to latest version by @stefanhaller in #5545
- Bump github.com/kyokomi/emoji/v2 from 2.2.8 to 2.2.13 by @dependabot[bot] in #5481
- Bump github.com/gookit/color from 1.4.2 to 1.6.0 by @dependabot[bot] in #5482
- Bump github.com/sirupsen/logrus from 1.9.3 to 1.9.4 by @dependabot[bot] in #5483
- Bump dario.cat/mergo from 1.0.1 to 1.0.2 by @dependabot[bot] in #5484
- Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 by @dependabot[bot] in #5514
- Bump goreleaser/goreleaser-action from 7.0.0 to 7.1.0 by @dependabot[bot] in #5529
- Bump actions/github-script from 8 to 9 by @dependabot[bot] in #5515
- Bump golang.org/x/sys from 0.42.0 to 0.43.0 by @dependabot[bot] in #5548
- Copy gocui into lazygit repo by @stefanhaller in #5561
- Update to tcell v3 by @stefanhaller in #5562
- Clear LC_* env vars when running LANG tests by @AntoineGS in #5568
- Fix failing windows tests by @stefanhaller in #5574
- Fix new gopls linter warnings by @stefanhaller in #5580
- Disable gh telemetry when running integration tests by @stefanhaller in #5587
- Fix the check_for_fixups.sh script again by @stefanhaller in #5590
- Add script to preview release notes by @stefanhaller in #5620
- Bump github.com/gookit/color from 1.6.0 to 1.6.1 by @dependabot[bot] in #5586
- Bump github.com/sahilm/fuzzy from 0.1.1 to 0.1.2 by @dependabot[bot] in #5606
- Bump golang.org/x/sys from 0.43.0 to 0.45.0 by @dependabot[bot] in #5607
- Bump github.com/gdamore/tcell/v3 from 3.3.0 to 3.4.0 by @dependabot[bot] in #5618
- Bump goreleaser/goreleaser-action from 7.1.0 to 7.2.2 by @dependabot[bot] in #5619
Docs π
- Fix undo shortcut in Undoing.md by @stefanhaller in #5640
- Update docs and schema for release by @stefanhaller in #5645
I18n π
- Update translations from Crowdin by @stefanhaller in #5644
Performance Improvements π
- Improve performance of showDivergenceFromBaseBranch by @AntoineGS in #5536
- Redraw only the spinner when nothing else has changed by @AntoineGS in #5571
- Improve inline spinner performance by @stefanhaller in #5592
New Contributors
- @majiayu000 made their first contribution in #5161
- @AntoineGS made their first contribution in #5536
- @hmaddocks made their first contribution in #5288
Full Changelog: v0.61.1...v0.62.0
v0.61.1
This release has just a few fixes for the recently added GitHub pull requests feature.
What's Changed
Enhancements π₯
- Hide closed pull requests on main branches by @stefanhaller in #5501
Fixes π§
- Normalize repository owner casing to fix GitHub PR integration by @bradly0cjw in #5495
- Don't default the base repo for pull requests to "origin" by @stefanhaller in #5508
Maintenance βοΈ
- Security fix: avoid using
${{ }}variable interpolation inrun:steps by @orbisai0security in #5487 - Add a justfile by @stefanhaller in #5490
New Contributors
- @orbisai0security made their first contribution in #5487
- @bradly0cjw made their first contribution in #5495
Full Changelog: v0.61.0...v0.61.1
v0.61.0
The big one in this release is support for GitHub pull requests. They are shown as little GitHub icons next to each branch that has one, and you can open a PR in the browser by pressing shift-G. To enable this, all you need to do is install the gh tool if you haven't already, and log in using gh auth login.
What's Changed
Features β¨
- Show pull requests against branches by @jesseduffield in #2781
Enhancements π₯
- Add support for clicking on arrows in the file list to expand/collapse directories by @blakemckeany in #5365
- Remove empty directories after discarding untracked files by @stefanhaller in #5408
- Make file sort order and case sensitivity configurable, and default to mix files and folders by @stefanhaller in #5427
- Allow customizing the window width/height thresholds for when to use portrait mode by @stefanhaller in #5452
- Log hashes of local branches when deleting them by @stefanhaller in #5441
- Add condition field to custom command prompts by @mrt181 in #5364
Fixes π§
- Fix staging only some lines of a block of consecutive changes by @stefanhaller in #5396
- Fix the expanded layout of the branches panel (half and full screen modes) by @stefanhaller in #5413
- Fix searching commits or main view after switching repos by @stefanhaller in #5424
- Scroll to top when showing subcommits by @stefanhaller in #5425
- Fix patch commands when git config has color=always by @matthijskooijman in #5405
- Don't stage out-of-date submodules when asking user to auto-stage after resolving conflicts by @stefanhaller in #5440
Maintenance βοΈ
- Remove go-git dependency by @stefanhaller in #5420
- Make Debian/Ubuntu install command architecture-independent by @discapes in #5386
- Bump github.com/buger/jsonparser from 1.1.1 to 1.1.2 by @dependabot[bot] in #5423
- fix: pin 7 unpinned action(s), extract 1 inline secret to env var by @dagecko in #5439
- Fix dependabot config file by @stefanhaller in #5443
- Bump actions/cache from 4 to 5 by @dependabot[bot] in #5444
- Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #5445
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #5446
- Bump github.com/lucasb-eyer/go-colorful from 1.3.0 to 1.4.0 by @dependabot[bot] in #5447
- Bump github.com/spf13/afero from 1.9.5 to 1.15.0 by @dependabot[bot] in #5448
- Bump github.com/creack/pty from 1.1.11 to 1.1.24 by @dependabot[bot] in #5449
- Bump github.com/stretchr/testify from 1.10.0 to 1.11.1 by @dependabot[bot] in #5450
- Bump github.com/sanity-io/litter from 1.5.2 to 1.5.8 by @dependabot[bot] in #5451
- Bump github.com/adrg/xdg from 0.4.0 to 0.5.3 by @dependabot[bot] in #5456
- Bump github.com/spkg/bom from 0.0.0-20160624110644-59b7046e48ad to 1.0.1 by @dependabot[bot] in #5457
- Bump github.com/integrii/flaggy from 1.4.0 to 1.8.0 by @dependabot[bot] in #5458
- Bump github.com/sahilm/fuzzy from 0.1.0 to 0.1.1 by @dependabot[bot] in #5459
- Bump github.com/sasha-s/go-deadlock from 0.3.6 to 0.3.9 by @dependabot[bot] in #5460
Docs π
- Add a note about AI to CONTRIBUTING.md by @stefanhaller in #5404
- Update redo keybinding in README.md by @unikitty37 in #5387
- Fix grammar in the contributor guide by @Rohan5commit in #5392
I18n π
- Update translations from Crowdin by @stefanhaller in #5476
Performance Improvements π
- Improve performance of discarding many files by @stefanhaller in #5407
New Contributors
- @blakemckeany made their first contribution in #5365
- @discapes made their first contribution in #5386
- @unikitty37 made their first contribution in #5387
- @Rohan5commit made their first contribution in #5392
- @matthijskooijman made their first contribution in #5405
- @dagecko made their first contribution in #5439
- @mrt181 made their first contribution in #5364
Full Changelog: v0.60.0...v0.61.0
v0.60.0
What's Changed
Enhancements π₯
- Rename "Copy commit hash to clipboard" to mention it's an abbreviated hash by @stefanhaller in #5331
- Hide the "Fetching..." status of the auto-fetch when bottom line is hidden by @stefanhaller in #5321
- Allow removing lines from patch directly by @jesseduffield in #5277
- Filter file views rather than search by @jesseduffield in #5273
- Show branch name and detached HEAD in worktrees tab by @ruudk in #5339
- Add backward cycling support for log view (using
<shift>-aon status page) by @zaakiy in #5346 - Show worktree name next to branch in branches list by @ruudk in #5340
Fixes π§
- Fix matching of lazygit-edit URLs without line numbers by @danielwe in #5311
- Fix #5302: Create .git/info directory before writing exclude file by @cobyfrombrooklyn-bot in #5325
- Fix off-by-one error when calculating popup panel dimensions by @stefanhaller in #5312
- Properly disable clicks in inactive views behind popups by @stefanhaller in #5313
- Enable
{and}to change diff context size in branches and tags panels in diffing mode by @stefanhaller in #5258 - Fix diff display of custom pagers after screen mode change by @stefanhaller in #5349
Maintenance βοΈ
- Bump github.com/cloudflare/circl from 1.6.1 to 1.6.3 by @dependabot[bot] in #5323
Docs π
I18n π
- Update translations from Crowdin by @stefanhaller in #5352
Other Changes
New Contributors
- @Owen-sz made their first contribution in #5281
- @danielwe made their first contribution in #5311
- @cobyfrombrooklyn-bot made their first contribution in #5325
- @04cb made their first contribution in #5335
- @zaakiy made their first contribution in #5346
Full Changelog: v0.59.0...v0.60.0
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