fix(input): segment Thai composing text by word boundaries#290
Open
Scott-Nx wants to merge 1 commit into
Open
Conversation
- defer segmentation only for matching immediate shortcuts - respect per-shortcut prefixes during prefix detection - commit completed Thai segments individually - preserve user history and n-gram context - add regression coverage for expansion and fallback paths
Scott-Nx
force-pushed
the
fix/thai-composing-word-boundaries
branch
from
July 17, 2026 12:55
7b30e76 to
aab4391
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this fixes
When suggestions are enabled for Thai input, the entire sequence will remain one composing word because Thai does not normally use spaces between words.
This causes two visible problems:
The input logic now uses locale-aware word boundaries to commit completed Thai segments while keeping only the latest segment composing.
For example, after typing
ภาษาไทยดี:ภาษาandไทยare committed individually.ดีremains composing.ภาษาไทยดีas one word.ภาษาไทยดี.Completed segments are committed individually so user history and n-gram context remain correct.
LeanType's immediate Text Expander is also respected: segmentation is deferred only while the current input can still match a configured shortcut.
Reproduction
ภาษาไทยดี.Before this change:
After this change:
Testing
Tested manually with:
Unit tests cover Thai segmentation, composing state, history and n-gram context, shortcut handling, Space insertion, and locale detection.
Source
Based on HeliBoard PR #2531, with additional changes for LeanType's Text Expander integration. The shared fixes and cleanup have since been synced back to HeliBoard.