From 3448ed58027920e69e3fb73c4966e368911268ad Mon Sep 17 00:00:00 2001 From: "Brandon McGinty (chatgpt)" Date: Sun, 9 Aug 2026 21:47:24 -0400 Subject: [PATCH] Avoid terminal shutdown hang after fatal startup errors --- uiterm/ui.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/uiterm/ui.go b/uiterm/ui.go index 7b3d725..c6041b9 100644 --- a/uiterm/ui.go +++ b/uiterm/ui.go @@ -5,6 +5,7 @@ import ( "strings" "sync" "sync/atomic" + "time" "github.com/nsf/termbox-go" ) @@ -142,7 +143,12 @@ func (ui *Ui) Run(cmds chan string) error { }() defer func() { termbox.Close() - <-pollDone + // Some termbox backends do not wake PollEvent promptly on Close. A fatal + // startup failure must print its stderr error instead of hanging here. + select { + case <-pollDone: + case <-time.After(100 * time.Millisecond): + } }() ui.manager.OnUiInitialize(ui)