Skip to content

Conversation

stefanhaller
Copy link
Collaborator

As discussed in #4602, we make a general change to how we treat UI settings that can be changed from within lazygit; previously, the rule was to persist them in State.yml so that they automatically remember the last value that was set in the UI; now, we no longer do this, and instead provide user configs for setting defaults which we fall back to on every start.

See #4602 for an in-depth discussion about the pros and cons of either approach, and why we chose this one.

As part of this, we change the default for the sort order of branches to date (aka committerdate), both for local and for remote branches (was recency and alphabetical before, respectively). See the discussion starting here for some reasons.

Fixes #4602.

@stefanhaller stefanhaller added the enhancement New feature or request label Jul 8, 2025
@stefanhaller stefanhaller force-pushed the move-ui-toggles-back-to-user-config branch from 81d99db to 4f94edc Compare July 8, 2025 16:09
Copy link

@wolfgangwalther wolfgangwalther left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went through all commits. I can't judge the non-touched parts ("is anything missing?"), but what I can see looks legit to me.

Just some nits as about the docs.

Comment on lines 17 to 20
| `` ) `` | Increase rename similarity threshold | Increase the similarity threshold for a deletion and addition pair to be treated as a rename.<br><br>The default for this can be changed in the config file with the key 'git.renameSimilarityThreshold'. |
| `` ( `` | Decrease rename similarity threshold | Decrease the similarity threshold for a deletion and addition pair to be treated as a rename.<br><br>The default for this can be changed in the config file with the key 'git.renameSimilarityThreshold'. |
| `` } `` | Increase diff context size | Increase the amount of the context shown around changes in the diff view.<br><br>The default for this can be changed in the config file with the key 'git.diffContextSize'. |
| `` { `` | Decrease diff context size | Decrease the amount of the context shown around changes in the diff view.<br><br>The default for this can be changed in the config file with the key 'git.diffContextSize'. |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know whether these follow a pattern generally used elsewhere, but since shorter is always better, especially for a TUI, how about the following?

The default can be changed in the config file with 'git....'.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with shorter is better. Changed in 4d65874 and 76fef08.

log:
# One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
# 'topo-order' makes it easier to read the git log graph, but commits may not
# appear chronologically. See https://git-scm.com/docs/

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe end this sentence, too?

Suggested change
# appear chronologically. See https://git-scm.com/docs/
# appear chronologically. See https://git-scm.com/docs/.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an existing comment that I don't have much of a reason to change here (see diff in user_config.go). Also, most of the comments in this file don't end with a full stop, it seems. To be very honest I don't care too much...

# Can be changed from within Lazygit with `Log menu -> Commit sort order` (`<c-l>` in the commits window by default).
order: topo-order

# This determines whether the git graph is rendered in the commits panel

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# This determines whether the git graph is rendered in the commits panel
# This determines whether the git graph is rendered in the commits panel.

When toggling the value in the UI we simply overwrite the value in UserConfig;
this would be bad if there was ever a chance that we want to write the user
config back to disk, but it is very unlikely that we can do that, because
currently we have no way to tell which parts of the config come from the global
config file and which ones come from a repo-local one.
At the same time, we change the defaults for both of them to "date" (they were
"recency" and "alphabetical", respectively, before). This is the reason we need
to touch so many integration tests. For some of them I decided to adapt the test
assertions to the changed sort order; for others, I added a SetupConfig step to
set the order back to "recency" so that I don't have to change what the test
does (e.g. how many SelectNextItem() calls are needed to get to a certain
branch).
@stefanhaller stefanhaller force-pushed the move-ui-toggles-back-to-user-config branch from 69b8367 to df48667 Compare July 9, 2025 11:16
Copy link

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
Report missing for 5a5ffb31 98.02%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (5a5ffb3) Report Missing Report Missing Report Missing
Head commit (df48667) 56730 49303 86.91%

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#4717) 202 198 98.02%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Footnotes

  1. Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.

@stefanhaller stefanhaller merged commit 8026fc2 into master Jul 9, 2025
13 checks passed
@stefanhaller stefanhaller deleted the move-ui-toggles-back-to-user-config branch July 9, 2025 11:20
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 4, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.53.0` -> `v0.54.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary>

### [`v0.54.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.54.0)

[Compare Source](jesseduffield/lazygit@v0.53.0...v0.54.0)

<!-- Release notes generated using configuration in .github/release.yml at v0.54.0 -->

Again we don't have any major new features this time (unless you count the support for alt-backspace for deleting words in the commit message editor, which is one of my favorite additions), but lots of smaller quality-of-life improvements and bug fixes. The most notable one is probably the fix for the stale index.lock problem, which was a very long-standing bug that seemed to affect some users much more than others for some reason.

#### What's Changed

##### Enhancements 🔥

- Add confirmation for hard reset by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4704
- Provide user config defaults for UI-changeable settings by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4717
- Improve mouse handling of suggestions panel by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4726
- Add new command "Checkout previous branch" by [@&#8203;kyu08](https://github.com/kyu08) in jesseduffield/lazygit#4728
- Add confirmation for nuking the working tree by [@&#8203;DawidPietrykowski](https://github.com/DawidPietrykowski) in jesseduffield/lazygit#4727
- Support Alt+Backspace for word deletion in text areas by [@&#8203;rtzll](https://github.com/rtzll) in jesseduffield/lazygit#4741
- Don't use hunk mode for added or deleted files even when useHunkModeInStagingView config is on by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4758
- Show \[0] keybinding in main view title by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4754
- Draw divergence from base branch right-aligned in branches view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4785
- Enable hunk staging mode by default by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4780

##### Fixes 🔧

- Fix scrolling hunk into view when selecting next hunk by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4709
- Fix stale main view content when entering/exiting filtering view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4719
- Detect double-clicks properly by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4725
- Fix commit searching during rebase or in divergence from upstream view by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4730
- Fix amending commits whose commit message is empty by [@&#8203;aidancz](https://github.com/aidancz) in jesseduffield/lazygit#4732
- Several small fixes to filtering mode (by path or author) by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4749
- Show diff for renamed file when filtering by path by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4750
- Allow rewording or dropping commits in filtering mode by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4756
- Fix index out of bounds panic when repository has massive tags by [@&#8203;chojs23](https://github.com/chojs23) in jesseduffield/lazygit#4776
- When pressing `a` to stage all files, don't include untracked files when showing only tracked files by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4779
- Fix commit hash colors when filtering by path or aythor by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4789
- Improve temp dir handling by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4784
- Terminate git processes more gracefully to avoid the stale index.lock problem by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4782

##### Maintenance ⚙️

- Raise sponsors MRs as a draft by [@&#8203;jesseduffield](https://github.com/jesseduffield) in jesseduffield/lazygit#4694
- Update the peter-evans/create-pull-request action to v7 by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4695
- Update release workflow by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4703
- Clean up the .gitignore file by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4706
- Remove unused code and texts by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4715
- Remove deprecated edit configs by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4716
- Bump minimum required git version to 2.32 by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4718
- Use a better way of pinning the version of golangci-lint by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4733
- Make the minimum required git version a placeholder in the error text by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4778
- refactor: use slices.Equal to simplify code by [@&#8203;jishudashu](https://github.com/jishudashu) in jesseduffield/lazygit#4764

##### Docs 📖

- Fix broken markdown in auto-generated keybindings documentation by [@&#8203;KEY60228](https://github.com/KEY60228) in jesseduffield/lazygit#4690
- Remove the homebrew tap from the readme by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4705

##### I18n 🌎

- Update translations from Crowdin by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4791

##### Performance Improvements 📊

- Fix performance regression on startup in repos with many tags by [@&#8203;stefanhaller](https://github.com/stefanhaller) in jesseduffield/lazygit#4777

#### New Contributors

- [@&#8203;KEY60228](https://github.com/KEY60228) made their first contribution in jesseduffield/lazygit#4690
- [@&#8203;DawidPietrykowski](https://github.com/DawidPietrykowski) made their first contribution in jesseduffield/lazygit#4727
- [@&#8203;rtzll](https://github.com/rtzll) made their first contribution in jesseduffield/lazygit#4741
- [@&#8203;chojs23](https://github.com/chojs23) made their first contribution in jesseduffield/lazygit#4776
- [@&#8203;jishudashu](https://github.com/jishudashu) made their first contribution in jesseduffield/lazygit#4764

**Full Changelog**: jesseduffield/lazygit@v0.53.0...v0.54.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS40Ni43IiwidXBkYXRlZEluVmVyIjoiNDEuNDYuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reconsider storing UI toggles in state.yml

2 participants