github goodroot/hyprwhspr v1.20.0

4 hours ago

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_name crash (#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

Full Changelog: v1.19.0...v1.20.0

Don't miss a new hyprwhspr release

NewReleases is sending notifications on new releases.