detached 014aa3c

fix(daemon): synchronize overlay initialization

commit
014aa3cb1ce586474f533794ec1caf6562cd1cb5
author
brice · · 2026-07-11 15:47 UTC
parent
5a197b5
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +2 -3
M internal/usecase/daemon/client.go +2 -3
@@ -18,6 +18,7 @@ type attachedClient struct {
1818 tr ports.Transport
1919 output *outputStateStream
2020 overlays *overlayRuntime
21+ overlayOnce sync.Once
2122 clientID [16]byte
2223 resumeCapable bool
2324 resumeToken uint64
@@ -92,9 +93,7 @@ func (ac *attachedClient) cancelResizePaint() {
9293 }
9394
9495 func (ac *attachedClient) initOverlays() {
95- if ac.overlays == nil {
96- ac.overlays = newOverlayRuntime(ac)
97- }
96+ ac.overlayOnce.Do(func() { ac.overlays = newOverlayRuntime(ac) })
9897 }
9998
10099 func (ac *attachedClient) currentSession() *session { return ac.sess.Get() }
@@ -18,6 +18,7 @@ type attachedClient struct {
18 tr ports.Transport18 tr ports.Transport
19 output *outputStateStream19 output *outputStateStream
20 overlays *overlayRuntime20 overlays *overlayRuntime
21+ overlayOnce sync.Once
21 clientID [16]byte22 clientID [16]byte
22 resumeCapable bool23 resumeCapable bool
23 resumeToken uint6424 resumeToken uint64
@@ -92,9 +93,7 @@ func (ac *attachedClient) cancelResizePaint() {
92 }93 }
93 94
94 func (ac *attachedClient) initOverlays() {95 func (ac *attachedClient) initOverlays() {
95- if ac.overlays == nil {96+ ac.overlayOnce.Do(func() { ac.overlays = newOverlayRuntime(ac) })
96- ac.overlays = newOverlayRuntime(ac)
97- }
98 }97 }
99 98
100 func (ac *attachedClient) currentSession() *session { return ac.sess.Get() }99 func (ac *attachedClient) currentSession() *session { return ac.sess.Get() }

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 12

Tags 11

↑↓ moveenter openesc close