charmbracelet / bubbletea

A powerful little TUI framework 🏗
MIT License
26.75k stars 771 forks source link

bug: loss of input on ReleaseTerminal / Bubbletea shutdown #616

Open knz opened 1 year ago

knz commented 1 year ago

It is not currently possible to integrate Bubbletea-based programs in scripts or unit tests that buffer terminal input across multiple runs of the Bubbletea event loop.

The specifics are explained here: https://dr-knz.net/bubbletea-control-inversion.html

In summary, the input reader function is "greedy" but drops/forgets input event messages during ReleaseTerminal(). This is where the input is lost.

The text linked above outlines a solution:

knz commented 1 year ago

cc @muesli @meowgorithm

chabad360 commented 1 year ago

Is there any update on this? This seems to happen pretty consistently when mouse input gets involved.

knz commented 1 year ago

@chabad360 can you say more? What are the symptoms?

chabad360 commented 1 year ago

After clicking around for a bit (an easy way to speed this up is to click outside the terminal), the entire system stops receiving input but does still respond to other things like resizing the window. If I force kill the program with pkill, the terminal no longer accepts input.

Now that I'm rereading the issue, it seems different, but still related.

knz commented 1 year ago

Thanks. I think you are experiencing the symptoms of a different problem, but i believe it could also improve with this change https://github.com/charmbracelet/bubbletea/pull/569

knz commented 1 year ago

And also this change https://github.com/charmbracelet/bubbletea/pull/570

chabad360 commented 1 year ago

hmm, go mod replaceing that branch in doesn't seem to help...

malko commented 5 months ago

Is there any plan to address this issue in a near future ? Side note great and interesting explanation of @knz in the provided link.