Skip to content

Releases: jesseduffield/lazygit

v0.35

20 Jul 09:34
Compare
Choose a tag to compare

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.

v0.34

17 Mar 07:11
Compare
Choose a tag to compare

Features:

  • You can now customise the colour of unstaged files via the gui.theme.unstagedChangesColor config key (thanks @snorrwe )
  • Editing a file will now open your editor at the currently selected line for most major editors (thanks @mark2185 )
  • Support for opening Azure DevOps repos (thanks @tiwood )
  • You can now skip the confirmation prompt after running a subprocess with the promptToReturnFromSubprocess config key (thanks @rambhosale )

Bug Fixes:

  • Fixed issue where mouse handling was not properly restored after leaving the application (thanks @tmatz )
  • Fixed bug where files could not be edited at particular lines for certain editors (thanks @fsmiamoto )

Other:

  • Some cleaning up of the docs (thanks @moha-gh )
  • NL translation fixups (thanks @Alpakash )
  • Fixed an issue with the cheatsheet generator that caused the user's own language to appear in each output translation file.

Note from maintainer:

  • I'm going to merge in quite a large refactor PR to the master branch. The refactor is about 90% done but the 10% might take some time and it's tricky to have to re-implement all PRs from contributors to the new branch. At any rate this refactor should make the code easier to work with compared to the previous god struct (the Gui struct) that was being used for everything. The new structure no doubt will have its own flaws that I'll need to work through over time. I've been using the refactor PR myself for a while and haven't run into any bugs, and I've added some more integration tests to capture more of the expected behaviour. Don't hesitate to raise an issue for any bug you find.

v0.33

19 Feb 01:00
Compare
Choose a tag to compare

Features:

  • Git bisect support (press 'b' on a commit to start the process)
lg-bisect-2.mov
  • On windows we now set the window title to the name of the opened repo (thanks @birgersp)
  • You can now set custom branch colours in your config (see here) (thanks @matt-cles )

Bug Fixes:

  • We now always specify the upstream when pushing/pulling so you'll never accidentally push to an unexpected remote branch
  • Fixed bug that prevented quitting with a confirm popup
  • Fixed issue with scrolling in the merge panel
  • We no longer show the branch graph when filtering by path because it didn't make sense to show it
  • Fixed a bug where a custom git hosting service wasn't given precedent over a default hosting service (thanks @bin101)
  • Added Mouse support for crostini (thanks @tmatz)
  • Proper URL encoding for pull request URLs (thanks @MikaelElkiaer)

Other:

  • Performance improvements
  • We now ask for confirmation upon reverting a commit (thanks @glendsoza)
  • Resetting a submodule can now only be done from within the files panel
  • Documentation updates (thanks @jm33-m0, @mark2185)
  • Chinese translation update (thanks @bnoctis)

For Contributors:

  • You can now run an integration test in 'sandbox' mode meaning you get to control what happens during the session but no snapshot is saved. It's a convenient way of testing a feature with a given pre-built example repo.
  • I've replaced the contributor code of conduct with a very stripped down version that basically says 'be nice'. The original was a little intense and didn't reflect the natural level of charity and positivity in the issues board. If people have an issue with that let me know.
  • I've added some extra sections to the contributing guide including:
    • how the codebase (intentionally) diverges from some Go idioms
    • i18n
    • testing
    • debugging

Note from maintainer:

  • Still working on this gui package refactor. I expect the health of the codebase to increase quite a bit with the change. I regret not trying to slice it up into smaller pieces but hopefully I'll have learnt my lesson next time.
  • We might need to rethink how integration tests are done. Right now it's a direct recording which can make the tests difficult to update.

v0.32.2

17 Jan 08:32
Compare
Choose a tag to compare

