- Show a spinner for more long-running operations
- Support a {{diffContext}} template variable in external diff command
- Auto-scroll when dragging to create range selection in staging view
- Create a range selection in list views by dragging with the mouse
- Reorder commits or rebase todos by dragging with the mouse
- Show a Github PR's combined checks state in branches list and main view for selected branch
- Overhaul lazygit's concurrency model to eliminate data races and improve robustness
- Apply small UI polish improvements
- Rework the custom pager config and rename to diff renderer
- Fix stuck inline status when pushing or fetching
- Escape the merge conflicts view before prompting to continue the rebase
- Fix side panel rendering when branches or commits are not their panel's first tab
- Suppress output from a few git commands that pollute the command log
- Fix stall with ctrl+z and fg
- Fix problems related to concurrent repo switch and background refresh
- Fix Windows crash when switching to fullscreen mode with a custom pager
- Fix multi-selection of files with common prefix not working in commit files panel
- Support absolute paths when detecting edit preset from EDITOR env var
- Exclude more commit trailers from auto-wrapping
- Remove the BLOCK_UI refresh mode
What's Changed
This release has massive changes, but most of them should hopefully not be visible: I completely overhauled lazygit's concurrency model, which was, let's say, less than robust; there were lots of data races, and we were just lucky that this didn't result in crashes or misbehavior more often. We now have a robust concurrency model with no known data races, and in fact we run our integration test suite on CI with the -race flag to prove that. The user visible part of this is that some operations run a little more smoothly now; for example, there used to be an ugly spinner freeze at the end of checking out a branch, which is now gone.
However, since the changes were so massive there's a higher-than-usual chance of regressions, so please report any that you find.
Apart from that, we also have a few useful enhancements; the most notable one is probably that we now show the Github checks status of pull requests in the branches panel.
Enhancements 🔥
- Show a spinner for more long-running operations by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5765
- Remove the BLOCK_UI refresh mode by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5790
- Support a
{{diffContext}}template variable in external diff command by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5841 - Some small UI polish by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5853
- Auto-scroll when dragging to create range selection in staging view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5855
- Create a range selection in list views by dragging with the mouse by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5856
- Reorder commits (or rebase todos) by dragging with the mouse by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5857
- Rework the custom pager config (rename to diff renderer) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5870
- Show a Github PR's combined checks state in branches list (and main view for selected branch) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5874
Fixes 🔧
- Fix stuck inline status when pushing/fetching by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5768
- Escape the merge conflicts view before prompting to continue the rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5822
- Fix side panel rendering when branches/commits are not their panel's first tab by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5825
- Suppress output from a few git commands that pollute the command log by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5834
- Fix stall with ctrl+z and fg by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5830
- Fix more problems related to concurrent repo switch and background refresh by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5839
- Fix Windows crash when switching to fullscreen mode with a custom pager by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5838
- Fix multi-selection of files with common prefix not working in commit files panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5868
- Support absolute paths when detecting edit preset from EDITOR env var by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5876
- Exclude more commit trailers from auto-wrapping by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5871
- Prevent stale index.lock files from diffs rendered through a pty on Windows by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5888
- Fix orphaned processes on Windows when quickly navigating between commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5885
Maintenance ⚙️
- Perform refresh model and view updates on the UI thread instead of using mutexes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5767
- Fix data race with status string by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5777
- Fix data race with command log by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5779
- Make integration tests using commits more robust by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5782
- Synchronize ViewBufferManager.Close with a starting task by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5786
- Make model<->view index conversions independent of rendering by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5785
- Fix idle notification deadlock by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5821
- Bump tcell to an unreleased snapshot to fix a shutdown race by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5824
- Fix command log streaming race by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5789
- Synchronize async view rendering by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5791
- Run tests with race detection on CI by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5792
- Gocui mouse event fixes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5854
- Move Github PR cache out of state.yml into a separate file by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5884
- Make justfile commands available in the Nix development shell by @TyceHerrman in https://github.com/jesseduffield/lazygit/pull/5890
Docs 📖
- Clarify contribution policy by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5809
I18n 🌎
- Update translations from Crowdin by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5891
Performance Improvements 📊
- Make scrolling down a very long diff with the scroll wheel much smoother by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/5780
New Contributors
- @TyceHerrman made their first contribution in https://github.com/jesseduffield/lazygit/pull/5890
Full Changelog: https://github.com/jesseduffield/lazygit/compare/v0.63.1...v0.64.0