github jesseduffield/lazygit v0.35

latest releases: v0.44.1, v0.44.0, v0.43.1...
2 years ago

Features

  • Nerd fonts now supported! (@Ryooooooga)
    image

  • Scrollbars! (non-interactive but cool nonetheless)

  • Diff hunks can now be edited directly (via a subprocess) (@Ryooooooga)

  • You can open lazygit to the panel that you care about e.g. run lazygit log to open lazygit to the commits panel. (@HiromasaNojima)

  • Most menus now have their own keybindings for each menu item, which should speed things up for power users.

  • You can now easily set/unset the upstream of a branch (@mark2185)

  • You can now select to stash exclusively unstaged/staged files (@mark2185)

  • Improved update flow (@moha-gh)

  • Fixed issue where we duplicated line breaks when parsing a commit message Don't duplicate line breaks when retrieving commit message (@moha-gh)

  • Some hard-to-reverse actions now have confirmation popups given it's easy to accidentally press the wrong key.

  • 'Gone' branches are now marked as such

  • More commit attributes can be copied with the 'y' key (@mark2185)

  • Custom commit author colours can now be specified with regular names (e.g. 'red') instead of only hex codes. (@Ryooooooga)

  • Commit author can now be set to another author or reset to the current git user (thanks @JensPfeifle)

  • Auto-refresh of files can be disabled with the git.autoRefresh config option (@moha-gh)

  • We now (again) honour push.default config value. In general we want to err on the side of having git commands do the same thing that would happen if you ran them directly from the terminal.

  • Files can now be opened from the merge conflicts panel (thanks @Ryooooooga)

  • You can now configure to always show the unstaged and staged changes panels, regardless of whether the selected file has both unstaged and staged changes. This can be done via gui.splitDiff: 'always' (@HiromasaNojima)

  • Commit time format can now be customised via the gui.timeFormat config key (@Ryooooooga)

  • We now record the current directory on switch instead of exit (@davdroman)

  • We now support Bitbucket server PRs (thanks @TheBlob42)

  • Bottom line (containing some keybindings help) can now be hidden via gui.showBottomLine: false in your config.

  • You can now show the whole git graph in the commits panel by default via git.log.showWholeGitGraph: true

  • Some UI tweaks.

Bug fixes

Translation updates:

Chinese translated updated (@Crystal-RainSlide)
Japanese translation added (@Ryooooooga)
Korean translation added (@Shin-JaeHeon)

HUGE thankyou to all the contributors who've helped bring about this release. As you can see @mark2185 and @Ryooooooga are behind many of the the changes so a special thankyou to the both of you!

Maintenance stuff:

We've now on go1.18 meaning we can use generics. The lo package is our main generics helper package. I've also rolled my own, called 'generics', but I'll probably end up just committing to using lo only.

Integration tests in CI are now run in parallel, and windows builds are now properly cached, so CI runs much faster and you'll sooner know if you've broken a test.

Note from maintainer:

I'm working on some tricky features like the ability to filter the contents of a list panel, some of which I've recorded on youtube. As part of that work I've had to make a detour to do some yak shaving and refactoring (which is happening in #2023)

I've also made a video showing how to add a basic feature to Lazygit for aspiring contributors. If you would like to see similar videos/docs covering other topics to make life easier for new/existing contributors, lemme know!

At some point I want to take time off work to go full-time on Lazygit (e.g. for a few months). If you have any ideas how I could raise money to do that, let me know! And of course for all those currently sponsoring, thankyou so much, it's a big motivator for me finding the time to work on this project.

Some more rambling thoughts:

  • The integration test suite has some good coverage but the mechanism behind it (recording a Lazygit session and having the test replay that session) is hard to maintain. I want to switch to having integration tests be built by calling a bunch of commands in sequence, similar to Cypress if anybody's used that.
  • I was holding off this release for the sake of a better in-app release notes feature but that can wait for a future release.

Don't miss a new lazygit release

NewReleases is sending notifications on new releases.