[BUG] Thai IME composition renders incorrectly in Tabby terminal on Windows
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Summary
Thai text is rendered incorrectly while typing in Claude Code when running inside Tabby terminal.
The submitted text is always correct after pressing Enter.
Only the live composition preview is wrong.
---
Environment
- OS: Windows 11
- Terminal: Tabby 1.0.234
- Claude Code: 2.1.217
- Node.js (Windows): 24.15.0
- Node.js (WSL): 24.18.0
- Keyboard: Thai Kedmanee
---
Reproduction
- Open Tabby.
- Start Claude Code.
- Switch keyboard to Thai.
- Type Thai words.
Examples:
Typing:
เส้า
Preview while typing:
เา
Expected:
เส้า
---
Typing:
เลือก
Preview while typing:
เอก
Expected:
เลือก
---
Result
The preview while typing is incorrect.
After pressing Enter, Claude receives the correct text.
---
Tested
Works correctly
- PowerShell inside Tabby
- Claude Code inside VS Code Terminal
Reproduces
- Claude Code inside Tabby
- Claude Code inside WSL running in Tabby
---
Additional Information
- WebGL and Canvas renderer both reproduce the issue.
- Changing fonts does not help.
- Setting TERM=xterm-256color does not help.
- Pasting Thai text works correctly.
- Only live IME composition is affected.
What Should Happen?
Claude Code should display the complete Thai text while it is being typed.
For example:
- Typing
เส้าshould displayเส้า - Typing
เลือกshould displayเลือก
The live input preview should match the text that is submitted after pressing Enter.
Error Messages/Logs
No error message is shown.
Steps to Reproduce
- Install and open Tabby terminal on Windows.
- Start PowerShell in Tabby.
- Run
claude. - Switch the Windows keyboard layout to Thai Kedmanee.
- Type
เส้าin the Claude Code input box. - Observe that the live preview displays only
เา. - Press Enter and observe that Claude receives
เส้าcorrectly. - Repeat with
เลือก. - Observe that the live preview displays
เอก, while the submitted text isเลือก.
The same issue occurs when Claude Code is run through Ubuntu WSL 2 inside Tabby.
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.217 (Claude Code)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Environment:
- Tabby: 1.0.234
- Claude Code: 2.1.217
- Node.js on Windows: 24.15.0
- Node.js on WSL: 24.18.0
- Keyboard layout: Thai Kedmanee
- WSL distribution: Ubuntu, WSL 2
Troubleshooting already tested:
- Tabby WebGL renderer: reproduces
- Tabby Canvas renderer: reproduces
- Different terminal fonts: reproduces
TERM=xterm-256color: reproduces- Claude Code on Windows inside Tabby: reproduces
- Claude Code on Ubuntu WSL 2 inside Tabby: reproduces
- Normal PowerShell input inside Tabby: works correctly
- Claude Code inside VS Code terminal: works correctly
- Pasting Thai text into Claude Code inside Tabby: works correctly
This appears to affect only the live interactive input rendering in Claude Code when used with Tabby. The actual submitted Unicode text remains correct.