Commit graph

15 commits

Author SHA1 Message Date
Devin AI
7569e7e218 feat: auto-restore English words and invalid Vietnamese syllables
When Vietnamese mode is on, the engine transformed every word including
English (test->tét, cargo->cảgo, status->státu). This wires up the
previously-dead english.rs dictionary and spelling.rs validator so that on
word commit, words that are clearly English or not phonologically valid
Vietnamese are reverted to the raw keystrokes typed. Genuine Vietnamese
(tiếng, việt, quả) is kept. Gated by the existing [auto_restore] enabled
config (default on).

Co-Authored-By: vndangkhoa <vonguyendangkhoa@gmail.com>
2026-06-26 10:31:37 +00:00
Devin AI
6e48d8b2fb fix: correct tone placement for qu/gi onset glides and uê/uơ clusters
Co-Authored-By: vndangkhoa <vonguyendangkhoa@gmail.com>
2026-06-26 10:10:42 +00:00
Khoa Vo
118b601d0e fix: update test helper for flush-forward behavior, 67 tests pass
- Engine no longer includes flush char in Replace insert
- Daemon forwards raw flush key after Replace injection
- Test helper simulates this by adding Insert event after Replace
2026-06-26 16:55:57 +07:00
Khoa Vo
758eea45b3 fix: flush char forwarded as raw key — space no longer in clipboard paste
- Engine no longer includes flush char in Replace insert text
- Daemon forwards raw flush key (space/enter/etc) after injection
- Clipboard paste only contains the word, not trailing whitespace
- Fixes 'thịtrâm' → 'thị trâm' (space reliably arrives via raw forward)
2026-06-26 16:54:40 +07:00
Khoa Vo
9dfd86248d fix: Telex 'r' (hỏi) consumed as tone key even with no vowel
- Tone keys (f,s,r,x,j) now only apply when composition has a vowel
- Without a vowel, they fall through to normal character append
- Fixes 'r' disappearing in words like 'trời', 'trâm', 'trảm'
- Added test_telex_r_as_normal_char covering 4 scenarios
- Also: 15ms delay between clipboard paste and trailing uinput chars
2026-06-26 15:48:58 +07:00
Khoa Vo
4374d3a804 fix: Telex spacing timing, add --update self-updater, add Telex engine tests
- Add 15ms delay between clipboard paste and trailing uinput ASCII
- Add 3 new Telex tests (Tuaans→Tuấn, nguyeenx→nguyễn, gios→gió)
- AppRun: --update flag downloads latest AppImage from GitHub releases
2026-06-26 15:38:00 +07:00
Khoa Vo
d4102088b8 fix: X11 key lookup, bamboo engine port, uinput injection overhaul
- Fix Xutf8LookupString signature (missing XIC param caused all keys to map to \0)
- Port bamboo-core Vietnamese engine to Rust (bamboo.rs, input_method.rs)
- Flexible backtracking for mark/tone keys (scan up to 5 chars back)
- Correct tone placement for io, uâ, yê clusters
- Evdev capture preferred over X11 XRecord (more reliable)
- Uinput injection with correct Linux keycodes
- Vietnamese Unicode via clipboard paste + trailing ASCII via uinput
- Persistent X11 connection for Ctrl+V (no per-call dlopen overhead)
- Consume stale VNI/Telex control keys when no match found
- Fix execute_commands backspace count for evdev grabbing path
- Add vietc-uinputd privileged injection daemon
- AppImage: bundle uinputd, preserve LD_LIBRARY_PATH, fix xrecord build flags
- Remove old generated test files, add 63 focused engine tests
2026-06-26 15:20:03 +07:00
Khoa Vo
3858aa955c feat: implement Backspace-Replay pattern for perfect engine sync
- Add Engine::replay_keystrokes() — creates fresh engine and replays
  all keystrokes to compute correct screen output from scratch
- Add Daemon::replay_and_inject() — tracks keystroke history and
  screen output, computes diff (backspaces + new text) on each keypress
- Add Daemon::replay_backspace() — pops from history, replays, diffs
- Handle flush chars (space, period, etc.) separately — commit word,
  type char, clear history
- Add FocusIn/FocusOut detection for engine reset on focus loss
- Add CPU pinning (P-cores 0-3) + nice(-10) priority boost
- Clean up 9 dead code warnings (unused fields, constants, types)
- Add replay_keystrokes tests for Telex, VNI, and backspace
- 255 tests pass (was 252)
2026-06-26 08:40:38 +07:00
openhands
38f3bca022 Optimize typing performance and preserve casing on replaced syllables 2026-06-25 19:59:46 +07:00
Khoa Vo
da97e945eb Fix X11 keycodes (+8 offset) and VNI apply_pending flexible backtrack 2026-06-25 09:28:03 +07:00
vndangkhoa
5f8465783a Optimize typing performance and preserve casing on replaced syllables 2026-06-24 21:11:24 +07:00
vndangkhoa
f618c3a5b5 Fix typing race conditions with unified channel injection, add persistent logging, and align config schemas 2026-06-24 20:30:14 +07:00
vndangkhoa
cdb5eb4812 Improve engine: tone placement, backtrack limit, grab default
- Fix tone placement for uâ, uê, uơ → tone on second vowel (e.g. tuấn, thuế, phương)
- Limit flexible backward scan to 3 chars to prevent cross-syllable modification
- Set grab = true as default config
- Add 9 new engine tests for tone placement and backtrack limit
2026-06-24 17:57:24 +07:00
vndangkhoa
95f661aaa0 Viet+ v0.1.1
- Flexible diacritic placement: modifiers/tone marks at end of syllable
  (Telex: tranaf -> tran, VNI: tran62 -> tran)
- uinput injector as primary backend (avoids X11/Unicode ordering bugs)
- ydotool for atomic backspace+text injection (same uinput device)
- Fix run_as_user to use explicit 'env VAR=val' (sudo compat)
- Remove deb/flatpak/aur packaging (AppImage only)
- Fix Telex key mappings (aa=aa, aw=a, ow=o)
- Fix VNI key mappings (a6=aa, a8=a, e6=e, o6=o, o7=o, u7=u)
- Fix X11Injector ydotool fallback for Unicode chars
- 162+ engine tests passing
2026-06-24 17:29:12 +07:00
vndangkhoa
16a0d73a6e Viet+ v0.1.0 - Vietnamese Input Method for Linux
Features:
- Direct Input Engine (no pre-edit buffer, no underline)
- Telex + VNI input methods
- Auto-restore English words
- ESC undo (strip tones)
- Smart per-app memory
- Macro expansion (ko→không, dc→được, vs→với, lm→làm)
- Triple backend: uinput, X11 XTEST, Wayland IM
- Hot-reload config
- 148 tests passing

Packaging:
- .deb package
- AppImage support
- AUR PKGBUILD
- Flatpak manifest
- Systemd user service
2026-06-24 10:13:10 +07:00