fix: flush pending IME commit text on terminal dispose#796
Merged
Conversation
Mirror the pattern from onCompositionStart: if the terminal is disposed while the 80ms IME grace timer is still pending, flush the queued commit text via onCompositionCommit before clearing the timer. This prevents silent loss of committed CJK input when the user closes the terminal panel or switches tabs immediately after confirming a pinyin candidate. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Owner
Author
|
✅ VERIFIED — The audit finding is resolved. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #793
Summary
createTerminalInstance.dispose()previously cleared the 80ms IME grace timer without flushingpendingCommitText, silently dropping committed CJK input if the user closed the terminal inside the grace window.onCompositionStartflush pattern: if a pending commit exists whendispose()runs, invokeonCompositionCommit(pendingCommitText)(wrapped in try/catch since the PTY may already be closing) before nulling the state.Test plan
onCompositionCommitwith the pending text exactly once and the timer firing later is a no-op.onCompositionCommitduring dispose flush do not propagate.pnpm test src/components/Terminal/— 291/291 passing.pnpm check:all— passes.🤖 Generated with Claude Code