Commit Graph

283 Commits

Author SHA1 Message Date
8d68e00f2b data: simplify and validate Japanese imports 2026-08-12 17:32:28 +09:00
a8a6c3b455 fix: construct Plan 9 paths without truncation 2026-08-12 17:28:17 +09:00
0d06ba43cd refactor: remove conditional compilation layers 2026-08-12 17:27:42 +09:00
91931196e2 refactor: simplify the Plan 9 runtime loop 2026-08-12 17:26:55 +09:00
211a6917b2 refactor: remove guarded helper headers 2026-08-12 16:45:27 +09:00
4e8720a40d fix: terminate XIM UTF-8 text runs 2026-08-12 16:43:57 +09:00
71af269efe fix: preserve emoji commits through XIM 2026-08-12 16:40:58 +09:00
3f5e107230 docs: record data provenance and runtime constraints 2026-08-12 16:24:22 +09:00
c41a1b4227 build: remove generated artifacts and unsafe scripts 2026-08-12 16:23:45 +09:00
368e6adcd4 fix: keep the headless daemon running 2026-08-12 16:22:58 +09:00
5927f6a5e1 fix: forward input at the composition limit 2026-08-12 16:21:33 +09:00
9d60c4bbb0 fix: release XIM ownership on reset 2026-08-12 16:20:47 +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
1d8d711882 build: install the GTK module predictably 2026-08-12 15:57:18 +09:00
1295480858 fix: repair XIM context lifecycle 2026-08-12 15:56:43 +09:00
103f2ec448 fix: harden small core containers 2026-08-12 15:54:16 +09:00
cec62cc40f fix: repair IBus context lifecycle 2026-08-12 15:49:28 +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
d2fa51ceba data: validate and repair Japanese dictionaries 2026-08-12 15:34:00 +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
5ae0945015 Simplify build system 2026-08-12 14:23:41 +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
9b3f2c46f0 restore unversioned ipc path 2026-08-11 20:05:37 +09:00
099acdf2a6 stop tracking build outputs 2026-08-11 19:35:19 +09:00
42823420ab add focused unit and map checks 2026-08-11 19:35:11 +09:00
9dc116a035 harden ipc and frontend recovery 2026-08-11 19:34:47 +09:00
4bfb659b6d fix candidate popup bounds 2026-08-11 19:34:27 +09:00
7b40ef419f fix vietnamese telex state 2026-08-11 19:34:14 +09:00
e70278a3d2 fix core text and map ownership 2026-08-11 19:32:58 +09:00
b63122dd14 add GtkInputPurpose 2026-08-03 12:03:45 +09:00
a94d55c541 fix vietnamese telex: qu-/gi- onset tone placement and dd+tone
transvi fixes:

1. qu-/gi- onset tone placement. The u after q, and the i after g when a
   vowel follows, are onset glides rather than the rime nucleus, so the
   tone must skip them: qua -> quá (was qúa), gia -> giá. The onset was
   previously passed straight through to the app, so transvi never saw it
   and toned the glide. Keep the onset in the preedit by adding qu-/gi-
   clusters to telex.map (mktelex.py onsets(), appended additively to the
   curated map), and add onsetglide() so transvi skips the glide. gi- with
   no following vowel keeps i as the nucleus (gì, gìn).

2. A tone key on a vowel-less preedit (e.g. "đ" from dd) now commits the
   preedit and lets the tone key pass through (eat=0), matching the engine
   commit-on-passthrough invariant, instead of eating it into the commit.

Verified against the running engine: qua/quan/quay/quê/quên/quyển,
gia/già/giàu/giữ/giúp/giống, gì/gìn, dd+s; unchanged mua->mùa, của, lúa;
all non-qu/gi words byte-identical to before.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 13:14:31 +09:00
aefe9bc618 fix gtk: commit pending text on passthrough keys
The GTK IM module only emitted the commit signal when the key was
eaten (r != 0). But when a non-matching key is pressed mid-composition
the engine commits the pending preedit and returns eaten=0 so the raw
key passes through, sending a commit string with eaten=0. GTK dropped
it, silently losing the composed text (e.g. Hangul "ㅇ" + "?" yielded
only "?").

Commit whenever a commit string is present, matching the wayland, ibus
and xim frontends.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 12:50:32 +09:00
bd2c1aeaca add emoji.src 2026-05-29 02:35:52 +09:00
f686edd198 fix gtk predit window 2026-05-29 02:28:49 +09:00
7e69827c13 passthrough unmatched keys 2026-05-28 23:38:23 +09:00
795353609b popup tooltip hint 2026-05-28 20:22:27 +09:00
28b48d997c split wayland commit cycles 2026-05-28 20:22:27 +09:00
f4347b70cc default popup off 2026-05-28 19:07:28 +09:00