Chinese characters input via IME are silently discarded in the compose box.
The IME candidate list appears normally, but upon confirming the selection,
the text never enters the input field.
Steps:
Open any chat on Telegram Web.
Activate Chinese IME (e.g., Microsoft Pinyin).
Type pinyin ("nihao"), select characters, confirm.
Compose box remains empty.
Expected: Composed characters should appear in the input field.
────────────────────────────────────
Bug 2 — IME Commit Triggers Premature Send
Severity: High | Reproducibility: Always
Pressing Enter to commit IME text (standard "上屏" action) is intercepted
as the send-message shortcut. The message dispatches immediately — often
empty or incomplete — instead of committing the composed text.
Steps:
Type via Chinese IME in the compose box.
Press Enter to confirm the IME candidate.
Message is sent instead of text being committed to the input field.
Expected: Enter during active IME composition should confirm the candidate,
not send the message.
────────────────────────────────────
Root Cause (Suspected):
The send-on-Enter handler does not check event.isComposing or compositionstart/compositionend state, violating the W3C UI Events spec.
Steps to reproduce
Environment:
Telegram Web (webk.telegram.org)
Browser: Safari 26.5
OS: macOS Tahoe 26.5
IME: macOS built-in Pinyin input method
=== Bug 1: IME characters dropped ===
Open any chat on Telegram Web.
Click into the message compose box.
Switch to macOS Pinyin input method.
Type "nihao" on keyboard → IME candidate window appears.
Press Space or click to confirm the Chinese characters.
Result: the compose box remains empty, characters are lost.
=== Bug 2: IME commit sends message ===
Open any chat on Telegram Web.
Click into the message compose box.
Switch to macOS Pinyin input method.
Type a pinyin sequence → IME candidate window appears.
Press Enter to confirm the composed text onto the input field.
Result: the message is sent immediately (often empty),
instead of committing the IME text into the compose box.
Note: Both issues share the same suspected root cause — the
message send handler does not check KeyboardEvent.isComposing,
so Enter keystrokes meant for IME commit are treated as send
commands, and composition content is not properly captured.