Fixed
- Severe input lag when a specific audio output device was selected: the app checked device presence inside the audio engine loop every second, and that check could take up to ~2 seconds depending on your device's position in the system list — delaying both the sound and the logo animation by that much, seemingly at random. Sound now plays within ~15ms of a keystroke regardless of which output device is selected.
- Vietnamese input methods (Telex/UniKey/EVKey) no longer cause bursts of clumped sounds: when an IME rewrites text (e.g. "dd" → "đ", or restoring a mistyped syllable), it synthetically injects backspaces and replacement keys — each of which used to play a sound all at once. Software-injected keystrokes are now ignored; only keys you physically press make sound. Note this also means on-screen keyboards and macro tools no longer trigger sounds.
- Logo animation keeps up with fast typing: the pressed-state transition was too slow to render each stroke at speed; each keystroke now shows a distinct pulse.
Changed
- Removed the automatic switch to the system default output when the selected device disappears. The background polling this required is gone completely — zero periodic device probing while you type. If you unplug the device you selected, the app stays silent until you pick another one in Settings (or restart); your saved choice is kept. Selecting "System Default" is unaffected — the OS handles device changes itself.
- Settings → Devices note updated: device changes apply immediately, no restart needed (restart remains a troubleshooting option).
Added
- Diagnostic trace mode: launch with the environment variable
MECHVIBES_TRACE=1to print one line per keystroke with per-stage timings (input capture → audio engine → sound → UI) — useful when reporting latency issues.
Downloads
- Windows:
MechvibesDX-<version>-Setup-x64.exe— installer, the only asset the in-app updater uses. - Linux (Debian/Ubuntu):
.deb— install withsudo dpkg -i. It does not add you to theinputgroup; runsudo usermod -a -G input $USERand log out/in, or key events won't be seen. - macOS (experimental, untested): unsigned and never run on a real Mac. Gatekeeper will block it — see
README-macos.txt. Treat as a preview.