Commit Graph
100 Commits
Author SHA1 Message Date
Stefan Haller 1cab15eba8 Some additions to AGENTS.md 2026-05-09 14:02:42 +02:00
Stefan HallerandGitHub 84be8e130f Improve inline spinner performance (#5592)
As a followup to #5571, improve performance for inline spinners too.

This requires a bit of preparation; in particular, we change
ListContextTrait.HandleRender to no longer force a UI layout/redraw, so
callers need to take care of this themselves where needed. This requires
careful testing to see that we didn't miss any situation where redrawing
only worked by accident; see the first commit of the branch for an
example.
2026-05-09 14:01:33 +02:00
Stefan Haller 4734bab896 Improve performance of inline status spinner
Now that HandleRender no longer does an implicit Render(), we can use it inside
OnUIThreadContentOnly to save performance, on the assumption that rerendering a
view that contains an inline spinner never changes the layout.
2026-05-09 13:58:33 +02:00
Stefan Haller 76211eea68 Remove Render() from ListContextTrait.HandleRender
self.c.Render() at the end of HandleRender was there to schedule a gocui Update
tick so the view content modified above would actually get drawn. For UI-thread
callers (the great majority -- keybinding handlers, the layout function itself,
popup resize, etc.) this was unnecessary work, since gocui already runs a
layout/redraw cycle after every event. SimpleContext.HandleRender doesn't call
Render() either, so this aligns the two implementations.

The few callers that drove HandleRender from a worker goroutine and relied on
Render() for the flush were wrapped in OnUIThread in the preceding commits, so
the implicit Render is no longer needed.

Also, Render() being called *before* setFooter() looks like it might have been a
theoretical race; this is no longer an issue now.
2026-05-09 13:58:33 +02:00
Stefan Haller 3d324ed7fb Bounce SuggestionsContext.SetSuggestions to UI thread
SetSuggestions has two callers: prepareConfirmationPanel calls it directly on
the UI thread, while editors.promptEditor and
SuggestionsContext.RefreshSuggestions call it via AsyncHandler, which runs the
result closure on a worker goroutine. The worker path currently relies on
HandleRender's self.c.Render() to flush the view update. Wrap the body in
OnUIThread so the worker path stays correct when Render() is removed; for the
UI-thread caller the extra bounce is harmless.
2026-05-09 13:58:33 +02:00
Stefan Haller a364a8d75c Bounce explicit LocalCommits render in refreshBranches to UI thread
refreshBranches runs on a worker goroutine and re-renders the commits view
directly to refresh the branch-head visualization. As with refreshView, this
currently only flushes because HandleRender ends with self.c.Render(). Wrap the
explicit HandleRender call (along with the LocalCommitsMutex pair around it) in
OnUIThread so it keeps working once Render() is removed.
2026-05-09 13:58:33 +02:00
Stefan Haller 0d1caf5c22 Bounce refreshView to the UI thread
An async refresh dispatches refreshXyz on a worker goroutine, which then calls
refreshView -> PostRefreshUpdate -> HandleRender. Today the final
self.c.Render() inside ListContextTrait.HandleRender is what triggers a UI flush
from the worker. We're going to remove that Render() call, so prepare by
wrapping refreshView's body in OnUIThread.

This moves the entire rendering of the view (and the ReApplyFilter/ReApplySearch
stuff) to the UI thread, not just the layout. I don't expect this to make a
difference in practice, and it is already one step towards my long-term goal of
moving all view rendering to the UI thread (see
https://github.com/jesseduffield/lazygit/issues/2974#issuecomment-1729154768).
2026-05-09 13:58:33 +02:00
Stefan Haller 79440c0945 Set the view color on the UI thread too
Unrelated to this branch, just because we're touching this code: there's little
reason to set the color on the background thread but the text on the UI thread.
Set them both together on the UI thread. Avoids a data race (unlikely to be a
problem in practice, we're talking about a 64-bit int, but still).
2026-05-09 13:58:33 +02:00
Stefan Haller 670565c175 Have renderAppStatus trigger a full layout when the appStatus width changes
In 0d195077e4 we improved the performance of the status bar spinner by
avoiding a layout. This is fine from one spinner tick to the next, but it's a
problem when spinning starts or ends (or in the hypothetical case that the
status text changes in the middle of the operation, which we never do in
lazygit, but theoretically could). In this case a layout is needed so that the
rest of the status bar gets pushed over appropriately (or moves back to the left
when the spinner ends), and also so that the bottom line is shown or hidden
properly for users who set gui.showBottomLine to false.

To fix this, keep track of the status string width and force a layout whenever
it changes. This includes the beginning and end of an operation when it changes
from empty to non-empty or vice versa.

There is currently no observable misbehavior from this bug, but that's only
because we must have a HandleRender call somewhere that forces a full layout
when an operation starts or ends. We will remove the Render() call from
HandleRender at the end of this branch, at which point the misbehavior would be
visible if we didn't fix it here.
2026-05-09 13:58:33 +02:00
Stefan Haller 4f0393f97b Fix visual glitch with status bar spinner at very slow spinner rates
With a very slow spinner rate (seconds), you can see that at the beginning of an
operation the bottom line leaves a gap for where the status will go, but the
status (and spinner) is only drawn the first time the spinner ticks. The reason
is that layout looks at GetStatusString to decide how much room to leave, rather
than at the actual content of the AppStatus view; the view content is only set
by renderAppStatus the first time the spinner ticks.

Fix this by making layout look at the actual content of the view so that the
layout is in sync with what is drawn. This also avoids flicker if an operation
is so fast that it finishes before the spinner ticks for the first time,
especially for users who set gui.showBottomLine to false.
2026-05-08 22:42:23 +02:00
Stefan HallerandGitHub 49bb072088 Redraw only the spinner when nothing else has changed (#5571)
### PR Description
This fixes #4734, where lazygit would use a lot of CPU when the spinner
was shown due to redrawing the entire screen every time the spinner
needed a redraw.
The change adds the ability to request a UI redraw without invalidating
the full UI, thus only redrawing the spinner, re-routing the spinner to
this new flow.
CPU usage on a chromebook went from 60% to 5% when the spinner is shown.

Changing the refresh rate of the spinner from 50ms to 200ms brings it
down from 5% to 1% if ever we would like to change the default,
personally I prefer the slower moving spinner, but that's subjective.
2026-05-06 20:42:06 +02:00
Stefan Haller 5dcc93e8cc Validate that gui.spinner.frames must all have the same width
The spinner looks weird if they don't. While we're at it, validate that frames
must not be empty, which would have crashed with a division by zero.
2026-05-06 18:53:32 +02:00
Stefan Haller 164f7da33d Fix missing layout call after switching repos
This didn't cause a bug so far because switching repos always happens from
within an OnWaitingStatus, so the spinner would take care of calling layout and
draw. However, later in this branch we are going to optimize the spinner so that
it no longer calls layout, at which point this would break, so make sure we
rerender at the point where it's needed.
2026-05-06 18:53:32 +02:00
Stefan HallerandGitHub e1dff3ffa7 Fix the check_for_fixups.sh script again (#5590)
Our most recent change to the script (58309b02a9) broke it because the
anchored regex's no longer match the beginning of the subject. Fix this
by omitting the hash, which is a bit unfortunate but probably acceptable
(I rarely look at the output of the script anyway).
2026-05-06 18:53:12 +02:00
Stefan Haller af0cdf6d6e Fix the check_for_fixups.sh script again
Our most recent change to the script (58309b02a9) broke it because the
anchored regex's no longer match the beginning of the subject. Fix this by
omitting the hash, which is a bit unfortunate but probably acceptable (I rarely
look at the output of the script anyway).
2026-05-06 18:44:59 +02:00
Stefan HallerandGitHub 434abc7994 Remove modifiers from keybinding (#5588)
Followup to #5563; I forgot to do this there.
2026-05-06 09:55:46 +02:00
Stefan Haller ee94e215e7 Remove dead Modifier field from keybindings
Modifiers were moved into Key in 22169e22f, but the separate Modifier field
on types.Binding and gocui.keybinding was left behind. The keypress matcher
already compares modifiers via Key.Equals, so the old field is never read on
the dispatch path; it just got passed through SetKeybinding and stored.

Drop it from gocui.keybinding, types.Binding, and the SetKeybinding /
DeleteKeybinding signatures, and remove every now-redundant Modifier:
gocui.ModNone struct field. Mouse bindings keep their own Modifier (on
ViewMouseBinding) since that path still consults it.
2026-05-06 09:51:23 +02:00
Stefan Haller 1bce7ed1c7 Remove unused function DeleteKeybinding
I noticed that it compares key.keyName and key.str separately instead of calling
key.Equals, but instead of deciding whether that's a problem, just delete the
function when nobody needs it.
2026-05-06 09:51:23 +02:00
Stefan HallerandGitHub 6ed87bd5e4 Disable gh telemetry when running integration tests (#5587)
This prevents a file `test/.local/state/gh/device-id` from appearing in
the working copy after running integration tests locally.
2026-05-06 09:50:37 +02:00
Stefan Haller cb0ecda3e4 Disable gh telemetry when running integration tests 2026-05-05 18:42:28 +02:00
Stefan HallerandGitHub 146f004918 Revert the change of <ctrl+j>/<ctrl+k> to <alt+down>/<alt+up> (#5582)
While I strongly prefer the alt-arrow bindings myself, I'm worried that
existing users might not be happy about the change, so I'm reverting it.

I'm working on supporting multiple keybindings for every command, so
once that's in, we can change the default to include both.
2026-05-04 18:25:16 +02:00
Stefan Haller 2332d9b27b Revert the change of <ctrl+j>/<ctrl+k> to <alt+down>/<alt+up>
While I strongly prefer the alt-arrow bindings myself, I'm worried that existing
users might not be happy about the change, so I'm reverting it.

I'm working on supporting multiple keybindings for every command, so once that's
in, we can change the default to include both.
2026-05-04 18:17:37 +02:00
Stefan HallerandGitHub abe9e6c041 Add an AGENTS.md file (#5581) 2026-05-04 14:21:17 +02:00
Stefan Haller 9a2891818e Add an AGENTS.md file 2026-05-04 14:16:54 +02:00
Stefan HallerandGitHub c6d73ace9a Show push URLs for remotes that have any (#5576)
In the Remotes panel, when selecting a remote that has push URLs, show
them in the main view in addition to the fetch URL(s).

Addresses half of #5566 (just the showing part, not the editing).
2026-05-04 13:13:17 +02:00
Stefan Haller 127dd9d325 Expose PushUrls to custom commands 2026-05-04 13:09:47 +02:00
Stefan Haller 6f1c57b604 Show PushUrls for selected remote if there are any 2026-05-04 13:09:47 +02:00
Stefan Haller d0ed65e0fd Add PushUrls field to models.Remote
Add some tests for RemoteLoader while we're at it; we didn't have any.
2026-05-04 13:09:47 +02:00
Stefan HallerandGitHub 59b9b5959d Use more widely-supported Unicode symbols for the commit graph (#5573)
The commit graph used '⏣' (U+23E3 BENZENE RING WITH CIRCLE) for merge
commits and '◯' (U+25EF LARGE CIRCLE) for regular commits. Both have
very poor coverage in popular monospace fonts:

- '⏣' lives in the Misc Technical block and is essentially absent from
every common monospace font (Source Code Pro, JetBrains Mono, Fira Code,
Cascadia Code, Hack, Iosevka, Menlo, Consolas, Monaco, IBM Plex Mono,
Ubuntu Mono, Noto Sans Mono, Inconsolata). It is always drawn from a
system fallback font.
- '◯' is the late-addition LARGE CIRCLE codepoint. It is present in some
fonts (Cascadia, Fira Code, Hack, Iosevka, Menlo, Noto Sans Mono) but
missing from many others, including Source Code Pro and most Nerd Font
derivatives based on it.

This is why the graph renders inconsistently across platforms even when
the same monospace font is configured: each OS picks a different
fallback font (Apple Symbols on macOS, Segoe UI Symbol on Windows,
Noto/DejaVu/Symbola on Linux), and the substituted glyphs differ in
shape, weight, and advance width. '◯' is also East Asian Ambiguous
width, so some terminals render it wider than one cell, exaggerating the
misalignment.

Replace the symbols with codepoints from the foundational 1991 Geometric
Shapes block, which has far broader font coverage:

- Merge: '◎' U+25CE BULLSEYE -- concentric circles, the visually closest
cousin to the previous benzene-ring glyph.
- Commit: '○' U+25CB WHITE CIRCLE -- the same hollow-circle silhouette
as before, just a more universally available codepoint.

The new symbols are present in the font directly in significantly more
cases; and when fallback is still required, they are universally
well-drawn (unlike '⏣', which many fallback fonts also lack).

I also considered choosing suitable nerd font symbols for those who are
using nerd fonts, on the assumption that these must work better because
they are guaranteed to be in the font and no fallback font substitution
is necessary; several suitable icons could be considered, e.g.
`nf-cod-circle_large` or `nf-md-circle_double`. Surprisingly, these
didn't work well, and the reason is that (at least in the font I am
using) these are defined with a glyph width that is wider than their
advance width, which means they draw in different sizes depending on
whether they are followed by a space or not. The glyphs we picked above
don't have this problem.

And finally, I considered adding config options so that users with weird
fonts can pick symbols that work well for them. I would like to avoid
having to do this though; ideally we should be able to make a choice
that works well for everybody.
2026-05-04 13:09:28 +02:00
Stefan HallerandClaude Opus 4.7 35d3659cce Use more widely-supported Unicode symbols for the commit graph
The commit graph used '⏣' (U+23E3 BENZENE RING WITH CIRCLE) for merge
commits and '◯' (U+25EF LARGE CIRCLE) for regular commits. Both have
very poor coverage in popular monospace fonts:

- '⏣' lives in the Misc Technical block and is essentially absent from
  every common monospace font (Source Code Pro, JetBrains Mono, Fira
  Code, Cascadia Code, Hack, Iosevka, Menlo, Consolas, Monaco, IBM
  Plex Mono, Ubuntu Mono, Noto Sans Mono, Inconsolata). It is always
  drawn from a system fallback font.
- '◯' is the late-addition LARGE CIRCLE codepoint. It is present in
  some fonts (Cascadia, Fira Code, Hack, Iosevka, Menlo, Noto Sans
  Mono) but missing from many others, including Source Code Pro and
  most Nerd Font derivatives based on it.

This is why the graph renders inconsistently across platforms even
when the same monospace font is configured: each OS picks a different
fallback font (Apple Symbols on macOS, Segoe UI Symbol on Windows,
Noto/DejaVu/Symbola on Linux), and the substituted glyphs differ in
shape, weight, and advance width. '◯' is also East Asian Ambiguous
width, so some terminals render it wider than one cell, exaggerating
the misalignment.

Replace the symbols with codepoints from the foundational 1991
Geometric Shapes block, which has far broader font coverage:

- Merge: '◎' U+25CE BULLSEYE -- concentric circles, the visually
  closest cousin to the previous benzene-ring glyph.
- Commit: '○' U+25CB WHITE CIRCLE -- the same hollow-circle silhouette
  as before, just a more universally available codepoint.

The new symbols are present in the font directly in significantly
more cases; and when fallback is still required, they are universally
well-drawn (unlike '⏣', which many fallback fonts also lack).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:06:29 +02:00
Stefan HallerandGitHub bbc254253d Fix new gopls linter warnings (#5580)
These have started to pop up in my editor after the last gopls update,
and I like my IDE's problems panel to be clean, so fix them.
2026-05-04 13:05:21 +02:00
Stefan Haller 8dbdd74400 Fix linter warnings about ignoring errors from bufio.Scanner 2026-05-03 16:57:24 +02:00
Stefan Haller 562d0541a1 Fix linter warning about inefficient string concatenation 2026-05-03 16:39:41 +02:00
Stefan HallerandGitHub f2ff1eb24b Fix failing windows tests (#5574)
See commit messages for details.
2026-05-02 18:04:34 +02:00
Stefan HallerandGitHub 8bc329a5a6 Clear LC_* env vars when running LANG tests (#5568)
In the event that LC_ALL was set, for example, the tests would fail as
it takes precedence over LANG.

Tiny change that prevents language tests from failing if LC_ALL is set
(I also added LC_MESSAGES but I am not sure if that's also needed, from
what I read it also takes precedence) so I did not open an issue prior,
hopefully that's ok!
2026-05-01 08:16:22 +02:00
Stefan HallerandGitHub 749bb2901a Fix regressions with alternate edit bindings for backspace and move-cursor-right (#5570)
These have alternate keys (`<ctrl+h>` for backspace, and `<ctrl+f>` for
move-cursor-right). Both of these broke with commit 22169e22ffc46c5; the
first because it was accidentally omitted, the second because of a
stupid copy/paste mistake.
2026-05-01 08:11:09 +02:00
Stefan Haller dadc5ffede Fix regressions with alternate edit bindings for backspace and move-cursor-right
These have alternate keys (<ctrl+h> for backspace, and <ctrl+f> for
move-cursor-right). Both of these broke with commit 22169e22ffc46c5; the first
because it was accidentally omitted, the second because of a stupid copy/paste
mistake.
2026-05-01 08:06:01 +02:00
Stefan HallerandGitHub dc44e0e231 Change canonical keybinding syntax (<ctrl+a> instead of <c-a>) (#5565)
In #5563 we started to support an alternative syntax for keybindings:
instead of `<c-a>` you could say `<ctrl+a>`, which is easier to read
especially when there are multiple modifiers (`<ctrl+shift+x>` instead
of `<c-s-x>`). In this PR we make this new syntax the default.
2026-04-30 22:46:03 +02:00
Stefan Haller 6663867bb5 Change keybinding syntax to spell out full modifier names, and use + instead of -
The change to filter_menu_by_keybinding.go is needed because + now occurs in
many keybindings, so pick a different one that occurs only once.
2026-04-30 22:38:53 +02:00
Stefan Haller 74a6ea85c8 Remove the keybindings legend in the cheatsheets
With the new longer syntax that we are about to make the default in the next
commit it is no longer needed.
2026-04-30 22:38:53 +02:00
Stefan HallerandGitHub ccae993b40 Platform-specific edit bindings for move-by-word and backspace-word (#5564)
Make the edit keybindings for "move-by-word" and "backspace-word"
platform-dependent so that they are with ctrl on Windows and Linux, but
alt on Mac. These are the common conventions on these platforms. Also,
make them configurable so that user who can't get used to the change can
map it back to what they were.

Add a "forward-delete-word" keybinding, bound to alt-delete on Mac, and
ctrl-delete on Windows and Linux.
2026-04-30 22:38:35 +02:00
Stefan Haller bfdea2bb4f Add a forwardDeleteWord keybinding
Bound to alt-delete on Mac, and ctrl-delete on Windows and Linux.
2026-04-30 22:31:44 +02:00
Stefan Haller 976dbec9ff Make edit keybindings for move-by-word and backspace-word configurable
And make them platform dependent so that they are with ctrl on Windows and
Linux, but alt on Mac.
2026-04-30 22:31:44 +02:00
Stefan HallerandGitHub 396e1ae8b9 Keybinding revamp (#5563)
Revamp lazygit's keybinding mechanism to support richer keybindings for
those terminals that support the newer keyboard protocols. This makes it
possible to use keybindings such as `ctrl-alt-shift-x`.

Change the default keybindings for moving commits up and down from
`ctrl-k`/`ctrl-j` to `alt-up`/`alt-down`; this is mostly for personal
preference, I find them easier to remember, and they are nicely similar
to moving a line of code up and down in many code editors. Also, change
the default binding for submitting a commit from the commit description
editor from `alt-enter` to `command-enter` on Mac, or `ctrl-enter` on
Linux and Windows; these are the same bindings that are used in many
multi-line edit field situations, e.g. in GitHub comments.

See docs/keybindings/Custom_Keybindings.md for caveats about terminal
compatibility.
2026-04-30 22:30:27 +02:00
Stefan Haller 8a6c97a920 Add breaking changes note for the changed bindings 2026-04-30 22:22:53 +02:00
Stefan Haller f5cefc8a58 Change bindings for moving commits to a-up/down
These are the same as many editors (e.g. VS Code) use for moving a line up/down,
so they are easy to remember.
2026-04-30 22:22:53 +02:00
Stefan Haller 578ee9a31b Change a-enter keybinding to m-enter on mac, and c-enter elsewhere 2026-04-30 22:22:53 +02:00
Stefan HallerandClaude Opus 4.7 09d671e642 Document custom keybinding syntax
The previous version only enumerated the supported (non-rune) bindings.
Replace it with a description of the syntax: how to spell single-rune
keys, special keys, and modified keys; how to combine modifiers; the
keyword forms for `<space>`, `<minus>`, `<plus>`; and which combinations
are rejected because terminals can't deliver them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 22:22:53 +02:00
Stefan Haller 22169e22ff Move modifiers into Key
This changes not only how we store modifiers (inside of Key instead of passing
it separately), but also how we parse keybinding strings: it supports all
combinations of modifiers now (if the terminal supports it, that is).
2026-04-30 22:22:53 +02:00
Stefan Haller 30b619b3db Get rid of pkg/gui/keybindings package
Move keybindings.GetKey to config.GetValidatedKeyBindingKey
2026-04-30 22:22:53 +02:00
Stefan Haller c41fae9fc4 Unexport the labelByKey and keyByLabel maps 2026-04-30 22:22:53 +02:00
Stefan Haller 69e99ffd64 Move keybindings.LabelFromKey to config package
So that it is next to KeyFromLabel.
2026-04-30 22:22:53 +02:00
Stefan Haller c455fca062 Add config.KeyFromLabel 2026-04-30 22:22:53 +02:00
Stefan Haller a5b760f8d1 Fix typo in keybinding
An uppercase letter is not valid with ctrl, and only works because we lowercase
the string before parsing it. This will change later in this branch when we
start supporting bindings like <c-s-r>.
2026-04-30 22:22:53 +02:00
Stefan HallerandGitHub 69635f379c Update to tcell v3 (#5562)
Refactor code to introduce a Key type in gocui that bundles the keyName
and a rune, so that we don't have to pass these around separately
everywhere.

This, and updating tcell to v3 lays the ground for supporting more
keybindings in terminals that support the CSIu keyboard protocol.
2026-04-30 22:22:30 +02:00
Stefan Haller 5d3715f96b Bump tcell dependency to v3 2026-04-30 22:14:26 +02:00
Stefan Haller 64996d12d9 Add Key type
This bundles the keyName and a rune, so that we don't have to pass these around
separately everywhere. This should make it easier to swap out the rune for a
string when we upgrade to tcell v3.
2026-04-30 22:14:26 +02:00
Stefan Haller bff77fc4f9 Rename Key to KeyName
This is to free up the name Key for a type that can be either a KeyName or a
rune (or later a string when we upgrade to tcell v3).
2026-04-30 22:14:26 +02:00
Stefan Haller e633ae6aa6 Cleanup: use named constant 2026-04-30 22:14:26 +02:00
Stefan Haller 679a196dc7 Cleanup: fix typo in comment 2026-04-30 22:14:26 +02:00
Stefan Haller ff58687b68 Cleanup: remove unnecessary function Label()
It's a no-op. (I think this might not have been the case in the past, where
Label() was needed to "normalize" a keybinding or something.)
2026-04-30 22:14:26 +02:00
Stefan Haller f866f04b7c Cleanup: simplify code
The wrappedHandler business is no longer needed (and maybe never was).
2026-04-30 22:14:26 +02:00
Stefan Haller e2e58e3811 Cleanup: remove obsolete code
Should have been deleted in b955002d17.
2026-04-30 22:14:26 +02:00
Stefan HallerandGitHub 95c237fdbb Copy gocui into lazygit repo (#5561)
Over the past few months or even years, [Jesse's gocui
fork](https://github.com/jesseduffield/gocui) has become more and more
tied to lazygit; I have repeatedly made API-breaking changes to it
without caring much about what this means for other clients like
lazydocker or lazynpm (and Jesse was ok with that).

Given that situation, it no longer makes much sense to maintain it in a
standalone repo, so copy it into lazygit; this will greatly reduce the
friction of making changes to it. If/when the time comes to update those
other clients to also benefit from the improvements we make here, we can
always copy the files back to the gocui fork and resume it there.
2026-04-30 22:14:07 +02:00
Stefan Haller fd52adc752 Remove unused Parse/ParseAll and friends
We will provide better ones in lazygit later.
2026-04-30 22:11:57 +02:00
Stefan Haller 714a1baa43 Remove unused StartTicking and tickingMutex 2026-04-30 22:11:57 +02:00
Stefan Haller 21e49dc3b7 Remove unused View.HasLoader functionality 2026-04-30 22:11:57 +02:00
Stefan Haller d06522482f Exclude gocui from codespell check
It has too many typos that I don't care about fixing.
2026-04-30 22:11:57 +02:00
Stefan Haller cfcdcdb5be Fix linter warnings 2026-04-30 14:29:08 +02:00
Stefan Haller 196e0a3c17 Copy gocui files into lazygit repo under pkg/gocui
I copied all files except dot files (.github and .gitignore), the _examples
folder, and go.mod/go.sum.

At some point we may want to copy the files back to the gocui repo when other
clients (e.g. lazydocker) want to use the newer versions of them.
2026-04-30 14:29:08 +02:00
Stefan HallerandGitHub b4f79851db Improve performance of showDivergenceFromBaseBranch (#5536)
### PR Description
Instead of manually figuring out how much ahead each branch is from it's
upstream branch, use [for-each-ref
ahead-behind](https://git-scm.com/docs/git-for-each-ref/2.41.0#Documentation/git-for-each-ref.txt-ahead-behindcommittish)
if supported by the git binary.
On my Windows machine, using the lazygit repo with all 61 branches
created locally, it goes from ~8.5s to ~200ms.

It was also able to find a base branch for `assets` which the previous
iteration did not.

Fixes #5532
2026-04-27 07:11:36 +02:00
Stefan HallerandGitHub 01b617ea18 Bump golang.org/x/sys from 0.42.0 to 0.43.0 (#5548)
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.42.0 to
0.43.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/sys/commit/f33a730cd0c449cfd6f7106780c73052e96cc33d"><code>f33a730</code></a>
windows: support nil security descriptor on GetNamedSecurityInfo</li>
<li><a
href="https://github.com/golang/sys/commit/493d1725989a7a3f3582adfa68faf7207aec666b"><code>493d172</code></a>
cpu: add runtime import in cpu_darwin_arm64_other.go</li>
<li><a
href="https://github.com/golang/sys/commit/2c2be756b97dee6d15aba69839acfbd4e0f3ccc5"><code>2c2be75</code></a>
windows: use syscall.SyscallN in Proc.Call</li>
<li><a
href="https://github.com/golang/sys/commit/a76ec62d6c5389e4fe51c659ba926bf71e471a67"><code>a76ec62</code></a>
cpu: roll back &quot;use IsProcessorFeaturePresent to calculate ARM64 on
windows&quot;</li>
<li>See full diff in <a
href="https://github.com/golang/sys/compare/v0.42.0...v0.43.0">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 20:06:36 +02:00
Stefan HallerandGitHub ced89422c3 Bump actions/github-script from 8 to 9 (#5515)
Bumps [actions/github-script](https://github.com/actions/github-script)
from 8 to 9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/github-script/releases">actions/github-script's
releases</a>.</em></p>
<blockquote>
<h2>v9.0.0</h2>
<p><strong>New features:</strong></p>
<ul>
<li><strong><code>getOctokit</code> factory function</strong> —
Available directly in the script context. Create additional
authenticated Octokit clients with different tokens for multi-token
workflows, GitHub App tokens, and cross-org access. See <a
href="https://github.com/actions/github-script#creating-additional-clients-with-getoctokit">Creating
additional clients with <code>getOctokit</code></a> for details and
examples.</li>
<li><strong>Orchestration ID in user-agent</strong> — The
<code>ACTIONS_ORCHESTRATION_ID</code> environment variable is
automatically appended to the user-agent string for request
tracing.</li>
</ul>
<p><strong>Breaking changes:</strong></p>
<ul>
<li><strong><code>require('@actions/github')</code> no longer works in
scripts.</strong> The upgrade to <code>@actions/github</code> v9
(ESM-only) means <code>require('@actions/github')</code> will fail at
runtime. If you previously used patterns like <code>const { getOctokit }
= require('@actions/github')</code> to create secondary clients, use the
new injected <code>getOctokit</code> function instead — it's available
directly in the script context with no imports needed.</li>
<li><code>getOctokit</code> is now an injected function parameter.
Scripts that declare <code>const getOctokit = ...</code> or <code>let
getOctokit = ...</code> will get a <code>SyntaxError</code> because
JavaScript does not allow <code>const</code>/<code>let</code>
redeclaration of function parameters. Use the injected
<code>getOctokit</code> directly, or use <code>var getOctokit =
...</code> if you need to redeclare it.</li>
<li>If your script accesses other <code>@actions/github</code> internals
beyond the standard <code>github</code>/<code>octokit</code> client, you
may need to update those references for v9 compatibility.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Add ACTIONS_ORCHESTRATION_ID to user-agent string by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li>
<li>ci: use deployment: false for integration test environments by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/712">actions/github-script#712</a></li>
<li>feat!: add getOctokit to script context, upgrade
<code>@​actions/github</code> v9, <code>@​octokit/core</code> v7, and
related packages by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/github-script/pull/700">actions/github-script#700</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/github-script/compare/v8.0.0...v9.0.0">https://github.com/actions/github-script/compare/v8.0.0...v9.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/github-script/commit/3a2844b7e9c422d3c10d287c895573f7108da1b3"><code>3a2844b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/700">#700</a>
from actions/salmanmkc/expose-getoctokit + prepare re...</li>
<li><a
href="https://github.com/actions/github-script/commit/ca10bbdd1a7739de09e99a200c7a59f5d73a4079"><code>ca10bbd</code></a>
fix: use <code>@​octokit/core/</code>types import for v7
compatibility</li>
<li><a
href="https://github.com/actions/github-script/commit/86e48e20ac85c970ed1f96e718fd068173948b7b"><code>86e48e2</code></a>
merge: incorporate main branch changes</li>
<li><a
href="https://github.com/actions/github-script/commit/c1084728b5b935ec4ddc1e4cee877b01797b3ff9"><code>c108472</code></a>
chore: rebuild dist for v9 upgrade and getOctokit factory</li>
<li><a
href="https://github.com/actions/github-script/commit/afff112e4f8b57c718168af75b89ce00bc8d091d"><code>afff112</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/github-script/issues/712">#712</a>
from actions/salmanmkc/deployment-false + fix user-ag...</li>
<li><a
href="https://github.com/actions/github-script/commit/ff8117e5b78c415f814f39ad6998f424fee7b817"><code>ff8117e</code></a>
ci: fix user-agent test to handle orchestration ID</li>
<li><a
href="https://github.com/actions/github-script/commit/81c6b7876079abe10ff715951c9fc7b3e1ab389d"><code>81c6b78</code></a>
ci: use deployment: false to suppress deployment noise from integration
tests</li>
<li><a
href="https://github.com/actions/github-script/commit/3953caf8858d318f37b6cc53a9f5708859b5a7b7"><code>3953caf</code></a>
docs: update README examples from <a
href="https://github.com/v8"><code>@​v8</code></a> to <a
href="https://github.com/v9"><code>@​v9</code></a>, add getOctokit docs
and v9 brea...</li>
<li><a
href="https://github.com/actions/github-script/commit/c17d55b90dcdb3d554d0027a6c180a7adc2daf78"><code>c17d55b</code></a>
ci: add getOctokit integration test job</li>
<li><a
href="https://github.com/actions/github-script/commit/a047196d9a02fe92098771cafbb98c2f1814e408"><code>a047196</code></a>
test: add getOctokit integration tests via callAsyncFunction</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/github-script/compare/v8...v9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/github-script&package-manager=github_actions&previous-version=8&new-version=9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-04-26 20:00:53 +02:00
Stefan HallerandGitHub 3bb2627f9a Bump goreleaser/goreleaser-action from 7.0.0 to 7.1.0 (#5529)
Bumps
[goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action)
from 7.0.0 to 7.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/goreleaser/goreleaser-action/releases">goreleaser/goreleaser-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: verify release checksum and cosign signature by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/550">goreleaser/goreleaser-action#550</a></li>
<li>docs: document cosign verification in README by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/553">goreleaser/goreleaser-action#553</a></li>
<li>docs: Upgrade import GPG action version by <a
href="https://github.com/flecno"><code>@​flecno</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/547">goreleaser/goreleaser-action#547</a></li>
<li>ci: drop docker-bake in favor of plain npm by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/551">goreleaser/goreleaser-action#551</a></li>
<li>ci: add release-major-tag workflow by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/552">goreleaser/goreleaser-action#552</a></li>
<li>ci: drop pre-cosign-v3 goreleaser versions from tests by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/554">goreleaser/goreleaser-action#554</a></li>
<li>ci(deps): bump the actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/543">goreleaser/goreleaser-action#543</a></li>
<li>ci(deps): bump the actions group with 5 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/546">goreleaser/goreleaser-action#546</a></li>
<li>chore(deps): bump undici from 6.23.0 to 6.24.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/545">goreleaser/goreleaser-action#545</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/flecno"><code>@​flecno</code></a> made
their first contribution in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/547">goreleaser/goreleaser-action#547</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/goreleaser/goreleaser-action/compare/v7...v7.1.0">https://github.com/goreleaser/goreleaser-action/compare/v7...v7.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/e24998b8b67b290c2fa8b7c14fcfa7de2c5c9b8c"><code>e24998b</code></a>
ci: drop pre-cosign-v3 goreleaser versions from tests (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/554">#554</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/be2e8a39ba2f6daed623e98e8b6662f008cffc8d"><code>be2e8a3</code></a>
docs: document cosign verification in README (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/553">#553</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/5e53f8eea2783e9a9b5963dafae20a7e5320618c"><code>5e53f8e</code></a>
ci: add release-major-tag workflow (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/552">#552</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/4068afa2f0763491214b56d83686409cb4549b8c"><code>4068afa</code></a>
build: drop docker-bake in favor of plain npm (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/551">#551</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/213ec80f5629fd53743a07c81b86deb4c540955f"><code>213ec80</code></a>
docs: add CONTRIBUTING with pre-commit workflow</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/4b462d3d1d45d4d31bca90093b38fe2a060674ef"><code>4b462d3</code></a>
feat: verify release checksum and cosign signature (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/550">#550</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/01cbe076be10ba0af7b0b9319ac490a93d3d2fcd"><code>01cbe07</code></a>
docs: Upgrade import GPG action version (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/547">#547</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/2a473d70e30d651e68b912d1e1d86e01f3a558b4"><code>2a473d7</code></a>
ci(deps): bump the actions group with 5 updates (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/546">#546</a>)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/fdcf0b9df926c8dd93d4e7f15c508dd346e09eb1"><code>fdcf0b9</code></a>
clean: leftover files from node 22(?)</li>
<li><a
href="https://github.com/goreleaser/goreleaser-action/commit/9881cc53763f713ec5df8d0f4ed575fa41085847"><code>9881cc5</code></a>
fix: use new static URL</li>
<li>Additional commits viewable in <a
href="https://github.com/goreleaser/goreleaser-action/compare/ec59f474b9834571250b370d4735c50f8e2d1e29...e24998b8b67b290c2fa8b7c14fcfa7de2c5c9b8c">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 19:57:44 +02:00
Stefan HallerandGitHub b83b8a05c5 Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#5514)
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
from 8.1.0 to 8.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v8.1.1</h2>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump the npm group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4305">peter-evans/create-pull-request#4305</a></li>
<li>build(deps): bump minimatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4311">peter-evans/create-pull-request#4311</a></li>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4316">peter-evans/create-pull-request#4316</a></li>
<li>build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4323">peter-evans/create-pull-request#4323</a></li>
<li>build(deps-dev): bump undici from 6.23.0 to 6.24.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4328">peter-evans/create-pull-request#4328</a></li>
<li>build(deps-dev): bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4334">peter-evans/create-pull-request#4334</a></li>
<li>build(deps): bump picomatch by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4339">peter-evans/create-pull-request#4339</a></li>
<li>build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4344">peter-evans/create-pull-request#4344</a></li>
<li>build(deps-dev): bump the npm group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4349">peter-evans/create-pull-request#4349</a></li>
<li>fix: retry post-creation API calls on 422 eventual consistency
errors by <a
href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4356">peter-evans/create-pull-request#4356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1">https://github.com/peter-evans/create-pull-request/compare/v8.1.0...v8.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/5f6978faf089d4d20b00c7766989d076bb2fc7f1"><code>5f6978f</code></a>
fix: retry post-creation API calls on 422 eventual consistency errors
(<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4356">#4356</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/d32e88dac789dcc7906e7d26f69f24116fa9c97d"><code>d32e88d</code></a>
build(deps-dev): bump the npm group with 3 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4349">#4349</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/8170bccad11c0df62542c04dcaefe36d342dfd39"><code>8170bcc</code></a>
build(deps-dev): bump handlebars from 4.7.8 to 4.7.9 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4344">#4344</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/00418193b417f888dbf1d993c5c0d31d27fdc7de"><code>0041819</code></a>
build(deps): bump picomatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4339">#4339</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/b993918c8536b6d44706130734d5456879762b27"><code>b993918</code></a>
build(deps-dev): bump flatted from 3.3.1 to 3.4.2 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4334">#4334</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/36d7c8468b48f9c2f8f29e260e82f10d4b90d2bd"><code>36d7c84</code></a>
build(deps-dev): bump undici from 6.23.0 to 6.24.0 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4328">#4328</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/a45d1fb447fcaf601166e405fd4f335cde1a8aa8"><code>a45d1fb</code></a>
build(deps): bump <code>@​tootallnate/once</code> and
jest-environment-jsdom (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4323">#4323</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3499eb61835cc0015c0b786e203d74b1e8f55e43"><code>3499eb6</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4316">#4316</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/3f3b473b8c148f5a7520efb4d1f9a70eea3d9d1f"><code>3f3b473</code></a>
build(deps): bump minimatch (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4311">#4311</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/6699836a213cf8b28c4f0408a404a6ac79d4458a"><code>6699836</code></a>
build(deps-dev): bump the npm group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4305">#4305</a>)</li>
<li>See full diff in <a
href="https://github.com/peter-evans/create-pull-request/compare/c0f553fe549906ede9cf27b5156039d195d2ece0...5f6978faf089d4d20b00c7766989d076bb2fc7f1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=peter-evans/create-pull-request&package-manager=github_actions&previous-version=8.1.0&new-version=8.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
2026-04-26 19:54:47 +02:00
Stefan HallerandGitHub 684ee56e36 Bump dario.cat/mergo from 1.0.1 to 1.0.2 (#5484)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [dario.cat/mergo](https://github.com/imdario/mergo) from 1.0.1 to
1.0.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/imdario/mergo/releases">dario.cat/mergo's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Drops <code>gopkg.in/yaml.v3</code>, only used for loading fixtures.
Thanks <a href="https://github.com/trim21"><code>@​trim21</code></a> for
bringing to my attention (<a
href="https://redirect.github.com/imdario/mergo/issues/262">#262</a>)
that this library is no longer maintained.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/darccio/mergo/compare/v1.0.1...v1.0.2">https://github.com/darccio/mergo/compare/v1.0.1...v1.0.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/darccio/mergo/commit/7b33b2b01026fbbbbfcfbb1ee2c9c0a5e0c9a9f7"><code>7b33b2b</code></a>
refactor: migrate from YAML to JSON for test data and update related
functions</li>
<li><a
href="https://github.com/darccio/mergo/commit/229a2148678d4519fffd30dff24685551e57544a"><code>229a214</code></a>
chore(.well-known): add funding manifest URLs file</li>
<li><a
href="https://github.com/darccio/mergo/commit/6be20c6d7d20645054fcc648b9226ae11d48ad27"><code>6be20c6</code></a>
chore(SECURITY.md): update supported versions to reflect current
versioning</li>
<li><a
href="https://github.com/darccio/mergo/commit/9007623e5248b4a61fff3b3969168d1dc313df9e"><code>9007623</code></a>
chore(README) : remove kubernetes from the list of users</li>
<li><a
href="https://github.com/darccio/mergo/commit/2b1eb9c67d7332f286430af241180c5005a6a5a4"><code>2b1eb9c</code></a>
Update FUNDING.yml</li>
<li><a
href="https://github.com/darccio/mergo/commit/2ceb99467bfe70a74b30b1194774ac63f1888632"><code>2ceb994</code></a>
Create FUNDING.json</li>
<li>See full diff in <a
href="https://github.com/imdario/mergo/compare/v1.0.1...v1.0.2">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 19:50:35 +02:00
Stefan HallerandGitHub a1f7c1bc65 Fix dependabot label for github-actions-related updates (#5546)
I misspelled this when I added the labels section in ca941ffb1825; seems
it was using github_actions before.
2026-04-26 19:43:52 +02:00
Stefan Haller b22c9cffc5 Fix dependabot label for github-actions-related updates
I misspelled this when I added the labels section in ca941ffb1825; seems it was
using github_actions before.
2026-04-26 19:40:56 +02:00
Stefan HallerandGitHub d93b1e7dc3 Bump github.com/sirupsen/logrus from 1.9.3 to 1.9.4 (#5483)
Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus)
from 1.9.3 to 1.9.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sirupsen/logrus/releases">github.com/sirupsen/logrus's
releases</a>.</em></p>
<blockquote>
<h2>v1.9.4</h2>
<h2>Notable changes</h2>
<ul>
<li>go.mod: update minimum supported go version to v1.17 <a
href="https://redirect.github.com/sirupsen/logrus/pull/1460">sirupsen/logrus#1460</a></li>
<li>go.mod: bump up dependencies <a
href="https://redirect.github.com/sirupsen/logrus/pull/1460">sirupsen/logrus#1460</a></li>
<li>Touch-up godoc and add &quot;doc&quot; links.</li>
<li>README: fix links, grammar, and update examples.</li>
<li>Add GNU/Hurd support <a
href="https://redirect.github.com/sirupsen/logrus/pull/1364">sirupsen/logrus#1364</a></li>
<li>Add WASI wasip1 support <a
href="https://redirect.github.com/sirupsen/logrus/pull/1388">sirupsen/logrus#1388</a></li>
<li>Remove uses of deprecated <code>ioutil</code> package <a
href="https://redirect.github.com/sirupsen/logrus/pull/1472">sirupsen/logrus#1472</a></li>
<li>CI: update actions and golangci-lint <a
href="https://redirect.github.com/sirupsen/logrus/pull/1459">sirupsen/logrus#1459</a></li>
<li>CI: remove appveyor, add macOS <a
href="https://redirect.github.com/sirupsen/logrus/pull/1460">sirupsen/logrus#1460</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sirupsen/logrus/compare/v1.9.3...v1.9.4">https://github.com/sirupsen/logrus/compare/v1.9.3...v1.9.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md">github.com/sirupsen/logrus's
changelog</a>.</em></p>
<blockquote>
<h1>1.9.4</h1>
<p>Fixes:</p>
<ul>
<li>Remove uses of deprecated <code>ioutil</code> package</li>
</ul>
<p>Features:</p>
<ul>
<li>Add GNU/Hurd support</li>
<li>Add WASI wasip1 support</li>
</ul>
<p>Code quality:</p>
<ul>
<li>Update minimum supported Go version to 1.17</li>
<li>Documentation updates</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sirupsen/logrus/commit/b61f268f75b6ff134a62cd62aee1095fa12e8d2e"><code>b61f268</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1472">#1472</a>
from goldlinker/master</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/15c29db7129cc15331e9c52493d5aaab217146c7"><code>15c29db</code></a>
refactor: replace the deprecated function in the ioutil package</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/cb253f3080f18ec7e55b4c8f15b62fe0a806f130"><code>cb253f3</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1464">#1464</a>
from thaJeztah/touchup_godoc</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/29b233793060a07fb76eda791f604d87e08d23d1"><code>29b2337</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1468">#1468</a>
from thaJeztah/touchup_readme</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/d9168199e06807d8959126bc8c823ad8b96e3969"><code>d916819</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1427">#1427</a>
from dolmen/fix-testify-usage</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/135e4820b2140747fb868073e4dca1619996417a"><code>135e482</code></a>
README: small touch-ups</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/2c5fa36b73abb8b007474417571e268685d0d84e"><code>2c5fa36</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1467">#1467</a>
from thaJeztah/rm_old_badge</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/877ecec10d61675855189ece38d70d8804302fa4"><code>877ecec</code></a>
README: remove travis badge</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/55cf2560b5e5fd3f0e6ff59e6ce766eb12db4522"><code>55cf256</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1393">#1393</a>
from jsoref/grammar</li>
<li><a
href="https://github.com/sirupsen/logrus/commit/21bae50b76794e93449c3f0f845ea0ac903847db"><code>21bae50</code></a>
Merge pull request <a
href="https://redirect.github.com/sirupsen/logrus/issues/1426">#1426</a>
from dolmen/testing-fix-use-of-math-rand</li>
<li>Additional commits viewable in <a
href="https://github.com/sirupsen/logrus/compare/v1.9.3...v1.9.4">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 19:40:15 +02:00
Stefan HallerandGitHub 59984d0644 Bump github.com/gookit/color from 1.4.2 to 1.6.0 (#5482)
Bumps [github.com/gookit/color](https://github.com/gookit/color) from
1.4.2 to 1.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gookit/color/releases">github.com/gookit/color's
releases</a>.</em></p>
<blockquote>
<h2>v1.6.0</h2>
<h2>Change Log</h2>
<h3>Fixed</h3>
<ul>
<li>fix: fix slice init length (<a
href="https://redirect.github.com/gookit/color/issues/97">#97</a>) <a
href="https://github.com/gookit/color/commit/d4a4cd982d2be4df844a5d25c9fce141ab8c70b4">https://github.com/gookit/color/commit/d4a4cd982d2be4df844a5d25c9fce141ab8c70b4</a></li>
<li>fix: resolve color tag parsing issue in <a
href="https://redirect.github.com/gookit/color/issues/52">#52</a> (PR <a
href="https://redirect.github.com/gookit/color/issues/98">#98</a>) <a
href="https://github.com/gookit/color/commit/bdf4489c0809a60273e6eed23265744387956632">https://github.com/gookit/color/commit/bdf4489c0809a60273e6eed23265744387956632</a></li>
<li>Fix race condition in Theme.Tips method when called concurrently (<a
href="https://redirect.github.com/gookit/color/issues/109">#109</a>) <a
href="https://github.com/gookit/color/commit/6de7584cc156f933c35486438b803728c9117984">https://github.com/gookit/color/commit/6de7584cc156f933c35486438b803728c9117984</a></li>
</ul>
<h3>Feature</h3>
<ul>
<li> feat: add new convert func: HSVToRGB, RGBToHSV <a
href="https://github.com/gookit/color/commit/d95f21382d10ff2176385216a3fcb9fb8eecf33c">https://github.com/gookit/color/commit/d95f21382d10ff2176385216a3fcb9fb8eecf33c</a></li>
</ul>
<h3>Update</h3>
<ul>
<li>Optimize RenderCode performance with fast paths for string arguments
(<a href="https://redirect.github.com/gookit/color/issues/110">#110</a>)
<a
href="https://github.com/gookit/color/commit/e53293506e20255afaabc6a09129f1c40d18300f">https://github.com/gookit/color/commit/e53293506e20255afaabc6a09129f1c40d18300f</a></li>
<li>🎨 up: Remove dependencies on stretchr/testify and use a lighter
gookit/assert alternative. <a
href="https://github.com/gookit/color/commit/4ac4e07737607f32227aaddd5fe77a48d84802ff">https://github.com/gookit/color/commit/4ac4e07737607f32227aaddd5fe77a48d84802ff</a></li>
<li>👔 up: remove deprecated var isLikeInCmd, update some tests
<a
href="https://github.com/gookit/color/commit/c5db0d02b3242fa3e1bce64ae55a4d395d317fe4">https://github.com/gookit/color/commit/c5db0d02b3242fa3e1bce64ae55a4d395d317fe4</a></li>
<li>👔 up: update detect env, use internal Level* instead of the
terminfo.ColorLevel* <a
href="https://github.com/gookit/color/commit/173325a2f9b2d1967023bb72570f5a1521138765">https://github.com/gookit/color/commit/173325a2f9b2d1967023bb72570f5a1521138765</a></li>
<li>🔥 chore: remove any.go, merge printer.go to quickstart.go <a
href="https://github.com/gookit/color/commit/f46f52ebf9f0076f788dd3d8a876c09bba68c1c4">https://github.com/gookit/color/commit/f46f52ebf9f0076f788dd3d8a876c09bba68c1c4</a></li>
</ul>
<h3>Other</h3>
<ul>
<li>build(deps): bump WillAbides/setup-go-faster from 1.8.0 to 1.9.0 (<a
href="https://redirect.github.com/gookit/color/issues/66">#66</a>) <a
href="https://github.com/gookit/color/commit/62dd3d2099b75441d20f5b93980996d205162243">https://github.com/gookit/color/commit/62dd3d2099b75441d20f5b93980996d205162243</a></li>
<li>build(deps): bump golang.org/x/sys from 0.10.0 to 0.11.0 (<a
href="https://redirect.github.com/gookit/color/issues/68">#68</a>) <a
href="https://github.com/gookit/color/commit/b79b464ac69ea61948ee0f19074efd02f570f0b5">https://github.com/gookit/color/commit/b79b464ac69ea61948ee0f19074efd02f570f0b5</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.9.0 to 1.9.1 (<a
href="https://redirect.github.com/gookit/color/issues/69">#69</a>) <a
href="https://github.com/gookit/color/commit/ecb55704cb02ba2089a8cb1b2f235ae30f094c58">https://github.com/gookit/color/commit/ecb55704cb02ba2089a8cb1b2f235ae30f094c58</a></li>
<li>build(deps): bump actions/checkout from 3 to 4 (<a
href="https://redirect.github.com/gookit/color/issues/73">#73</a>) <a
href="https://github.com/gookit/color/commit/91529f090e76d51053ebb67c267f56def485c985">https://github.com/gookit/color/commit/91529f090e76d51053ebb67c267f56def485c985</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.9.1 to 1.10.1
(<a href="https://redirect.github.com/gookit/color/issues/71">#71</a>)
<a
href="https://github.com/gookit/color/commit/3df6d412f5653eef111892c50b41bb3c6756e87f">https://github.com/gookit/color/commit/3df6d412f5653eef111892c50b41bb3c6756e87f</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.10.1 to 1.11.0
(<a href="https://redirect.github.com/gookit/color/issues/74">#74</a>)
<a
href="https://github.com/gookit/color/commit/8fa895424999c87599ee9def2a272b5fe4dca10a">https://github.com/gookit/color/commit/8fa895424999c87599ee9def2a272b5fe4dca10a</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.11.0 to 1.12.0
(<a href="https://redirect.github.com/gookit/color/issues/75">#75</a>)
<a
href="https://github.com/gookit/color/commit/9c0ef29614cc5f33bbb5d6e54d69488e19377162">https://github.com/gookit/color/commit/9c0ef29614cc5f33bbb5d6e54d69488e19377162</a></li>
<li>build(deps): bump golang.org/x/sys from 0.11.0 to 0.13.0 (<a
href="https://redirect.github.com/gookit/color/issues/76">#76</a>) <a
href="https://github.com/gookit/color/commit/4af2bdd60e1f8b190a521e6d08b38e7abce9be93">https://github.com/gookit/color/commit/4af2bdd60e1f8b190a521e6d08b38e7abce9be93</a></li>
<li>build(deps): bump golang.org/x/sys from 0.13.0 to 0.14.0 (<a
href="https://redirect.github.com/gookit/color/issues/77">#77</a>) <a
href="https://github.com/gookit/color/commit/44243abe880c2859f5397108eb1f73dcb296ecfe">https://github.com/gookit/color/commit/44243abe880c2859f5397108eb1f73dcb296ecfe</a></li>
<li>build(deps): bump golang.org/x/sys from 0.14.0 to 0.15.0 (<a
href="https://redirect.github.com/gookit/color/issues/78">#78</a>) <a
href="https://github.com/gookit/color/commit/72fbeaf35c9d67fb4009467dabe903c52a912b7e">https://github.com/gookit/color/commit/72fbeaf35c9d67fb4009467dabe903c52a912b7e</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.12.0 to 1.13.0
(<a href="https://redirect.github.com/gookit/color/issues/79">#79</a>)
<a
href="https://github.com/gookit/color/commit/0c83bae2776f33965b7bfcd261eba737b1658006">https://github.com/gookit/color/commit/0c83bae2776f33965b7bfcd261eba737b1658006</a></li>
<li>build(deps): bump github/codeql-action from 2 to 3 (<a
href="https://redirect.github.com/gookit/color/issues/80">#80</a>) <a
href="https://github.com/gookit/color/commit/1bc67c42729039d4f93014805387e11bed864e36">https://github.com/gookit/color/commit/1bc67c42729039d4f93014805387e11bed864e36</a></li>
<li>build(deps): bump golang.org/x/sys from 0.15.0 to 0.16.0 (<a
href="https://redirect.github.com/gookit/color/issues/81">#81</a>) <a
href="https://github.com/gookit/color/commit/23187d9a0c2245bdbfc4cba464d4c6b4674eee13">https://github.com/gookit/color/commit/23187d9a0c2245bdbfc4cba464d4c6b4674eee13</a></li>
<li>build(deps): bump WillAbides/setup-go-faster from 1.13.0 to 1.14.0
(<a href="https://redirect.github.com/gookit/color/issues/82">#82</a>)
<a
href="https://github.com/gookit/color/commit/d7e962b5db0306c0020010da8625525872d0b229">https://github.com/gookit/color/commit/d7e962b5db0306c0020010da8625525872d0b229</a></li>
<li>build(deps): bump golang.org/x/sys from 0.16.0 to 0.17.0 (<a
href="https://redirect.github.com/gookit/color/issues/83">#83</a>) <a
href="https://github.com/gookit/color/commit/f6fd20fee42b291c90d86ed1d1f9d1ddc4a3f0c6">https://github.com/gookit/color/commit/f6fd20fee42b291c90d86ed1d1f9d1ddc4a3f0c6</a></li>
<li>build(deps): bump golang.org/x/sys from 0.17.0 to 0.18.0 (<a
href="https://redirect.github.com/gookit/color/issues/86">#86</a>) <a
href="https://github.com/gookit/color/commit/18d84cbc1de065083e0b416abfa4dcf7293129ff">https://github.com/gookit/color/commit/18d84cbc1de065083e0b416abfa4dcf7293129ff</a></li>
<li>build(deps): bump softprops/action-gh-release from 1 to 2 (<a
href="https://redirect.github.com/gookit/color/issues/87">#87</a>) <a
href="https://github.com/gookit/color/commit/7e68fa7262358ecaa584445c256f10a183d7981d">https://github.com/gookit/color/commit/7e68fa7262358ecaa584445c256f10a183d7981d</a></li>
<li>build(deps): bump golang.org/x/sys from 0.18.0 to 0.19.0 (<a
href="https://redirect.github.com/gookit/color/issues/88">#88</a>) <a
href="https://github.com/gookit/color/commit/532f1f3e0e48b673a8d4beebaced89c4496a6645">https://github.com/gookit/color/commit/532f1f3e0e48b673a8d4beebaced89c4496a6645</a></li>
<li>build(deps): bump golang.org/x/sys from 0.19.0 to 0.20.0 (<a
href="https://redirect.github.com/gookit/color/issues/89">#89</a>) <a
href="https://github.com/gookit/color/commit/c76538d4506d1c694fb501c1de79c2c18fb5c2c9">https://github.com/gookit/color/commit/c76538d4506d1c694fb501c1de79c2c18fb5c2c9</a></li>
<li>build(deps): bump golang.org/x/sys from 0.20.0 to 0.21.0 (<a
href="https://redirect.github.com/gookit/color/issues/90">#90</a>) <a
href="https://github.com/gookit/color/commit/7eaf97a3da4d09ffebf428a92d5a95beb251bc5f">https://github.com/gookit/color/commit/7eaf97a3da4d09ffebf428a92d5a95beb251bc5f</a></li>
<li>Update utils_test.go to allow running in read-only mode. (<a
href="https://redirect.github.com/gookit/color/issues/91">#91</a>) <a
href="https://github.com/gookit/color/commit/fedc17449eaf8caebff61f9cae96eb04dcc644b6">https://github.com/gookit/color/commit/fedc17449eaf8caebff61f9cae96eb04dcc644b6</a></li>
<li>build(deps): bump golang.org/x/sys from 0.21.0 to 0.25.0 (<a
href="https://redirect.github.com/gookit/color/issues/96">#96</a>) <a
href="https://github.com/gookit/color/commit/07ab70b0f88162cc5c4f5489433a606f740d425a">https://github.com/gookit/color/commit/07ab70b0f88162cc5c4f5489433a606f740d425a</a></li>
<li>build(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0
(<a href="https://redirect.github.com/gookit/color/issues/85">#85</a>)
<a
href="https://github.com/gookit/color/commit/4bcc6dbae488109fa55d4d13cfb79a9fe9da069b">https://github.com/gookit/color/commit/4bcc6dbae488109fa55d4d13cfb79a9fe9da069b</a></li>
<li>build(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0
(<a href="https://redirect.github.com/gookit/color/issues/99">#99</a>)
<a
href="https://github.com/gookit/color/commit/992eecff327924e8a6415bffadaa8aeb94e00bad">https://github.com/gookit/color/commit/992eecff327924e8a6415bffadaa8aeb94e00bad</a></li>
<li>build(deps): bump golang.org/x/sys from 0.25.0 to 0.30.0 (<a
href="https://redirect.github.com/gookit/color/issues/100">#100</a>) <a
href="https://github.com/gookit/color/commit/90a106811b21233f86d94f53b387530136869611">https://github.com/gookit/color/commit/90a106811b21233f86d94f53b387530136869611</a></li>
<li>build(deps): bump golang.org/x/sys from 0.30.0 to 0.31.0 (<a
href="https://redirect.github.com/gookit/color/issues/101">#101</a>) <a
href="https://github.com/gookit/color/commit/860732ea1d6ca419b079475751c7944f48afb790">https://github.com/gookit/color/commit/860732ea1d6ca419b079475751c7944f48afb790</a></li>
<li>📝 chore: add ci test on go1.21+, remove test on go1.18 <a
href="https://github.com/gookit/color/commit/5a4956180d841b68a25a68cb632aea0128845a5a">https://github.com/gookit/color/commit/5a4956180d841b68a25a68cb632aea0128845a5a</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gookit/color/commit/0b1dc4cd9cbcabe084c162b6095b05a9030c0275"><code>0b1dc4c</code></a>
 demo: update the examples deps and some codes</li>
<li><a
href="https://github.com/gookit/color/commit/fa4789157447e17c0768cb97cd894c544bcace2c"><code>fa47891</code></a>
⬆️ dep: upgrade gookit/assert to v0.1.1, update some tests</li>
<li><a
href="https://github.com/gookit/color/commit/d95f21382d10ff2176385216a3fcb9fb8eecf33c"><code>d95f213</code></a>
 feat: add new convert func: HSVToRGB, RGBToHSV</li>
<li><a
href="https://github.com/gookit/color/commit/173325a2f9b2d1967023bb72570f5a1521138765"><code>173325a</code></a>
👔 up: update detect env, use internal Level* instead of the
terminfo....</li>
<li><a
href="https://github.com/gookit/color/commit/c5db0d02b3242fa3e1bce64ae55a4d395d317fe4"><code>c5db0d0</code></a>
👔 up: remove deprecated var isLikeInCmd, update some tests</li>
<li><a
href="https://github.com/gookit/color/commit/f46f52ebf9f0076f788dd3d8a876c09bba68c1c4"><code>f46f52e</code></a>
🔥 chore: remove any.go, merge printer.go to quickstart.go</li>
<li><a
href="https://github.com/gookit/color/commit/cc45966f383051c98a368c585241f9e9f9581014"><code>cc45966</code></a>
🎨 chore: update some go file code style</li>
<li><a
href="https://github.com/gookit/color/commit/e53293506e20255afaabc6a09129f1c40d18300f"><code>e532935</code></a>
Optimize RenderCode performance with fast paths for string arguments (<a
href="https://redirect.github.com/gookit/color/issues/110">#110</a>)</li>
<li><a
href="https://github.com/gookit/color/commit/f14a7b8884c0468d74dff06523ca2e193ea633dd"><code>f14a7b8</code></a>
📝 chore: update some code style and some tests</li>
<li><a
href="https://github.com/gookit/color/commit/6de7584cc156f933c35486438b803728c9117984"><code>6de7584</code></a>
Fix race condition in Theme.Tips method when called concurrently (<a
href="https://redirect.github.com/gookit/color/issues/109">#109</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/gookit/color/compare/v1.4.2...v1.6.0">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 19:35:46 +02:00
Stefan HallerandGitHub c852855238 Bump github.com/kyokomi/emoji/v2 from 2.2.8 to 2.2.13 (#5481)
Bumps [github.com/kyokomi/emoji/v2](https://github.com/kyokomi/emoji)
from 2.2.8 to 2.2.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/kyokomi/emoji/releases">github.com/kyokomi/emoji/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.13</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kyokomi/emoji/compare/v2.2.12...v2.2.13">https://github.com/kyokomi/emoji/compare/v2.2.12...v2.2.13</a></p>
<h2>v2.2.12</h2>
<h2>What's Changed</h2>
<ul>
<li>Add workflow to check generateEmojiCodeMap by <a
href="https://github.com/kyokomi"><code>@​kyokomi</code></a> in <a
href="https://redirect.github.com/kyokomi/emoji/pull/61">kyokomi/emoji#61</a></li>
<li>Fix export <code>emojize</code> for use with the transform package
etc. by <a href="https://github.com/kyokomi"><code>@​kyokomi</code></a>
in <a
href="https://redirect.github.com/kyokomi/emoji/pull/62">kyokomi/emoji#62</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kyokomi/emoji/compare/v2.2.11...v2.2.12">https://github.com/kyokomi/emoji/compare/v2.2.11...v2.2.12</a></p>
<h2>v2.2.11</h2>
<h2>What's Changed</h2>
<ul>
<li>Support github actions CI by <a
href="https://github.com/kyokomi"><code>@​kyokomi</code></a> in <a
href="https://redirect.github.com/kyokomi/emoji/pull/56">kyokomi/emoji#56</a></li>
<li>Upgrade emoji by <a
href="https://github.com/kyokomi"><code>@​kyokomi</code></a> in <a
href="https://redirect.github.com/kyokomi/emoji/pull/57">kyokomi/emoji#57</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kyokomi/emoji/compare/v2.2.10...v2.2.11">https://github.com/kyokomi/emoji/compare/v2.2.10...v2.2.11</a></p>
<h2>v2.2.10</h2>
<h2>What's Changed</h2>
<ul>
<li>Update emoji by <a
href="https://github.com/kyokomi"><code>@​kyokomi</code></a> in <a
href="https://redirect.github.com/kyokomi/emoji/pull/55">kyokomi/emoji#55</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kyokomi/emoji/compare/v2.2.9...v2.2.10">https://github.com/kyokomi/emoji/compare/v2.2.9...v2.2.10</a></p>
<h2>v2.2.9</h2>
<ul>
<li>Update emojis</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/kyokomi/emoji/commit/6143718b8c151d51c5a3388d3ebf2947887be8ec"><code>6143718</code></a>
Update emoji</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/3a71330d6d8dc4ff12f54872055f7cb3a40596f8"><code>3a71330</code></a>
Delete check_generate.yml</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/9db2baf4342717f3b5de85964c8d1fad90727fb9"><code>9db2baf</code></a>
Update unicodeorg url</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/b24f485ed90c9bc7d733b8df97ac380f44e0df11"><code>b24f485</code></a>
fit typo</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/c37c65064ac285cd1d62ec6300c94a781d8a8486"><code>c37c650</code></a>
Fix export <code>emojize</code> for use with the transform package etc.
(<a
href="https://redirect.github.com/kyokomi/emoji/issues/62">#62</a>)</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/6bdd002db218c6342ad9a13085fb2250dc5b36c4"><code>6bdd002</code></a>
Add workflow to check generateEmojiCodeMap (<a
href="https://redirect.github.com/kyokomi/emoji/issues/61">#61</a>)</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/44f96761fd0b9926bc931661f01a701164b8308b"><code>44f9676</code></a>
Upgrade emoji (<a
href="https://redirect.github.com/kyokomi/emoji/issues/57">#57</a>)</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/52125aba273b0e17ae7cc40211d4009589320adb"><code>52125ab</code></a>
Support github actions CI (<a
href="https://redirect.github.com/kyokomi/emoji/issues/56">#56</a>)</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/0a3035031369c2e9ccf3a6b5bee535cdeba3b5dc"><code>0a30350</code></a>
Merge pull request <a
href="https://redirect.github.com/kyokomi/emoji/issues/55">#55</a> from
kyokomi/feature/kyokomi/emoji_generate</li>
<li><a
href="https://github.com/kyokomi/emoji/commit/2cd1718ccb1d7fee4758870d165a8fb147c848ba"><code>2cd1718</code></a>
fix tool install</li>
<li>Additional commits viewable in <a
href="https://github.com/kyokomi/emoji/compare/v2.2.8...v2.2.13">compare
view</a></li>
</ul>
</details>
<br />
2026-04-26 19:30:57 +02:00
Stefan HallerandGitHub 25ea907f70 Bump samber.lo to latest version (#5545) 2026-04-26 19:26:56 +02:00
Stefan Haller e13cd140b7 Bump samber.lo to latest version 2026-04-26 19:21:22 +02:00
Stefan HallerandGitHub 9969fdc006 Define PR colors as hex colors to make them the same as GitHub's (#5480)
This is so that they look the same no matter what color palette the
terminal is using. (One user complained that the text for the Open state
is barely readable, because they are using a palette that has a very
pale green.)

GitHub uses slightly different colors depending on light vs. dark mode;
fortunately they are very close, so hopefully we can ignore this. I
picked the ones for dark mode here, on the assumption that this is more
common.

Also, not all terminals support true hex colors; for example,
Terminal.app on macOS doesn't, so it maps the colors to the closest ones
in the Xterm-256 palette. This shouldn't be a huge problem, but for some
reason it displays draft PRs as something closer to Cyan than grey, and
I don't understand why.
2026-04-26 17:03:50 +02:00
Stefan Haller cb36455f87 Define PR colors as hex colors to make them the same as GitHub's
This is so that they look the same no matter what color palette the terminal is
using. (One user complained that the text for the Open state is barely readable,
because they are using a palette that has a very pale green.)

GitHub uses slightly different colors depending on light vs. dark mode;
fortunately they are very close, so hopefully we can ignore this. I picked the
ones for dark mode here, on the assumption that this is more common.

Also, not all terminals support true hex colors; for example, Terminal.app on
macOS doesn't, so it maps the colors to the closest ones in the Xterm-256
palette. This shouldn't be a huge problem, but for some reason it displays draft
PRs as something closer to Cyan than grey, and I don't understand why.
2026-04-26 17:00:43 +02:00
Stefan HallerandGitHub db380b402b If multiple remotes exist but only one is a Github remote, pick it without prompting (#5544)
If the repo has multiple remotes, but only one of them is on Github (the
others might for example point to a self-hosted Critic server or
something like that), lazygit would still present a menu to choose the
remote for pull requests, but it would contain only that single entry.
That's pointless, pick it automatically without prompting.
2026-04-26 16:59:10 +02:00
Stefan Haller cef1f8fc2c If multiple remotes exist but only one is a Github remote, pick it without prompting
If the repo has multiple remotes, but only one of them is on Github (the others
might for example point to a self-hosted Critic server or something like that),
lazygit would still present a menu to choose the remote for pull requests, but
it would contain only that single entry. That's pointless, pick it automatically
without prompting.

We add some tests while we're at it; these wouldn't have caught the problem,
because they only test getGithubBaseRemote which already takes the filtered
github remotes. It's still better than not having any tests; the real issue
could only have been caught with an integration test, which we don't bother
adding.
2026-04-26 16:55:51 +02:00
Stefan HallerandGitHub c826d83697 Stop showing cached PRs when we no longer have a base remote (#5543)
If we used to have a base remote (e.g. because there was only one), but
now we don't (e.g. because the user has added a second one, and we don't
know yet which one is the base), stop showing the cached PRs. This is
especially important in the case that the user cancels the prompt, in
which case we don't have a base remote for the rest of the session, but
would keep showing the (potentially stale) cached PRs forever.

You might ask why we don't retain the previous base remote in the case
that we used to have one but no longer do; this may be possible, but
it's error-prone because the user might have shuffled their remotes
around and changed their names. I don't think it's worth the risk.
2026-04-26 16:53:22 +02:00
Stefan Haller 5b596bb62b Stop showing cached PRs when we no longer have a base remote
If we used to have a base remote (e.g. because there was only one), but now we
don't (e.g. because the user has added a second one, and we don't know yet which
one is the base), stop showing the cached PRs. This is especially important in
the case that the user cancels the prompt, in which case we don't have a base
remote for the rest of the session, but would keep showing the (potentially
stale) cached PRs forever.
2026-04-25 14:23:43 +02:00
Stefan HallerandGitHub 0ecf818a73 Preserve whitespace when remembering commit message (#5528)
This is useful when cancelling out of the commit panel mid-sentence
(after having typed the space for the next word); when entering the
commit message panel again, the space was gone and you had to type it
again. Small thing, but it just seems better to resume the panel in
exactly the state that you left it in. (Which we actually don't do; we
don't remember the cursor position, or which of the subject/description
panels was active. That would be a separate improvement.)

Fixes #5519.
2026-04-21 18:55:08 +02:00
Stefan HallerandClaude Opus 4.7 227081f1d1 Preserve whitespace when remembering a commit message
This is useful when cancelling out of the commit panel mid-sentence (after
having typed the space for the next word); when entering the commit message
panel again, the space was gone and you had to type it again. Small thing, but
it just seems better to resume the panel in exactly the state that you left it
in. (Which we actually don't do; we don't remember the cursor position, or which
of the subject/description panels was active. That would be a separate
improvement.)

The save path and the load path used to be asymmetric. On save, the textarea
getters applied strings.TrimSpace, which stripped any leading blank lines, a
trailing newline after the cursor, or indentation on the very first line of the
description — all of which are legitimate user content. On load,
SplitCommitMessageAndDescription did TrimSpace on the description as well, and
the preserved message was routed through that same git-format split because
HandleCommitPress passed it as OpenCommitMessagePanel's InitialMessage. The
result: every round-trip through "escape and reopen" silently mutated the
message.

The fix is to treat our own preservation file as its own format, distinct from
git's canonical "summary\n\nbody" format:

- The textarea getters return raw content. strings.TrimSpace moves to the one
  place that still needs it: the empty-summary check in HandleCommitConfirm (git
  itself strips trailing whitespace and blank lines, so no pre-trim is needed
  before -m).
- SplitPreservedCommitMessage / SetPreservedMessageInView split on the single
  "\n" our Join uses, without any trimming — truly lossless.
- SplitCommitMessageAndDescription keeps its git-format behavior but replaces
  TrimSpace with TrimPrefix("\n"), so it strips only the blank-line separator
  and leaves body indentation intact.
- HandleCommitPress now mirrors HandleWIPCommitPress: it no longer passes the
  preserved message as InitialMessage. OpenCommitMessagePanel resolves the
  preserved content itself, uses it for display via the preservation-format
  setter, and stores it as the initial message so the close-time "did the user
  change anything?" check still correctly detects a cleared panel.
- GetInitialMessage no longer trims. With raw getters on both sides of the
  comparison, trimming here caused spurious non-matches (e.g. for preserved
  content with trailing whitespace). The original motivation — matching a
  "WIP: " prefix with trailing space — works unchanged.
- UpdateCommitPanelView becomes dead code and is removed; its one remaining
  caller (history cycling, always git-format) goes directly through
  SetMessageAndDescriptionInView.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 18:51:17 +02:00
Stefan Haller 07a5bb5867 Add integration test demonstrating whitespace loss in preserved commit messages
Typing a description with leading blank lines, canceling the commit panel, and
reopening it currently drops leading blank lines.
2026-04-21 18:51:17 +02:00
Stefan Haller 4ab36461cb Tolerate trailing newlines in AddCoAuthorToDescription
Callers currently hand this function a trimmed description, so the output is
always clean. An upcoming change to the commit-panel getters will stop trimming
at the callsite (so that whitespace typed by the user round-trips through the
preservation file exactly), at which point the description can end with one or
more newlines. Without this change, a user who presses Enter after their
description body and then invokes "Add co-author" would end up with two blank
lines between the body and the trailer instead of the expected one.
2026-04-21 18:51:17 +02:00
Stefan Haller 58309b02a9 Fix the check_for_fixups script
Git's --grep option uses Basic Regular Expression syntax by default, which means
that the `[^\n]*` didn't do what was intended; it means "any character except
`\` or the literal letter `n`" — not "any character except newline."

Besides, `^` matched any line start, not only the start of the entire message,
so "any character except newline" would have been wrong anyway. Given this, the
script matched commits that have WIP or DROPME in the body, which is not what we
want. (The last commit of this branch is an example for that.)

Fix this by listing only the subject lines and grepping them outside of git;
this also lets us use a slightly simpler regex (we want to match WIP anywhere in
the subject).
2026-04-21 18:51:17 +02:00
Stefan HallerandGitHub 2ad6e1a904 Preserve commit message when quitting while the commit message panel is open (#5524)
This isn't possible with the default quit binding ('q'), but there's an
alternative binding (ctrl-c) that does work while the panel is open;
also, users can rebind quit to something like ctrl-q.

Fixes #5513.
2026-04-21 11:30:52 +02:00
Stefan Haller 337ab2a276 Preserve commit message when quitting while the commit message panel is open
This isn't possible with the default quit binding ('q'), but there's an
alternative binding (ctrl-c) that does work while the panel is open; also, users
can rebind quit to something like ctrl-q.
2026-04-21 11:25:29 +02:00
Stefan Haller afbfbb27a4 Add OnQuit hook for controllers
This allows the controller of the currently focused context to do some last
minute cleanup before quitting.
2026-04-21 11:25:29 +02:00
Stefan Haller 3de2a2d96c Extract PreserveCommitMessage from CloseCommitMessagePanel
We'll want to call just the preservation step when the app is quitting
with the commit message panel open: at that point the view-hiding and
context-popping in CloseCommitMessagePanel are pointless (the app is
about to exit), and some of the focus-lost side effects could be
surprising during teardown.
2026-04-21 11:25:29 +02:00
Stefan Haller 5c61126c4b Remove unnecessary clearing of the commit message panel on close
There's no reason for this; when opening the panel next time, it will be
populated again. Also, it doesn't make sense to do this only when not preserving
the message.
2026-04-21 11:23:37 +02:00
Stefan HallerandGitHub c183f1ea8c Retry on ref lock errors during fetch/pull (#5161)
Related to #5124

## Changes
- Extended existing retry logic to handle transient ref lock errors
- Added retry for "cannot lock ref" and "cannot update ref" error
messages
- Extracted retryable error check into helper function for clarity

These errors can occur intermittently during fetch/pull operations on
large repositories and typically succeed on retry.
2026-04-20 09:09:17 +02:00