🤖 perf: reduce terminal input latency via fire-and-forget IPC #815
+42
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Terminal input was causing keystroke reordering under fast typing (e.g.,
ls↵becomingl↵s).Root Cause
The IPC communication used
ipcRenderer.invoke()which waits for a response before allowing the next input to be sent. This request-response pattern creates artificial latency:With fast typing, keystroke 2 could arrive while keystroke 1 was waiting for its response, leading to reordering.
Solution
Replace request-response (
invoke/handle) with fire-and-forget (send/on):ipcRenderer.invoke()ipcRenderer.send()ipcMain.handle()ipcMain.on()invokeIPC()(awaited)sendIPCFireAndForget()The fire-and-forget pattern is safe here because:
Fixes: #795
Generated with
mux