github goodroot/hyprwhspr v1.41.0

5 hours ago

Added

  • Microphone selection via audio_device_name/audio_device_id — pin a specific input by source name, name substring, or index. Sound-server-routed by default (so EasyEffects/noise suppression/echo cancellation chains still apply); an hw:/plughw: prefix opens ALSA directly, bypassing all processing and taking the card exclusively. hyprwhspr warns at startup when capture lands on a raw device, including as a fallback. (#233)
  • audio_ducking_mode: "pause" — pauses MPRIS media players (Firefox, Chromium, Spotify, mpv, VLC, most players) instead of lowering their volume, and resumes them afterward at the same position. Falls back to ducking for anything without MPRIS (games, calls, system sounds) or if dbus-python isn't installed. Existing "duck" behavior is unchanged and remains the default.
  • whisper_prompt_en — a dedicated English capitalization prompt, shipped by default, so the built-in capitalization guidance no longer leaks into other languages through whisper_prompt. Resolution order is now whisper_prompt_<lang>whisper_promptwhisper_prompt_en (English/unset only) → none.
  • Deliberate Cohere Transcribe language handling — Cohere has no language auto-detection, so an unset language now explicitly transcribes as English, and unsupported codes are refused up front instead of silently mistranscribing. hyprwhspr status and model status now show the effective language.
  • HYPRWHSPR_CUDA_HOST — override for setup's CUDA host-compiler detection, for compilers installed in non-standard locations. a preamp) are boosted toward a target peak instead of rendering as a flat line; hot mics are unaffected. Gain resets at the start of each recording so a previous loud take can't flatten the next quiet one.

Fixed

  • On-demand realtime reconnect could never succeed after a server-side disconnectclose() latched the client shut and connect() refused to reopen it, so every dictation failed until the whole service was restarted. Reconnect now explicitly clears that latch, and the realtime client is properly rebuilt after teardown rather than reused in a half-torn-down state. (#229, #235)
  • Vulkan capability check was skipped after a failed package install — a non-fatal pacman failure (no cached sudo, locked db, mirror timeout) short-circuited straight to "no Vulkan," even on machines with a working GPU. The package install is now a best-effort convenience; the real vulkaninfo check always runs. (#232, thanks @mauriciopaim)
  • CUDA host compiler detection — setup now finds a compatible versioned g++ automatically when the system GCC is too new for CUDA, instead of failing the build.
  • Media-pauser now reuses a single shared D-Bus session connection instead of opening and closing a private one per call, fixing a segfault risk from closing a connection whose watches were still attached to the GLib main loop.

Changed

  • Refactored the microphone device setter alongside the new server-routing support.
  • Docs clarify hyprwhspr is strictly offline unless you opt into an API-backed backend.

Contributors

Thanks to @mauriciopaim.

Full Changelog: v1.40.0...v1.41.0

Don't miss a new hyprwhspr release

NewReleases is sending notifications on new releases.