Chinese IME composition text still appears at bottom of terminal — useCursor fix not yet integrated (v2.1.83)

Resolved 💬 3 comments Opened Mar 26, 2026 by qianheng-aws Closed Mar 29, 2026

Summary

Chinese IME (输入法) composition/preedit text appears at the bottom-left corner of the terminal instead of inline at the cursor position. This makes Chinese input nearly unusable — users must resort to copy-paste as a workaround.

This is the same root cause as #25186 (closed), #30982, and #38407. The fix (useCursor from Ink 6.7.0) has been identified for over a month, upstream PRs exist (ink-text-input#93), but it has not been integrated into Claude Code. Meanwhile, both Gemini CLI and Codex CLI handle CJK IME correctly.

Reopening as a new issue because the prior issues appear stalled with no response from the team.

Environment

  • OS: macOS 15.7.4 (Darwin 24.6.0)
  • Claude Code: 2.1.83
  • Terminal: Ghostty 1.3.1 / iTerm2 (reproducible in both)
  • Input method: macOS Chinese IME (简体拼音)

Steps to Reproduce

  1. Launch Claude Code in terminal
  2. Switch to Chinese input method
  3. Type pinyin in the input prompt
  4. Observe: composition candidates appear at bottom-left corner, not at cursor

Expected vs Actual

  • Expected: Preedit text appears inline at cursor position (like every other TUI app)
  • Actual: Preedit text appears at bottom-left (0,0), typed characters invisible until committed

Root Cause (known)

Claude Code's React Ink TUI hides the real terminal cursor and renders a fake one via chalk.inverse(). macOS IME relies on real cursor position → falls back to (0,0).

Known Fix (not yet applied)

Ink 6.7.0 introduced useCursor hook (PR #866) which syncs the real terminal cursor. Community PR ink-text-input#93 implements this. This has not been integrated into Claude Code.

Competitive comparison

| CLI Tool | IME inline composition | Status |
|----------|----------------------|--------|
| Claude Code | Broken | Not fixed |
| Gemini CLI | Works | — |
| Codex CLI | Works | — |

Impact

This affects all CJK users (Chinese, Japanese, Korean). Copy-paste is the only workaround, severely degrading the interactive experience that Claude Code is designed for.

Related: #25186 (closed, root cause analysis), #30982, #38407, #32173

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