# Changelog ## v0.1.5 (2026-06-29) ### Window-Switch Engine Reset - **Engine state now clears on window switch** — when Alt+Tab'ing between apps, the composition buffer is properly reset before the next keystroke. Previously, keystrokes could still apply Vietnamese tone/mark rules across app boundaries, producing corrupted text. - **`last_key_time` only on character key presses** — modifier-only events (Alt, Ctrl, Shift) no longer update the gap timer, so the 100 ms inline xprop poll fires reliably after every window switch, regardless of held modifiers. ### Active Window Detection - **xprop fallback** — `get_active_window_id()` tries `xdotool` first, falls back to `xprop -root _NET_ACTIVE_WINDOW` (preinstalled `x11-utils`). Works under sudo even when xdotool is absent. ### Code Cleanup - **Removed ~400 lines of dead unsafe code** — entire X11 clipboard shared-state block (unsafe statics, manual Xlib dlopen, SelectionRequest handling) was unused and has been deleted. All related `#[warn(dead_code)]` and `#[warn(static_mut_refs)]` warnings eliminated. - **Engine dead code removed** — unused methods `is_empty`, `is_tone_or_mark_key`, `process_string`, `last_base_char`, `apply_cluster_mark`, `apply_mark` in `BambooEngine`; `RuleEffect` enum and `special_rules` field in `InputMethodRules`. - **Production logging** — per-key `eprintln!` removed from evdev loop and uinput paste path. Only startup/error/window-change messages remain (`log_info` to both stderr and file). ### Flatpak Build - **Fixed `mkdir -p`** — `build-flatpak.sh` now creates `/app/share/applications` before installing the desktop file. - **Bundle**: `VietPlus-0.1.5.flatpak` (47 MB, runtime `org.gnome.Platform//50`). Warning-free build with default Rust profile (no `#![allow()]` needed). --- ## v0.1.4 (2026-06-28) ### Flatpak Packaging - **Flatpak bundle** with all components: daemon, CLI, system tray, uinputd, XRecord, wrapper script - **System tray icon** via D-Bus StatusNotifierItem (ksni) - **Build script** `packaging/flatpak/build-flatpak.sh` — automated build from source - **Permissions:** X11, Wayland, D-Bus session bus, input devices, IPC ### Documentation - README updated with Flatpak-only install/build instructions ### Clipboard & Injection - **Fix clipboard-into-text race** — Eliminated race condition where clipboard content leaked into typed text during Unicode injection. - **CI/CD pipeline** — GitHub Actions workflow for automatic .deb and AppImage builds on push. ### Tests - **106 tests** passing (72 engine + 16 CLI + 12 protocol + 5 auto-restore + 1 tone placement). ### Releases - `vietc_0.1.4-1_amd64.deb`, `Viet+-0.1.4-x86_64.AppImage` on GitHub + Forgejo. --- ## v0.1.3 (2026-06-26) - ua-horn cluster fix, clipboard_context save/restore, control-key consumption - 106 tests, DEB + AppImage --- ## v0.1.2 (2026-06-26) - Flush char forwarded as raw key, auto-restore English words - Tone placement qu/gi/uê/uơ, skip auto-repeat, Enter key --- ## v0.1.1 (2026-06-26) - Fix Telex tone key consumption, persistent X11 connection --- ## v0.1.0 (2026-06-26) Initial release — bamboo engine port, evdev capture, uinput injection.