Skip to content

Korean/CJK text renders with extra spacing and broken wrapping in the TUI #14768

@minislively

Description

@minislively

Summary

When Codex CLI renders Korean text in the TUI, Hangul syllables appear visually separated by blank cells and long lines wrap incorrectly. The result looks like each Korean character is spaced out and the paragraph flow becomes hard to read.

Environment

  • Codex CLI: 0.114.0
  • oh-my-codex: 0.10.0
  • Node.js: 24.14.0
  • OS: macOS (darwin arm64)
  • TERM: xterm-256color
  • LANG: ko_KR.UTF-8
  • LC_ALL: C.UTF-8
  • Terminal where this was observed: Kiro embedded terminal (kiro-cli-term)

Steps to reproduce

  1. Launch codex in a terminal session with Korean locale settings.
  2. Use the TUI normally and let the assistant emit Korean text in the conversation/history area.
  3. Observe the rendered output for Korean paragraphs.

Expected behavior

Korean text should render contiguously, without visual gaps between syllables, and line wrapping should stay aligned.

Actual behavior

  • Korean syllables appear with an extra blank cell between characters.
  • Wrapped lines break in visually awkward positions.
  • Paragraphs become difficult to read because the layout no longer matches the underlying text.

Notes

I initially suspected the recent Node 24 LTS switch, but that seems unlikely to be the direct cause. The npm package is a Node launcher that spawns a platform-specific native binary (bin/codex.js -> @openai/codex-darwin-arm64), so the rendering path is inside the native TUI rather than Node itself.

From the upstream source, the TUI stack uses ratatui, crossterm, and unicode-width for rendering and width calculation in codex-rs/tui. That makes this look more like a terminal/CJK width handling issue in the TUI rendering path (possibly terminal-specific) than a Node runtime regression.

If helpful, I can provide a screenshot of the broken rendering.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLITUIIssues related to the terminal user interface: text input, menus and dialogs, and terminal displaybugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions