πŸš€ jesseduffield/lazygit - Release Notes

v0.48.0 (2025-03-01)



## What's Changed
### Enhancements πŸ”₯
* Custom commands submenus by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4324
### Maintenance βš™οΈ
* Refactor migrations to only marshall yaml twice by @ChrisMcD1 in https://github.com/jesseduffield/lazygit/pull/4318


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.47.2...v0.48.0


v0.47.2 (2025-02-25)



Small patch release for you all. This is mainly to fix an issue with v0.47.1 which erroneously re-indented users' lazygit config files on startup.

Shout-out to @karimkhaleel for his PR with some gnarly yaml-handling code.

And a special shout-out to @ChrisMcD1 who has been pumping out many great contributions lately. Great to have you aboard.

## What's Changed
### Enhancements πŸ”₯
* Skip post-checkout hook when discarding changes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4313
### Fixes πŸ”§
* fix: Disable global keybinds when confirmation is active by @ChrisMcD1 in https://github.com/jesseduffield/lazygit/pull/4284
* Don't rewrite config file unnecessarily when it contains commitPrefixes by @ChrisMcD1 in https://github.com/jesseduffield/lazygit/pull/4311
* Change side panel width calculation to work for larger numbers by @ChrisMcD1 in https://github.com/jesseduffield/lazygit/pull/4287
### Maintenance βš™οΈ
* Fix auto-release schedule by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4308
* Use indentation of 2 when rewriting auto-migrated config file by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4312
* Use refs in jsonschema by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/4309
* Improve release workflow by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4307
* Filter out dev comments from schema by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4319
* Fix release script by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4322
* Fix release script once again by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4323
### Docs πŸ“–
* Improve the error message when users have gpg signing turned on by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4296


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.47.1...v0.47.2


v0.47.1 (2025-02-22)



## What's Changed
### Maintenance βš™οΈ
* Fix race condition with reselecting the focused branch and rendering by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4268


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.47.0...v0.47.1


v0.46.0 (2025-02-15)

It's time for another Lazygit release! Thanks to all who contributed to this release.

## What's Changed
### Enhancements πŸ”₯
* Preserve pending commit message when closing/re-opening by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/4191
* Swap position of checkout-commit and checkout-branch menu items by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4238
  * In a previous release we had made it so that when you press space on a commit, the first option in the menu was to check out the corresponding branch, rather than the commit itself. We've made it so that now the first option is to check out the commit itself, for the sake of everybody's muscle memory.
* Allow user to filter the files view to only show untracked files by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4226
* Expose {{.SelectedCommitRange}} to custom commands by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4204
* Show background fetch status in bottom line by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4215
* Support copying tags to clipboard by @brunofjesus in https://github.com/jesseduffield/lazygit/pull/4218
* Add option to delete local and remote tag by @AnvarU in https://github.com/jesseduffield/lazygit/pull/4217
* Show confirmation menu when trying to amend changes while there are conflicts by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4222
* Improve error reporting on config migration by @kas2020-commits in https://github.com/jesseduffield/lazygit/pull/4210
* Show files filter status by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4230
* Improve contrast of highlighted search results by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4242

### Fixes πŸ”§
* Don't try killing processes if we already know the command finished by @brandondong in https://github.com/jesseduffield/lazygit/pull/4231
  * We believe this was causing all sorts of problems for windows users.
* Add '--' to 'git rev-list' to disambiguate branch name from path by @efussi in https://github.com/jesseduffield/lazygit/pull/4185
* Fix adding blank line at end of commit message by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4182
* Fix checking out a different branch while pushing a branch for the first time by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4214
* Fix tag being truncated when copying to clipboard by @brunofjesus in https://github.com/jesseduffield/lazygit/pull/4232
* Disable staging and unstaging lines or hunks when the diff context size is 0 by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4235
* Fix incorrect stash diff after rename by @brandondong in https://github.com/jesseduffield/lazygit/pull/4213
* Fix possible crash when deleting a branch while filtering is active by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4195
* Fix pasting multi-line text into commit message panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4234
* fix: properly detect icon for BAZEL and WORKSPACE files by @PeterCardenas in https://github.com/jesseduffield/lazygit/pull/4252
* Fix json schema for context of CustomCommand by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4255
### Maintenance βš™οΈ
* Bump go-deadlock version to fix crash with go 1.23 in debug mode by @ChrisMcD1 in https://github.com/jesseduffield/lazygit/pull/4248
* Fix auto-release workflow by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4265
### I18n 🌎
* Update translations; includes a new Portuguese translation by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4250

## New Contributors
* @efussi made their first contribution in https://github.com/jesseduffield/lazygit/pull/4185
* @brunofjesus made their first contribution in https://github.com/jesseduffield/lazygit/pull/4218
* @AnvarU made their first contribution in https://github.com/jesseduffield/lazygit/pull/4217
* @kas2020-commits made their first contribution in https://github.com/jesseduffield/lazygit/pull/4210
* @ChrisMcD1 made their first contribution in https://github.com/jesseduffield/lazygit/pull/4248
* @PeterCardenas made their first contribution in https://github.com/jesseduffield/lazygit/pull/4252

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.45.2...v0.46.0


v0.45.2 (2025-01-17)



## What's Changed
### Enhancements πŸ”₯
* Add ability to configure branch color patterns using regex by @mtrajano in https://github.com/jesseduffield/lazygit/pull/4130
* Collapse/uncollapse all files in tree by @mtrajano in https://github.com/jesseduffield/lazygit/pull/4131
* Improve undo action to restore files upon undoing a commit by @gabriellanata in https://github.com/jesseduffield/lazygit/pull/4167
### Fixes πŸ”§
* Bump gocui (and tcell) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4166
### Maintenance βš™οΈ
* Cut a new release automatically each month by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4146
* Bump tcell to fix broken deployment by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4178

## New Contributors
* @mtrajano made their first contribution in https://github.com/jesseduffield/lazygit/pull/4130
* @gabriellanata made their first contribution in https://github.com/jesseduffield/lazygit/pull/4167



**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.45.0...v0.45.2

v0.45.0 (2025-01-11)



Lots of great improvements in this one! Thanks to all the contributors who helped make this release happen.

Apologies for the long waits between releases. As of https://github.com/jesseduffield/lazygit/pull/4146 we're now (almost) guaranteed to do monthly releases.

## What's Changed
### Enhancements πŸ”₯
* Better branch delete confirmation by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3915
* Add a menu item to delete both local and remote branch at once by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3916
* Auto-render hyperlinks by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3914
* Allow pasting commits multiple times by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3983
* Add config option to disable switching tabs with panel jump keys (and disable by default) by @hgreenstein in https://github.com/jesseduffield/lazygit/pull/3927
  * We jumped the gun on this change in the last release: having the number key both select a panel and switch tabs was bad for muscle memory so it's that behaviour is now disabled by default.
