Skip to content

IME composition Enter is treated as "send" (Japanese/CJK input unusable) #445

@dim0627

Description

@dim0627
Screen.Recording.2026-06-13.at.13.17.03.mov

Summary

When composing text with an IME (Japanese/Chinese/Korean), pressing Enter to confirm the conversion candidate instead submits the message. The composition is sent half-converted, making the app effectively unusable for CJK input.

Steps to reproduce

  1. Set OS input source to Japanese (or any IME).
  2. Focus the task/chat input.
  3. Type にほんご, press Space to convert to 日本語.
  4. Press Enter to confirm the conversion.

Expected: Enter confirms the IME candidate; text stays in the box.
Actual: The message is submitted immediately, often with unconfirmed/partial text.

Environment

  • Git commit: f073b75 (current main HEAD).
  • OS: macOS (Darwin 25.5.0). The buggy handlers live in the renderer, so this is not OS-specific — it reproduces with any IME on any OS (Japanese, Chinese, Korean).
  • Provider: Provider-agnostic. The bug is in the input keydown handlers and does not depend on the agent provider (reproduces with Claude Code, Codex, etc.).

A screen recording of the repro will be attached below.

Root cause

The keydown handlers submit on Enter && !shiftKey without checking whether an IME composition is in progress. Affected inputs:

  • app/src/renderer/hub/TaskInput.tsx
  • app/src/renderer/hub/AgentPane.tsx (FollowUpInput)
  • app/src/renderer/pill/Pill.tsx
  • app/src/renderer/logs/LogsApp.tsx

Fix

Guard each submit-on-Enter branch with !e.nativeEvent.isComposing && e.keyCode !== 229. PR incoming.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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