Fix Control UI CJK IME composition#86036
Conversation
|
Codex review: passed. Reviewed June 7, 2026, 12:24 AM ET / 04:24 UTC. Summary PR surface: Source +28, Tests +60. Total +88 across 2 files. Reproducibility: yes. with source-backed confidence rather than a rerun: the linked report gives concrete macOS/Chrome Chinese IME steps, and current main lacks the composition-specific guard this PR adds. I did not run a live IME session in this read-only pass. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land the focused composer composition guard with the added regression tests once required merge and CI gates are satisfied, and keep the separate IME resize-lag report on its own follow-up path. Do we have a high-confidence way to reproduce the issue? Yes, with source-backed confidence rather than a rerun: the linked report gives concrete macOS/Chrome Chinese IME steps, and current main lacks the composition-specific guard this PR adds. I did not run a live IME session in this read-only pass. Is this the best way to solve the issue? Yes. The fix is at the right textarea event boundary: defer host/slash synchronization while composition is active, then commit the final value once composition ends without changing the normal send/blur draft contract. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 9b1c0dac6877. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +28, Tests +60. Total +88 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
ClawSweeper PR egg 🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat. Where did the egg go?
|
|
Thanks for the PR. Before this can move forward, please add live proof from the affected surface, not just unit tests, mocked tests, or source inspection. A useful proof update should include:
Please redact secrets, tokens, phone numbers, and private message content from logs or screenshots. |
This comment was marked as spam.
This comment was marked as spam.
|
Heads up: this PR needs to be updated against current |
a2215d9 to
a14c7ff
Compare
|
Updated the branch against current Changes in this update:
Verification:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper automerge |
|
🦞🔧 Source: I will update this PR branch, or open a safe credited replacement, if the repair worker finds a narrow CI fix. Automerge progress:
|
|
🦞✅ Source: Why human review is needed: What the maintainer can do as a next step: I added |
a14c7ff to
6dca709
Compare
|
Addressed the latest ClawSweeper request about duplicate textarea resize work. Change:
Verification:
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
ClawSweeper 🐠 reef update Thanks for the work on this. ClawSweeper could not push to this branch with the permissions available, so it opened a narrow replacement PR to keep the fix swimming forward without losing the contributor trail. not your fault, just GitHub branch-permission tides. Why replacement: ClawSweeper could not update the source PR branch directly; GitHub did not grant sufficient push rights to the bot for that branch.
fish notes: model gpt-5.5, reasoning high; reviewed against e1e7ee5. |
|
CI follow-up after the latest run. The current required proof/dependency checks for this PR are green:
There are still several failing jobs in workflow run 27082428561, but the concrete failure I could inspect appears unrelated to this Control UI IME patch. For example, This PR only changes:
Local validation for the IME change remains green:
Could a maintainer rerun the failed workflow or confirm whether the branch should be rebased after the unrelated |
Summary
compositionendFixes #86035
Real behavior proof
compositionend.2026.5.22 (a374c3a)with this patch applied to the deployed Control UI bundle, Google Chrome,http://127.0.0.1:18790/chat, macOS Chinese/CJK input path.http://127.0.0.1:18790/chatin Google Chrome via Computer Use, focused.agent-chat__composer-combobox > textarea, entered committed Chinese text in the chat composer, and confirmed the composer retained the Chinese text instead of raw pinyin. Also verified the running local gateway and deployed bundle from the terminal.当前输入法验证:中文候选已提交到聊天输入框at127.0.0.1:18790/chat. Terminal live output from the same setup:当前输入法验证:中文候选已提交到聊天输入框; the running bundle contains the composition guard state and bothcompositionstart/compositionendhandlers, and/chatwas served successfully by the local gateway.Test plan
corepack pnpm --dir ui exec vitest run --config vitest.config.ts src/ui/views/chat.test.tscorepack pnpm --dir ui buildNotes
I also tried
corepack pnpm --dir ui test -- ui/src/ui/views/chat.test.ts, but that script invocation ran the full UI suite instead of only the target file and hit unrelated local setup failures: missing Playwright browser binaries and path/import issues outside this change. The direct Vitest command above was used for the targeted test run.