Skip to content

Conversation

@stefanhaller
Copy link
Collaborator

Most of our prompts don't (shouldn't) allow empty input, but most callers didn't check, and would run into cryptic errors when the user pressed enter at an empty prompt (e.g. when creating a new branch). Now we simply don't allow hitting enter in this case, and show an error toast instead.

This behavior is opt-out, because there are a few cases where empty input is supported (e.g. creating a stash).

…unction

And call this new helper function from both wrappedConfirmationFunction and
wrappedPromptConfirmationFunction; this gives us more flexibility to do
different things in each of those.
Previously it was used both for the Confirm handler and the Cancel handler, as
well as for the Confirm handler of confirmation popups (not prompts). There was
no other way to do it given how wrappedConfirmationFunction was shared between
all these; but now there is. The logic is really only needed for the Confirm
handler of prompts.

This doesn't fix anything, it just makes things clearer.
The comment was apparently copy/pasted from above; the branch name cannot be
blank in this case.
Most of our prompts don't (shouldn't) allow empty input, but most callers didn't
check, and would run into cryptic errors when the user pressed enter at an empty
prompt (e.g. when creating a new branch). Now we simply don't allow hitting
enter in this case, and show an error toast instead.

This behavior is opt-out, because there are a few cases where empty input is
supported (e.g. creating a stash).
As of the previous commit, branchName can no longer be empty, so no need to
handle this.
This doesn't really solve a pressing problem, because I guess it's unlikely that
users add spaces at the beginning or end of what they type into a prompt; but it
could happen, and in this case we almost always want to strip it. Just adding
this here for completeness while I was working on this code.

The only exception is the input prompt of custom commands, because who knows
what users want to use that input for in their custom command.
The prompt code takes care of this now.
@stefanhaller stefanhaller added the enhancement New feature or request label Nov 15, 2025
@stefanhaller stefanhaller merged commit 933573f into master Nov 15, 2025
14 checks passed
@stefanhaller stefanhaller deleted the ensure-non-empty-prompt-input branch November 15, 2025 14:41
@codacy-production
Copy link

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
Report missing for 3d5b22f1 91.18%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (3d5b22f) Report Missing Report Missing Report Missing
Head commit (95e5ed6) 58938 51275 87.00%

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

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#5043) 34 31 91.18%

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

See your quality gate settings    Change summary preferences

Footnotes

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

stefanhaller added a commit to karolzwolak/lazygit that referenced this pull request Nov 15, 2025
Remove unnecessary error checks:
- forkUsername needn't be checked because as of PR jesseduffield#5043, the result of a Prompt
  call can no longer be an empty string
- if the originUrl is empty for some reason, this will be caught by the
  "unsupported or invalid remote URL" error check below, which is good enough
  for this very unlikely case.
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Dec 12, 2025
This MR contains the following updates:

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

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

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

---

### Release Notes

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

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

[Compare Source](jesseduffield/lazygit@v0.56.0...v0.57.0)

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

#### What's Changed

##### Enhancements 🔥

- Open pull requests in browser with extra leading slashes removed by [@&#8203;hrzlgnm](https://github.com/hrzlgnm) in [#&#8203;5018](jesseduffield/lazygit#5018)
- Allow using SelectedSubmodule in CustomCommands by [@&#8203;rlkandela](https://github.com/rlkandela) in [#&#8203;5015](jesseduffield/lazygit#5015)
- Don't allow empty input in most prompts by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5043](jesseduffield/lazygit#5043)
- Suppress output from background fetch (unless there were errors) by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5044](jesseduffield/lazygit#5044)
- feat: add fork remote command by [@&#8203;karolzwolak](https://github.com/karolzwolak) in [#&#8203;4831](jesseduffield/lazygit#4831)
- Trigger immediate background fetch when switching repos by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5047](jesseduffield/lazygit#5047)

##### Fixes 🔧

- Keep cursor at top/bottom when navigating by page by [@&#8203;RaphaeleL](https://github.com/RaphaeleL) in [#&#8203;5019](jesseduffield/lazygit#5019)
- Switch to branches view when checking out a commit by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5048](jesseduffield/lazygit#5048)
- Fix deleting a remote tag when a remote branch with the same name exists, or vice versa by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5075](jesseduffield/lazygit#5075)
- Show fixup base commits in correct order in ctrl-f error message by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5073](jesseduffield/lazygit#5073)
- Band-aid fix for rare crashes when refreshing files by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5074](jesseduffield/lazygit#5074)
- Fix to support creating MRs for repositories cloned with SSH alias by [@&#8203;roveo](https://github.com/roveo) in [#&#8203;5082](jesseduffield/lazygit#5082)

##### Maintenance ⚙️

- Keep config and schema unchanged during a release by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5010](jesseduffield/lazygit#5010)
- Modernize all codes by [@&#8203;phanen](https://github.com/phanen) in [#&#8203;5036](jesseduffield/lazygit#5036)
- Bump golang.org/x/crypto from 0.37.0 to 0.45.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5054](jesseduffield/lazygit#5054)
- Don't use "HEADLESS" environment variable for running tests by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5064](jesseduffield/lazygit#5064)
- refactor: use strings.Builder and strings.Repeat to simplify code by [@&#8203;boqishan](https://github.com/boqishan) in [#&#8203;5068](jesseduffield/lazygit#5068)
- chore: fix function name in comment by [@&#8203;riyueguang](https://github.com/riyueguang) in [#&#8203;4481](jesseduffield/lazygit#4481)

##### Docs 📖

- Add a "Commit history" section to CONTRIBUTING.md by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5022](jesseduffield/lazygit#5022)
- Update table of contents in README.md by [@&#8203;madscientist16](https://github.com/madscientist16) in [#&#8203;5045](jesseduffield/lazygit#5045)
- Update docs and schema for release by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5091](jesseduffield/lazygit#5091)

##### I18n 🌎

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

##### Performance Improvements 📊

- Fix and speed up the file list for the "Enter path to filter by" feature by [@&#8203;stefanhaller](https://github.com/stefanhaller) in [#&#8203;5056](jesseduffield/lazygit#5056)

#### New Contributors

- [@&#8203;hrzlgnm](https://github.com/hrzlgnm) made their first contribution in [#&#8203;5018](jesseduffield/lazygit#5018)
- [@&#8203;RaphaeleL](https://github.com/RaphaeleL) made their first contribution in [#&#8203;5019](jesseduffield/lazygit#5019)
- [@&#8203;rlkandela](https://github.com/rlkandela) made their first contribution in [#&#8203;5015](jesseduffield/lazygit#5015)
- [@&#8203;phanen](https://github.com/phanen) made their first contribution in [#&#8203;5036](jesseduffield/lazygit#5036)
- [@&#8203;madscientist16](https://github.com/madscientist16) made their first contribution in [#&#8203;5045](jesseduffield/lazygit#5045)
- [@&#8203;karolzwolak](https://github.com/karolzwolak) made their first contribution in [#&#8203;4831](jesseduffield/lazygit#4831)
- [@&#8203;boqishan](https://github.com/boqishan) made their first contribution in [#&#8203;5068](jesseduffield/lazygit#5068)
- [@&#8203;riyueguang](https://github.com/riyueguang) made their first contribution in [#&#8203;4481](jesseduffield/lazygit#4481)
- [@&#8203;roveo](https://github.com/roveo) made their first contribution in [#&#8203;5082](jesseduffield/lazygit#5082)

**Full Changelog**: <jesseduffield/lazygit@v0.56.0...v0.57.0>

</details>

---

### Configuration

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

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

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

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

---

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

---

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants