Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add UserConfig jsonschema generation script #3039

Merged

Conversation

karimkhaleel
Copy link
Contributor

  • PR Description

jsonschema generation script with comments as descriptions and default values from the default UserConfig struct.

#2984

  • Please check if the PR fulfills these requirements
  • Cheatsheets are up-to-date (run go run scripts/cheatsheet/main.go generate)
  • Code has been formatted (see here)
  • Tests have been added/updated (see here for the integration test guide)
  • Text is internationalised (see here)
  • Docs (specifically docs/Config.md) have been updated if necessary
  • You've read through your own file changes for silly mistakes etc

@karimkhaleel
Copy link
Contributor Author

For some reason autoformatter did not want to cooperate 🤢

@stefanhaller
Copy link
Collaborator

This is a good start, but there are quite a few things missing.

First, and most important thing: we are doing this schema thing for a reason. We want to use it in VS Code (or maybe other editors that support yaml schemas) and get error checking and completion this way. It seems that you haven't tested this at all, because it totally doesn't work yet. 😄 So, the way to verify whether we're done is not to manually inspect the schema to see if it looks kind of right, but to actually use it in VS Code and see if it provides completions etc.

Reasons why it doesn't work yet:

  • The keys in the schema are all uppercase, but ours start with a lowercase letter. To fix this, we need to change our yaml: struct tags to json: tags so that the jsonschema.Reflector uses them. This requires us to first switch our yaml serialization to use invopop/yaml so that we don't have to duplicate all the tags for both yaml: and json:.
    • This, however, requires us to do Remove yaml fork #2833 first, because switching to invopop/yaml would otherwise break null keybindings again.
  • The generated schema uses "$schema": "https://json-schema.org/draft/2020-12/schema", but VS Code's validator apparently doesn't support this yet. I had to change this to "$schema": "http://json-schema.org/draft-07/schema#" to make it work.

One more less important thought: I'd make this a go:generate thing instead of a stand-alone script. I made #3035 as a preparation for that.

@stefanhaller
Copy link
Collaborator

I was wrong about the "$schema" property: this only causes a warning in VS Code when you open the schema file itself, but it doesn't prevent the schema from working in config.yml. So it looks like we needn't do anything about that.

@karimkhaleel
Copy link
Contributor Author

Thank you for the comments!

You're right, I probably should have done some tests on the real project 😆 I was testing it with some dummy schemas.

I'm currently working on the naming issue. If we want to retain the default values from the GetDefaultConfig struct, I'll need to add a file to the vendor directory of the invopop/jsonschema package. I want to hook into the behavior of assigning field names and generate a mapping between the tag names and the struct names. Would this be better to do in a fork or just directly in the vendor directory? I would normally just monkeypatch this sort of thing in python.

About the json vs yaml tag:
If we set FieldNametag to yaml then it will pick up on the names we set there, while still being able to use the yaml serializer we have now.
#2984 (comment)

Going to work on some more of the jsonschema tags as well, using https://github.com/jesseduffield/lazygit/pull/2859/files as a reference.

Regarding the go:generate command, this is my first encounter with it. If understand correctly, we simply need to add a comment that triggers the schema generation script? Are we trying to configure the project so that executing the go:generate command from the project's root will recursively run all the go:generate commands defined in its subdirectories? If so, should I be adding a go:generate comment in any location other than the jsonschema/main.go file included in this PR?

@stefanhaller
Copy link
Collaborator

I'll need to add a file to the vendor directory of the invopop/jsonschema package.

Can you explain more why this is necessary? Changing things in the vendor directory is not an option, so you'd have to create a fork. But I think forking should always be the last resort, so I'd like to understand better what you're trying to do and why it requires forking.

Have you seen the KeyNamer field of Reflector; might this help?

About the json vs yaml tag: If we set FieldNametag to yaml then it will pick up on the names we set there, while still being able to use the yaml serializer we have now.

Hm, reading the discussion in invopop/jsonschema#28 I got the impression that using yaml tags is not the way to go, and changing them to json is. But if this works, fine with me.

Regarding the go:generate command, this is my first encounter with it. If understand correctly, we simply need to add a comment that triggers the schema generation script? Are we trying to configure the project so that executing the go:generate command from the project's root will recursively run all the go:generate commands defined in its subdirectories? If so, should I be adding a go:generate comment in any location other than the jsonschema/main.go file included in this PR?

The typical pattern for go:generate is to have two files: the first has the implementation (basically the code in your scripts/jsonschema/main.go), and contains a //go:generate comment that calls the second file; the second file is a small one that just has a main() function which calls the code in the first one, and it has a comment //go:build ignore so that its main function doesn't conflict with the real one. If you rebase onto master, you can use the cheatsheet generator as an example.

I'd also suggest to put the code in pkg/jsonschema, and the generated schema in schema/config.json.

@karimkhaleel
Copy link
Contributor Author

These are the changes I am thinking of making in a fork: 070cfa4

What I am trying to do is use the struct key names from the GetDefaultConfig struct to access the properties that the invopop/jsonschema package is generating. I am trying to get the values from the default config and set them to the Default fields in the output of invopop/jsonschema.

I looked at the KeyNamer field of reflector and it unfortunately does not have access to the original name of the struct key that I am looking for. I might be missing something since I am still not entirely familiar with Go, but I am pretty sure it would be impossible to retrieve the value that I am looking for unless I modify the behavior of reflectFieldName. I guess I could implement something that will build a similar structure to what invopop/jsonschema is already doing and then use that as a reference, but that seems a little rough.

I also refactored the code like you recommended. https://github.com/karimkhaleel/lazygit/tree/jsonschema-userconfig-modified-vendor

Question about go generate: Would we have to invoke go generate from different directories in the CI pipeline? Or is there some way to run all of them at once?

@stefanhaller
Copy link
Collaborator

Hm, I see. Yeah, it would be possible to reflect the structs on our side and build a mapping table of field names to tag names, but I agree that it sucks to have to do that when invopop/jsonschema already has all the code for that. I don't see another option than forking either, then. It would be worth filing an issue at invopop and seeing if they would be up for accepting a PR for the change.

I also refactored the code like you recommended.

Nice, this is going in a good direction. Can we make the name of the schema file config.json instead of schema.json? We might add schemas for other files in the future (e.g. for state.yml, although that wouldn't be as useful since users are not supposed to edit that).

Question about go generate: Would we have to invoke go generate from different directories in the CI pipeline? Or is there some way to run all of them at once?

Generating the schema is something that a developer would do, this doesn't happen on CI. We already have a check on CI that the generated schema is up to date; this would automatically take care of this new one, too. See 5ccc95b.

Running them all at once (locally) is done with go generate ./..., or make generate which does the same.

@stefanhaller
Copy link
Collaborator

I noticed another issue: invopop/jsonschema marks all keys as required unless they are tagged with omitempty. We are tagging only a few keys with omitempty though, but in our config nothing is required, really. So it would be good to find a way to make omitempty the default, so that we don't have to add it everywhere.

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch 2 times, most recently from 481e576 to 43ca591 Compare October 1, 2023 18:12
@karimkhaleel
Copy link
Contributor Author

I noticed another issue: invopop/jsonschema marks all keys as required unless they are tagged with omitempty.

fixed with a flag to invopop/jsonschema

Can we make the name of the schema file config.json instead of schema.json?

done

I don't see another option than forking either, then. It would be worth filing an issue at invopop and seeing if they would be up for accepting a PR for the change.

Forked and included it in this changeset. I'll raise an issue and submit a PR, should I reference this thread?

Generating the schema is something that a developer would do, this doesn't happen on CI. We already have a check on CI that the generated schema is up to date; this would automatically take care of this new one, too. See 5ccc95b.

ah, very clever :)

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch from 43ca591 to cef44a2 Compare October 1, 2023 18:47
@karimkhaleel
Copy link
Contributor Author

I also added some jsonschema tags. I spent way more time than I would like to admit doing it programatically, and using the jsonschema from here as a reference: https://github.com/jesseduffield/lazygit/pull/2859/files. The oneOf property is giving me some trouble though. I will continue to attempt to programatically get them out of the reference schema but I need some more time for that.

Also I can't seem to figure out how to appease the check auto generated files job. I ran the go generate ./... command and it's not showing me any diffs on my machine.

Just noticed this too :)
image
image

Copy link
Collaborator

@stefanhaller stefanhaller left a comment

Choose a reason for hiding this comment

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

This is coming along really nicely, great progress.

