Skip to content

Korean input broken in Claude Code CLI on iOS/iPadOS - displays separated jamo #2134

@junhocho

Description

@junhocho

Checklist

Configuration

  • Blink version: v18.3.0
  • iOS/iPadOS version: iPadOS 18.4, iOS 18.5
  • Device: iPad and iPhone
  • Remote server: Ubuntu 24.04 (via SSH)
  • Claude Code CLI version: v1.0.11
  • Korean keyboards tested: iOS touch keyboard, iPadOS touch keyboard, Magic Keyboard (hardware)

Describe the bug

When typing Korean in Claude Code CLI (and other similar AI CLI tools like Codex-cli) through Blink Shell on iOS/iPadOS, Korean characters are displayed broken with separated jamo (individual Korean letters).

Current behavior:

  • When typing "안녕하세요", it displays as "ㅇ아ㄴ녀ㅇ하ㅅ세ㅇ요" (with separated jamo characters)
  • The issue only occurs in REPL environments like Claude Code CLI
  • Korean input works perfectly fine in regular SSH sessions, tmux, and Python REPL
  • Issue occurs with both software keyboards and hardware Magic Keyboard on iPadOS

Expected behavior:
Korean characters should be displayed as complete syllables (e.g., "안녕하세요") without showing intermediate jamo states.

Screenshots:

Korean input broken in Claude Code CLI

Example of broken Korean display

Korean working correctly outside REPL

Another example of the issue

ScreenRecording_06-05-2025_08-09-19_1.mov

Analysis from investigation:
The issue appears to be caused by:

  1. iOS/iPadOS Korean IME sends both intermediate jamo and completed syllable with backspace (0x08)
  2. Blink passes these raw bytes unchanged through SSH
  3. Claude Code's Ink-based TUI doesn't properly handle the 0x08 backspace, leaving both jamo and syllable on screen

Additional information:

  • The same issue occurs with Termius on iOS
  • Works correctly on iTerm2 and Linux terminals
  • Only affects REPL environments using Ink-based TUI, not regular shell sessions

Steps to reproduce:

  1. Connect to Ubuntu 24.04 server via SSH using Blink on iPad/iPhone
  2. Launch Claude Code CLI (claude)
  3. Try typing Korean text (e.g., "안녕하세요")
  4. Observe that jamo characters remain visible alongside completed syllables

**Potential solutions: (not by me, suggested by AI) **

  • Terminal-side: Filter out intermediate jamo/0x08 sequences before sending to REPL
  • CLI-side: Proper handling of CJK IME composition in Ink-based TUI
  • Workaround: Use terminals that handle IME composition differently (e.g., iTerm2 on macOS)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugBug that's either related to Blink Shell or prevents the user to use the app in normal conditions.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions