Releases: Bitpulses/EZAuto
Release list
EZAuto_static_v0.2.2
Release Notes v0.2.2
Critical Fixes
- Fixed a memory leak in
FocusMonitorcaused by an extra COMAddRef()call during handler registration. - Replaced
volatile bool g_runningwithstd::atomic<bool>to ensure thread-safe shutdown signaling. - Fixed IME state tracking so failed switch attempts no longer prevent future retries.
- Made configuration loading atomic to prevent partial updates when JSON parsing fails.
Improvements
- Reduced mutex hold time in focus callbacks to avoid event backlog and potential deadlocks.
- Fixed data races in
ImeSwitcherby protecting shared state with a mutex. - Replaced
SendMessagewithSendMessageTimeout(..., SMTO_ABORTIFHUNG)to prevent hangs on unresponsive windows. - Fixed JSON parsing when braces appear inside quoted strings.
- Improved IME state detection when the IME is closed by marking unreliable states correctly.
Minor Fixes
- Improved
HWNDformatting by usinguintptr_tfor safe pointer conversion. - Prevented queued focus events from executing after
FocusMonitorhas stopped. - Updated version number references from
0.1.4to0.2.1. - Fixed configuration loading on non-ASCII installation paths by using
GetModuleFileNameW().
Summary
This release improves stability, thread safety, IME switching reliability, configuration handling, and overall robustness.
EZAuto_static_v0.2.1
- Fixed an issue where some windows could not be switched successfully.
- Fixed a bug in Snipaste.exe where window detection could be incorrectly triggered.
EZAuto_static_v0.1.5
FIX: Resolve browser scrolling bug
EZAuto_static_v0.1.4
EZAuto v0.1.4: Automatic Input Method Switching for English and Chinese | Smart IME Auto-Switch Tool for Windows
fix: prevent context menu dismissal and enable graceful exit
-
FocusMonitor callback: use GA_ROOTOWNER instead of GA_ROOT to
correctly attribute owned popup windows (e.g., right-click menus)
to their owning top-level window. Previously, GA_ROOT would treat
a context menu as a separate application, triggering an unnecessary
IME switch whose simulated keystrokes dismissed the menu. -
ConsoleHandler: replace the broken PostThreadMessage approach with
a PeekMessage loop guarded by the g_running flag. The original code
posted WM_QUIT from a separate console handler thread, so the main
message loop never received it and the program could not exit
gracefully. Now setting g_running = false causes the message loop
to terminate cleanly. -
Switch Bugs
-
Fixed logging format