[Bug] Voice dictation auto-submit word count fails for non-space-delimited languages (Japanese)
Bug Description
In voice dictation tap mode, the transcript is auto-submitted only when it is "at least three words long" (per https://code.claude.com/docs/en/voice-dictation.md). The word count appears to be based on whitespace splitting, so Japanese transcripts — which contain no spaces between words — are almost always counted as a single "word" regardless of their actual length.
As a result, even a long Japanese utterance (30+ characters, clearly a full sentence) is only inserted into the input box and never auto-submitted, requiring an extra Enter press every time. Occasionally a transcript IS auto-submitted, which seems to happen when the transcription output happens to contain spaces, punctuation-induced splits, or embedded English words that push the whitespace-based count to 3+.
This affects all space-less languages (Japanese, Chinese, Thai, etc.), even though they are listed as supported dictation languages (language: "ja").
Steps to Reproduce
- Set
"language": "ja"in~/.claude/settings.json - Enable voice tap mode:
"voice": { "enabled": true, "mode": "tap" } - With an empty input box, tap Space to start recording
- Speak a long Japanese sentence (e.g. 「この関数のテストを追加してください」)
- Tap Space again to stop
Expected Behavior
The transcript is long enough to be clearly intentional, so it should be auto-submitted (as an equivalent-length English sentence would be).
Actual Behavior
The transcript is inserted into the input box but not submitted; an extra Enter press is required. Auto-submit only fires sporadically, when the transcript happens to be split into 3+ whitespace-separated tokens.
Suggested Fix
Use a language-aware threshold, e.g.:
- character-count threshold for CJK / space-less languages (e.g. >= 6 characters), or
- grapheme/token-based counting instead of whitespace splitting
Environment
- Platform: darwin (macOS)
- Terminal: ghostty
- Claude Code version: 2.1.173
- Dictation language: ja
- Related feedback ID: 33115f50-d5e2-4ab2-8dde-3af0fbdcb635