It will take me a few days to review this thoroughly; I noticed a few things already though:

  • when trying to set a keybinding to null, you get "Incorrect type. Expected string". Emily solved this with a "type": ["string", "null"] on the keybinding type. (I told you we should do Remove yaml fork #2833 first, then we wouldn't have this problem. 😉)
  • When I run go generate ./... locally, I get a modified schema, like on CI. The only way I can explain this is that you had the schema open in VS Code, and hit Command-S before committing it, and you have a different auto-formatter than I do. Not sure what else could explain this.
  • I find that all the indirections through $defs make the schema unnecessarily complicated, and I wonder if it's easier to work with when setting DoNotReference to true. (Not that it matters for end users.)

pkg/config/user_config.go Outdated Show resolved Hide resolved
vendor/github.com/karimkhaleel/jsonschema/reflect.go Outdated Show resolved Hide resolved
@karimkhaleel
Copy link
Contributor Author

karimkhaleel commented Oct 1, 2023

I find that all the indirections through $defs make the schema unnecessarily complicated, and I wonder if it's easier to work with when setting DoNotReference to true. (Not that it matters for end users.)

Done.

When I run go generate ./... locally, I get a modified schema, like on CI. The only way I can explain this is that you had the schema open in VS Code, and hit Command-S before committing it, and you have a different auto-formatter than I do. Not sure what else could explain this.

I don't have any editors open when doing this. I swear! 😆 I repeated this several times already and can't seem to make it produce a diff on my desktop. I tried running go generate on my laptop and it did indeed produce a diff. Going to push from there I guess.

For some reason my desktop wants to remove the edit examples:

image

I think it has something to do with how the jsonschema package is running on my laptop vs desktop. Very strange.

@karimkhaleel
Copy link
Contributor Author

Oh. It still fails the CI check. I don't know what I can do about this. Maybe you could try running the generate command and commiting the file your computer produces? Maybe there is some issue with both of my machines.

@karimkhaleel
Copy link
Contributor Author

I find that all the indirections through $defs make the schema unnecessarily complicated, and I wonder if it's easier to work with when setting DoNotReference to true. (Not that it matters for end users.)

Done.

Undone. It breaks the way that I am getting the default values out of the default config.

when trying to set a keybinding to null, you get "Incorrect type. Expected string". Emily solved this with a "type": ["string", "null"] on the keybinding type. (I told you we should do #2833 first, then we wouldn't have this problem. 😉)

I'll take a look at this issue and see if I can make sense of it. Aren't we going to have to ask users to update their configs though?

@stefanhaller
Copy link
Collaborator

when trying to set a keybinding to null, you get "Incorrect type. Expected string". Emily solved this with a "type": ["string", "null"] on the keybinding type. (I told you we should do #2833 first, then we wouldn't have this problem. 😉)

I'll take a look at this issue and see if I can make sense of it. Aren't we going to have to ask users to update their configs though?

We can do this in phases. First we only add support for <disabled>, but keep using our yaml fork which supports null. That way we don't break people's config. We still need to tell them (via release notes or whatever) that null is deprecated. In the schema we'd only support string, so people who use the schema when editing their config already get alerted that null is not valid (although it still works).

Then, after enough time has passed, we remove our fork and stop supporting null that way.

@stefanhaller
Copy link
Collaborator

OK, the CI failure is a bit puzzling. When I generate the schema locally on your branch, I don't get any modifications compared to what's checked in. Still, the CI check fails, and this seems to be caused by the check not really running against the tip of your branch, but against a synthesized merge commit that pretends that your branch was merged to master already. I find this confusing in a way, but it also makes sense, because it alerts you that you would break master if you would merge now.

The solution of course is to simply rebase onto master, this should fix the check.

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch 2 times, most recently from da93ca4 to 177f331 Compare October 4, 2023 18:07
@karimkhaleel
Copy link
Contributor Author

Still, the CI check fails, and this seems to be caused by the check not really running against the tip of your branch, but against a synthesized merge commit that pretends that your branch was merged to master already.

I guess that makes sense.

We can do this in phases. First we only add support for , but keep using our yaml fork which supports null.

I'll look into this then.

I'll also try to get the default values insertion code to work with the DoNotReference flag. And I'll also see if I can get the oneOf tags set up.

@karimkhaleel
Copy link
Contributor Author

Fixed it up so that DoNotReference works with the default values extraction. Had some issues with the AuthorColors, BranchColors, and CommitPrefixes values. They got set to null for some reason.

@jesseduffield jesseduffield added the enhancement New feature or request label Oct 9, 2023
Copy link
Collaborator

@stefanhaller stefanhaller left a comment

Choose a reason for hiding this comment

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

I'm sorry for the delay, I kind of lost track of who's waiting for whom here. 😅 Do I understand right that you consider this ready from your side?

I pushed one small commit to fix two comments. Nothing to do with your changes, this was already wrong on master, but we might include it here while we're at it.

I think it would make sense to squash all commits into one, could you please do that and rebase on master?

I have a few more minor things below, but then I think we're good to go. This is looking really good now.

pkg/config/user_config.go Outdated Show resolved Hide resolved
// e.g.
// diff-so-fancy
// delta --dark --paging=never
// ydiff -p cat -s --wrap --width={{columnWidth}}
Pager string `yaml:"pager"`
Pager string `yaml:"pager" jsonschema:"example=delta --dark --paging=never,example=diff-so-fancy,example=ydiff -p cat -s --wrap --width={{columnWidth}},minLength=1"`
Copy link
Collaborator

Choose a reason for hiding this comment

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

These examples don't seem to work; the only one that shows up in the schema is "diff-so-fancy". I'm not sure this is because of the whitespace or because of the = in the values. I also couldn't figure out how to fix it; adding single quotes around the values doesn't help.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

could be fixed using this approach: cf48f4d

otherwise we can just remove this

Copy link
Collaborator

Choose a reason for hiding this comment

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

Nice, I like this.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Do you think we should just keep these jsonschema relevant functions in the user_config file or should we put them in a different file in the same package?

I guess we could also define the type and the extend function in the jsonschema package and import it into user_config

Copy link
Collaborator

Choose a reason for hiding this comment

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

Since we define most of the rest of what goes into the schema in user_config.go, I think these extra things might as well be there, too. Not a strong opinion, I could go either way, and since @jesseduffield usually has a better sense of what should go where, I'll let him decide.

pkg/config/user_config.go Outdated Show resolved Hide resolved
// If true, show a confirmation popup before quitting Lazygit
ConfirmOnQuit bool `yaml:"confirmOnQuit"`
// If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
QuitOnTopLevelReturn bool `yaml:"quitOnTopLevelReturn"`
// Keybindings
Keybinding KeybindingConfig `yaml:"keybinding"`
Keybinding KeybindingConfig `yaml:"keybinding" jsonschema:"example=<enter>,example=<c-b>,example=g"`
Copy link
Collaborator

Choose a reason for hiding this comment

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

These examples don't look right. This is the container for all keybindings, not a single key binding, so it doesn't make sense to have this here. It also didn't make it into the schema, probably because you can't have examples on an object.

You'd really want to have these on every single keybinding, but I'm not sure how to achieve that, or how hard we should try.

Copy link
Contributor Author

@karimkhaleel karimkhaleel Oct 21, 2023

Choose a reason for hiding this comment

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

Removed in: dfddb86

could use JSONSchemaProperty(prop string) any from the jsonschema library on all of the keybinding configs to add these examples to each entry but that's kind of 🤢 in my opinion.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Couldn't you do it in the same way as the Pager examples? Have type KeybindingType string, use that for all bindings, and then use JSONSchemaExtend to attach the examples? I'm not sure it's important enough though.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, that would also work. We would just have to find all the places these keybinds go and remember to cast them to strings. Is that a trade off we would be willing to take?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Finding them is not the issue, the compiler will tell us. Whether it's worth it, I'm not sure; maybe not.

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch from c742bad to cf48f4d Compare October 21, 2023 18:04
@karimkhaleel
Copy link
Contributor Author

I'm sorry for the delay, I kind of lost track of who's waiting for whom here. 😅 Do I understand right that you consider this ready from your side?

I pushed one small commit to fix two comments. Nothing to do with your changes, this was already wrong on master, but we might include it here while we're at it.

I think it would make sense to squash all commits into one, could you please do that and rebase on master?

I have a few more minor things below, but then I think we're good to go. This is looking really good now.

No worries. I was traveling this last week so I wasn't able to work on this.

I experimented with the jsonschema library a bit more and found that we can use the JSONSchemaExtend function to get some of the more tricky constructs into the schema (example in cf48f4d). I'm not sure it's that developer friendly though, especially when we have to deal with primitives.

Apologies for not looking over the code as much as I should have. I wrote a script to rip them from the config that Emily wrote and assumed that they were fully vetted already.

Pushed the relevant fixes and rebased, but did not squash yet. The commit using JSONSchemaExtend is just an example of what we can do. We can just as easily use it to define oneOf or anyOf constraints.

@stefanhaller
Copy link
Collaborator

The commit using JSONSchemaExtend is just an example of what we can do. We can just as easily use it to define oneOf or anyOf constraints.

What would be examples of where we would use oneOf or anyOf?

@stefanhaller
Copy link
Collaborator

Color could be a type we could set up like this with oneOf

Right. Personally I'd also be ok with leaving it as "string" for now, and maybe consider refining it later, if at all.

@stefanhaller
Copy link
Collaborator

Looking at the generated schema again in more detail, there's something funny about the defaults: you have them on the leaf nodes as expected, but then there's also a "default" entry on each struct, which doesn't seem to make sense to me. It seems that this diff fixes it:

diff --git a/pkg/jsonschema/generate.go b/pkg/jsonschema/generate.go
index d1d69625b..38b582844 100644
--- a/pkg/jsonschema/generate.go
+++ b/pkg/jsonschema/generate.go
@@ -65,9 +65,7 @@ func setDefaultVals(defaults any, schema *jsonschema.Schema) {
 
 		if isStruct(value) {
 			setDefaultVals(value, subSchema)
-		}
-
-		if !isZeroValue(value) {
+		} else if !isZeroValue(value) {
 			subSchema.Default = value
 		}
 	}

@karimkhaleel
Copy link
Contributor Author

Looking at the generated schema again in more detail, there's something funny about the defaults: you have them on the leaf nodes as expected, but then there's also a "default" entry on each struct, which doesn't seem to make sense to me. It seems that this diff fixes it:

You're right. Good catch.

@karimkhaleel
Copy link
Contributor Author

Just moved the schema extension function closer to the PagerType alias.

@stefanhaller
Copy link
Collaborator

@karimkhaleel Do I understand it right that this is ready from your side?

I just had a look again, and it looks good to me; I'd still ask you to squash most of the commits though. I think we should end up with two or at most three commits in this branch.

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch from 0ea5a6a to a9fab42 Compare November 5, 2023 09:05
@karimkhaleel
Copy link
Contributor Author

It's all done from my side. Was just waiting for any extra input about where to put the JSONSchemaExtend functions, and thought the commit history might be useful there. Just squashed and rebased everything. Thank you for your time and patience @stefanhaller! I have learned so much from doing this.

@karimkhaleel karimkhaleel force-pushed the jsonschema-userconfig branch from a9fab42 to cc3d84f Compare November 5, 2023 09:14
@karimkhaleel
Copy link
Contributor Author

Just made one last tiny change to the commit history though. Made the addition of the forked invopop/jsonschema a separate commit.

@stefanhaller
Copy link
Collaborator

I'm a bit torn about that last change. On the one hand it's nice to separate the two changes so that the second commit becomes much clearer; on the other hand, calling go mod tidy on the first commit removes the added dependency again because it's unused. I'd still lean towards keeping it separated though, hopefully that problem doesn't matter in practice.

Regarding the PR as a whole: I'm happy with this, great work! I'd be willing to merge it in this state, but @jesseduffield had some concern about why we need to fork, so I'd wait for his approval on that question. (For reference: the discussion about why we need to fork starts here.)

My questions about the fork:

  • I had a quick look at the upstream repo, and I didn't see an issue or PR there. It would be nice to contribute the change upstream so that we can eventually move back to the official repo.
  • Assuming the change doesn't get accepted upstream, do you have a plan how to track upstream changes? Like, rebase your fork onto upstream occasionally? It would be good to have a clear strategy here to avoid falling behind any upstream development.

@karimkhaleel
Copy link
Contributor Author

About the fork:
I just raised an issue and submitted a PR for the changes I made.

invopop/jsonschema#116
invopop/jsonschema#117

Assuming the change doesn't get accepted we will have two options:

  1. Rebasing onto upstream occasionally.
  2. Rewriting setDefaultVals in jsonschema/generate.go to use the tag values of the UserConfig instead of the field names, and making a note to not use functions like KeyNamer in the future without also reflecting those changes in the setDefaultVals function.

@stefanhaller stefanhaller added the blocks-release Must be addressed before we can cut the next release label Nov 30, 2023
Copy link
Owner

@jesseduffield jesseduffield left a comment

Choose a reason for hiding this comment

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

LGTM! (as discussed in the town hall meeting, the fork adds functionality that is of general use and not specific to lazygit so there's a good chance they'll eventually be merged, so using a fork is fine)

@stefanhaller stefanhaller force-pushed the jsonschema-userconfig branch from cc3d84f to ba79d4b Compare December 2, 2023 09:41
@stefanhaller stefanhaller force-pushed the jsonschema-userconfig branch from ba79d4b to 1a035db Compare December 2, 2023 09:46
@stefanhaller
Copy link
Collaborator

@karimkhaleel So we finally got approval for this and are ready to merge. Sorry that it took so long.

Thanks for the great work, this is a big improvement! Looking forward to your next contribution. 😄

We now need a PR on https://github.com/SchemaStore/schemastore to change the URI to point to ours, and to remove the manually uploaded schema there. Would you be up for doing that too?

@stefanhaller
Copy link
Collaborator

@jesseduffield Something failed with uploading the coverage report to codacy. Would you have time to look into that? Since this seems unrelated to this branch, I'm inclined to merge anyway.

@jesseduffield
Copy link
Owner

@stefanhaller yep feel free to ignore that error. Looks like that secret codacy token isn't defined in forks. I'll look into a fix

@karimkhaleel
Copy link
Contributor Author

We now need a PR on https://github.com/SchemaStore/schemastore to change the URI to point to ours, and to remove the manually uploaded schema there. Would you be up for doing that too?

I would be up for submitting a PR to schemastore. We just want it to point to the master blob config on our repo right?

This is what I would be submitting to them: SchemaStore/schemastore@master...karimkhaleel:schemastore:update-lazygit

Should I submit the PR or should I wait before this branch is merged to master?

@stefanhaller stefanhaller merged commit 1555503 into jesseduffield:master Dec 2, 2023
13 of 14 checks passed
@stefanhaller
Copy link
Collaborator

We just want it to point to the master blob config on our repo right?

Yes, that's right.

Should I submit the PR or should I wait before this branch is merged to master?

It's merged, go ahead!

@stefanhaller
Copy link
Collaborator

@stefanhaller yep feel free to ignore that error. Looks like that secret codacy token isn't defined in forks. I'll look into a fix

I found this post which looks relevant.

renovate bot referenced this pull request in scottames/dots Mar 26, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [aquaproj/aqua-registry](https://togithub.com/aquaproj/aqua-registry)
| minor | `v4.154.0` -> `v4.155.1` |
| [cli/cli](https://togithub.com/cli/cli) | minor | `v2.45.0` ->
`v2.46.0` |
| [derailed/k9s](https://togithub.com/derailed/k9s) | patch | `v0.32.3`
-> `v0.32.4` |
| [eza-community/eza](https://togithub.com/eza-community/eza) | patch |
`v0.18.7` -> `v0.18.8` |
| [golangci/golangci-lint](https://togithub.com/golangci/golangci-lint)
| minor | `v1.56.2` -> `v1.57.1` |
|
[gruntwork-io/terragrunt](https://togithub.com/gruntwork-io/terragrunt)
| patch | `v0.55.16` -> `v0.55.20` |
| [jesseduffield/lazygit](https://togithub.com/jesseduffield/lazygit) |
minor | `v0.40.2` -> `v0.41.0` |
| [junegunn/fzf](https://togithub.com/junegunn/fzf) | patch | `0.48.0`
-> `0.48.1` |
| [lsd-rs/lsd](https://togithub.com/lsd-rs/lsd) | minor | `v1.0.0` ->
`v1.1.2` |
| [mikefarah/yq](https://togithub.com/mikefarah/yq) | minor | `v4.42.1`
-> `v4.43.1` |
| [simulot/immich-go](https://togithub.com/simulot/immich-go) | minor |
`0.12.0` -> `0.13.0` |
| [snyk/cli](https://togithub.com/snyk/cli) | minor | `v1.1284.0` ->
`v1.1286.0` |
| [starship/starship](https://togithub.com/starship/starship) | minor |
`v1.17.1` -> `v1.18.1` |
| [twpayne/chezmoi](https://togithub.com/twpayne/chezmoi) | patch |
`v2.47.1` -> `v2.47.2` |
| [weaveworks/eksctl](https://togithub.com/weaveworks/eksctl) | minor |
`v0.174.0` -> `v0.175.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>aquaproj/aqua-registry (aquaproj/aqua-registry)</summary>

###
[`v4.155.1`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.155.1)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.155.0...v4.155.1)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.155.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.155.0)
| https://github.com/aquaproj/aqua-registry/compare/v4.155.0...v4.155.1

##### Others


[#&#8203;21239](https://togithub.com/aquaproj/aqua-registry/issues/21239)
Rename the package crates.io/shellharden to anordal/shellharden
[@&#8203;hituzi-no-sippo](https://togithub.com/hituzi-no-sippo)

shellharden started releasing pre-built binaries, so we changed the
package type from `cargo` to `github_release` from shellharden v4.3.1.


[https://github.com/anordal/shellharden/pull/57](https://togithub.com/anordal/shellharden/pull/57)
https://github.com/anordal/shellharden/releases/tag/v4.3.1

> \[!WARNING]
> Please rename the package `crates.io/shellharden` to
`anordal/shellharden`
>
> ```yaml
> packages:
> - name: anordal/[email protected]
> ```
>
> Note that Renovate will update crates.io/shellharden to
crates.io/[email protected], but it wouldn't work.
> You have to change the version to `v4.3.1`.

###
[`v4.155.0`](https://togithub.com/aquaproj/aqua-registry/releases/tag/v4.155.0)

[Compare
Source](https://togithub.com/aquaproj/aqua-registry/compare/v4.154.0...v4.155.0)


[Issues](https://togithub.com/aquaproj/aqua-registry/issues?q=is%3Aissue+milestone%3Av4.154.0)
| [Pull
Requests](https://togithub.com/aquaproj/aqua-registry/pulls?q=is%3Apr+milestone%3Av4.154.0)
| https://github.com/aquaproj/aqua-registry/compare/v4.154.0...v4.155.0

#### 🎉 New Packages


[#&#8203;21127](https://togithub.com/aquaproj/aqua-registry/issues/21127)
[ynqa/jnv](https://togithub.com/ynqa/jnv): interactive JSON filter using
jq [@&#8203;ponkio-o](https://togithub.com/ponkio-o)

[#&#8203;21079](https://togithub.com/aquaproj/aqua-registry/issues/21079)
[zaghaghi/openapi-tui](https://togithub.com/zaghaghi/openapi-tui):
Terminal UI to list, browse and run APIs defined with openapi spec
[@&#8203;wancup](https://togithub.com/wancup)

#### Fixes


[#&#8203;21122](https://togithub.com/aquaproj/aqua-registry/issues/21122)
Update some packages to support Cosign v2

⚠️ To install the following packages, aqua v2.25.1 or later is required.

-   aquaproj/aqua-registry-updater
-   aquaproj/registry-tool
-   argoproj/argo-workflows
-   chainguard-dev/apko
-   chainguard-dev/melange
-   charmbracelet/gum
-   goreleaser/nfpm
-   kubernetes-sigs/zeitgeist
-   lintnet/lintnet
-   suzuki-shunsuke/ci-info
-   suzuki-shunsuke/circleci-config-merge
-   suzuki-shunsuke/cmdx
-   suzuki-shunsuke/ghalint
-   suzuki-shunsuke/ghcp
-   suzuki-shunsuke/github-comment
-   suzuki-shunsuke/mkghtag
-   suzuki-shunsuke/nllint
-   suzuki-shunsuke/pinact
-   suzuki-shunsuke/renovate-issue-action
-   suzuki-shunsuke/tfcmt
-   suzuki-shunsuke/tfprovidercheck
-   terraform-linters/tflint
-   tfmigrator/cli
-   updatecli/updatecli
-   yuyaban/gitlab-comment


[#&#8203;21062](https://togithub.com/aquaproj/aqua-registry/issues/21062)
[#&#8203;21063](https://togithub.com/aquaproj/aqua-registry/issues/21063)
[#&#8203;21064](https://togithub.com/aquaproj/aqua-registry/issues/21064)
[#&#8203;21065](https://togithub.com/aquaproj/aqua-registry/issues/21065)
[#&#8203;21066](https://togithub.com/aquaproj/aqua-registry/issues/21066)
Transfer [k0kubun/xremap/\*](https://togithub.com/k0kubun/xremap) to
[xremap/xremap/\*](https://togithub.com/xremap/xremap)

The GitHub Repository of the package "k0kubun/xremap/hypr" was
transferred from [k0kubun/xremap](https://togithub.com/k0kubun/xremap)
to [xremap/xremap](https://togithub.com/xremap/xremap)

</details>

<details>
<summary>cli/cli (cli/cli)</summary>

### [`v2.46.0`](https://togithub.com/cli/cli/releases/tag/v2.46.0):
GitHub CLI 2.46.0

[Compare Source](https://togithub.com/cli/cli/compare/v2.45.0...v2.46.0)

#### What's Changed

- Draft issue IDs are included in `project item-list` output by
[@&#8203;yasunori0418](https://togithub.com/yasunori0418) in
[https://github.com/cli/cli/pull/8754](https://togithub.com/cli/cli/pull/8754)
- New `--dry-run` option for `pr create` by
[@&#8203;v1v](https://togithub.com/v1v) in
[https://github.com/cli/cli/pull/8376](https://togithub.com/cli/cli/pull/8376)
- Bump go-keyring to fix race condition by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[https://github.com/cli/cli/pull/8833](https://togithub.com/cli/cli/pull/8833)
- PR numbers are prefixed with owner/repo for context by
[@&#8203;nobe4](https://togithub.com/nobe4) in
[https://github.com/cli/cli/pull/8778](https://togithub.com/cli/cli/pull/8778)
- Extra word removed in `codespaces` code comments by
[@&#8203;cuinix](https://togithub.com/cuinix) in
[https://github.com/cli/cli/pull/8795](https://togithub.com/cli/cli/pull/8795)
- Clarified description of the `-u`, `--user` option for `gh auth token`
by [@&#8203;gregsmi](https://togithub.com/gregsmi) in
[https://github.com/cli/cli/pull/8797](https://togithub.com/cli/cli/pull/8797)
- Fixed formatting for the description of `release upload` by
[@&#8203;malor](https://togithub.com/malor) in
[https://github.com/cli/cli/pull/8834](https://togithub.com/cli/cli/pull/8834)
- Clarified the usage of `auth status` to list all authenticated
accounts by [@&#8203;jsoref](https://togithub.com/jsoref) in
[https://github.com/cli/cli/pull/8838](https://togithub.com/cli/cli/pull/8838)
- Document auth switch behavior for two or more accounts by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[https://github.com/cli/cli/pull/8839](https://togithub.com/cli/cli/pull/8839)
- Document run watch and view not supporting fine grained PATs by
[@&#8203;williammartin](https://togithub.com/williammartin) in
[https://github.com/cli/cli/pull/8843](https://togithub.com/cli/cli/pull/8843)
- build(deps): bump google.golang.org/protobuf from 1.30.0 to 1.33.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/cli/cli/pull/8811](https://togithub.com/cli/cli/pull/8811)
- build(deps): bump github.com/cpuguy83/go-md2man/v2 from 2.0.3 to 2.0.4
by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/cli/cli/pull/8844](https://togithub.com/cli/cli/pull/8844)

#### New Contributors

- [@&#8203;cuinix](https://togithub.com/cuinix) made their first
contribution in
[https://github.com/cli/cli/pull/8795](https://togithub.com/cli/cli/pull/8795)
- [@&#8203;gregsmi](https://togithub.com/gregsmi) made their first
contribution in
[https://github.com/cli/cli/pull/8797](https://togithub.com/cli/cli/pull/8797)
- [@&#8203;nobe4](https://togithub.com/nobe4) made their first
contribution in
[https://github.com/cli/cli/pull/8778](https://togithub.com/cli/cli/pull/8778)
- [@&#8203;malor](https://togithub.com/malor) made their first
contribution in
[https://github.com/cli/cli/pull/8834](https://togithub.com/cli/cli/pull/8834)
- [@&#8203;yasunori0418](https://togithub.com/yasunori0418) made their
first contribution in
[https://github.com/cli/cli/pull/8754](https://togithub.com/cli/cli/pull/8754)

**Full Changelog**: https://github.com/cli/cli/compare/v2.45.0...v2.46.0

</details>

<details>
<summary>derailed/k9s (derailed/k9s)</summary>

### [`v0.32.4`](https://togithub.com/derailed/k9s/releases/tag/v0.32.4)

[Compare
Source](https://togithub.com/derailed/k9s/compare/v0.32.3...v0.32.4)

<img
src="https://raw.githubusercontent.com/derailed/k9s/master/assets/k9s.png"
align="center" width="800" height="auto"/>

### Release v0.32.4
#### Notes

Thank you to all that contributed with flushing out issues and
enhancements for K9s!
I'll try to mark some of these issues as fixed. But if you don't mind
grab the latest rev
and see if we're happier with some of the fixes!
If you've filed an issue please help me verify and close.

Your support, kindness and awesome suggestions to make K9s better are,
as ever, very much noted and appreciated!
Also big thanks to all that have allocated their own time to help others
on both slack and on this repo!!

As you may know, K9s is not pimped out by corps with deep pockets, thus
if you feel K9s is helping your Kubernetes journey,
please consider joining our [sponsorship
program](https://togithub.com/sponsors/derailed) and/or make some noise
on social! [@&#8203;kitesurfer](https://twitter.com/kitesurfer)

On Slack? Please join us
[K9slackers](https://join.slack.com/t/k9sers/shared_invite/enQtOTA5MDEyNzI5MTU0LWQ1ZGI3MzliYzZhZWEyNzYxYzA3NjE0YTk1YmFmNzViZjIyNzhkZGI0MmJjYzhlNjdlMGJhYzE2ZGU1NjkyNTM)

#### Maintenance Release!

***

#### ♫ Sounds Behind The Release ♭

Thinking of all you at KubeCon Paris!!
May I suggest a nice glass of `cold Merlote` or other fine grape juices
from my country?

- [Le Gorille - George
Brassens](https://www.youtube.com/watch?v=KVfwvk_yVyA)
- [Les Funerailles D'antan (Love this guy!) - George
Brassens](https://www.youtube.com/watch?v=bwb5k4k2EMc)
- [Poinconneur Des Lilas - Serge
Gainsbourg](https://www.youtube.com/watch?v=eWkWCFzkOvU)
- [Mon Legionaire (Yup! same guy??) - Serge
Gainsbourg](https://www.youtube.com/watch?v=gl8gopryqWI)
- [Les Cornichons - Nino
Ferrer](https://www.youtube.com/watch?v=N7JSW4NhM8I)
- [Paris s'eveille - Jacques
Dutronc](https://www.youtube.com/watch?v=3WcCg6rm3uM)

***

#### Videos Are In The Can!

Please dial [K9s
Channel](https://www.youtube.com/channel/UC897uwPygni4QIjkPCpgjmw) for
up coming content...

-   [K9s v0.31.0 Configs+Sneak peek](https://youtu.be/X3444KfjguE)
-   [K9s v0.30.0 Sneak peek](https://youtu.be/mVBc1XneRJ4)
-   [Vulnerability Scans](https://youtu.be/ULkl0MsaidU)

***

#### Resolved Issues

- [#&#8203;2608](https://togithub.com/derailed/k9s/issues/2608) Make the
sanitize feature easier to use
- [#&#8203;2605](https://togithub.com/derailed/k9s/issues/2605) Built-in
shortcuts being overridden by plugins result in excessive logging
- [#&#8203;2604](https://togithub.com/derailed/k9s/issues/2604) Ability
to mark a plugin as Dangerous/destructive
- [#&#8203;2592](https://togithub.com/derailed/k9s/issues/2592) "list
access denied" when switching contexts within k9s since 0.32.0

***

#### Contributed PRs

Please be sure to give `Big Thanks!` and `ATTA Girls/Boys!` to all the
fine contributors for making K9s better for all of us!!

- [#&#8203;2621](https://togithub.com/derailed/k9s/pull/2621) Fix snap
build

***

<img
src="https://raw.githubusercontent.com/derailed/k9s/master/assets/imhotep_logo.png"
width="32" height="auto"/> © 2024 Imhotep Software LLC. All materials
licensed under [Apache v2.0](http://www.apache.org/licenses/LICENSE-2.0)

</details>

<details>
<summary>eza-community/eza (eza-community/eza)</summary>

###
[`v0.18.8`](https://togithub.com/eza-community/eza/releases/tag/v0.18.8):
eza v0.18.8

[Compare
Source](https://togithub.com/eza-community/eza/compare/v0.18.7...v0.18.8)

### Changelog

#### \[0.18.8] - 2024-03-21

##### Bug Fixes

-   Avoid deprecation warnings
-   Rustfmt issues

##### Features

-   Add fennel lang icon and associations

##### Miscellaneous Tasks

-   Release eza v0.18.8

### Checksums

#### sha256sum

80565916de55b23c3cabb363ba1cb7f323f99b158e75b6c029a64108de7bdad9
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.tar.gz
d3532278f5eae1c1dd57bcc9373f05b49f40ffac880d5c4efb67ac5d93cdf0ea
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.zip
2c1722afbb0f90e40047cfffa93f04fb9b89633402236fb75119c9105265271f
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.tar.gz
a832c4694228780f43f467e2f0536bd4a8969a455edbb872eb8b4614ebd157e0
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.zip
39cc743e9293a5e269b2b2baf167f4f868f682143dc8b1f87efd64848bb3bca4
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.tar.gz
9b331b2eee259a9afbffd39e5018735651f8053c5429714cdc46a02f571463e7
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.zip
2e12d0b714aa011d23abb72459a2478eb9e369ac564a9a7e39ba6ec7ef775ad4
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.tar.gz
e3c9c3535732cecad5eb9d786e1f7a7c66aa28d42a3516046e5b1cf7f3799920
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.zip
2fc6c3ead5c8bc596643597737ba596aee2f61772792927e4e9e602525a6ae81
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.tar.gz
543f69f52165f654c5ab869319663d7f4ebdc95b7fc9c23be003ca551aec5dc3
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.zip

#### md5sum

f3dece765bb95c732bce9406c1eb825a
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.tar.gz
b655997af2b0df307abd3a126e48fc3d
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.zip
9cd1ae35fd90e4341cf8ed1b4a3d6cd9
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.tar.gz
e9cd1a917b39827fc159c100faaf28b9
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.zip
9f02446483003c219eecc1dc15273956
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.tar.gz
db239fa66fde9800770384831e3a86fa
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.zip
5722d3f4e4f2848d770713341c7c4bfd
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.tar.gz
c9f5ece20dc527fd4ecf4f77bbf70b56
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.zip
0826369c7f0ab3b17c4275f98ff1ab70
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.tar.gz
3c3633a6c54d32ee9f04277f4b103edc
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.zip

#### blake3sum

0c7fc89dd1cf514e62e644e8ff8dab8759d6bd42f364f2768c41df92ec9e9dfc
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.tar.gz
540def87f4f455fcd6067648f05498db775c6c03f291088d03f1dc4cc8cf68e7
./target/bin-0.18.8/eza_aarch64-unknown-linux-gnu.zip
1980d8004ad1f9b0291381c4d57db64fc8ebcf1c0961a8ac3c05c3697d7dfaf3
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.tar.gz
9a80d9f0cfc83521d119778b52b55dce4b33f28b02624297c712efd3ade53f19
./target/bin-0.18.8/eza_arm-unknown-linux-gnueabihf.zip
5d97ba1a2eaccc814aec982922f89ee218521b343b5f3ad6900596ad9574bfa3
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.tar.gz
2d274f097297ff222dc7756903dfb73fdc744051c75b815d2eea2e08ee0f4418
./target/bin-0.18.8/eza.exe_x86_64-pc-windows-gnu.zip
04ca09128611f9719ac0a7c387282049489243bbe74be8de797d845ec380b9ee
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.tar.gz
3e58bf50b39c1b20801f5282b612103b07b12089d2a24f3dcec9882ac8482c8c
./target/bin-0.18.8/eza_x86_64-unknown-linux-gnu.zip
1df711c44e08cc08fc26753f5c50f9de244fdbd7e2f8cc3961d82f101d775154
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.tar.gz
9d71a5afbc797ca63eecf254fc4971c2a1dd188ce28c8cb4a10cf1a273d747d5
./target/bin-0.18.8/eza_x86_64-unknown-linux-musl.zip

</details>

<details>
<summary>golangci/golangci-lint (golangci/golangci-lint)</summary>

###
[`v1.57.1`](https://togithub.com/golangci/golangci-lint/releases/tag/v1.57.1)

[Compare
Source](https://togithub.com/golangci/golangci-lint/compare/v1.57.0...v1.57.1)

#### Changelog

-
[`87b6bf1`](https://togithub.com/golangci/golangci-lint/commit/87b6bf17)
build(deps): bump github.com/golangci/plugin-module-register from 0.1.0
to 0.1.1
([#&#8203;4549](https://togithub.com/golangci/golangci-lint/issues/4549))
-
[`921d535`](https://togithub.com/golangci/golangci-lint/commit/921d5357)
build(deps): bump github.com/pelletier/go-toml/v2 from 2.1.1 to 2.2.0
([#&#8203;4548](https://togithub.com/golangci/golangci-lint/issues/4548))
-
[`cd890db`](https://togithub.com/golangci/golangci-lint/commit/cd890db2)
fix: filter invalid issues before other processors
([#&#8203;4552](https://togithub.com/golangci/golangci-lint/issues/4552))

###
[`v1.57.0`](https://togithub.com/golangci/golangci-lint/compare/v1.56.2...v1.57.0)

[Compare
Source](https://togithub.com/golangci/golangci-lint/compare/v1.56.2...v1.57.0)

</details>

<details>
<summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary>

###
[`v0.55.20`](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.19...v0.55.20)

[Compare
Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.19...v0.55.20)

###
[`v0.55.19`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.19)

[Compare
Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.18...v0.55.19)

#### Updated CLI args, config attributes and blocks

-   `scaffold`

#### Description

-   Fix grammar in feature text
-   Fix URL handling in the `scaffold` command
-   Updated gon version to 0.2.5

#### Related links

-
[https://github.com/gruntwork-io/terragrunt/pull/3010](https://togithub.com/gruntwork-io/terragrunt/pull/3010)
-
[https://github.com/gruntwork-io/terragrunt/pull/3005](https://togithub.com/gruntwork-io/terragrunt/pull/3005)

**Full Changelog**:
https://github.com/gruntwork-io/terragrunt/compare/v0.55.18...v0.55.19

###
[`v0.55.18`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.18)

[Compare
Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.17...v0.55.18)

#### Description

-   Updated github.com/cloudflare/circl from 1.3.3 to 1.3.7
-   Updated github.com/go-jose/go-jose/v3 from 3.0.0 to 3.0.3
-   Updated google.golang.org/protobuf from 1.32.0 to 1.33.0
-   Updated nokogiri to 1.16.3
-   Updates mini_portile2 from 2.4.0 to 2.8.5

#### Related links

-
[https://github.com/gruntwork-io/terragrunt/pull/2995](https://togithub.com/gruntwork-io/terragrunt/pull/2995)
-
[https://github.com/gruntwork-io/terragrunt/pull/2996](https://togithub.com/gruntwork-io/terragrunt/pull/2996)
-
[https://github.com/gruntwork-io/terragrunt/pull/2929](https://togithub.com/gruntwork-io/terragrunt/pull/2929)
-
[https://github.com/gruntwork-io/terragrunt/pull/3000](https://togithub.com/gruntwork-io/terragrunt/pull/3000)
-
[https://github.com/gruntwork-io/terragrunt/pull/3009](https://togithub.com/gruntwork-io/terragrunt/pull/3009)

###
[`v0.55.17`](https://togithub.com/gruntwork-io/terragrunt/releases/tag/v0.55.17)

[Compare
Source](https://togithub.com/gruntwork-io/terragrunt/compare/v0.55.16...v0.55.17)

#### Updated CLI args, config attributes and blocks

-   `terraform`

#### Description

-   Added support for OpenTofu registry for shorthand TFR modules.

#### Related links

-
[https://github.com/gruntwork-io/terragrunt/pull/2961](https://togithub.com/gruntwork-io/terragrunt/pull/2961)

</details>

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

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

[Compare
Source](https://togithub.com/jesseduffield/lazygit/compare/v0.40.2...pre-0.41)

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:

[<img
src="https://github.com/jesseduffield/lazygit/assets/8456633/f9b47c5e-f8b2-4b41-8f51-bf06b01046e2">](https://youtu.be/\_REmkoIyPW0)

#### What's Changed

Here's some highlighted features:

##### Range select


![range-select](https://togithub.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 [@&#8203;afhoffman](https://togithub.com/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: <something other than v>
    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 [@&#8203;stefanhaller](https://togithub.com/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 [@&#8203;stefanhaller](https://togithub.com/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 [@&#8203;stefanhaller](https://togithub.com/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 [@&#8203;stefanhaller](https://togithub.com/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://togithub.com/jesseduffield/lazygit/blob/master/docs/Fixup_Commits.md#finding-the-commit-to-create-a-fixup-for)

Thanks to [@&#8203;stefanhaller](https://togithub.com/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 [@&#8203;AzraelSec](https://togithub.com/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 [@&#8203;omaussa](https://togithub.com/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 [@&#8203;Part22](https://togithub.com/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 [@&#8203;hosaka](https://togithub.com/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 [@&#8203;jwhitley](https://togithub.com/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
([@&#8203;stefanhaller](https://togithub.com/stefanhaller))
- Error toasts now appear for some errors (less intrusive than popups)
([@&#8203;stefanhaller](https://togithub.com/stefanhaller))
- Search history is now retained
([@&#8203;karimkhaleel](https://togithub.com/karimkhaleel))
- Git log is shown by default
([@&#8203;stefanhaller](https://togithub.com/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
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3207](https://togithub.com/jesseduffield/lazygit/pull/3207)
- Allow deleting remote tags/branches from local tag/branch views by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/2738](https://togithub.com/jesseduffield/lazygit/pull/2738)
- Add command to show divergence from upstream by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2871](https://togithub.com/jesseduffield/lazygit/pull/2871)
- Add 'Quick start interactive rebase' action by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3213](https://togithub.com/jesseduffield/lazygit/pull/3213)
- Add command to open git difftool by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3156](https://togithub.com/jesseduffield/lazygit/pull/3156)
- Support editing files in existing neovim instance by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/2916](https://togithub.com/jesseduffield/lazygit/pull/2916)
- Show commit mark before showing extra info by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/2928](https://togithub.com/jesseduffield/lazygit/pull/2928)
- Jump to middle of the view when selection leaves the visible area by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2915](https://togithub.com/jesseduffield/lazygit/pull/2915)
- Add emacs-keybinds for word navigation by
[@&#8203;horriblename](https://togithub.com/horriblename) in
[https://github.com/jesseduffield/lazygit/pull/2935](https://togithub.com/jesseduffield/lazygit/pull/2935)
- Add `gui.scrollOffBehavior` config for scrolling list views by
half-pages by [@&#8203;stefanhaller](https://togithub.com/stefanhaller)
in
[https://github.com/jesseduffield/lazygit/pull/2939](https://togithub.com/jesseduffield/lazygit/pull/2939)
- Switch to editor from commit message panel by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2881](https://togithub.com/jesseduffield/lazygit/pull/2881)
- Select same commit again after pressing "e" to edit a commit by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2954](https://togithub.com/jesseduffield/lazygit/pull/2954)
- Support custom keybindings for confirm discard by
[@&#8203;mskelton](https://togithub.com/mskelton) in
[https://github.com/jesseduffield/lazygit/pull/2960](https://togithub.com/jesseduffield/lazygit/pull/2960)
- Allow adding a port to webDomain part of services config by
[@&#8203;raidora](https://togithub.com/raidora) in
[https://github.com/jesseduffield/lazygit/pull/2908](https://togithub.com/jesseduffield/lazygit/pull/2908)
- Add icons for files with .mdx and .svelte file extensions by
[@&#8203;hrstmr](https://togithub.com/hrstmr) in
[https://github.com/jesseduffield/lazygit/pull/2889](https://togithub.com/jesseduffield/lazygit/pull/2889)
- Section headers in keybindings menu by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2911](https://togithub.com/jesseduffield/lazygit/pull/2911)
- Check for staged files for "Amend commit" and "Create fixup commit" by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2970](https://togithub.com/jesseduffield/lazygit/pull/2970)
- Add support for external diff commands (e.g. difftastic) by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2868](https://togithub.com/jesseduffield/lazygit/pull/2868)
- Save diff context size in state.yml instead of config.yml by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2969](https://togithub.com/jesseduffield/lazygit/pull/2969)
- Support to reset the current branch to a selected branch upstream by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/2940](https://togithub.com/jesseduffield/lazygit/pull/2940)
- Replace whitespace with '-' when renaming a branch by
[@&#8203;calthejuggler](https://togithub.com/calthejuggler) in
[https://github.com/jesseduffield/lazygit/pull/2990](https://togithub.com/jesseduffield/lazygit/pull/2990)
- Add jump-to-panel label config setting by
[@&#8203;MariaSolOs](https://togithub.com/MariaSolOs) in
[https://github.com/jesseduffield/lazygit/pull/2993](https://togithub.com/jesseduffield/lazygit/pull/2993)
- Add co-author to commits by
[@&#8203;omaussa](https://togithub.com/omaussa) in
[https://github.com/jesseduffield/lazygit/pull/2912](https://togithub.com/jesseduffield/lazygit/pull/2912)
- Change the default of the "gui.borders" config to "rounded" by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2998](https://togithub.com/jesseduffield/lazygit/pull/2998)
- Add a DisabledReason mechanism for menu items and keybindings by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2992](https://togithub.com/jesseduffield/lazygit/pull/2992)
- Allow cherry-picking commits during a rebase by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3013](https://togithub.com/jesseduffield/lazygit/pull/3013)
- Add history for search view by
[@&#8203;karimkhaleel](https://togithub.com/karimkhaleel) in
[https://github.com/jesseduffield/lazygit/pull/2877](https://togithub.com/jesseduffield/lazygit/pull/2877)
- Replace loader panels with waiting status (pull/push/fetch) by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2973](https://togithub.com/jesseduffield/lazygit/pull/2973)
- Add menu to rebase onto selected branch remote upstream by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/3020](https://togithub.com/jesseduffield/lazygit/pull/3020)
- Add ability to force portrait mode by
[@&#8203;ldelossa](https://togithub.com/ldelossa) in
[https://github.com/jesseduffield/lazygit/pull/3037](https://togithub.com/jesseduffield/lazygit/pull/3037)
- Add Micro editor preset by [@&#8203;kytta](https://togithub.com/kytta)
in
[https://github.com/jesseduffield/lazygit/pull/3049](https://togithub.com/jesseduffield/lazygit/pull/3049)
- Show sync status in branches list by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3021](https://togithub.com/jesseduffield/lazygit/pull/3021)
- Add 'lvim' editor preset for lunarvim by
[@&#8203;zottelsheep](https://togithub.com/zottelsheep) in
[https://github.com/jesseduffield/lazygit/pull/3074](https://togithub.com/jesseduffield/lazygit/pull/3074)
- Truncate branch names to make branch status always visible by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3075](https://togithub.com/jesseduffield/lazygit/pull/3075)
- Color file icons by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3080](https://togithub.com/jesseduffield/lazygit/pull/3080)
- Add UserConfig jsonschema generation script by
[@&#8203;karimkhaleel](https://togithub.com/karimkhaleel) in
[https://github.com/jesseduffield/lazygit/pull/3039](https://togithub.com/jesseduffield/lazygit/pull/3039)
- Add a copy-to-clipboard menu to the file view (with `diff` copy
options) by [@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/3104](https://togithub.com/jesseduffield/lazygit/pull/3104)
- Fix bottom line alignment by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3076](https://togithub.com/jesseduffield/lazygit/pull/3076)
- Make move up/down blocking by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2966](https://togithub.com/jesseduffield/lazygit/pull/2966)
- Add remote branch sorting menu by
[@&#8203;hosaka](https://togithub.com/hosaka) in
[https://github.com/jesseduffield/lazygit/pull/3171](https://togithub.com/jesseduffield/lazygit/pull/3171)
- Add age to stash entries by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/3174](https://togithub.com/jesseduffield/lazygit/pull/3174)
- Add local branch sorting menu by
[@&#8203;hosaka](https://togithub.com/hosaka) in
[https://github.com/jesseduffield/lazygit/pull/3182](https://togithub.com/jesseduffield/lazygit/pull/3182)
- Show a friendly error message when starting lazygit from a
non-existent cwd by
[@&#8203;simonwhitaker](https://togithub.com/simonwhitaker) in
[https://github.com/jesseduffield/lazygit/pull/3192](https://togithub.com/jesseduffield/lazygit/pull/3192)
- Replace copy commit SHA with copy commit subject on the y s keybind in
the commits view by
[@&#8203;karimkhaleel](https://togithub.com/karimkhaleel) in
[https://github.com/jesseduffield/lazygit/pull/3188](https://togithub.com/jesseduffield/lazygit/pull/3188)
- Add config setting for splitting window vertically in half screen mode
by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3133](https://togithub.com/jesseduffield/lazygit/pull/3133)
- Add command to find base commit for creating a fixup by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3105](https://togithub.com/jesseduffield/lazygit/pull/3105)
- Show Toast instead of error panel when invoking a disabled command by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3180](https://togithub.com/jesseduffield/lazygit/pull/3180)
- Show file names in default colour by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3081](https://togithub.com/jesseduffield/lazygit/pull/3081)
- Add config setting to suppress showing file icons by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3216](https://togithub.com/jesseduffield/lazygit/pull/3216)
- Support range select for rebase actions by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3232](https://togithub.com/jesseduffield/lazygit/pull/3232)
- Make range selections created with the mouse non-sticky by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3234](https://togithub.com/jesseduffield/lazygit/pull/3234)
- Support range select for staging/discarding files by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3248](https://togithub.com/jesseduffield/lazygit/pull/3248)
- Inline status for fetching remotes by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3238](https://togithub.com/jesseduffield/lazygit/pull/3238)
- Add shortcuts for filtering files by status by
[@&#8203;mark2185](https://togithub.com/mark2185) in
[https://github.com/jesseduffield/lazygit/pull/3137](https://togithub.com/jesseduffield/lazygit/pull/3137)
- Keep same selection range when quick-starting an interactive rebase by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3247](https://togithub.com/jesseduffield/lazygit/pull/3247)
- Add loads of tooltips by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3269](https://togithub.com/jesseduffield/lazygit/pull/3269)
- Show better keybinding suggestions by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3203](https://togithub.com/jesseduffield/lazygit/pull/3203)
- Support selecting file range in patch builder by
[@&#8203;afhoffman](https://togithub.com/afhoffman) in
[https://github.com/jesseduffield/lazygit/pull/3259](https://togithub.com/jesseduffield/lazygit/pull/3259)
- Add command to squash all fixups in the current branch by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3274](https://togithub.com/jesseduffield/lazygit/pull/3274)
- Use slimmer scrollbars by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3283](https://togithub.com/jesseduffield/lazygit/pull/3283)
- Clear cherry-picked commits after pasting by
[@&#8203;molejnik88](https://togithub.com/molejnik88) in
[https://github.com/jesseduffield/lazygit/pull/3240](https://togithub.com/jesseduffield/lazygit/pull/3240)
- Change default of git.log.showGraph to 'always' by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3314](https://togithub.com/jesseduffield/lazygit/pull/3314)
- Support range select removing files from a commit by
[@&#8203;afhoffman](https://togithub.com/afhoffman) in
[https://github.com/jesseduffield/lazygit/pull/3276](https://togithub.com/jesseduffield/lazygit/pull/3276)
- Migrate git.log.showGraph and git.log.order to app state by
[@&#8203;hosaka](https://togithub.com/hosaka) in
[https://github.com/jesseduffield/lazygit/pull/3197](https://togithub.com/jesseduffield/lazygit/pull/3197)
- Change "git reset" default to --mixed by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3264](https://togithub.com/jesseduffield/lazygit/pull/3264)
- Add author filtering to commit view by
[@&#8203;part22](https://togithub.com/part22) in
[https://github.com/jesseduffield/lazygit/pull/3302](https://togithub.com/jesseduffield/lazygit/pull/3302)
- Provide two helix presets, one for "helix" and one for "hx" by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3346](https://togithub.com/jesseduffield/lazygit/pull/3346)
- Don't show branch head on rebase todos if the rebase.updateRefs config
is on by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3340](https://togithub.com/jesseduffield/lazygit/pull/3340)
- Show all submodules recursively by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3341](https://togithub.com/jesseduffield/lazygit/pull/3341)
- Support setting a range of commits to "edit" outside of a rebase by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3370](https://togithub.com/jesseduffield/lazygit/pull/3370)
- Adjust selection after squashing fixups by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3338](https://togithub.com/jesseduffield/lazygit/pull/3338)
- Auto-wrap commit message while typing by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3173](https://togithub.com/jesseduffield/lazygit/pull/3173)
- Add Co-Author support to new commits by
[@&#8203;2KAbhishek](https://togithub.com/2KAbhishek) in
[https://github.com/jesseduffield/lazygit/pull/3097](https://togithub.com/jesseduffield/lazygit/pull/3097)
- Show "breaking changes" message at startup by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3377](https://togithub.com/jesseduffield/lazygit/pull/3377)
- Allow moving and deleting update-ref todos by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3391](https://togithub.com/jesseduffield/lazygit/pull/3391)
- When checking out a remote branch by name, ask the user how by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3388](https://togithub.com/jesseduffield/lazygit/pull/3388)
- Use substring filtering instead of fuzzy filtering by default by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3376](https://togithub.com/jesseduffield/lazygit/pull/3376)
- Always prompt to return from subprocess if there was an error by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3410](https://togithub.com/jesseduffield/lazygit/pull/3410)
- When adding a new remote, select it and fetch it by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3401](https://togithub.com/jesseduffield/lazygit/pull/3401)
- Support editing multiple files at once using range selection by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3407](https://togithub.com/jesseduffield/lazygit/pull/3407)
- Make it easy to create "amend!" commits by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3409](https://togithub.com/jesseduffield/lazygit/pull/3409)
- Add config to truncate commit hashes when copying them to the
clipboard by [@&#8203;stefanhaller](https://togithub.com/stefanhaller)
in
[https://github.com/jesseduffield/lazygit/pull/3402](https://togithub.com/jesseduffield/lazygit/pull/3402)

##### Fixes 🔧

- Fix issue where explosion effect was out-of-view by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/2909](https://togithub.com/jesseduffield/lazygit/pull/2909)
- Show dialogue when attempting to open info link fails by
[@&#8203;simonwhitaker](https://togithub.com/simonwhitaker) in
[https://github.com/jesseduffield/lazygit/pull/2899](https://togithub.com/jesseduffield/lazygit/pull/2899)
- Fix jumping to the correct line from the staging view by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2919](https://togithub.com/jesseduffield/lazygit/pull/2919)
- Fix sha colors when rebasing by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2946](https://togithub.com/jesseduffield/lazygit/pull/2946)
- Fix the commit graph display after selection jumps in commits view by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2943](https://togithub.com/jesseduffield/lazygit/pull/2943)
- Handle trailing slash in worktree path by
[@&#8203;Krismix1](https://togithub.com/Krismix1) in
[https://github.com/jesseduffield/lazygit/pull/2947](https://togithub.com/jesseduffield/lazygit/pull/2947)
- Fix escape not cancelling filter mode, but closing the menu instead by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2977](https://togithub.com/jesseduffield/lazygit/pull/2977)
- Use `Error` method to handle commits url copy from unknown service by
[@&#8203;AzraelSec](https://togithub.com/AzraelSec) in
[https://github.com/jesseduffield/lazygit/pull/3007](https://togithub.com/jesseduffield/lazygit/pull/3007)
- Hide waiting status during credentials prompt by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3016](https://togithub.com/jesseduffield/lazygit/pull/3016)
- Use upstream branch when opening pull requests by
[@&#8203;mark2185](https://togithub.com/mark2185) in
[https://github.com/jesseduffield/lazygit/pull/2693](https://togithub.com/jesseduffield/lazygit/pull/2693)
- Fix issue where active search inappropriately changed selected line by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3022](https://togithub.com/jesseduffield/lazygit/pull/3022)
- Respect $GIT_WORK_TREE and $GIT_DIR env vars (fix
[#&#8203;3010](https://togithub.com/jesseduffield/lazygit/issues/3010)).
by [@&#8203;intrntbrn](https://togithub.com/intrntbrn) in
[https://github.com/jesseduffield/lazygit/pull/3024](https://togithub.com/jesseduffield/lazygit/pull/3024)
- Fix crash when trying to filter the list of remotes by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3059](https://togithub.com/jesseduffield/lazygit/pull/3059)
- Re-apply filter when model changes by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3058](https://togithub.com/jesseduffield/lazygit/pull/3058)
- Use a PTY when calling external diff command by
[@&#8203;AFutureD](https://togithub.com/AFutureD) in
[https://github.com/jesseduffield/lazygit/pull/3120](https://togithub.com/jesseduffield/lazygit/pull/3120)
- Re-enable 'Unset upstream' option when upstream branch is missing by
[@&#8203;mark2185](https://togithub.com/mark2185) in
[https://github.com/jesseduffield/lazygit/pull/3086](https://togithub.com/jesseduffield/lazygit/pull/3086)
- Fall back to WithWaitingStatus if item is not visible by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3083](https://togithub.com/jesseduffield/lazygit/pull/3083)
- Fix checking out a tag when there is a branch with the same name by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3179](https://togithub.com/jesseduffield/lazygit/pull/3179)
- Fix preserving the commit message when description contains blank
lines by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3170](https://togithub.com/jesseduffield/lazygit/pull/3170)
- Allow multiple fetch commands (or fetch and pull) to run concurrently
by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3202](https://togithub.com/jesseduffield/lazygit/pull/3202)
- Support insteadOf URL rewriting when opening URLs in browser by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3177](https://togithub.com/jesseduffield/lazygit/pull/3177)
- Fix keybindings for characters involving AltGr on Windows by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3194](https://togithub.com/jesseduffield/lazygit/pull/3194)
- Do not include keybindings from another view in keybindings menu by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3220](https://togithub.com/jesseduffield/lazygit/pull/3220)
- Fix crash with short branch names by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3219](https://togithub.com/jesseduffield/lazygit/pull/3219)
- Keep same branch selected when fetching a branch while sorted by date
by [@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3186](https://togithub.com/jesseduffield/lazygit/pull/3186)
- Use git rev-parse to obtain repository and worktree paths by
[@&#8203;jwhitley](https://togithub.com/jwhitley) in
[https://github.com/jesseduffield/lazygit/pull/3183](https://togithub.com/jesseduffield/lazygit/pull/3183)
- Pass absolute file paths to all editor commands by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3255](https://togithub.com/jesseduffield/lazygit/pull/3255)
- Disallow cherry-picking merge commits by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3316](https://togithub.com/jesseduffield/lazygit/pull/3316)
- Fix two problems related to update-ref rebase todo items by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3290](https://togithub.com/jesseduffield/lazygit/pull/3290)
- Fix order of custom commands history by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3286](https://togithub.com/jesseduffield/lazygit/pull/3286)
- Fix some problems with patches if `git diff` was customized with
config (e.g. `external` or `noprefix`). by
[@&#8203;mricherzhagen](https://togithub.com/mricherzhagen) in
[https://github.com/jesseduffield/lazygit/pull/3222](https://togithub.com/jesseduffield/lazygit/pull/3222)
- Use $XDG_STATE_HOME for state.yml by
[@&#8203;horriblename](https://togithub.com/horriblename) in
[https://github.com/jesseduffield/lazygit/pull/2936](https://togithub.com/jesseduffield/lazygit/pull/2936)
- Fix display of Chinese characters on Windows by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3352](https://togithub.com/jesseduffield/lazygit/pull/3352)
- Allow more than one argument in git.merging.args config by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3336](https://togithub.com/jesseduffield/lazygit/pull/3336)
- Don't strike out reserved keys in menus by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3365](https://togithub.com/jesseduffield/lazygit/pull/3365)
- Don't ask to force-push if the remote rejected updates by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3387](https://togithub.com/jesseduffield/lazygit/pull/3387)
- Fix container detection by
[@&#8203;aritmos](https://togithub.com/aritmos) in
[https://github.com/jesseduffield/lazygit/pull/3412](https://togithub.com/jesseduffield/lazygit/pull/3412)

##### Maintenance ⚙️

- Add Click() to GuiDriver by
[@&#8203;simonwhitaker](https://togithub.com/simonwhitaker) in
[https://github.com/jesseduffield/lazygit/pull/2898](https://togithub.com/jesseduffield/lazygit/pull/2898)
- Add Makefile by [@&#8203;kyu08](https://togithub.com/kyu08) in
[https://github.com/jesseduffield/lazygit/pull/2937](https://togithub.com/jesseduffield/lazygit/pull/2937)
- fix GitHub Actions warnings by
[@&#8203;kyu08](https://togithub.com/kyu08) in
[https://github.com/jesseduffield/lazygit/pull/2950](https://togithub.com/jesseduffield/lazygit/pull/2950)
- Add instruction in PR template to start PRs with an imperative by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/2967](https://togithub.com/jesseduffield/lazygit/pull/2967)
- Don't show toasts when running integration tests by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/2975](https://togithub.com/jesseduffield/lazygit/pull/2975)
- Various debugging improvements by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3000](https://togithub.com/jesseduffield/lazygit/pull/3000)
- Rename `test/results` to `test/_results` by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3012](https://togithub.com/jesseduffield/lazygit/pull/3012)
- Support passing -race flag to integration tests by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3019](https://togithub.com/jesseduffield/lazygit/pull/3019)
- Improve debugging of integration tests by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3029](https://togithub.com/jesseduffield/lazygit/pull/3029)
- Use go:generate for cheatsheet by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3035](https://togithub.com/jesseduffield/lazygit/pull/3035)
- Change Makefile to build non-optimized by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3028](https://togithub.com/jesseduffield/lazygit/pull/3028)
- Update PR template to use go generate command by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3041](https://togithub.com/jesseduffield/lazygit/pull/3041)
- Band-aid fix for submodule/reset.go test failure by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3047](https://togithub.com/jesseduffield/lazygit/pull/3047)
- Remove redundant `len` check by
[@&#8203;Juneezee](https://togithub.com/Juneezee) in
[https://github.com/jesseduffield/lazygit/pull/3051](https://togithub.com/jesseduffield/lazygit/pull/3051)
- Add disabled compat for user config
([#&#8203;2833](https://togithub.com/jesseduffield/lazygit/issues/2833))
by [@&#8203;karimkhaleel](https://togithub.com/karimkhaleel) in
[https://github.com/jesseduffield/lazygit/pull/3060](https://togithub.com/jesseduffield/lazygit/pull/3060)
- Fix go.mod file by
[@&#8203;stefanhaller](https://togithub.com/stefanhaller) in
[https://github.com/jesseduffield/lazygit/pull/3118](https://togithub.com/jesseduffield/lazygit/pull/3118)
- Capture test code coverage stats by
[@&#8203;jesseduffield](https://togithub.com/jesseduffield) in
[https://github.com/jesseduffield/lazygit/pull/3135](https://togithub.com/jesseduffield/lazygit/pull/3135)
- fixed typo in test description by
[@&#8203;schuebel](https://togithub.com/schuebel) in
[https://github.com/jesseduffield/lazygit/pull/3101](https://togithub.com/jesseduffield/lazygit/pull/3101)
-   Update cheatsheets by [@&#8203;stefanhaller](https:

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 4pm on thursday" in timezone
America/Los_Angeles, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/scottames/dots).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yNjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjI2OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: scottames-github-bot[bot] <162828115+scottames-github-bot[bot]@users.noreply.github.com>
stefanhaller added a commit that referenced this pull request May 19, 2024
…3565)

- **PR Description**
This uses the JSON schema generated in
#3039 to generate and
replace the default lazygit config in Config.md when running `go
generate ./...`

Relevant issue: #3441

The generated config contains all the entries that have default values
set in `user_config.go`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
blocks-release Must be addressed before we can cut the next release enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants