ebcec3af6b
fix(engine): send clients the composed Telex text, not the keys
...
For Vietnamese the preedit is the map key ('as', 'oong'); only the popup
and the commit path looked it up. Clients with inline preedit therefore
showed 'as' while Enter committed 'á'. impre() now maps once for every
reader, and snapshot() no longer maps a second time.
2026-08-16 15:57:55 +09:00
c7718ece52
data: one trie for maps and dictionaries, one loader
...
The hash map served a single exact-match lookup that the trie already
answers, at the price of a second container, a second file loader with
its own drift, and a Str-to-UTF-8 conversion on every chain probe. The
files are small (kanji.dict is 7.5k lines), so the trie holds both.
trieopen validates keys and each space-separated value word against Str
and reports path:line; trielookup takes the Str every caller holds and
treats a nil trie as an unloaded map; trienew/trieput exist for tests.
The overflow guards on growth, Trie.root (always 0) and the per-language
init loop written twice are gone.
2026-08-16 15:56:32 +09:00
516ec98a70
test: separate quick, live, and stress checks
2026-08-14 23:13:32 +09:00
e4fc327ffd
popup: show the candidate page
2026-08-14 20:06:53 +09:00
a841894015
ibus: honor preedit and private-input policy
2026-08-14 19:41:07 +09:00
4cac6f1a15
engine: use stable candidate pages
2026-08-14 19:27:22 +09:00
2e6d7d8e48
xim: clear callback preedit on owner loss
2026-08-14 19:17:37 +09:00
6a58b63223
ipc: negotiate preedit capability and caret messages
2026-08-14 18:53:14 +09:00
9a3a92170e
engine: reject stale dictionary results
2026-08-14 18:43:12 +09:00
e6bf32b0f6
xim: place popup from input context
2026-08-14 17:35:33 +09:00
2b4c509d0d
xim: add callback preedit and UTF-8 negotiation
2026-08-14 17:20:38 +09:00
2376035524
engine: route popup preedit by client capability
2026-08-14 17:02:46 +09:00
4eba8c2904
tests: cover in-process XIM lifecycle
2026-08-14 16:17:27 +09:00
f395f29918
ibus: complete setup before publication
2026-08-14 02:48:49 +09:00
6c0a533c4e
ibus: fall back from unreadable machine id
2026-08-14 02:10:16 +09:00
9f4f9ceb14
ibus: cover context ownership through the engine
2026-08-13 23:21:12 +09:00
bb2a970db1
tests: cover ownership across ipc connections
2026-08-13 23:07:25 +09:00
367cbb6cc3
ibus: make context release explicit
2026-08-13 22:03:27 +09:00
b6a9ccd9d9
cleanup: simplify frontend request ownership
2026-08-13 21:57:32 +09:00
e01a991de4
remove: drop Wayland frontend
2026-08-13 21:25:12 +09:00
f46d51b539
renderer: use direct FreeType with explicit font files
2026-08-13 20:40:38 +09:00
125e9349c0
fix: pass empty search backspace through
2026-08-12 21:35:33 +09:00
136695a900
hanja: separate temporary search mode
2026-08-12 21:23:10 +09:00
0216cc3c8a
hanja: add one-shot Korean search
2026-08-12 19:19:26 +09:00
91931196e2
refactor: simplify the Plan 9 runtime loop
2026-08-12 17:26:55 +09:00
5927f6a5e1
fix: forward input at the composition limit
2026-08-12 16:21:33 +09:00
c7d4f16d3e
test: stress engine transitions
2026-08-12 16:16:25 +09:00
a03efcf6bf
test: cover IPC response framing
2026-08-12 16:11:22 +09:00
432df3730c
fix: harden the per-user IPC endpoint
2026-08-12 16:08:23 +09:00
4120f90736
fix: make popup rendering deterministic
2026-08-12 15:59:52 +09:00
9c43bcb75c
fix: repair Wayland key lifecycle
2026-08-12 15:58:24 +09:00
103f2ec448
fix: harden small core containers
2026-08-12 15:54:16 +09:00
bc5712b6ac
fix: retain the active owner's caret
2026-08-12 15:44:04 +09:00
5ba5cf209c
fix: assign one active engine owner
2026-08-12 15:41:46 +09:00
9c244d1dd1
fix: retain the newest dictionary request
2026-08-12 15:37:50 +09:00
fabce14933
fix: tighten emoji lookup contracts
2026-08-12 15:36:37 +09:00
d0def814ef
refactor: remove empty language maps
2026-08-12 15:35:02 +09:00
f0ba7fc5f6
fix: normalize Korean shifted input
2026-08-12 15:32:28 +09:00
6dfbc08704
fix: correct Katakana composition
2026-08-12 15:29:35 +09:00
ec7e6eb992
fix: preserve complete Japanese readings
2026-08-12 15:28:16 +09:00
2ae87a3926
emoji: repair one-shot candidate selection
2026-08-12 02:08:01 +09:00
0fff17c8b8
emoji: add one-shot candidate search
2026-08-11 22:24:59 +09:00
82276bf37f
strengthen core unit tests
...
Add table-driven dictionary miss and language-switch state coverage, regress stale candidates after backspace, and clear them before dictionary refresh. Keep IPC and runtime-created file checks outside the unit runner.
2026-08-11 21:12:23 +09:00
42823420ab
add focused unit and map checks
2026-08-11 19:35:11 +09:00