# Updating Vocalinux This guide explains how to update Vocalinux to the latest version. ## What's New in v0.14.0-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **โŒจ๏ธ Configurable Shortcuts** | Bind any modifier combination to a key โ€” e.g. `Alt+R`, `Ctrl+Shift+V`, or `Super+F10` | | **๐ŸŒ FunASR / SenseVoice Remote API** | Remote-API engine now supports FunASR and SenseVoice models via OpenAI-compatible endpoints | | **๐Ÿ–ฅ๏ธ GNOME Wayland IBus Reliability** | Text injection works again on GNOME Wayland with bare `xkb` layouts and engine restore fallbacks are fixed | | **๐ŸŽ™๏ธ Audio Crash Fix** | Recording no longer crashes when the system audio device index changes between sessions | | **โšก Hybrid-CPU Efficiency** | whisper.cpp no longer defaults to all cores on hybrid Intel/AMD processors | ### โœจ New Features - **Configurable modifier+key hotkeys** โ€” The Settings dialog now lets you set custom shortcuts using any combination of Ctrl, Alt, Shift, and Super plus a letter/number key. The legacy defaults still work, and you can now bind combinations like `Alt+R` or `Ctrl+Shift+V` (#493) - **Remote API FunASR/SenseVoice support** โ€” OpenAI-compatible remote endpoints can specify FunASR/SenseVoice model names (e.g. `sensevoice`) and return richer response shapes; SenseVoice metadata labels are stripped before text injection (#468) ### ๐Ÿ› Bug Fixes - **GNOME Wayland/IBus**: Restore text injection when only a bare `xkb` engine is configured; the engine restore fallback now picks the correct IM engine instead of silently dropping text (#506, #500) - **KDE Wayland/IBus**: Restore the KDE Plasma Wayland IBus text-injection path that was regressed in recent compositor-detection changes (#502) - **Wayland injection**: Wait for held modifiers (Ctrl/Alt/Shift/Super) to release before injecting text, preventing accidental shortcut triggers and garbled output on modifier-heavy workflows (#494) - **Shortcuts UI**: Keep preset and custom shortcut selection exclusive โ€” selecting a preset now clears the custom field, and setting a custom combo selects the "Custom Shortcut" preset (#509) - **whisper.cpp**: Stop defaulting to all CPU cores on hybrid processors (Intel Performance + Efficient cores), which caused UI lag and excess battery drain (#492) - **Audio**: Fix a crash on recording start when the selected audio device index no longer matches the current system enumeration (#499) - **Installer**: Include `xsel` as a fallback for the Wayland clipboard path when `xclip` is unavailable (#496) ### ๐Ÿ”ง Improvements - **Code style** โ€” Removed an outdated long comment about whisper.cpp default thread counts (#505) See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.14.0-beta). --- ## What's New in v0.13.0-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **๐ŸŽ™๏ธ Guided Whisper Models** | Pick a whisper.cpp size and specialization (English-only, quantized, Turbo) with in-app guidance | | **๐Ÿ”Œ Hotplug Keyboard Support** | Shortcuts keep working on keyboards connected after startup | | **โœ๏ธ Dictation Spacing** | Spacing preserved between speech segments separated by a pause in the same session | | **๐Ÿ–ฅ๏ธ Wayland Reliability** | Fixes silent text drops on wlroots/COSMIC compositors and garbled non-US-layout output | ### โœจ New Features - **Guided whisper.cpp model variants** โ€” The Settings dialog now splits whisper.cpp selection into **Model Size** and **Specialization**, exposing English-only, quantized (Q5/Q8), Large v3 Turbo, and legacy large models with language-aware recommendations and hover guidance. Exact model IDs (e.g. `medium.en-q5_0`, `large-v3-turbo`) can also be passed to `--model` (#465) ### ๐Ÿ› Bug Fixes - **Dictation**: Preserve spacing between speech segments separated by a pause (#464) - **Shortcuts**: Rescan for hotplugged keyboards so shortcuts work on devices connected after startup (#467) - **KDE Plasma Wayland**: Detect KDE Plasma Wayland sessions and guide you to enable IBus Wayland when `wtype` injection fails (#466) - **Wayland**: Fix garbled output on non-US keyboard layouts and a clipboard-copy hang; ydotool now pastes through the clipboard (#480) - **Wayland/IBus**: Use wtype/ydotool instead of IBus on compositors that don't bridge IBus to native apps like COSMIC, Sway, and Hyprland (#486) - **Wayland/IBus**: Require a real IM engine on Wayland so a bare `xkb` layout no longer causes silent text drops on GNOME/Mutter and similar (#478) - **Wayland**: Preserve the keyboard layout on Wayland by not running `setxkbmap` (was flipping XWayland apps to `us`) (#474) - **UI**: Cap the settings dialog height on high-resolution displays (#465) ### ๐Ÿ”ง Improvements - **Performance**: Faster ydotool text injection via an explicit `--key-delay` (#488) - **Website**: New documentation pages for Remote API, Silero VAD, advanced whisper.cpp settings, and desktop reliability (#470) - **CI**: Automatic pull-request labeling by changed files (#473) See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.13.0-beta). --- ## What's New in v0.12.0-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **๐ŸŒ Remote API Engine** | New backend for compatible remote transcription services | | **๐ŸŽ™๏ธ Silero VAD** | Neural VAD drops silence-only buffers for cleaner dictation | | **๐Ÿงต Thread Safety** | Hardened Remote API, IBus, and text injection threading behavior | | **๐Ÿ”Œ IBus Reliability** | Preserves user engines for dead keys and scoped activation | | **โš™๏ธ Settings Polish** | Advanced-only Remote Server controls and lower dialog height | | **๐Ÿ“ฆ Installer & Models** | CUDA auto-remediation and corrected model download metadata | ### โœจ New Features - **Remote API speech recognition engine** โ€” Configure compatible remote transcription services alongside local engines (#335) - **Silero VAD** โ€” Neural voice activity detection filters silence-only buffers when ONNX Runtime support is installed (#447) ### ๐Ÿ› Bug Fixes - **Threading**: Harden Remote API, IBus, and text injection thread safety (#452) - **IBus**: Preserve user engines for dead keys and capture the current engine during scoped activation (#457, #458) - **UI**: Keep the Remote Server section behind the Advanced toggle and reduce settings dialog height (#454, #456) - **Installer**: Harden CUDA diagnostics with auto-remediation and behavioral tests (#451) - **Models**: Correct whisper.cpp and VOSK download size metadata (#453) - **Startup**: Allow launch without the pynput backend (#448) - **Website**: Clarify speech demo browser support (#449) ### ๐Ÿ”ง Improvements - **Developer docs** โ€” Remote API test server instructions for backend testing (#455) - **Community** โ€” GitHub Sponsors funding configuration added - **Behavioral coverage** โ€” CUDA diagnostics and release-facing reliability fixes include targeted tests See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.12.0-beta). --- ## What's New in v0.10.2-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **๐ŸŒ Non-ASCII Text Injection** | ydotool now falls back to clipboard paste for non-ASCII characters (รก, รฉ, รฑ, etc.) | | **๐Ÿ”Œ IBus on Wayland** | IBus now detected and started correctly on Wayland without legacy env vars | | **๐Ÿš€ IBus Engine Startup** | Engine process now starts before registration check โ€” fixes startup on some systems | | **๐Ÿ“ฆ Pop!\_OS / Ubuntu 24.04+** | Added missing system dependencies (cmake, libcairo2-dev, libgirepository1.0-dev) | | **โšก Code Quality** | Systematic refactor across 20 quality dimensions | | **๐Ÿ–ผ๏ธ Website OG Image** | Redesigned Open Graph image โ€” cleaner and more professional | ### ๐Ÿ› Bug Fixes - **#362 / #376**: Handle non-ASCII characters with ydotool via clipboard paste fallback - **#360 / #361**: Start IBus engine process before checking registration - **#381**: Detect IBus on Wayland without legacy env vars and fix text injection - **#379**: Add missing dependencies for Pop!_OS and Ubuntu 24.04+ ### ๐Ÿ”ง Improvements - Systematic code quality refactor across 20 dimensions (#377) - Clarify missing GNOME AppIndicator support on Debian (#385) - Redesigned OG image for vocalinux.com (#392) See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.10.2-beta). --- ## What's New in v0.10.1-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **๐Ÿ–ผ๏ธ Tray Resource Reliability** | Bundled package resources now prevent missing system tray icons | | **๐Ÿง  Engine Switch Safety** | Recognition now stops before engine changes to avoid segfaults | | **โŒจ๏ธ Keyboard Layout Preservation** | XKB layout is preserved when activating the Vocalinux IBus engine | | **๐ŸชŸ Settings Dialog Compatibility** | Added an explicit Close button for improved WM interoperability | | **โšก Suspend/Resume Recovery** | App now automatically recovers speech recognition and keyboard shortcuts after system suspend/resume | | **๐ŸŽค Push-to-Talk Reliability** | Fixed premature transcription triggering on silence during push-to-talk mode | ### โœจ Scope - **Patch-focused release** โ€” No new feature surface; this version is dedicated to stability and compatibility fixes - **Desktop reliability hardening** โ€” Improved behavior across tray, engine switching, settings dialog actions, and keyboard layout handling - **Suspend/Resume stability** โ€” New D-Bus handler ensures app survives system sleep cycles ### ๐Ÿ› Bug Fixes - **#349 / #354**: Bundle resources in package to fix missing system tray icons - **#350 / #355**: Stop recognition before switching engines to prevent segfaults - **#323 / #356**: Add Close button to settings dialog for WM compatibility - **#292 / #343**: Preserve XKB layout when activating Vocalinux IBus engine - **#359**: Prevent premature transcription during push-to-talk silence - **#367 / #369**: Auto-recover speech recognition after system resume via new suspend handler - **#371**: Restart keyboard shortcut backend after system resume - **#372**: Delay keyboard restart to allow USB device re-enumeration after resume ### ๐Ÿ”ง Improvements - Bumped npm/yarn dependency group across the web workspace (#346) - Bumped `brace-expansion` in development dependencies (#357) - Disabled copy-to-clipboard by default in Settings (#370) See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.10.1-beta). --- ## What's New in v0.9.0-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **โŒจ๏ธ Left/Right Modifier Keys** | Choose Left Ctrl vs Right Ctrl (etc.) as your shortcut trigger | | **๐Ÿ”” Sound Effects Toggle** | Enable or disable audio feedback from the Settings dialog | | **๐Ÿ“‹ Wayland Clipboard Fallback** | Automatic clipboard copy when virtual keyboard injection isn't available | | **๐Ÿ› ๏ธ Installation Polish** | Better pipx/Debian guidance and headless display detection | ### โœจ New Features - **Left/Right Modifier Key Distinction** โ€” Shortcuts now support `Left Ctrl`, `Right Alt`, etc., with grouped UI in Settings - **Sound Effects Toggle** โ€” New Audio Settings toggle to silence start/stop/error sounds - **Clipboard Fallback for Wayland** โ€” Auto-copies text via `wl-copy`/`xclip` when injection unavailable (KDE Plasma etc.) - **Display Availability Check** โ€” Graceful error message when running in headless environments ### ๐Ÿ› Bug Fixes - **#308**: Distinguish left vs right modifier keys (evdev + pynput backends) - **#307**: Remove unwanted leading space when starting a new transcription session - **#305**: Pass configured shortcut mode to `KeyboardShortcutManager` on startup - **#299**: Add clipboard fallback for Wayland compositors without virtual keyboard support - **#289**: Improve Debian/pipx installation error messages and cross-distro dependency guidance ### ๐Ÿ”ง Improvements - **Grouped shortcut selector** โ€” Settings dropdown now organises shortcuts by Either/Left/Right side - **pipx documentation** โ€” New `DISTRO_COMPATIBILITY.md` section for pipx users See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.9.0-beta). --- ## What's New in v0.8.0-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| | **๐ŸŽค Push-to-Talk Mode** | Hold the shortcut key to speak, release to stop | | **โš™๏ธ Voice Commands Toggle** | Enable or disable voice commands, with VOSK auto-enable in auto mode | | **โŒจ๏ธ Shortcut Reliability** | Improved callback lifecycle and mode switching stability | | **๐Ÿง  Input Compatibility** | Better IBus detection and audio device/channel compatibility | ### โœจ New Features - **Push-to-Talk Shortcut Mode** โ€” Added hold-to-speak mode alongside double-tap toggle mode - **Mode-aware Shortcut UI** โ€” Updated settings text and behavior for toggle vs push-to-talk workflows - **Voice Commands Optional** โ€” Voice commands can be disabled, with automatic enable behavior for VOSK ### ๐Ÿ› Bug Fixes - **#277**: Detect active IBus input method before using IBus injection - **#275**: Detect and use device-supported channel count - **#268**: Prevent GTK startup dialog crash on Fedora - **#261**: Resolve text injection issues for better reliability - **#259**: Prevent recognition thread state flicker - **#262/#263**: Auto-detect audio sample rate for better hardware compatibility ### ๐Ÿ”ง Improvements - **Web SEO Enhancements** โ€” Added 8 additional optimized pages for discoverability - **Homepage Refresh** โ€” Updated voice-themed visual polish on the web landing page See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.8.0-beta). --- ## Quick Update ### If You Installed via curl (Recommended) Simply re-run the installation command: ```bash curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash ``` The installer will: - โœ… Detect and stop any running Vocalinux processes - โœ… Update your existing installation - โœ… Preserve your configuration and models - โœ… Install any new dependencies - โœ… Attempt to install neural VAD support, falling back safely if ONNX Runtime is unavailable ### If You Installed from Source ```bash cd vocalinux git fetch origin git checkout v0.14.0-beta ./install.sh ``` Or to get the latest development version: ```bash cd vocalinux git pull origin main ./install.sh ``` --- ## Checking Your Current Version ```bash python3 -c "import vocalinux; print(vocalinux.version.__version__)" ``` --- ## Troubleshooting ### Update Issues? If your update doesn't go smoothly, try a clean reinstall: ```bash # Uninstall (keeps your config and models by default) ./uninstall.sh --keep-config --keep-data # Or uninstall completely ./uninstall.sh # Reinstall fresh curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/main/install.sh | bash ``` ### Old Version Still Running ```bash # Kill any running instances pkill -f vocalinux # Start fresh vocalinux ``` ### Missing Dependencies If you see dependency errors: ```bash # Ubuntu/Debian sudo apt update sudo apt install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0 # Fedora sudo dnf install -y python3-gobject gtk3 # Arch sudo pacman -S python-gobject gtk3 ``` --- ## Need Help? - ๐Ÿ“– [Installation Guide](INSTALL.md) - ๐Ÿ› [Report Issues](https://github.com/jatinkrmalik/vocalinux/issues) - ๐Ÿ’ฌ [Discussions](https://github.com/jatinkrmalik/vocalinux/discussions)