Skip to content

fix(ui): preserve CJK IME composition#93498

Merged
vincentkoc merged 2 commits into
openclaw:mainfrom
Zhaoqj2016:fix-control-ui-ime-composition-main-20260616
Jun 16, 2026
Merged

fix(ui): preserve CJK IME composition#93498
vincentkoc merged 2 commits into
openclaw:mainfrom
Zhaoqj2016:fix-control-ui-ime-composition-main-20260616

Conversation

@Zhaoqj2016

Copy link
Copy Markdown
Contributor

Summary

Fixes #86035.

This is a fresh narrow replacement PR based on the latest main, continuing/superseding #86036 and #91087 after the previous replacement branch accumulated unrelated changes. It keeps the patch limited to the Control UI chat composer implementation and tests.

Changes

  • Track active IME composition in the chat composer textarea.
  • While composition is active, update only textarea sizing and the local draft mirror.
  • Defer host draft sync, slash menu updates, and requestUpdate-triggering work until composition ends.
  • Force-commit the final composed value on compositionend.
  • Add focused regression tests for active IME composition, stale host rerenders during composition, and Enter handling while composing.

Real behavior proof

The live macOS/Chrome Control UI proof and reproduction details are preserved in the original issue/PR trail: #86035, #86036, and #91087. This PR ports that same focused fix onto current main with only the Control UI files touched.

Test plan

  • node scripts/run-vitest.mjs ui/src/ui/views/chat.test.ts
  • git diff --check

Note: I also attempted corepack pnpm --dir ui build, but it remained stuck in the dependency install/build path after completing the lockfile supply-chain check and dependency install scripts, so I stopped it and kept the validation to the focused UI test shard plus diff check.

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 16, 2026
@vincentkoc vincentkoc self-assigned this Jun 16, 2026
@vincentkoc vincentkoc changed the title Fix Control UI CJK IME composition fix(ui): preserve CJK IME composition Jun 16, 2026
@vincentkoc vincentkoc added the proof: override Maintainer override for the external PR real behavior proof gate. label Jun 16, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label Jun 16, 2026
@vincentkoc

Copy link
Copy Markdown
Member

Land-ready after maintainer repair.

  • The composition guard now runs before every chat keyboard shortcut, so composing Enter and history arrows remain owned by the browser IME.
  • node scripts/run-vitest.mjs ui/src/ui/views/chat.test.ts passed: 107 tests. oxfmt, oxlint, git diff --check, and merge-tree proof passed; fresh autoreview is clean.
  • Known gap: no new physical macOS Chrome/Safari CJK IME run; Fix Control UI CJK IME composition #86036 contains the prior live Chrome proof. I applied the documented maintainer proof: override.
  • One CI shard failed after a successful checkout with no test output; the failed job has been rerun.

@vincentkoc
vincentkoc force-pushed the fix-control-ui-ime-composition-main-20260616 branch from 2f7c8d7 to dc9c296 Compare June 16, 2026 06:28
@vincentkoc
vincentkoc force-pushed the fix-control-ui-ime-composition-main-20260616 branch from dc9c296 to c84ef0b Compare June 16, 2026 06:34
@vincentkoc
vincentkoc merged commit b037280 into openclaw:main Jun 16, 2026
12 checks passed
@vincentkoc

Copy link
Copy Markdown
Member

Merged via squash.

Thanks @Zhaoqj2016!

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 17, 2026
Merged via squash.

Prepared head SHA: c84ef0b
Co-authored-by: Zhaoqj2016 <[email protected]>
Co-authored-by: vincentkoc <[email protected]>
Reviewed-by: @vincentkoc
crh-code pushed a commit to crh-code/openclaw that referenced this pull request Jun 18, 2026
Merged via squash.

Prepared head SHA: c84ef0b
Co-authored-by: Zhaoqj2016 <[email protected]>
Co-authored-by: vincentkoc <[email protected]>
Reviewed-by: @vincentkoc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui proof: override Maintainer override for the external PR real behavior proof gate. size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Control UI chat composer breaks CJK IME composition

2 participants