Features
- faster-whisper backend — A new local transcription backend using https://github.com/SYSTRAN/faster-whisper, offering faster
inference and lower memory usage compared to pywhispercpp. Select it via hyprwhspr setup or by setting backend: "faster-whisper"
in your config.
Bug fixes and improvements
-
Rapid-toggle race conditions (#134, @poberherr) — Several race conditions causing
broken behavior when pressing the recording shortcut in quick succession: the audio level monitoring thread was not being
replaced on rapid stop→start (leaving the mic OSD without level data), is_recording was being set outside the recording lock
allowing fast re-triggers to interleave incorrectly, and PipeWire default source changes were not being picked up on
re-initialization. The saved source from the mic picker is now restored on startup. -
mic-osd crash on early SIGUSR1 (#131, @poberherr) — The mic-osd daemon was being
killed before its signal handlers were registered, because Python's heavy imports (GTK4, numpy, etc.) took ~280ms while the
runner sent SIGUSR1 ~160ms after spawn — killing the process before the overlay could ever appear. Fixed by setting
SIGUSR1/SIGUSR2 to SIG_IGN before imports, then installing real handlers once initialization completes. -
Stale state files on crash or reboot (#128, @Nomadcxx) — If the service was killed
hard (SIGKILL, crash, reboot), state files like recording_status were left with stale values, causing hyprwhspr record toggle to
always send stop instead of start. A new _reset_stale_state() now runs on both startup and graceful shutdown. -
_keycode_to_namecrash (#137, @mikecirioli) — Fixed a crash in the keyboard event loop
when evdev returns a list of key names for a keycode instead of a single string.
What's Changed
- fix: replace 17 bare excepts with except Exception by @haosenwang1018 in #126
- fix: reset stale runtime state files on startup and shutdown by @Nomadcxx in #128
- fix: prevent mic-osd daemon death from early SIGUSR1 during import by @poberherr in #131
- Fix _keycode_to_name crash when evdev returns a list for keycode lookup by @mikecirioli in #137
- fix: resolve recording UI issues on rapid toggle and wrong default mic by @poberherr in #134
New Contributors
- @haosenwang1018 made their first contribution in #126
- @Nomadcxx made their first contribution in #128
- @poberherr made their first contribution in #131
- @mikecirioli made their first contribution in #137
Full Changelog: v1.19.0...v1.20.0