* Add new filter to only show tracked files in Files panel by @veremenko-y in https://github.com/jesseduffield/lazygit/pull/4024
* Allow DiffContextSize to be decreased to zero by @LuxxxLucy in https://github.com/jesseduffield/lazygit/pull/4050
* Allow user to select remote and branch when creating a PR by @moha-gh in https://github.com/jesseduffield/lazygit/pull/1889
* Delete range selection of branches by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4073
* Show the number of lines changed per file in working file tree view by @johannaschwarz in https://github.com/jesseduffield/lazygit/pull/4015
* Drop merge commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4094
* Wrap lines in staging view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4098
* Allow to switch branches in Commit View (#4115) by @seflue in https://github.com/jesseduffield/lazygit/pull/4117
* Allow on prem Azure DevOps Server pull request by @waynebowie99 in https://github.com/jesseduffield/lazygit/pull/3954
* Add screen-mode command line argument by @alewis001 in https://github.com/jesseduffield/lazygit/pull/4103
* Default to half-screen mode when opening with certain CLI args by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4141
* Show the alt-enter keybinding at bottom of commit description view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4136
* Add number of commits to cherry-pick confirmation prompt by @brandondong in https://github.com/jesseduffield/lazygit/pull/4158
### Fixes πŸ”§
* Fix copying commit author to clipboard by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3936
* Fix merge conflict resolution when file doesn't end with a LF by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3976
* Fix file icons by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3975
* Fix non-sticky range select after clicking in staging view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3998
* Fix scroll position when entering staging view by clicking in the main view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3992
* Fix mouse wheel scrolling of custom patch view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4089
* Improve editing a commit by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4090
* Use custom context size in range diff by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4082
* commits panel: add missing default sort order by @phanirithvij in https://github.com/jesseduffield/lazygit/pull/4097
* Fix issues with opening links and files using WSL by @bottino in https://github.com/jesseduffield/lazygit/pull/3850
* Fix moving a commit across a branch boundary in a stack of branches by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4096
* Don't preserve commit message when it's unchanged from initial message by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4110
* Fix hang when returning from shell command by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4126
* Prevent killing of unrelated processes on windows by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4137
* Add worktree option to fast forwarding operation by @john-mutuma in https://github.com/jesseduffield/lazygit/pull/4051
* Don't show keybindings option in bottom line when panel is open by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4143
* Fix reset/rebase to upstream by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4151
* Avoid blank line at end of view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4152
* Adjust line number for working copy when editing a line by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4119
* Fix `micro` editor preset by @kytta in https://github.com/jesseduffield/lazygit/pull/4156
* Use interactive shell for running shell commands only if shell is bash or zsh by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4159
### Maintenance βš™οΈ
* Add performance improvements section to release notes by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3922
* ci: update `upload-artifact` and `download-artifact` actions to v4 by @Juneezee in https://github.com/jesseduffield/lazygit/pull/4063
* Let schema/config.json end with a line feed by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4092
* Saner view geometry by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4085
* Cleanup background fetch by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/4084
* remove duplicate secondary MouseWheelUp keybind by @samueldominguez in https://github.com/jesseduffield/lazygit/pull/4120
* enhancement: Use HEX colors on file icons instead of C256 colors by @hasecilu in https://github.com/jesseduffield/lazygit/pull/4029
* chore: use errors.New to replace fmt.Errorf with no parameters by @RiceChuan in https://github.com/jesseduffield/lazygit/pull/4107
* Fix typos by @NathanBaulch in https://github.com/jesseduffield/lazygit/pull/3920
* Bump crypto and net packages by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4144
* Tweak file icons by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4145
* Standardise on 'screen mode' naming convention by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4142
### Docs πŸ“–
* Fix installation for Ubuntu in README.md by @shaobosong in https://github.com/jesseduffield/lazygit/pull/4031
* Fixes to lazygit Ubuntu install instructions in README.md by @wrecklass in https://github.com/jesseduffield/lazygit/pull/3970
* Fix typos by @skoch13 in https://github.com/jesseduffield/lazygit/pull/4121
* Add vision and design principles doc by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4053
* docs: Stylize and correct the NixOS section in README.md by @wadsaek in https://github.com/jesseduffield/lazygit/pull/4135
* Update chinese translation for pull requests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/4140
* Set repology table to 3 columns by @hasecilu in https://github.com/jesseduffield/lazygit/pull/4138
* Update instructions for using OSC52 with tmux by @EliasA5 in https://github.com/jesseduffield/lazygit/pull/3597
* Update docs to describe use of custom commands without keybindings by @a-jentleman in https://github.com/jesseduffield/lazygit/pull/3846
* documentation - describe os.openLink by @smangels in https://github.com/jesseduffield/lazygit/pull/3094
* Clarify commit message prefix mechanics by @zeromask1337 in https://github.com/jesseduffield/lazygit/pull/4114

## New Contributors
* @shaobosong made their first contribution in https://github.com/jesseduffield/lazygit/pull/4031
* @hgreenstein made their first contribution in https://github.com/jesseduffield/lazygit/pull/3927
* @wrecklass made their first contribution in https://github.com/jesseduffield/lazygit/pull/3970
* @veremenko-y made their first contribution in https://github.com/jesseduffield/lazygit/pull/4024
* @LuxxxLucy made their first contribution in https://github.com/jesseduffield/lazygit/pull/4050
* @phanirithvij made their first contribution in https://github.com/jesseduffield/lazygit/pull/4097
* @bottino made their first contribution in https://github.com/jesseduffield/lazygit/pull/3850
* @johannaschwarz made their first contribution in https://github.com/jesseduffield/lazygit/pull/4015
* @samueldominguez made their first contribution in https://github.com/jesseduffield/lazygit/pull/4120
* @skoch13 made their first contribution in https://github.com/jesseduffield/lazygit/pull/4121
* @wadsaek made their first contribution in https://github.com/jesseduffield/lazygit/pull/4135
* @seflue made their first contribution in https://github.com/jesseduffield/lazygit/pull/4117
* @waynebowie99 made their first contribution in https://github.com/jesseduffield/lazygit/pull/3954
* @EliasA5 made their first contribution in https://github.com/jesseduffield/lazygit/pull/3597
* @alewis001 made their first contribution in https://github.com/jesseduffield/lazygit/pull/4103
* @a-jentleman made their first contribution in https://github.com/jesseduffield/lazygit/pull/3846
* @john-mutuma made their first contribution in https://github.com/jesseduffield/lazygit/pull/4051
* @RiceChuan made their first contribution in https://github.com/jesseduffield/lazygit/pull/4107
* @NathanBaulch made their first contribution in https://github.com/jesseduffield/lazygit/pull/3920

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.44.1...v0.45.0


v0.44.1 (2024-09-18)

## What's Changed
### Enhancements πŸ”₯
* With stacked branches, create fixup commit at the end of the branch it belongs to by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3892
* Add options for disabling switching to the Files panel after popping or applying a stash by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3913
### Fixes πŸ”§
* Fix crash when viewing the divergence of a branch which is up to date with its upstream by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3918
### Performance improvements πŸ“Š 
* Improve performance with large numbers of untracked or modified files by @parthokunda in https://github.com/jesseduffield/lazygit/pull/3919  
### I18n 🌎
* Update language files from Crowdin by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3898

## New Contributors
* @parthokunda made their first contribution in https://github.com/jesseduffield/lazygit/pull/3919

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.44.0...v0.44.1

v0.44.0 (2024-09-07)

## What's Changed

Lots of great changes in this release. Thanks to everybody who contributed!

### Enhancements πŸ”₯
* Per-repo config files (and reloading of edited config files) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3787
	* In addition to the global config file you can now create repo-specific config files inΒ `/.git/lazygit.yml`. Settings in these files override settings in the global config file. In addition, files calledΒ `.lazygit.yml`Β in any of the parent directories of a repo will also be loaded; this can be useful if you have settings that you want to apply to a group of repositories.
	* We now also automatically apply (most) config changes without the need to restart lazygit
* Easily view diff across range of commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3869
	* If you select a range of commits, we now show the diff across the range (inclusive). This makes it easy to see the total changes across a number of commits. Likewise, if you press enter when a range of commits are selected, we will show the changed files for the range.

https://github.com/user-attachments/assets/6646c78b-5770-41c1-93b9-5442d32404de


	
* Support hyperlinks from pagers by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3825
	* If you're using delta as a pager (which I highly recommend trying), you can now click on line numbers to go to that line in your editor by using the following config:
	```yaml
	git:
	  paging:
	    colorArg: always
	    pager: delta --paging=never --line-numbers --hyperlinks --hyperlinks-file-link-format="lazygit-edit://{path}:{line}"
	```

https://github.com/user-attachments/assets/75fef6c4-d437-4595-ab00-b8990215cfed



* Switch to Files panel after popping/applying a stash by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3888
	* This is a nice quality of life improvement. You generally want to go straight to the files panel after you pop or apply from the stash
* Ask to auto-stage unstaged files when continuing a rebase after resolving conflicts by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3879
	* Another quality of life improvement: often you resolve some conflicts, then make another couple changes, then in lazygit you say to continue and you get an error saying there are unstaged changes. Now instead of showing an error, lazygit asks if you want to stage those changes and continue.
* Offer autostash option when creating new branch by @brandondong in https://github.com/jesseduffield/lazygit/pull/3871
	* Another great quality of life improvement
* Allow using shell aliases in interactive custom commands by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3793
* Switch tabs with panel jump keys by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3794
	* If you've already been using the number keys (1-5) for jumping to specific side panels, you'll be pleased to know that you can now also use those keys for jumping to tabs within a side panel. E.g. to go to the reflog panel, you can now press 4 to jump to the commits panel, then 4 again to go to the reflog tab.
* Rename "Custom Command" to "Shell Command" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3800
	* There are two ways of invoking a 'custom' command in Lazygit: first by pre-defining a command in your config, and second by pressing ':' and typing in the command directly. We referred to both of these as 'custom commands' which was confusing. We now refer to the second approach as invoking a 'shell command'.
* Improve template placeholders for custom commands by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3809
	* Now you can use `SelectedCommit` to refer to the selected commit regardless of which commits panel you're in (local commits, reflog, etc)
	* Likewise, you can use `SelectedPath` whether you're in the files panel or the commit-files panel.
* feat(custom command): support multiple contexts within one command by @yam-liu in https://github.com/jesseduffield/lazygit/pull/3784
	* You can now use a comma-separated list of contexts for which a custom command can be invoked. For example:
	```yaml
	customCommands:
	  - description: 'Add empty commit'
	    key: 'E'
	    context: 'commits,files'
	```
* Improve mouse support for commit message panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3836
* Make auto-staging resolved conflicts optional by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3870
	* If you set `git.autoStageResolvedConflicts` to false in your config, lazygit will no longer auto-stage files in which you've resolved merge conflicts.
* Allow using `<`/`>` and `,`/`.` in sticky range select mode in patch explorer by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3837
* Add Zed editor support to editorPreset by @susl in https://github.com/jesseduffield/lazygit/pull/3886

### Fixes πŸ”§
* Allow GPG reword for last commit by @Neko-Box-Coder in https://github.com/jesseduffield/lazygit/pull/3815
* Don't exit app when GetRepoPaths call fails during startup by @ppoum in https://github.com/jesseduffield/lazygit/pull/3779
* Fix lack of icon when extension isn't lowercase by @hasecilu in https://github.com/jesseduffield/lazygit/pull/3810
* Fix redraw bug (stale content) in commits view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3783
* Fix line coloring when using the delta pager by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3820
* Fix pressing escape after clicking in diff view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3828
* Fix fast-forward issue caused by a conflicting tag name @Neko-Box-Coder in https://github.com/jesseduffield/lazygit/pull/3807
* Fix range select -> stage failure when deleted file is already staged by @brandondong in https://github.com/jesseduffield/lazygit/pull/3631
* Scroll views up if needed to show all their content by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3839
* Fix crash when filtering commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3838
* Fix cancelled autostash resulting in stuck inline status by @brandondong in https://github.com/jesseduffield/lazygit/pull/3860
* Don't allow opening a menu while the search or filter prompt is open by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3878

### Maintenance βš™οΈ
* Reapply "Check for fixup commits on CI" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3745
* Some cleanups for APIs related to contexts by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3808
* Improve fixup commits script by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3853
* Fix linter warnings by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3854
* Add codespell support (config, workflow to detect/not fix) and make it fix few typos by @yarikoptic in https://github.com/jesseduffield/lazygit/pull/3751
* Get rid of a lot of error return values by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3890
* Add a readme file for the JSON files in pkg/i18n/translations by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3781

## New Contributors
* @yam-liu made their first contribution in https://github.com/jesseduffield/lazygit/pull/3784
* @ppoum made their first contribution in https://github.com/jesseduffield/lazygit/pull/3779
* @Neko-Box-Coder made their first contribution in https://github.com/jesseduffield/lazygit/pull/3815
* @yarikoptic made their first contribution in https://github.com/jesseduffield/lazygit/pull/3751
* @susl made their first contribution in https://github.com/jesseduffield/lazygit/pull/3886

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.43.1...v0.44.0

v0.43.1 (2024-07-13)



## What's Changed
### Fixes πŸ”§
* Fix language auto detection by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3744


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.43.0...v0.43.1


v0.43.0 (2024-07-13)

## 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

https://github.com/user-attachments/assets/9f50824a-6221-4ca0-9cf3-a4d45cc43262

#### Easier rebase onto base branch

_(Add command to rebase onto base branch by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/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 https://github.com/jesseduffield/lazygit/pull/3613)_

You can now also configure to see the divergence from a branch and its base branch with the following config:
```yml
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:

image

#### See detailed divergence from base branch

_(Add command to show divergence from base branch as a left-right log by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/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 https://github.com/jesseduffield/lazygit/pull/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! 


https://github.com/user-attachments/assets/220e4190-b631-40a5-b8dc-7d1a6116ab09


### Other Enhancements πŸ”₯
* Add Squash merge by @noahfraiture in https://github.com/jesseduffield/lazygit/pull/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.
* Improve "Find base commit for fixup" command when there are changes for master commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3645
* Allow setting the similarity threshold for detecting renames by @isti115 in https://github.com/jesseduffield/lazygit/pull/3025
	* For this, press ')' and '(' to increase/decrease the similarity threshold.
	

https://github.com/user-attachments/assets/a85825b8-9110-4090-ba89-ba8221cbc7a8


* Reduce memory consumption when loading large number of commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/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 https://github.com/jesseduffield/lazygit/pull/3577
* Add property outputTitle to CustomCommand by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3579
* Add user config `gui.expandedSidePanelWeight` by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3623
	* You can now increase the height of the selected side panel when you've configured the accordion effect
	```yml
	gui:
      expandFocusedSidePanel: true
      expandedSidePanelWeight: 3
    ```
    
image

* Support range select for amending commit attributes by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3587
	* This lets you select a range of commits and update the author / set the co-author on all of them at once.

https://github.com/user-attachments/assets/2d3e15a9-4acc-4b81-b0e2-a34490ad77ad

* Show "exec" todos in the list of rebase todos by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3654
* Search the model instead of the view in the commits panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3642
* Add prompt to the remote branch checkout menu by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3652
* Always show the "Discard unchanged changes" menu item by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3683
* Show current value in menus by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3628
* Add command to paste commit message from clipboard by @WaterLemons2k in https://github.com/jesseduffield/lazygit/pull/3676
* Stagger popup panels by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3694
* Make commit author length configurable by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3688 (initial implementation by @anikiforov)
* Make opening git difftool more consistent by @part22 in https://github.com/jesseduffield/lazygit/pull/3691
* Update tracking behaviour for branches created from remote branches by @part22 in https://github.com/jesseduffield/lazygit/pull/3712
* Allow setting a default name when creating new branches by @elliotcubit in https://github.com/jesseduffield/lazygit/pull/3487
* Add Token credential request handling by @gmlexx in https://github.com/jesseduffield/lazygit/pull/3647
* Switch between multiple log views by @mkock in https://github.com/jesseduffield/lazygit/pull/3354
* Faster startup by @jwhitley in https://github.com/jesseduffield/lazygit/pull/3284
* Extend icon coverage on remotes and file extensions by @hasecilu in https://github.com/jesseduffield/lazygit/pull/3484
* Add nerdfont icons for .bicep & .bicepparam files by @scottmckendry in https://github.com/jesseduffield/lazygit/pull/3053

### Fixes πŸ”§
* Fix tooltip for fixup command by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3601
* Fix pushing to branch when upstream not stored locally by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3619
* (#3618) Fix pushing a branch to remote with a different name causing error by @JordanllHarper in https://github.com/jesseduffield/lazygit/pull/3630
* Fix secondary window resize by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3637
* Fix truncation of branch names containing non-ASCII characters by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3685
* Fix duplicate keybinding suggestions in status bar after switching repos by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3660
* Fix PTY layout problems by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3658
* Fix custom patch operations for added files by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3684
* Improve render performance by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3686
* Fix wrong highlight in staging panel when entering file with only staged changes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3667
* Always reapply filters on filtered views when model changes, even inactive ones by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3697
* Turn off the highlight of the suggestions panel when it loses focus by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3696
* Fix running lazygit with a language other than English on Windows by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3705
* Fix multi selection stage/discard not working for files with substrings by @brandondong in https://github.com/jesseduffield/lazygit/pull/3599
* Only add commit prefix if branch name matches regex pattern by @phaze-ZA in https://github.com/jesseduffield/lazygit/pull/3703
### Maintenance βš™οΈ
* Add default lazygit config generation in Config.md from JSON schema by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/3565
* Remove hint about Config.md from PR template by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3578
* Add `copyloopvar` to enabled linters by @kyu08 in https://github.com/jesseduffield/lazygit/pull/3586
* Add `lint` to make target by @kyu08 in https://github.com/jesseduffield/lazygit/pull/3593
* Delete the TODO comment about enabling `goconst` in the future from `.golangci.yml` by @kyu08 in https://github.com/jesseduffield/lazygit/pull/3596
* Pin golangci version to 1.58 by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3611
* Improve branch and reflog loading when sorting branches by date by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3609
* Fix boolean config keys not appearing in the generated Config.md by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3622
* Make profiling easier by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3634
* Update `rebase_onto` demo test to match new the rebase menu title by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3636
* Include demos when running integration tests on CI by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3640
* Fix reporting of unexpected selections in integration tests by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3662
* Convert TranslationSets to json by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3649
* Fix go generate on windows by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3706
* Update translations from Crowdin by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3707
* Bump `actions/checkout`, `actions/setup-go`, `actions/cache/restore`, `actions/cache/save` by @kyu08 in https://github.com/jesseduffield/lazygit/pull/3594
* Check for fixup commits on CI by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3742

### Docs πŸ“–
* Upgrade to Alpine Linux v3.19 by @fossdd in https://github.com/jesseduffield/lazygit/pull/3541
* Add flox install by @bryanhonof in https://github.com/jesseduffield/lazygit/pull/3656

## New Contributors
* @JordanllHarper made their first contribution in https://github.com/jesseduffield/lazygit/pull/3630
* @anikiforov made their first contribution in https://github.com/jesseduffield/lazygit/pull/3625
* @WaterLemons2k made their first contribution in https://github.com/jesseduffield/lazygit/pull/3676
* @noahfraiture made their first contribution in https://github.com/jesseduffield/lazygit/pull/3566
* @fossdd made their first contribution in https://github.com/jesseduffield/lazygit/pull/3541
* @scottmckendry made their first contribution in https://github.com/jesseduffield/lazygit/pull/3053
* @elliotcubit made their first contribution in https://github.com/jesseduffield/lazygit/pull/3487
* @bryanhonof made their first contribution in https://github.com/jesseduffield/lazygit/pull/3656
* @gmlexx made their first contribution in https://github.com/jesseduffield/lazygit/pull/3647
* @mkock made their first contribution in https://github.com/jesseduffield/lazygit/pull/3354
* @phaze-ZA made their first contribution in https://github.com/jesseduffield/lazygit/pull/3703
* @hasecilu made their first contribution in https://github.com/jesseduffield/lazygit/pull/3484

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/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/

v0.42.0 (2024-05-19)



It's time once again for a Lazygit release! This one is not as colossal as the prior release (and we intend to have smaller, more frequent releases in future) but there are plenty of good improvements here.

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.

Thanks as usual to the wonderful @stefanhaller for creating/reviewing many of these changes, and thanks to @karimkhaleel who has also stepped up to help out with reviews.

## What's Changed

### Enhancements πŸ”₯
* Make spinner animation configurable by @belyakov-am in https://github.com/jesseduffield/lazygit/pull/3463
* Keep the same commit selected when exiting filtering mode by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3416
* Make URLs in confirmation panels clickable, and underline them by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3446
* Allow viewing all branches git log in status view by default @oakio in https://github.com/jesseduffield/lazygit/pull/3309
* Drop update-ref todos pointing to head by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3456
* Add config options for length of commit hash displayed in commits view by @oliviaBahr in https://github.com/jesseduffield/lazygit/pull/3505
* Show commit graph in divergence view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3537
* Add commitPrefix config for defining a default commit message prefix across all projects by @duckbrain in https://github.com/jesseduffield/lazygit/pull/3291
* Improve `nvim-remote` (neovim) editor mode by @cmoog in https://github.com/jesseduffield/lazygit/pull/3508
* Delete and edit custom commands history items by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3534
* Support externalDiffCommand in diffing mode by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3519

### Fixes πŸ”§
* Correctly request force-pushing in a triangular workflow by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3528
* Fix and speed-up stashing partial files for git version >= 2.35.0 by @dsolerh in https://github.com/jesseduffield/lazygit/pull/3569
* Improve delta pager performance by setting the `TERM` env variable by @bash in https://github.com/jesseduffield/lazygit/pull/3420
* Fix deleting update ref todos by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3439
* Fix crash when filtering the keybindings menu by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3450
* Fix excluding files in submodules or worktrees by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3432
* Fix rewording signed commits when the log.showsignature git config is true by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3431
* Better support for terminal based pinentry programs by @eldios in https://github.com/jesseduffield/lazygit/pull/3478
* Fix amend-to operation not working with non-HEAD merge commit by @brandondong in https://github.com/jesseduffield/lazygit/pull/3510
* Fix clicking in status side panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3547
* Fix loading commits with very long subjects by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3533

### Maintenance βš™οΈ
* Migrate null keybindings to ``, and remove our yaml fork by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3459
* Replace min/max helpers with built-in min/max by @Juneezee in https://github.com/jesseduffield/lazygit/pull/3482
* standardize commit hash commit sha by @pikomonde in https://github.com/jesseduffield/lazygit/pull/3398
* Bump go version to 1.22 by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3574
* Simplify error handling by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3502
* Use errors.New instead of fmt.Errorf with no parameters by @ChengenH in https://github.com/jesseduffield/lazygit/pull/3523
* chore: fix some comments and typos by @knowmost in https://github.com/jesseduffield/lazygit/pull/3535
* Fix deadlock reporting by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3550
* Only run code coverage report on non-fork branches by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3571
* pkg: fix some comment by @HongKuang in https://github.com/jesseduffield/lazygit/pull/3481
* sponsors.yml: Create PR instead of trying to push to a protected branch by @SachinVin in https://github.com/jesseduffield/lazygit/pull/3493
* pkg: fix some typos by @thirdkeyword in https://github.com/jesseduffield/lazygit/pull/3364

### Docs πŸ“–
* Update interactive rebase demo by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3392
* Update Busy.md by @eltociear in https://github.com/jesseduffield/lazygit/pull/3433
* Fix schema link in Config.md by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3451

## New Contributors
* @bash made their first contribution in https://github.com/jesseduffield/lazygit/pull/3420
* @eltociear made their first contribution in https://github.com/jesseduffield/lazygit/pull/3433
* @belyakov-am made their first contribution in https://github.com/jesseduffield/lazygit/pull/3463
* @HongKuang made their first contribution in https://github.com/jesseduffield/lazygit/pull/3481
* @eldios made their first contribution in https://github.com/jesseduffield/lazygit/pull/3478
* @oakio made their first contribution in https://github.com/jesseduffield/lazygit/pull/3309
* @pikomonde made their first contribution in https://github.com/jesseduffield/lazygit/pull/3398
* @SachinVin made their first contribution in https://github.com/jesseduffield/lazygit/pull/3493
* @github-actions made their first contribution in https://github.com/jesseduffield/lazygit/pull/3498
* @thirdkeyword made their first contribution in https://github.com/jesseduffield/lazygit/pull/3364
* @brandondong made their first contribution in https://github.com/jesseduffield/lazygit/pull/3510
* @ChengenH made their first contribution in https://github.com/jesseduffield/lazygit/pull/3523
* @oliviaBahr made their first contribution in https://github.com/jesseduffield/lazygit/pull/3505
* @knowmost made their first contribution in https://github.com/jesseduffield/lazygit/pull/3535
* @duckbrain made their first contribution in https://github.com/jesseduffield/lazygit/pull/3291
* @dsolerh made their first contribution in https://github.com/jesseduffield/lazygit/pull/3569
* @cmoog made their first contribution in https://github.com/jesseduffield/lazygit/pull/3508

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.41.0...v0.42.0

v0.41.0 (2024-03-23)

Hold on tight because this is a HUGE release! This release includes a whopping 595 commits from a period of over 7 months, from 40 different contributors. Thanks to everybody who made this possible, and apologies for taking so long to actually release it: we'll be more frequent in future!

Special thanks to Stefan Haller who is behind many of this release's changes and who has been critical in getting this release across the line.

I've made a video running through the big changes here:

[](https://youtu.be/_REmkoIyPW0)

## What's Changed

Here's some highlighted features:

### Range select

![range-select](https://github.com/jesseduffield/lazygit/blob/assets/demo/interactive_rebase-compressed.gif?raw=true)

You can now press 'v' to toggle range select in any list view, just like you already could in the staging view. You can also press shift+up/down to select a range. You can use range select to:
* stage/discard a range of files
* select multiple commits to fixup/squash/move outside an interactive rebase
* select multiple commits to mark as fixup/squash/etc within an interactive rebase
* select multiple commit files to discard or add to a custom patch (courtesy of @afhoffman)
* select multiple commits to cherry-pick

I have been waiting for this feature for a very long time and it's already made me way more productive. If I need to squash a range of commits I can now easily do it directly rather than needing to squash them one-by-one, or needing to manually start an interactive rebase first. Likewise, it's much easier to select a range of files and stage them than stage them one-by-one.

This is a **Breaking change**: Unfortunately, the 'v' key clashes with the existing key for pasting commits (cherry-pick), so we've replaced that with shift+V and changed the commit copy key to shift+C. If you want the old keybindings back, you can do that like so:
```yml
keybinding:
  universal:
      toggleRangeSelect: 
    commits:
      cherryPickCopy: 'c'
      pasteCommits: 'v'
```

### Auto-wrap in commit editor 

The commit editor now automatically hard-wraps your content by default, so you no longer need to hit the enter key yourself when you approach the margin. You can disable/configure this in your config:

```yml
git:
  commit:
    autoWrapCommitMessage: true
    autoWrapWidth: 72
```

Thanks to @stefanhaller for this feature.

### Easier remote branch checkout

Now when you go to checkout a remote branch, either via the `c` keybinding in the branches view or by pressing `space` on a remote branch, you'll be given the choice to checkout as a local branch or as a detached head (previously it would just check it out as a detached head which typically isn't what you want). This is a **Breaking change** in terms of muscle memory.

Thanks to @stefanhaller for this feature.

### Easier start interactive rebase

Previously, to start an interactive rebase, you would need to navigate to a base commit and press `e` on it. Now you can simply press `i` and regardless of which commit is selected, an interactive rebase will begin that includes all the commits on your branch (or if there are merge commits: all the commits up to first merge commit). 

The above demo for range select showcases this.

### Easier squashing of `fixup!` commits

In a similar vein to the above section, now when you press `shift+S`, you're given the choice of squashing all commits above the selected commit and squashing all commits on the branch, which is what you typically want. This is a **Breaking change** in terms of muscle memory.

Thanks to @stefanhaller for this feature.

### View divergence from upstream branch

If you press `u` on a local branch a menu appears which shows options relating to the branch's upstream. Now, the first option in that menu allows you to view the divergence from the upstream which shows commits to pull and commits to push

Thanks to @stefanhaller for this feature.

### Find appropriate commit for fixup/amend

This one is some serious voodoo: if somebody suggests changes in a PR review, you'll often apply the changes, then go hunting for the appropriate commit to fixup/amend. Now, from the files view you can press `ctrl+f` and if Lazygit can identify an appropriate commit with certainty, it will select that commit for you. Pretty cool!

We've made the algorithm very strict so that you can always trust the result, but this means in circumstances where we can't know for sure which commit is appropriate (such as when your changes only include added lines), it's left to you to manually find the commit. We're keen to get lots of feedback on this feature to see where the sweet spot is.

For more info see [the docs](https://github.com/jesseduffield/lazygit/blob/master/docs/Fixup_Commits.md#finding-the-commit-to-create-a-fixup-for)

Thanks to @stefanhaller for this feature.

### Delete remote branches/tags

Now when you press `d` on a local branch, remote branch, or tag, you're given the option to delete that branch/tag in the remote.

Thanks to @AzraelSec for this feature.

### Add co-author to commit

When you press `a` on a commit an option now appears to add a co-author (something GitHub can read).

Thanks to @omaussa for this feature.

### Filter commits by author

You can now filter commits by author via pressing `ctrl+s` in the commits view and selecting the option to filter by author.

Thanks to @Part22 for this feature.

### Change branch sort order

You can now change branch sort order by pressing `s` in the branches view (and remote branches view). By default local branches are sorted by 'recency' meaning how recently they were checked out, but you can now sort by head commit date and alphabetically.

Thanks to @hosaka for this feature.

### Better bare repo support

We have fixed a bunch of bugs relating to bare repos so if you had issues with them in the past it should work fine now.

Thanks to @jwhitley for this feature.

### Miscelleneous UI changes

* Unstaged files are now shown in white, not red, which is easier on the eyes
* Scrollbars are thinner (and, thus, cooler)
* Keybindings menu now has section headers (@stefanhaller) 
* Error toasts now appear for some errors (less intrusive than popups) (@stefanhaller)
* Search history is now retained (@karimkhaleel)
* Git log is shown by default (@stefanhaller) 

### More Breaking Changes πŸ’₯

* When you press 'g' to bring up the git reset menu, the 'mixed' option is now the first and default, rather than 'soft'. This is because 'mixed' is the most commonly used option.
* Push/pull/fetch loading statuses are now shown against the branch rather than in a popup. This allows you to e.g. fetch multiple branches in parallel and see the status for each branch.
* The git log graph in the commits view is now always shown by default (previously it was only shown when the view was maximised). If you find this too noisy, you can change it back via `ctrl+L` -> 'Show git graph' -> 'when maximised'
* Filtering (e.g. when pressing '/') is less fuzzy by default; it only matches substrings now. Multiple substrings can be matched by separating them with spaces. If you want to revert to the old behavior, set the following in your config:
```yml
gui:
  filterMode: 'fuzzy'
```

## What's Changed
### All Enhancements πŸ”₯
* Add range selection ability on list contexts by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3207
* Allow deleting remote tags/branches from local tag/branch views by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/2738
* Add command to show divergence from upstream by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2871
* Add 'Quick start interactive rebase' action by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3213
* Add command to open git difftool by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3156
* Support editing files in existing neovim instance by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2916
* Show commit mark before showing extra info by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2928
* Jump to middle of the view when selection leaves the visible area by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2915
* Add emacs-keybinds for word navigation by @horriblename in https://github.com/jesseduffield/lazygit/pull/2935
* Add `gui.scrollOffBehavior` config for scrolling list views by half-pages by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2939
* Switch to editor from commit message panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2881
* Select same commit again after pressing "e" to edit a commit by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2954
* Support custom keybindings for confirm discard by @mskelton in https://github.com/jesseduffield/lazygit/pull/2960
* Allow adding a port to webDomain part of services config by @raidora in https://github.com/jesseduffield/lazygit/pull/2908
* Add icons for files with .mdx and .svelte file extensions by @hrstmr in https://github.com/jesseduffield/lazygit/pull/2889
* Section headers in keybindings menu by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2911
* Check for staged files for "Amend commit" and "Create fixup commit" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2970
* Add support for external diff commands (e.g. difftastic) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2868
* Save diff context size in state.yml instead of config.yml by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2969
* Support to reset the current branch to a selected branch upstream by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/2940
* Replace whitespace with '-' when renaming a branch by @calthejuggler in https://github.com/jesseduffield/lazygit/pull/2990
* Add jump-to-panel label config setting by @MariaSolOs in https://github.com/jesseduffield/lazygit/pull/2993
* Add co-author to commits by @omaussa in https://github.com/jesseduffield/lazygit/pull/2912
* Change the default of the "gui.borders" config to "rounded" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2998
* Add a DisabledReason mechanism for menu items and keybindings by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2992
* Allow cherry-picking commits during a rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3013
* Add history for search view by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/2877
* Replace loader panels with waiting status (pull/push/fetch) by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2973
* Add menu to rebase onto selected branch remote upstream by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3020
* Add ability to force portrait mode by @ldelossa in https://github.com/jesseduffield/lazygit/pull/3037
* Add Micro editor preset by @kytta in https://github.com/jesseduffield/lazygit/pull/3049
* Show sync status in branches list by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3021
* Add 'lvim' editor preset for lunarvim by @zottelsheep in https://github.com/jesseduffield/lazygit/pull/3074
* Truncate branch names to make branch status always visible by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3075
* Color file icons by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3080
* Add UserConfig jsonschema generation script by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/3039
* Add a copy-to-clipboard menu to the file view (with `diff` copy options) by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3104
* Fix bottom line alignment by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3076
* Make move up/down blocking by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2966
* Add remote branch sorting menu by @hosaka in https://github.com/jesseduffield/lazygit/pull/3171
* Add age to stash entries by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3174
* Add local branch sorting menu by @hosaka in https://github.com/jesseduffield/lazygit/pull/3182
* Show a friendly error message when starting lazygit from a non-existent cwd by @simonwhitaker in https://github.com/jesseduffield/lazygit/pull/3192
* Replace copy commit SHA with copy commit subject on the y s keybind in the commits view by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/3188
* Add config setting for splitting window vertically in half screen mode by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3133
* Add command to find base commit for creating a fixup by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3105
* Show Toast instead of error panel when invoking a disabled command by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3180
* Show file names in default colour by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3081
* Add config setting to suppress showing file icons by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3216
* Support range select for rebase actions by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3232
* Make range selections created with the mouse non-sticky by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3234
* Support range select for staging/discarding files by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3248
* Inline status for fetching remotes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3238
* Add shortcuts for filtering files by status by @mark2185 in https://github.com/jesseduffield/lazygit/pull/3137
* Keep same selection range when quick-starting an interactive rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3247
* Add loads of tooltips by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3269
* Show better keybinding suggestions by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3203
* Support selecting file range in patch builder by @afhoffman in https://github.com/jesseduffield/lazygit/pull/3259
* Add command to squash all fixups in the current branch by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3274
* Use slimmer scrollbars by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3283
* Clear cherry-picked commits after pasting by @molejnik88 in https://github.com/jesseduffield/lazygit/pull/3240
* Change default of git.log.showGraph to 'always' by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3314
* Support range select removing files from a commit by @afhoffman in https://github.com/jesseduffield/lazygit/pull/3276
* Migrate git.log.showGraph and git.log.order to app state by @hosaka in https://github.com/jesseduffield/lazygit/pull/3197
* Change "git reset" default to --mixed by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3264
* Add author filtering to commit view by @part22 in https://github.com/jesseduffield/lazygit/pull/3302
* Provide two helix presets, one for "helix" and one for "hx" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3346
* Don't show branch head on rebase todos if the rebase.updateRefs config is on by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3340
* Show all submodules recursively by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3341
* Support setting a range of commits to "edit" outside of a rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3370
* Adjust selection after squashing fixups by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3338
* Auto-wrap commit message while typing by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3173
* Add Co-Author support to new commits by @2KAbhishek in https://github.com/jesseduffield/lazygit/pull/3097
* Show "breaking changes" message at startup by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3377
* Allow moving and deleting update-ref todos by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3391
* When checking out a remote branch by name, ask the user how by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3388
* Use substring filtering instead of fuzzy filtering by default by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3376
* Always prompt to return from subprocess if there was an error by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3410
* When adding a new remote, select it and fetch it by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3401
* Support editing multiple files at once using range selection by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3407
* Make it easy to create "amend!" commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3409
* Add config to truncate commit hashes when copying them to the clipboard by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3402
### Fixes πŸ”§
* Fix issue where explosion effect was out-of-view by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2909
* Show dialogue when attempting to open info link fails by @simonwhitaker in https://github.com/jesseduffield/lazygit/pull/2899
* Fix jumping to the correct line from the staging view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2919
* Fix sha colors when rebasing by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2946
* Fix the commit graph display after selection jumps in commits view by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2943
* Handle trailing slash in worktree path by @Krismix1 in https://github.com/jesseduffield/lazygit/pull/2947
* Fix escape not cancelling filter mode, but closing the menu instead by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2977
* Use `Error` method to handle commits url copy from unknown service by @AzraelSec in https://github.com/jesseduffield/lazygit/pull/3007
* Hide waiting status during credentials prompt by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3016
* Use upstream branch when opening pull requests by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2693
* Fix issue where active search inappropriately changed selected line by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3022
* Respect $GIT_WORK_TREE and $GIT_DIR env vars (fix #3010). by @intrntbrn in https://github.com/jesseduffield/lazygit/pull/3024
* Fix crash when trying to filter the list of remotes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3059
* Re-apply filter when model changes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3058
* Use a PTY when calling external diff command by @AFutureD in https://github.com/jesseduffield/lazygit/pull/3120
* Re-enable 'Unset upstream' option when upstream branch is missing by @mark2185 in https://github.com/jesseduffield/lazygit/pull/3086
* Fall back to WithWaitingStatus if item is not visible by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3083
* Fix checking out a tag when there is a branch with the same name by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3179
* Fix preserving the commit message when description contains blank lines by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3170
* Allow multiple fetch commands (or fetch and pull) to run concurrently by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3202
* Support insteadOf URL rewriting when opening URLs in browser by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3177
* Fix keybindings for characters involving AltGr on Windows by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3194
* Do not include keybindings from another view in keybindings menu by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3220
* Fix crash with short branch names by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3219
* Keep same branch selected when fetching a branch while sorted by date by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3186
* Use git rev-parse to obtain repository and worktree paths by @jwhitley in https://github.com/jesseduffield/lazygit/pull/3183
* Pass absolute file paths to all editor commands by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3255
* Disallow cherry-picking merge commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3316
* Fix two problems related to update-ref rebase todo items by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3290
* Fix order of custom commands history by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3286
* Fix some problems with patches if `git diff` was customized with config (e.g. `external` or `noprefix`). by @mricherzhagen in https://github.com/jesseduffield/lazygit/pull/3222
* Use $XDG_STATE_HOME for state.yml by @horriblename in https://github.com/jesseduffield/lazygit/pull/2936
* Fix display of Chinese characters on Windows by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3352
* Allow more than one argument in git.merging.args config by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3336
* Don't strike out reserved keys in menus by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3365
* Don't ask to force-push if the remote rejected updates by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3387
* Fix container detection by @aritmos in https://github.com/jesseduffield/lazygit/pull/3412
### Maintenance βš™οΈ
* Add Click() to GuiDriver by @simonwhitaker in https://github.com/jesseduffield/lazygit/pull/2898
* Add Makefile by @kyu08 in https://github.com/jesseduffield/lazygit/pull/2937
* fix GitHub Actions warnings by @kyu08 in https://github.com/jesseduffield/lazygit/pull/2950
* Add instruction in PR template to start PRs with an imperative by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2967
* Don't show toasts when running integration tests by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2975
* Various debugging improvements by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3000
* Rename `test/results` to `test/_results` by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3012
* Support passing -race flag to integration tests by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3019
* Improve debugging of integration tests by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3029
* Use go:generate for cheatsheet by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3035
* Change Makefile to build non-optimized by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3028
* Update PR template to use go generate command by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3041
* Band-aid fix for submodule/reset.go test failure by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3047
* Remove redundant `len` check by @Juneezee in https://github.com/jesseduffield/lazygit/pull/3051
* Add disabled compat for user config (#2833) by @karimkhaleel in https://github.com/jesseduffield/lazygit/pull/3060
* Fix go.mod file by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3118
* Capture test code coverage stats by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3135
* fixed typo in test description by @schuebel in https://github.com/jesseduffield/lazygit/pull/3101
* Update cheatsheets by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3143
* fix(config): add `yaml:"options"` struct tag to `CustomCommandPrompt`.`[]Options` by @lexor in https://github.com/jesseduffield/lazygit/pull/3163
* Set working directory in lazygit test command by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3215
* Fix CI erroneously marking failed tests as successful by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3221
* Fix cherrypick demo by @afhoffman in https://github.com/jesseduffield/lazygit/pull/3287
* Fix linter warnings by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3351
* Remove support for old style non-interactive rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3348
### Docs πŸ“–
* Mention JSON schema by @EmilyGraceSeville7cf in https://github.com/jesseduffield/lazygit/pull/2893
* Add more demos by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2927
* Add compare-commits demo by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2929
* Feature add git flow instructions by @barthr in https://github.com/jesseduffield/lazygit/pull/2785
* Fix: Update 'zh' to 'zh-CN' in lazygit Language Configuration by @try-to-fly in https://github.com/jesseduffield/lazygit/pull/2842
* Add termux installation instructions to README by @jothi-prasath in https://github.com/jesseduffield/lazygit/pull/2892
* Add installation guide using winget CLI by @ErickRock in https://github.com/jesseduffield/lazygit/pull/2963
* Add install instructions for openSUSE by @pdostal in https://github.com/jesseduffield/lazygit/pull/2727
* Add comments in user config struct by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3040
* commmit - enhance docs for keybinding 'c' for local branch by @smangels in https://github.com/jesseduffield/lazygit/pull/3046
* Updated installation instruction for Gentoo by @hbenazha in https://github.com/jesseduffield/lazygit/pull/3113
* fix: MacOS default path misspelling by @zeromask1337 in https://github.com/jesseduffield/lazygit/pull/3148
* Add codebase guide by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/3206
* Add NixOs installation instructions to README.md by @rsniezek in https://github.com/jesseduffield/lazygit/pull/3249
* Make the links in the status panel point to the current version rather than master by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/3397
### I18n 🌎
* Update translations for polish language by @undg in https://github.com/jesseduffield/lazygit/pull/3389
* Fixed translations for zh_TW by @olivertzeng in https://github.com/jesseduffield/lazygit/pull/3393
### Other Changes
* Improve prompts when amending commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2980
* Update Stacked_Branches.md by @apotterri in https://github.com/jesseduffield/lazygit/pull/3090

## New Contributors
* @EmilyGraceSeville7cf made their first contribution in https://github.com/jesseduffield/lazygit/pull/2893
* @simonwhitaker made their first contribution in https://github.com/jesseduffield/lazygit/pull/2898
* @horriblename made their first contribution in https://github.com/jesseduffield/lazygit/pull/2935
* @kyu08 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2937
* @barthr made their first contribution in https://github.com/jesseduffield/lazygit/pull/2785
* @try-to-fly made their first contribution in https://github.com/jesseduffield/lazygit/pull/2842
* @jothi-prasath made their first contribution in https://github.com/jesseduffield/lazygit/pull/2892
* @ErickRock made their first contribution in https://github.com/jesseduffield/lazygit/pull/2963
* @mskelton made their first contribution in https://github.com/jesseduffield/lazygit/pull/2960
* @raidora made their first contribution in https://github.com/jesseduffield/lazygit/pull/2908
* @pdostal made their first contribution in https://github.com/jesseduffield/lazygit/pull/2727
* @hrstmr made their first contribution in https://github.com/jesseduffield/lazygit/pull/2889
* @calthejuggler made their first contribution in https://github.com/jesseduffield/lazygit/pull/2990
* @MariaSolOs made their first contribution in https://github.com/jesseduffield/lazygit/pull/2993
* @omaussa made their first contribution in https://github.com/jesseduffield/lazygit/pull/2912
* @karimkhaleel made their first contribution in https://github.com/jesseduffield/lazygit/pull/2877
* @intrntbrn made their first contribution in https://github.com/jesseduffield/lazygit/pull/3024
* @ldelossa made their first contribution in https://github.com/jesseduffield/lazygit/pull/3037
* @kytta made their first contribution in https://github.com/jesseduffield/lazygit/pull/3049
* @Juneezee made their first contribution in https://github.com/jesseduffield/lazygit/pull/3051
* @zottelsheep made their first contribution in https://github.com/jesseduffield/lazygit/pull/3074
* @apotterri made their first contribution in https://github.com/jesseduffield/lazygit/pull/3090
* @AFutureD made their first contribution in https://github.com/jesseduffield/lazygit/pull/3120
* @smangels made their first contribution in https://github.com/jesseduffield/lazygit/pull/3046
* @schuebel made their first contribution in https://github.com/jesseduffield/lazygit/pull/3101
* @hbenazha made their first contribution in https://github.com/jesseduffield/lazygit/pull/3113
* @zeromask1337 made their first contribution in https://github.com/jesseduffield/lazygit/pull/3148
* @lexor made their first contribution in https://github.com/jesseduffield/lazygit/pull/3163
* @hosaka made their first contribution in https://github.com/jesseduffield/lazygit/pull/3171
* @jwhitley made their first contribution in https://github.com/jesseduffield/lazygit/pull/3183
* @afhoffman made their first contribution in https://github.com/jesseduffield/lazygit/pull/3259
* @molejnik88 made their first contribution in https://github.com/jesseduffield/lazygit/pull/3240
* @mricherzhagen made their first contribution in https://github.com/jesseduffield/lazygit/pull/3222
* @part22 made their first contribution in https://github.com/jesseduffield/lazygit/pull/3302
* @2KAbhishek made their first contribution in https://github.com/jesseduffield/lazygit/pull/3097
* @undg made their first contribution in https://github.com/jesseduffield/lazygit/pull/3389
* @olivertzeng made their first contribution in https://github.com/jesseduffield/lazygit/pull/3393
* @rsniezek made their first contribution in https://github.com/jesseduffield/lazygit/pull/3249
* @aritmos made their first contribution in https://github.com/jesseduffield/lazygit/pull/3412

## 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/

v0.40.2 (2023-08-07)



## What's Changed
### Fixes πŸ”§
* Fix seg-fault when opening submodule in nested folder by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2903


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.40.1...v0.40.2


v0.40.1 (2023-08-07)



## What's Changed
### Fixes πŸ”§
* update worktree icons for NerdFont V3 by @Saafo in https://github.com/jesseduffield/lazygit/pull/2895
* Fix opening lazygit in a bare repo with specified worktree by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2902
### Maintenance βš™οΈ
* Import stefanhaller's tcell fork for real rather than just replacing it by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2888
* Don't run the check-required-label check on master by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2896
* Use nerdfont version 3 in demos by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2901
### Other Changes
* Fix README.md typo backkground -> background by @mattiasJohnson in https://github.com/jesseduffield/lazygit/pull/2884

## New Contributors
* @mattiasJohnson made their first contribution in https://github.com/jesseduffield/lazygit/pull/2884
* @Saafo made their first contribution in https://github.com/jesseduffield/lazygit/pull/2895

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.40.0...v0.40.1


v0.40.0 (2023-08-05)



# πŸŽ‰  LAZYGIT FIVE YEAR ANNIVERSARY EDITION πŸŽ‰ 

Holy moly, has it really been 5 years since Lazygit's birth? Time flies when you're having fun.

I've written a post celebrating the anniversary [here](https://jesseduffield.com/Lazygit-5-Years-On).

As for this release, we've got some great features here. 

### Worktrees

We now have a worktrees view so you can easily create worktrees and switch to them and so on. I'm not a big worktrees user myself so please raise an issue if you can think of places to improve the UX.

![worktree_create_from_branches-compressed](https://github.com/jesseduffield/lazygit/assets/8456633/3ef0b085-e9d0-42de-af58-16cbae581d34)

### Rebase --onto

Rebasing onto a marked base commit is a very useful feature that we've been sorely lacking for a while
(demo coming soon)

### Auto-refresh on window focus

Auto-refresh on window activation is a complete game-changer. No more having to manually press shift+R when you come back from your editor.

### Nuking the worktree

We also have a fun enhancement in this release: showing an explosion animation when you nuke the working tree.

![nuke-gif](https://github.com/jesseduffield/lazygit/assets/8456633/32b3f91c-fea3-474d-8997-1de2f5e4f5d4)

You'll also notice in the readme we've got some updated demo gifs to showoff Lazygit's features. More of those to come.

## What's Changed
### Features ✨
* Add worktrees view by @jesseduffield (with help from @kadaan) in https://github.com/jesseduffield/lazygit/pull/2147
* Rebase onto branch from a marked base commit by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2835
* Auto-refresh on window activation by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2854
### Enhancements πŸ”₯
* Speed up refresh by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2841
* Add os.copyToClipboardCmd to allow for a custom command #1055 by @redstreet in https://github.com/jesseduffield/lazygit/pull/2784
* Add bisect menu entry that lets you choose bisect terms by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2838
* When bisecting, always mark the current commit as good/bad, not the selected by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2837
* Visualize local branch heads in commits panel, 2nd approach by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2775
* Allow force-tagging if tag exists by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2827
* Save IgnoreWhitespaceInDiffView in state.yml by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2830
* Show loader when rebasing by @KarlHeitmann in https://github.com/jesseduffield/lazygit/pull/2851
* Internationalise logging of commands by @KarlHeitmann in https://github.com/jesseduffield/lazygit/pull/2852
* Show visual explosion effect when nuking worktree by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2861
### Fixes πŸ”§
* Fix issue where using `null` to un-map a keybinding was ignored by @hatredholder in https://github.com/jesseduffield/lazygit/pull/2832
* Show error when trying to open patch menu with an empty patch by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2829
* Fix merge status for update-ref command by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2845
* Stop worktrees view from stealing the window by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2863
* Fix confirmation view sizing by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2879
### Maintenance βš™οΈ
* Standardise on using lo for slice functions by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2846
* Remove redundant secureexec package by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2847
* Add automated demo recordings by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2853
* Remove file watcher code by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2865
* Add more demos to the README by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2866
* Move features to top of readme by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2867
* Add more demos by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2874
### Other Changes
* Create demo output dir if it doesn't already exist by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2857

## New Contributors
* @hatredholder made their first contribution in https://github.com/jesseduffield/lazygit/pull/2832
* @redstreet made their first contribution in https://github.com/jesseduffield/lazygit/pull/2784
* @kadaan made their first contribution in https://github.com/jesseduffield/lazygit/pull/2147
* @KarlHeitmann made their first contribution in https://github.com/jesseduffield/lazygit/pull/2851

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.39.4...v0.40.0


v0.39.4 (2023-07-24)



## What's Changed
### Enhancements πŸ”₯
* Prompt for commit message when moving a custom patch to a new commit by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2800
### Fixes πŸ”§
* Support typing special characters like '[' on non-english keyboards by @Calvin1602 in https://github.com/jesseduffield/lazygit/pull/2818
* Fix infinite wait on push/pull on windows by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2821
### Docs πŸ“–
* Add Gentoo installation documentation to README by @cova-fe in https://github.com/jesseduffield/lazygit/pull/2811

## New Contributors
* @cova-fe made their first contribution in https://github.com/jesseduffield/lazygit/pull/2811
* @Calvin1602 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2818

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.39.3...v0.39.4


v0.39.3 (2023-07-23)



## What's Changed
### Enhancements πŸ”₯
* Include more commit authors in author suggestions by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2807
* Use fuzzy search when filtering a view by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2808
* Better tag creation UX by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2809
* Better word wrap by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2812
### Fixes πŸ”§
* Fix crash caused by simultaneous read/write of scanner buffer by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2813


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.39.2...v0.39.3


v0.39.2 (2023-07-21)

This release fixes an issue on windows where the main view would stop rendering new content. This issue mostly affected users running git through a shim. Thanks to @AndrewSav for the investigation and fix https://github.com/jesseduffield/lazygit/pull/2806

v0.39.1 (2023-07-20)



**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.39.0...v0.39.1



## What's Changed

There's lots of stuff in this release! Some favourites of mine include:
* Filter functionality for branches (and some other list views) activated by '/'
* Showing commit hashes against branches (opt-in with `gui.showBranchCommitHash: true`)
* Various improvements to rebasing functionality
* Nerd font 3 support

As you can see @stefanhaller is behind many of the improvements in this release so kudos to you Stefan! And thanks to all the contributors who made this release possible.

In the next release we're adding worktree support. It's a big feature so we want to get it right! If you use worktrees as part of your daily flow please respond to the poll (and even test out the draft PR) in the [Worktree UX discussion](https://github.com/jesseduffield/lazygit/discussions/2803)

### Enhancements πŸ”₯

* Support filtering on some views with '/' by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2680
* Allow scrolling side views without changing selected item by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2608
* Speed up Lazygit on windows by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2661
* Show commit hashes against branches (opt-in) by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2274
* Add config for nerd fonts version by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2731
* Show rebase todo entry for conflicted commit by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2682
* Don't keep commits that become empty during a rebase by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2644
* Show menu instead of prompt when there are conflicts in a rebase or merge by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2694
* Make "merged" take precedence over "unpushed" by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2628
* Add config for main branches by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2619
* Visualize the "ignore whitespace" config by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2641
* Support dynamically generated suggestions in custom commands prompt by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2686
* Add suggestions presets to prompts in custom commands by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2685
* Allow checking for merge conflicts after running a custom command by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2773
* Use sentence case everywhere by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2672
  - Our casing as all over the place so now we're using 'Sentence case' for everything.
* More compact and flexible date format by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2676
* Add nvim and kakoune editor presets by @screendriver in https://github.com/jesseduffield/lazygit/pull/2591
* Add helix editor preset by @dvic in https://github.com/jesseduffield/lazygit/pull/2668
* Fetch from all remotes by default by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2692
* Better prompt for discarding old file changes by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2707
* Use remote upstreams of main branches to determine merged status of commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2725
* Always show branch heads in diff pane by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2748
* Rely on .gitconfig for verbose commit messages by @scallaway in https://github.com/jesseduffield/lazygit/pull/2664
* Show all tags in commits panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2776
* Update gitlab merge request URL to match new routing by @mazharz in https://github.com/jesseduffield/lazygit/pull/2656
* Right-align key labels in menu by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2652
* Indicate reserved menu keybindings to reduce confusion by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2651

### Fixes πŸ”§
* Fix to show commitPrefixes in commit message with a new blank commit by @longlhh90 in https://github.com/jesseduffield/lazygit/pull/2612
* Fix intermittent rebase continue prompt failure by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2629
* Fix bug where discarding merge conflict file failed by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2662
* Better default text colour on light theme terminals by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2696
* Fix rendering issues in commits view by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2700
* Fix interactive rebase with git 2.25.1 and earlier by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2747
* Fix crash when a background fetch prompts for credentials by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2789
* fix kakoune binary name by @enricozb in https://github.com/jesseduffield/lazygit/pull/2708
* Fix focus issue when opening recent-repos menu at launch by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2715
* Allow discarding changes only from local commits by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2712
* Honour configured comment char on interactive rebase by @gustavopcassol in https://github.com/jesseduffield/lazygit/pull/2639
* Fix the title and text of the Discard Changes prompt by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2706
* Fix broken `git init` prompt by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2771
* Fix potentially wrong help text in commit message panel by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2777
* Fix incorrect focus in accordion mode by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2792
* Fix crash on empty menu by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2799
* Only apply right-alignment on first column of keybindings menu by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2801
* Stop hiding underscores for VSCode by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2699

### Maintenance βš™οΈ
* Run integration tests with all supported git versions by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2754
* Add ability to update yaml path while preserving comments by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2620
* Refactor for better encapsulation by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2519
* Add convenience builder for git commands by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2645
* Construct arg vector manually rather than parse string by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2655
* Allow global logging when developing by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2671
* remove `github.com/jesseduffield/yaml` package by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2508
* Update seconds ago function and add tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2695
* Support matchers on integers in integration tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2704
* Improve yaml_utils by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2718
* Fix typo 'EnteRefName' by @letavocado in https://github.com/jesseduffield/lazygit/pull/2750
* Track busy/idle state for integration tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2765
* Add test for cmd obj cloning by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2780
* Update release notes config and add CI check by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2797
* Add release config for generating release notes by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2793
* Remove Uffizzi by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2690
* Bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 by @dependabot in https://github.com/jesseduffield/lazygit/pull/2490

### Docs πŸ“–
* Add package statuses to readme by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2717

### I18n 🌎
* Add Traditional Chinese support by @tzengyuxio in https://github.com/jesseduffield/lazygit/pull/2688
* Add russian translation by @letavocado in https://github.com/jesseduffield/lazygit/pull/2729

## New Contributors
* @screendriver made their first contribution in https://github.com/jesseduffield/lazygit/pull/2591
* @longlhh90 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2612
* @mazharz made their first contribution in https://github.com/jesseduffield/lazygit/pull/2656
* @dvic made their first contribution in https://github.com/jesseduffield/lazygit/pull/2668
* @dependabot made their first contribution in https://github.com/jesseduffield/lazygit/pull/2490
* @tzengyuxio made their first contribution in https://github.com/jesseduffield/lazygit/pull/2688
* @enricozb made their first contribution in https://github.com/jesseduffield/lazygit/pull/2708
* @letavocado made their first contribution in https://github.com/jesseduffield/lazygit/pull/2729
* @gustavopcassol made their first contribution in https://github.com/jesseduffield/lazygit/pull/2639

If you contributed to this release but don't see your name here, let me know!

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.38.2...v0.39.1

v0.38.2 (2023-05-03)

## What's Changed
* update open docs by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2588
* Only use --empty=keep option with git versions that support it by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2585


**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.38.1...v0.38.2


v0.38.1 (2023-05-02)

## What's Changed
 In v0.38.0 we displayed branch markers in the compact commits view, but this caused some confusion as it wasn't very clear what the markers represented. We're going to revisit the UX for this before considering re-introducing it. If you would like to re-enable the feature, set `gui.experimentalShowBranchHeads` to `true` in the lazygit config. As the name suggests, this is experimental and we may change this config in the future.
 
 * https://github.com/jesseduffield/lazygit/pull/2582 Make branch head markers in compact view opt-in (@stefanhaller)

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.38.0...v0.38.1


v0.38.0 (2023-05-01)

# v0.38

_Most recent patch: [v0.38.2](https://github.com/jesseduffield/lazygit/releases/tag/v0.38.2)_

We've got lots of goodies in this release. Some notable improvements are a revamped commit message panel (@seand52), much better interactive rebase behaviour (@stefanhaller), and much less error-prone custom patch behaviour (also @stefanhaller).

As you can see, @mark2185 and @Ryooooooga continue their reign as top contributors, but we are now also joined by @stefanhaller who is behind many of the big improvements in this release. I'd also like to give a special shoutout to @seand52 who's behind the revamped commit message panel. And thank you to all the other contributors who contributed towards this release: @AKARSHITJOSHI, @axieax, @AzraelSec, @humblepenguinn, @jbrains, @jenskutilek, @knutwalker, @pereBohigas, @scallaway, @shinhs0506, @ShrutiC-git, @TylerBarnes, and @yk-kd.

As always if you're interested in contributing to Lazygit, don't hesitate to pick an issue and have a Go (pardon the pun), and if you'd like to support me please consider [donating](https://github.com/sponsors/jesseduffield).

On a more boring note intended for current/future contributors, we've now fully migrated to a new integration test pattern which makes it much easier to test your changes and prevent regressions. We've also got a huge refactor PR (https://github.com/jesseduffield/lazygit/pull/2519) that's about to go in right after this release goes out, so if you have a PR open that now has conflicts, reach out to me (@jesseduffield) and I can help resolve them.

## Breaking changes

* 'x' no longer opens the menu, you'll need to use '?' or remap the keybinding. We did this so that we could use 'x' for destructive actions like nuking the working tree, as some people accidentally double-tapped 'D' and ... nuked their working tree)
* You can no longer use 'y' or 'n' to respond to a confirmation popup. Instead you'll need to use 'enter' or 'esc'. This is again just freeing up keybindings for more uses.
* We've changed how you configure your editor settings because it was a bit of a mess previously. See [here](https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#configuring-file-editing) for the new approach. You'll get deprecation warnings upon closing lazygit until adjusting your config, so that nobody gets mad when we remove support in a following release.

## Features
* https://github.com/jesseduffield/lazygit/pull/2390 Revamp commit message panel (we now have a separate summary and description panel where 'enter' adds newlines in the description panel) (@seand52)
* https://github.com/jesseduffield/lazygit/pull/2421 Allow creating tags on branches with the 'T' keybinding (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2453 Allow rebasing to first commit (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2476 Add icons for Kotlin files (@pereBohigas)
* https://github.com/jesseduffield/lazygit/pull/2433 Lazy-load commits when viewed within a branch (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2370 Allow interactively rebasing onto a branch (@AzraelSec)
* https://github.com/jesseduffield/lazygit/pull/2344 Allow customising panel border styling with `gui.border` (single/double/rounded/hidden) (@yk-kd)
* https://github.com/jesseduffield/lazygit/pull/2485 Allow rewording the HEAD commit while rebasing (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2552 Better support for stacked branches via the `rebase.updateRefs` git config (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2496 Omit custom commands from history when they start with a space (@mark2185)
* https://github.com/jesseduffield/lazygit/pull/2558 Allow resetting author during rebase (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2523 Improve editor config (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2418 Allow copying remote branch name to clipboard (@mark2185)

## Fixes/Minor Improvements
* https://github.com/jesseduffield/lazygit/pull/2471, https://github.com/jesseduffield/lazygit/pull/2507 Improve custom patch conflict handling (This is a big deal! Custom patches are much nicer to work with now) (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2452 Fix super-slow fetching/pulling (@mark2185)
* https://github.com/jesseduffield/lazygit/pull/2497 Set scrollbar to correct size when loading large diffs (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2514 Better escape code parsing (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2547 More robust TODO rewriting (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2342 Better support for GIT_SEQUENCE_EDITOR (@knutwalker)
* https://github.com/jesseduffield/lazygit/pull/2412 Help menu can no longer be accessed from within the suggestions panel (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2435 Fix return-alt1 keybinding (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2429 Honour rebase.autoSquash git config (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2413 Whitespace can be ignored from more panels (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2551 When opening lazygit with an arg e.g. `lazygit log`, ensure panel is properly focused (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2293 Discarding changes is less error prone (@mark2185)
* https://github.com/jesseduffield/lazygit/pull/2451 Allow beginning an 'edit' rebase from a merge commit (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2448 Colouring of commits in branch commits panel (aka sub-commits panel) now lines up with the regular commits panel (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2444 Next stageable line is now correctly selected after staging a range of lines (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2463 Better i18 support (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2479 Better behaviour for the 'YOU ARE HERE' label when rebasing (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2483 Support hex value for 'gui.selectedLineBgColor' config key (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2486 Recognise when Lazygit is run from within WSL (@humblepenguinn)
* https://github.com/jesseduffield/lazygit/pull/2481 Fix accordion mode when building a custom patch (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2500 Fix issue where file named 'HEAD' caused issues (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2501 Make arrow characters consistent (@jenskutilek)
* https://github.com/jesseduffield/lazygit/pull/2557 Added support for raising gitea PRs
* https://github.com/jesseduffield/lazygit/pull/2577 Editor preset added for Kakoune (@jbrains) (Be sure to check out @jbrains' [blog](https://blog.thecodewhisperer.com/))
* https://github.com/jesseduffield/lazygit/pull/2495 Remove alternative confirmation and return keymappings (@mark2185)
* https://github.com/jesseduffield/lazygit/pull/2377 Refresh staging panel after committing from staging panel (@shinhs0506)
* https://github.com/jesseduffield/lazygit/pull/2521 Fix reflog text colour being too dark (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2539 Better support for custom git URLs when creating pull requests (@axieax)
* https://github.com/jesseduffield/lazygit/pull/2544 Improved handling of renames in diffs (@scallaway)
* https://github.com/jesseduffield/lazygit/pull/2567 WSL support for copying to clipboard (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2555 Stop adding '--force-if-includes' to git push because sometimes people don't want it (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2548 Allow pushing a tag with the same name a a branch (@AKARSHITJOSHI)

## Maintenance:

* https://github.com/jesseduffield/lazygit/pull/2437, https://github.com/jesseduffield/lazygit/pull/2465, https://github.com/jesseduffield/lazygit/pull/2462, https://github.com/jesseduffield/lazygit/pull/2458, https://github.com/jesseduffield/lazygit/pull/2455, https://github.com/jesseduffield/lazygit/pull/2450, https://github.com/jesseduffield/lazygit/pull/2449, https://github.com/jesseduffield/lazygit/pull/2466, https://github.com/jesseduffield/lazygit/pull/2470, https://github.com/jesseduffield/lazygit/pull/2475, https://github.com/jesseduffield/lazygit/pull/2477, https://github.com/jesseduffield/lazygit/pull/2518 Migrate integration tests (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2432 removing dead code (@Ryooooooga)
* https://github.com/jesseduffield/lazygit/pull/2417 Disable ~/.gitconfig when running integration tests (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2447 Remove dead code (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2474 improve staging panel integration tests (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2478 Make integration test more robust (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2467 Remove erroneously added file (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2491 Improve documentation (@TylerBarnes)
* https://github.com/jesseduffield/lazygit/pull/2502 Update Ufizzi workflows (@ShrutiC-git)
* https://github.com/jesseduffield/lazygit/pull/2512 Appease golang-ci lint (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2513 Refactor patch handling (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2515 Fix deprecated rand.Seed (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2541 Make debugger config work when changing repos while debugging (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2545 Ensure test list is up to date in CI (@stefanhaller)
* https://github.com/jesseduffield/lazygit/pull/2550 Fix flakey tests (@jesseduffield)
* https://github.com/jesseduffield/lazygit/pull/2578 Enforce lowercase filenames (@jesseduffield)
## New Contributors
* @pereBohigas made their first contribution in https://github.com/jesseduffield/lazygit/pull/2476
* @humblepenguinn made their first contribution in https://github.com/jesseduffield/lazygit/pull/2486
* @TylerBarnes made their first contribution in https://github.com/jesseduffield/lazygit/pull/2491
* @yk-kd made their first contribution in https://github.com/jesseduffield/lazygit/pull/2344
* @jenskutilek made their first contribution in https://github.com/jesseduffield/lazygit/pull/2501
* @ShrutiC-git made their first contribution in https://github.com/jesseduffield/lazygit/pull/2502
* @axieax made their first contribution in https://github.com/jesseduffield/lazygit/pull/2539
* @scallaway made their first contribution in https://github.com/jesseduffield/lazygit/pull/2544
* @AzraelSec made their first contribution in https://github.com/jesseduffield/lazygit/pull/2370
* @noahziheng made their first contribution in https://github.com/jesseduffield/lazygit/pull/2557
* @AKARSHITJOSHI made their first contribution in https://github.com/jesseduffield/lazygit/pull/2548
* @seand52 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2390

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.37.0...v0.38.0


v0.37.0 (2023-02-01)

## What's Changed

(Jesse: I need to go to sleep right now but I'll clean this changelog up when I get the chance!)

* (#2288) quote remoteName before compiling regex by @nils-a in https://github.com/jesseduffield/lazygit/pull/2290
* Resolve the prompt just before using it by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2296
* [#2279] defaultFgColor entry in theme config by @arnaudperalta in https://github.com/jesseduffield/lazygit/pull/2284
* bump gocui by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2276
* fix ignore file keybinding by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2303
* Commit in staged/unstaged menu by @arnaudperalta in https://github.com/jesseduffield/lazygit/pull/2298
* updated rebase confirmation message by @navazjm in https://github.com/jesseduffield/lazygit/pull/2315
* migrate branch reset integration test by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2320
* Add credential prompts for U2F-backed SSH keys by @bdach in https://github.com/jesseduffield/lazygit/pull/2239
* migrate more tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2323
* more integration test migrating by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2325
* Yet more test migrations by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2329
* fix diff scroll #2309 by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2326
* more integration test refactoring by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2330
* more integration test refactoring by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2334
* rename from asserter to driver by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2335
* remove unused config by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2331
* Add the return alternative key to return in the input box by @wakaka6 in https://github.com/jesseduffield/lazygit/pull/2311
* migrate some more tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2336
* Add easter egg by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2338
* add support for `git push --force-if-includes` by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2333
* more integration test migrations by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2339
* support for older Git versions by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2340
* Add option to allow --verbose commit in editor commits by @knutwalker in https://github.com/jesseduffield/lazygit/pull/2341
* fix goroutine leaks by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2345
* docs(Config.md): add missing keybindings by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2356
* change `git.commit.verbose` to accept "default" by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2343
* feat: create environment for every PR using Uffizzi by @daramayis in https://github.com/jesseduffield/lazygit/pull/2262
* fix installation scripts for Ubuntu by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2372
* fix `ReplacePlaceholderString` by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2376
* remove unused texts by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2388
* Add option to disable the "reword in editor" prompt by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2384
* allow to disable `git.log.order` by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2401
* fix RefName of detached HEAD to works in Chinese by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2398
* Ensure trailing LF when copying diff lines to clipboard by @stefanhaller in https://github.com/jesseduffield/lazygit/pull/2395
* Added copy to clipboard option to the patch options by @phanithinks in https://github.com/jesseduffield/lazygit/pull/2373
* Added new gui.screenMode key to config by @phanithinks in https://github.com/jesseduffield/lazygit/pull/2358

## New Contributors
* @arnaudperalta made their first contribution in https://github.com/jesseduffield/lazygit/pull/2284
* @navazjm made their first contribution in https://github.com/jesseduffield/lazygit/pull/2315
* @bdach made their first contribution in https://github.com/jesseduffield/lazygit/pull/2239
* @wakaka6 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2311
* @knutwalker made their first contribution in https://github.com/jesseduffield/lazygit/pull/2341
* @daramayis made their first contribution in https://github.com/jesseduffield/lazygit/pull/2262
* @stefanhaller made their first contribution in https://github.com/jesseduffield/lazygit/pull/2384
* @phanithinks made their first contribution in https://github.com/jesseduffield/lazygit/pull/2373

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.36.0...v0.37.0


v0.36.0 (2022-11-14)

We've got a whole lot of stuff in this release: improvements to the editor, better custom commands support, snappier staging of files, a tonne of bug fixes, and lots more.

One particularly cool thing that we've added is Github codespaces support (in the repo, not within the Lazygit program itself), so if you've got your eye on an open issue and want to move things along, consider spinning up the lazygit codebase in a code_space_ and having a go at adding a feature / fixing a bug all from the comfort of your browser! See [here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#running-in-a-github-codespace) for more info.

As you can see @Ryooooooga and @mark2185 continue to kick goals with a heap of features and bug fixes in this release, but we also have a whole host of new contributors too. If you want to get involved in contributing, you can peruse the issues board for issues with the good-first-issue label, or jump into the [Fortress of Laziness](https://discord.gg/4FhUY75c), our new discord server

# What's Changed

## Features:

### Editor stuff
* add support for excluding files by @gozes in https://github.com/jesseduffield/lazygit/pull/2016
* add support for emacs keybindings in editor by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2183
* allow emacs character navigation in the commit editor (jump word left/right). by @LiamKearn in https://github.com/jesseduffield/lazygit/pull/2104
* navigate by word in the editor by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2204

### Custom commands stuff

* Add showOutput option to custom commands (fixes #1163)  by @sportshead in https://github.com/jesseduffield/lazygit/pull/2059
* Improve custom commands interface by @Mihai22125 in https://github.com/jesseduffield/lazygit/pull/2109
* Allow `OSCommand.Quote` to be invoked within a custom command by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2193
* add SelectedPath to the list of placeholder values by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2070

### Other stuff
* add stash option to include untracked files by @ajhynes7 in https://github.com/jesseduffield/lazygit/pull/1980
* add optimistic rendering for staging and unstaging files by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2072
* rename stash by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2220
* Show active branch for recent repo by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2005
* Support custom SSH usernames on BitBucket by @xxdavid in https://github.com/jesseduffield/lazygit/pull/2087
* Preserve trailing newline setting when adding to gitignore by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2004
* Add `notARepository: quit` config option to exit Lazygit if run from outside a git repo by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2098
* add stash icon by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2219
* allow `null` in keybindings by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2222

## Bug fixes:
* Fix rewording a merge commit with editor by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2065
* Improved mouse behaviour with international text @mark2185 in https://github.com/jesseduffield/lazygit/pull/2064
* No more 'unversioned' in the bottom right: add build info when building from source by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2076
* fix initial origin of commit message panel by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2221
* fix issue caused by opening a menu over a prompt by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2079
* fix hidden suggestions by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2093
* Gracefully error on bare repositories by @nullishamy in https://github.com/jesseduffield/lazygit/pull/2067
* Fix open commit in browser for some Gitlab repos by @jtraub in https://github.com/jesseduffield/lazygit/pull/2132
* fix initial scroll position of edit box by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2123
* fix initial origin of editor box by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2146
* Validate --path argument when starting lazygit by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2092
* Ignore stderr when loading git status by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2081
* fix: read one line before resuming TUI to prevent unintentional operations by @kawaemon in https://github.com/jesseduffield/lazygit/pull/1636
* allow amending merge commits by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2164
* various improvements to text rendering by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2195
* fix glitchy render of stale data by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2196
* fix stash with empty message by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2218
* fix could-not-access error by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2260
* use better colour defaults (note: theme.lightTheme is no longer a thing) by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2257
* Update go-git to handle negative refspecs by @lukaspiatkowski in https://github.com/jesseduffield/lazygit/pull/2232
* Fix/show loading state when bottomline disabled by @artvi in https://github.com/jesseduffield/lazygit/pull/2273
* fix ambiguous branch name by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2224

## Docs:
* docs(readme): Added lazygit install method on ubuntu #2125 by @yofreee in https://github.com/jesseduffield/lazygit/pull/2126
* fix: document link by @eetann in https://github.com/jesseduffield/lazygit/pull/2108
* fix typo in README.md by @luzpaz in https://github.com/jesseduffield/lazygit/pull/2086
* fix: how to change the config dir for MacOS by @0123takaokeita in https://github.com/jesseduffield/lazygit/pull/2169

## Maintenance:
* Fix github linter errors by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2069
* Add better support for OpensMenu option when creating a menu by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2071
* Update bug_report.md by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2062
* refactor to use generics for file nodes by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2075
* handle nil properly with file nodes by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2077
* Refactor: one context per view by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2023
* refactor merge conflicts code by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2088
* allow rendering to main panels from anywhere by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2089
* Add new integration test pattern by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2094
* even better structure by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2113
* give menu formatting to ignore-or-exclude keybinding option by @mark2185 in https://github.com/jesseduffield/lazygit/pull/2110
* add more integration tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2114
* fail on vendor directory mismatch by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2116
* improve integration test portability by @Ryooooooga in https://github.com/jesseduffield/lazygit/pull/2124
* chore: remove duplicate word in comments by @Abirdcfly in https://github.com/jesseduffield/lazygit/pull/2143
* Migrate some more integration tests by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2137
* remove deprecated function calls by @xiaoliwang in https://github.com/jesseduffield/lazygit/pull/2167
* strip NUL bytes instead of replacing with space by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2197
* Replace regex for retrieving latest version by @TomBaxter in https://github.com/jesseduffield/lazygit/pull/2199
* use boxlayout from lazycore by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2210
* Use lazycore utils: Clamp and GetLazyRootDirectory by @gusandrioli in https://github.com/jesseduffield/lazygit/pull/2223
* add devcontainer folder by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2266
* disable underscores in vscode by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2269
* use tempdir in tests to prevent polluting worktree by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2271
* stop switching focus to commits view when resetting by @jesseduffield in https://github.com/jesseduffield/lazygit/pull/2272
* added gitVersion to version flag by @nitinmewar in https://github.com/jesseduffield/lazygit/pull/2265
* Merge loaders package into git_commands package by @sudoburt in https://github.com/jesseduffield/lazygit/pull/2261

## New Contributors
* @sportshead made their first contribution in https://github.com/jesseduffield/lazygit/pull/2059
* @luzpaz made their first contribution in https://github.com/jesseduffield/lazygit/pull/2086
* @xxdavid made their first contribution in https://github.com/jesseduffield/lazygit/pull/2087
* @eetann made their first contribution in https://github.com/jesseduffield/lazygit/pull/2108
* @nullishamy made their first contribution in https://github.com/jesseduffield/lazygit/pull/2067
* @yofreee made their first contribution in https://github.com/jesseduffield/lazygit/pull/2126
* @jtraub made their first contribution in https://github.com/jesseduffield/lazygit/pull/2132
* @Abirdcfly made their first contribution in https://github.com/jesseduffield/lazygit/pull/2143
* @0123takaokeita made their first contribution in https://github.com/jesseduffield/lazygit/pull/2169
* @Mihai22125 made their first contribution in https://github.com/jesseduffield/lazygit/pull/2109
* @xiaoliwang made their first contribution in https://github.com/jesseduffield/lazygit/pull/2167
* @LiamKearn made their first contribution in https://github.com/jesseduffield/lazygit/pull/2104
* @kawaemon made their first contribution in https://github.com/jesseduffield/lazygit/pull/1636
* @TomBaxter made their first contribution in https://github.com/jesseduffield/lazygit/pull/2199
* @gusandrioli made their first contribution in https://github.com/jesseduffield/lazygit/pull/2223
* @lukaspiatkowski made their first contribution in https://github.com/jesseduffield/lazygit/pull/2232
* @nitinmewar made their first contribution in https://github.com/jesseduffield/lazygit/pull/2265
* @sudoburt made their first contribution in https://github.com/jesseduffield/lazygit/pull/2261
* @ajhynes7 made their first contribution in https://github.com/jesseduffield/lazygit/pull/1980
* @artvi made their first contribution in https://github.com/jesseduffield/lazygit/pull/2273

**Full Changelog**: https://github.com/jesseduffield/lazygit/compare/v0.35.0...v0.36.0


v0.35 (2022-07-20)

## Features

* Nerd fonts now supported! (@Ryooooooga)
![image](https://user-images.githubusercontent.com/8456633/179950774-ff20e6bc-1b0a-493e-9db9-86dcf2dc71aa.png)

* 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
* Various fixes to bugs relating to double-width characters (@Ryooooooga)
* Typo fixes (@casswedson)
* LOTS of other bug fixes (thanks to the glorious @Ryooooooga and @mark2185)

## 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](https://www.youtube.com/watch?v=vFQFkdzh_Js&ab_channel=JesseDuffield). As part of that work I've had to make a detour to do some yak shaving and refactoring (which is happening in https://github.com/jesseduffield/lazygit/pull/2023)

I've also made a [video](https://www.youtube.com/watch?v=kNavnhzZHtk&ab_channel=JesseDuffield) 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 (2022-03-17)

## 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 (2022-02-19)

## Features:
* Git bisect support (press 'b' on a commit to start the process)
 
https://user-images.githubusercontent.com/8456633/150614046-861138e7-be54-47f6-ab9c-b5c22ea34ff1.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](https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-branch-color)) (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 (2022-01-17)

## Changelog
* 8ca71eeb add git bisect run script
* d3a3c8d8 add integration test for merge conflicts resolved externally
* ee622d04 add integration test for staging view
* 2691477a allow sandbox mode with integration tests
* 1c84f773 always specify upstream when pushing/pulling
* 7a690f90 appease CI
* 8d8bdb94 avoid deadlock in merge panel
* ae98797b do not show branch graph when in filtering mode
* befa3564 fix bug which prevented quitting with confirm
* 0092c9d0 fix bug with subprocess
* 99035959 fix merge scroll bug
* 595aca2a make integration test pass
* dafac52a see if this fixes CI linting
* cdcfeb39 stop refreshing the screen so much


v0.32.1 (2022-01-14)

## Changelog
* f5b9ad8c add complex custom command integration test
* 8263d15b fix issue where custom command would not open a menu


v0.32 (2022-01-13)

## 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.