zellij-org / zellij

A terminal workspace with batteries included
https://zellij.dev
MIT License
19.42k stars 611 forks source link

fix(plugins): synchronize event batch handling #3367

Closed imsnif closed 1 month ago

imsnif commented 1 month ago

This fixes an occasional issue with plugins, where batched events (eg. keypresses coming from a single paste command) would arrive in the plugin out of order.

This is fixed here by synchronizing these batches (sending them to the plugin(s) through a single async task rather than one task per event).

This can theoretically be optimized by paralleling the handling on a client level (i.e. that the same event would be sent to all clients in parallel, moving on to the next event once all clients handled it), but I think it's best to only consider this optimization if it becomes an issue (as is it's pretty fast and a rare occurrence).