Changelog

  • 8ca71ee add git bisect run script
  • d3a3c8d add integration test for merge conflicts resolved externally
  • ee622d0 add integration test for staging view
  • 2691477 allow sandbox mode with integration tests
  • 1c84f77 always specify upstream when pushing/pulling
  • 7a690f9 appease CI
  • 8d8bdb9 avoid deadlock in merge panel
  • ae98797 do not show branch graph when in filtering mode
  • befa356 fix bug which prevented quitting with confirm
  • 0092c9d fix bug with subprocess
  • 9903595 fix merge scroll bug
  • 595aca2 make integration test pass
  • dafac52 see if this fixes CI linting
  • cdcfeb3 stop refreshing the screen so much

v0.32.1

14 Jan 23:21
Compare
Choose a tag to compare

Changelog

  • f5b9ad8 add complex custom command integration test
  • 8263d15 fix issue where custom command would not open a menu

v0.32

13 Jan 22:06
Compare
Choose a tag to compare

Features:

  • You can now press 'o' on a commit to open it in your browser
  • We now retain the commit message you typed in the event that the commit command failed (thanks @jakobkogler)
  • You can now reword old commits from within lazygit
  • You can now create annotated tags (press 'n' in the tags panel) (thanks @fsmiamoto)
  • You can now add a signoff to your commits via the git.commit.signoff key in your config (thanks @sagikazarmark)
  • You can now specify a single colour to apply to all commit authors (thanks @Cokile)

Bug Fixes:

  • Better highlighting of lines for various terminals (thanks @Kavantix)
  • Fixed bug where we couldn't go to the bottom of the reflog panel (thanks @fsmiamoto)
  • Better support for --path arg (thanks @TicClick)
  • Fixed a bug where you couldn't create a pull request when the repo's url scheme was ssh (thanks @kawaemon)
  • We now make fewer assumptions that your main remote is named 'origin' (thanks @mbrgm)
  • Fixed some copy inconsistencies (thanks @justinsb)
  • Fixed bug where branches would appear twice in the branches panel (@escrafford)

Other:

  • Added installation instructions for funtoo linux (thanks @invakid404)

For Contributors:

  • CI now checks that the cheatsheet files are up-to-date. If it hasn't you'll need to run go run scripts/cheatsheet/main.go generate

Note from maintainer:

The codebase has grown quite a bit since its inception and it's in need of some refactoring to make future growth easier. I've wrapped up some refactoring to the internal commands package so that we've got better namespacing and separation of concerns, and I'll be shifting my gaze to the GUI package next. Once I'm happy with the structure of the code I'll start producing some documentation so that new contributors can easily get started on features and bug fixes. Many changes to the app are trivial to make but it can take a new contributor time to work out where everything lives in the code.

v0.31.4

22 Nov 10:14
Compare
Choose a tag to compare

Changelog

8abc953 Merge pull request #1581 from black-desk/translate
9c4f837 fix chinese translate
02bf6a5 fix delta again

v0.31.3

09 Nov 22:20
Compare
Choose a tag to compare

Changelog

2f45db8 fix scrolling in sub commits panel

v0.31.2

07 Nov 04:05
Compare
Choose a tag to compare

Changelog

3fb478a add tests
5d12a6b restore some code that was erroneously removed

v0.31.1

07 Nov 02:39
Compare
Choose a tag to compare

Changelog

6171690 Fix multibyte initial characters
7a464ae add graph algorithm
ccd80a0 add menu options for log stuff
f6ec7ba add some config
253504a associate random colours with authors
9989c96 better formatting
6457800 fix another issue with indentation
06ca71e fix bug
01d8274 fix commit message prefix thingo
5df0fe0 fix crash
7d94618 fix issue with indentation
f91892b fix truncation
b04b457 fix yet another issue with indentation
9a9e3d5 more consistent rendering
7561703 move author name colouring code into its own file
e122f42 only use a single initial for double sized runes
1d40d03 refactor
802cfb1 render commit graph
c96496c show author info in rebase commits
308a3b5 some more throttling stuff
2fc1498 some refactoring in anticipation of the graph feature
f704707 stream output from certain git commands in command log panel
927ee63 support aborting a merge or rebase with esc
37be9db support scrolling left and right
72bce20 support scrolling the list in the integrations app
c47c539 support user-configurable author colours