What's Changed
Thanks to all contributors who helped make this release happen! There's a lot of first-time contributors on this release as well so kudos to you all.
There's quite a few things in this release. I'm going to single out a couple that have changed my workflow.
Base branch stuff
lg-base-branch-demo.mov
Easier rebase onto base branch
(Add command to rebase onto base branch by @stefanhaller in #3615)
When my feature branch gets out of date with the main branch, I like to rebase it onto the main branch. Up until now, that's required:
- Navigating to the main branch
- Pressing 'f' to fast-forward it onto its upstream branch
- Pressing 'r' to rebase the checked-out branch onto the main branch
That takes too long! Now you can just press 'r' followed by 'b' to rebase onto the base branch (which defaults to origin/main).
See the divergence count from the base branch
(Divergence from base branch display by @stefanhaller in #3613)
You can now also configure to see the divergence from a branch and its base branch with the following config:
gui:
showDivergenceFromBaseBranch: arrowAndNumber # or 'onlyArrow'
This shows the divergence count in blue, next to the yellow count of divergence from the upstream branch. This is admittedly noisy, so it's an opt-in feature. But I think the noise is worth it.
If you set the config value to 'onlyArrow' it's a lot less noisy:
See detailed divergence from base branch
(Add command to show divergence from base branch as a left-right log by @stefanhaller in #3614)
By pressing 'u' then 'b' on a branch you can see the divergence view for that branch compared to its base branch
Improved 'Find commit for fixup' feature
(Improve the "Find base commit for fixup" command by @stefanhaller in #3602)
'Find commit for fixup' is not a very catchy name for this feature but I can't think of anything better at the moment. Nevertheless! The idea is that you often want to know for a given set of changes, which commit ought they be included in? Just press ctrl+f
when in the files panel and lazygit will jump the cursor to the appropriate commit to fixup.
With this release, the feature is smarter and more lenient so it's more likely to find you a match. If you haven't tried this out you should really give it a go!
find-commit-demo.mov
Other Enhancements 🔥
- Add Squash merge by @noahfraiture in #3566
- Now when you press
shift+m
you get the option to do a regular merge or a squash merge. If you already have muscle memory for regular merge; don't worry: it's the same sequence of keypresses.
- Now when you press
- Improve "Find base commit for fixup" command when there are changes for master commits by @stefanhaller in #3645
- Allow setting the similarity threshold for detecting renames by @isti115 in #3025
- For this, press ')' and '(' to increase/decrease the similarity threshold.
similarity-demo.mov
- Reduce memory consumption when loading large number of commits by @stefanhaller in #3687
- 2-6x less memory usage when dealing with lots of commits. HUGE improvement.
- Focus on local commits view after moving code into new commit by @AzraelSec in #3577
- Add property outputTitle to CustomCommand by @stefanhaller in #3579
- Add user config
gui.expandedSidePanelWeight
by @stefanhaller in #3623- You can now increase the height of the selected side panel when you've configured the accordion effect
gui: expandFocusedSidePanel: true expandedSidePanelWeight: 3
- Support range select for amending commit attributes by @AzraelSec in #3587
- This lets you select a range of commits and update the author / set the co-author on all of them at once.
lg-multi-author-select.mov
- Show "exec" todos in the list of rebase todos by @stefanhaller in #3654
- Search the model instead of the view in the commits panel by @stefanhaller in #3642
- Add prompt to the remote branch checkout menu by @stefanhaller in #3652
- Always show the "Discard unchanged changes" menu item by @stefanhaller in #3683
- Show current value in menus by @stefanhaller in #3628
- Add command to paste commit message from clipboard by @WaterLemons2k in #3676
- Stagger popup panels by @stefanhaller in #3694
- Make commit author length configurable by @stefanhaller in #3688 (initial implementation by @anikiforov)
- Make opening git difftool more consistent by @part22 in #3691
- Update tracking behaviour for branches created from remote branches by @part22 in #3712
- Allow setting a default name when creating new branches by @elliotcubit in #3487
- Add Token credential request handling by @gmlexx in #3647
- Switch between multiple log views by @mkock in #3354
- Faster startup by @jwhitley in #3284
- Extend icon coverage on remotes and file extensions by @hasecilu in #3484
- Add nerdfont icons for .bicep & .bicepparam files by @scottmckendry in #3053
Fixes 🔧
- Fix tooltip for fixup command by @stefanhaller in #3601
- Fix pushing to branch when upstream not stored locally by @stefanhaller in #3619
- (#3618) Fix pushing a branch to remote with a different name causing error by @JordanllHarper in #3630
- Fix secondary window resize by @AzraelSec in #3637
- Fix truncation of branch names containing non-ASCII characters by @stefanhaller in #3685
- Fix duplicate keybinding suggestions in status bar after switching repos by @stefanhaller in #3660
- Fix PTY layout problems by @stefanhaller in #3658
- Fix custom patch operations for added files by @stefanhaller in #3684
- Improve render performance by @stefanhaller in #3686
- Fix wrong highlight in staging panel when entering file with only staged changes by @stefanhaller in #3667
- Always reapply filters on filtered views when model changes, even inactive ones by @stefanhaller in #3697
- Turn off the highlight of the suggestions panel when it loses focus by @stefanhaller in #3696
- Fix running lazygit with a language other than English on Windows by @stefanhaller in #3705
- Fix multi selection stage/discard not working for files with substrings by @brandondong in #3599
- Only add commit prefix if branch name matches regex pattern by @phaze-ZA in #3703
Maintenance ⚙️
- Add default lazygit config generation in Config.md from JSON schema by @karimkhaleel in #3565
- Remove hint about Config.md from PR template by @stefanhaller in #3578
- Add
copyloopvar
to enabled linters by @kyu08 in #3586 - Add
lint
to make target by @kyu08 in #3593 - Delete the TODO comment about enabling
goconst
in the future from.golangci.yml
by @kyu08 in #3596 - Pin golangci version to 1.58 by @stefanhaller in #3611
- Improve branch and reflog loading when sorting branches by date by @stefanhaller in #3609
- Fix boolean config keys not appearing in the generated Config.md by @stefanhaller in #3622
- Make profiling easier by @stefanhaller in #3634
- Update
rebase_onto
demo test to match new the rebase menu title by @AzraelSec in #3636 - Include demos when running integration tests on CI by @stefanhaller in #3640
- Fix reporting of unexpected selections in integration tests by @stefanhaller in #3662
- Convert TranslationSets to json by @stefanhaller in #3649
- Fix go generate on windows by @stefanhaller in #3706
- Update translations from Crowdin by @stefanhaller in #3707
- Bump
actions/checkout
,actions/setup-go
,actions/cache/restore
,actions/cache/save
by @kyu08 in #3594 - Check for fixup commits on CI by @jesseduffield in #3742
Docs 📖
- Upgrade to Alpine Linux v3.19 by @fossdd in #3541
- Add flox install by @bryanhonof in #3656
New Contributors
- @JordanllHarper made their first contribution in #3630
- @anikiforov made their first contribution in #3625
- @WaterLemons2k made their first contribution in #3676
- @noahfraiture made their first contribution in #3566
- @fossdd made their first contribution in #3541
- @scottmckendry made their first contribution in #3053
- @elliotcubit made their first contribution in #3487
- @bryanhonof made their first contribution in #3656
- @gmlexx made their first contribution in #3647
- @mkock made their first contribution in #3354
- @phaze-ZA made their first contribution in #3703
- @hasecilu made their first contribution in #3484
Full Changelog: v0.42.0...v0.43.0
Shameless Plug
I (Jesse) quit my day job and co-founded Subble, a startup that helps your company manage its SaaS subscriptions (discovery of subscriptions, onboarding/offboarding etc) to save you time and money. Check it out! https://www.subble.com/