New features
- Global hotkey: press Ctrl+Shift+J at any time to toggle jiggling, even when Mouse Jiggler is minimized to the tray. (#132)
- Respect lock state: a new "Respect lock state?" setting (and
-l/--respect-locked-stateCLI option) pauses jiggling while the workstation is locked, and resumes it automatically on unlock — the checkbox and tray menu always reflect what you actually asked for, never a transient lock-induced pause. Closes #48. (#131, with design credit to @balsa-asanovic for the intent-preserving approach adopted here) --stop-jiggling: tells an already-running instance to stop jiggling, then exits, without starting a GUI of its own. Meant to be driven by Task Scheduler as a clean alternative to a built-in timer — see the new "Scheduling a stop" section in the README for an example. Closes #82. (#143)- Localization: strings are now resource-based, with a complete Simplified Chinese translation (简体中文说明). Contributions of additional languages are welcome. (#134)
Fixes
- Fixed a crash (
IndexOutOfRangeException) when switching jiggle mode or distance while jiggling was active and the new pattern was shorter than the current step index. Closes #140. (#136) - Added global exception handling around the
Mainentry point, so unexpected errors are reported instead of the process dying silently. (#137, thanks @youyou0625) - Hardened the stay-awake mechanism against Modern Standby (S0 low-power idle) laptops, where display-off could previously stop the jiggle timer permanently: the execution-state request now re-asserts on every tick, and the timer forces a real restart on resume broadcasts. Still looking for confirmation from S0 hardware that this fully resolves #130 — reports welcome.
- Fixed the hotkey firing repeatedly while held down (missing
MOD_NOREPEAT). - Widened the settings panel so "Respect lock state?" no longer crowds "Minimize on start?". (#144)
Other changes
- Pull requests now actually get built (not just CodeQL-scanned) before merge. (#141)
- Various internal cleanup: centralized Win32 interop in
Helpers, consolidated the single-instance mutex handling, and general consistency fixes.
Installation
winget install ArkaneSystems.MouseJigglerchoco install mouse-jiggler --version=3.1.0- Or download
MouseJiggler-mainline-x64.zip/MouseJiggler-mainline-arm64.zipbelow (requires the .NET 10 Desktop runtime), or the self-containedMouseJiggler-standalone-*.zipif you can't install that runtime.
Full Changelog: 3.0.0...3.1.0