detached 90a846e

Merge branch 'main' into fix/truncate-space-before-url

commit
90a846eb4ada9cb7e3fa8b98e8cb19fb337eee82
author
bnema · · 2026-01-26 20:52 UTC
committer
GitHub · · 2026-01-26 20:52 UTC
merge of
9f65762 + 64df752 · diff against the first parent
signature
GPG UnverifiedB5690EEEBB952194 The key is unknown
1 file · +7 -0
M internal/ui/component/omnibox.go +7 -0
@@ -30,6 +30,7 @@ const (
3030 defaultOmniboxPlaceholder = "Search history or enter URL… (! lists bangs)"
3131 ghostPositionRetryMs = 16
3232 ghostPositionMaxAttempts = 5
33+ minGhostInputLength = 1
3334 )
3435
3536 // ViewMode distinguishes history search from favorites display.
@@ -1091,6 +1092,7 @@ func (o *Omnibox) updateGhostFromSelectionWithInput(entryText string) {
10911092 idx := o.selectedIndex
10921093 mode := o.viewMode
10931094 bangMode := o.bangMode
1095+ hasNavigated := o.hasNavigated
10941096 suggestions := o.suggestions
10951097 favorites := o.favorites
10961098 o.mu.RUnlock()
@@ -1101,6 +1103,11 @@ func (o *Omnibox) updateGhostFromSelectionWithInput(entryText string) {
11011103 return
11021104 }
11031105
1106+ if utf8.RuneCountInString(entryText) < minGhostInputLength && !hasNavigated {
1107+ o.clearGhostTextIfInput(entryText)
1108+ return
1109+ }
1110+
11041111 if entryText != "" {
11051112 o.resolveGhostCompletion(entryText, mode, suggestions, favorites)
11061113 return
@@ -30,6 +30,7 @@ const (
30 defaultOmniboxPlaceholder = "Search history or enter URL… (! lists bangs)"30 defaultOmniboxPlaceholder = "Search history or enter URL… (! lists bangs)"
31 ghostPositionRetryMs = 1631 ghostPositionRetryMs = 16
32 ghostPositionMaxAttempts = 532 ghostPositionMaxAttempts = 5
33+ minGhostInputLength = 1
33 )34 )
34 35
35 // ViewMode distinguishes history search from favorites display.36 // ViewMode distinguishes history search from favorites display.
@@ -1091,6 +1092,7 @@ func (o *Omnibox) updateGhostFromSelectionWithInput(entryText string) {
1091 idx := o.selectedIndex1092 idx := o.selectedIndex
1092 mode := o.viewMode1093 mode := o.viewMode
1093 bangMode := o.bangMode1094 bangMode := o.bangMode
1095+ hasNavigated := o.hasNavigated
1094 suggestions := o.suggestions1096 suggestions := o.suggestions
1095 favorites := o.favorites1097 favorites := o.favorites
1096 o.mu.RUnlock()1098 o.mu.RUnlock()
@@ -1101,6 +1103,11 @@ func (o *Omnibox) updateGhostFromSelectionWithInput(entryText string) {
1101 return1103 return
1102 }1104 }
1103 1105
1106+ if utf8.RuneCountInString(entryText) < minGhostInputLength && !hasNavigated {
1107+ o.clearGhostTextIfInput(entryText)
1108+ return
1109+ }
1110+
1104 if entryText != "" {1111 if entryText != "" {
1105 o.resolveGhostCompletion(entryText, mode, suggestions, favorites)1112 o.resolveGhostCompletion(entryText, mode, suggestions, favorites)
1106 return1113 return

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close