github VocaHQ/vocalinux v0.18.5

latest release: nightly-2026-10-27
4 hours ago

Vocalinux v0.18.5

A patch release that closes the reports filed after 0.18.4. A stop pressed while a recording is starting can no longer leave the microphone recording forever, dictation survives a stalled microphone, keyboards stay alive through suspend and the GNOME lock screen, and the installer learns an upgrade mode that keeps your existing configuration.

Highlights

Fix What changed
A racing stop always wins A stop arriving while a recording starts is no longer overwritten, so the mic can never keep recording with no way to halt it
Stalled microphones recover Capture reads are bounded and cancellable; a mic that stops answering gets one recovery pass before dictation fails cleanly instead of hanging in PROCESSING
Keyboards survive suspend and lock The evdev forwarder releases its EVIOCGRAB when forwarding cannot run, ending dead keyboards at the GNOME lock screen
Dialogs stay on their own workspace Dictation Pad, Settings and other standalone windows no longer bind to or travel with other windows on Wayland
Ctrl+mouse-wheel zoom works Ctrl key events pass through again, so Ctrl+scroll zooms in Firefox and elsewhere
Upgrade mode in the installer install.sh on an existing install defaults to keeping your configuration, virtual environment and downloaded models; --upgrade runs it non-interactively

New Features

  • install.sh upgrade mode keeps the existing configuration: the saved engine, config.json, virtual environment and downloaded models are preserved, and pywhispercpp is rebuilt only when the pinned version drifts (#1026; fixes #1009 reported by @plaffitt)

Bug Fixes

Recognition and audio

  • A stop that races a recording start is never lost: the session arms before LISTENING is published, and the capture loop reads outside _buffer_lock (#1023 by @aagprojectsteam-max; fixes #1022 reported by @aagprojectsteam-max)
  • Capture reads are bounded and cancellable with a five-second stall deadline and one recovery pass, stops run single-flight, and ALSA enumeration prefers the PulseAudio PCM (#974 by @neuroborus)

Hotkeys and input

  • The evdev forwarder releases EVIOCGRAB when forwarding cannot run, so keyboards no longer die at the GNOME lock screen after suspend/resume (#1025; fixes #1021 reported by @iholder101)
  • Ctrl events are preserved for applications, restoring Ctrl+mouse-wheel zoom (#967 by @loject; fixes #950 reported by @loject)

UI (Wayland)

  • Standalone dialogs no longer bind to other windows, so Dictation Pad and Settings stop travelling workspaces together (#1024; fixes #984 reported by @hopsayer)
  • The Wayland fallback overlay stays alive when the dock closes it (#1017; fixes #1010 reported by @lavoie005)

Clipboard

  • Paste-injection copies are marked sensitive (wl-copy --sensitive) on wl-clipboard 2.2+, so clipboard managers that honor the hint keep them out of history; the xclip/xsel path and older wl-copy have no such hint (#956 by @Nosion)

Packaging

  • AUR source publication is gated on attested sdists: the PKGBUILD is prepared only from the canonical sdist whose checksum and build provenance verify (#1020 by @sesav)
  • The tray prefers libayatana-appindicator-glib when available (#1019; fixes #1013 reported by @jo-so)
  • The Snap lists PulseAudio microphones and explains that its whisper.cpp build is CPU-only (#1018; fixes #1011 reported by @cmcclung-ANGENG)

Improvements

  • uv pins aligned across CI and release workflows (#1016 by @sesav), release build tooling pinned with a reproducible-wheel gate (#945 by @sesav), supported uv range widened plus Fedora/AppImage build hardening (#952 by @sesav), and dependency bumps covering flagged vulnerabilities and the pip and GitHub Actions groups (#1008 by @Mr-Sunglasses, #1014, #1015)

Thanks

Reporters: @aagprojectsteam-max, @iholder101, @hopsayer, @loject, @plaffitt, @lavoie005, @jo-so, @cmcclung-ANGENG. Code: @aagprojectsteam-max (#1023), @neuroborus (#974), @loject (#967), @Nosion (#956), @sesav (#1020, #1016, #952, #945), @Mr-Sunglasses (#1008).

Install / Upgrade

Quick Install (Recommended)

curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/v0.18.5/install.sh | bash

From Source

git clone https://github.com/VocaHQ/vocalinux.git
cd vocalinux
./install.sh

From PyPI

# Install the Linux system packages first:
# GTK/AppIndicator, PortAudio, and xdotool/wtype are required.
python3 -m venv ~/.local/share/vocalinux-pypi/venv --system-site-packages
source ~/.local/share/vocalinux-pypi/venv/bin/activate
pip install vocalinux
vocalinux

PyPI installs the Python package only. For automatic system dependency,
desktop integration, and model setup, use the Quick Install command above.
See docs/INSTALL.md for distro-specific PyPI prerequisites.

Arch Linux (AUR)

yay -S vocalinux

AppImage (no install, no root)

Download the .AppImage matching your CPU (x86_64 or aarch64, the latter attached
shortly after this release is published) below:

chmod +x Vocalinux-0.18.5-x86_64.AppImage
./Vocalinux-0.18.5-x86_64.AppImage

Still requires xdotool/wtype/ydotool on the host for text injection, same as the PyPI path.

Distro packages (.deb / .rpm)

Download the package matching your distro and CPU (amd64/x86_64, or arm64/aarch64
attached shortly after this release is published):

# Debian / Ubuntu
sudo apt install ./vocalinux_*_amd64.deb

# Fedora
sudo dnf install ./vocalinux-*.x86_64.rpm

Thin packages: Python, GTK, PyGObject and the AppIndicator typelib come from the
distro, and apt/dnf resolves them. Only pywhispercpp and pynput are
vendored (the first is packaged by neither distro, the second is missing on
Fedora). whisper.cpp runs on CPU in these packages; the Vulkan build is the
AppImage. A PPA and a COPR are not published yet.

On Wayland the default Right Alt hotkey uses evdev: sudo usermod -aG input $USER,
then log out and back in (the input group can read every keyboard and pointer
device; X11 needs nothing).

Flatpak

Install and auto-update via the self-hosted VocaHQ remote (flatpak update
picks up each release):

flatpak install https://vocahq.github.io/vocalinux-flatpak/com.vocalinux.Vocalinux.flatpakref

The .flatpakref adds the vocahq remote and resolves org.gnome.Platform//50
through Flathub itself — no separate Flathub setup needed. To add the
pieces by hand instead:

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --if-not-exists vocahq https://vocahq.github.io/vocalinux-flatpak/vocahq.flatpakrepo
flatpak install vocahq com.vocalinux.Vocalinux

Or download the .flatpak matching your CPU (x86_64 or aarch64, attached
shortly after this release is published) — a bundle with no auto-update:

# once: Flathub remote + GNOME runtime (the app itself is not on Flathub)
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.gnome.Platform//50

flatpak install --user ./Vocalinux-0.18.5-x86_64.flatpak
flatpak run com.vocalinux.Vocalinux

Whisper.cpp engine only. Hotkeys need device access as documented in
packaging/flatpak/README.md. Not on Flathub (flathub/flathub#9368).

Snap

Tagged releases also attach vocalinux_0.18.5_amd64.snap
and try the Snap Store (edge and candidate). stable is promoted
from candidate after QA by the snap-promote.yml dispatch workflow.
Wayland typing runs through the RemoteDesktop portal; the snap ships no uinput plug.
The GitHub .snap is also the sideload while a Store revision lags:

sudo snap install --dangerous ./vocalinux_0.18.5_amd64.snap

--dangerous is required because this file is not a Store revision. It will not
refresh from the Store. amd64 only.

Verifying what you downloaded

SHA256SUMS covers every file here and is attached once the aarch64 AppImage,
both Flatpak builds, and the snap finish, a few minutes after this release appears.
The wheel and the sdist below are the same bytes published to PyPI.

sha256sum -c --ignore-missing SHA256SUMS

Each artifact also carries GitHub build provenance, which ties it to this workflow run:

gh attestation verify Vocalinux-0.18.5-x86_64.AppImage \
  --repo VocaHQ/vocalinux

See CHANGELOG for detailed changes.

What's Changed

  • fix(deps): bump vulnerable dependencies flagged by Dependabot by @Mr-Sunglasses in #1008
  • ci(release): pin build tooling and gate reproducible wheels by @sesav in #945
  • chore(dev): widen uv range and harden Fedora/AppImage builds by @sesav in #952
  • fix(ci): align uv pins across CI and release workflows by @sesav in #1016
  • fix(overlay): keep the Wayland fallback overlay alive when the dock closes it by @jatinkrmalik in #1017
  • fix(snap): list PulseAudio microphones and explain CPU-only whisper.cpp by @jatinkrmalik in #1018
  • fix(tray): prefer libayatana-appindicator-glib when available by @jatinkrmalik in #1019
  • fix(recognition): never lose a stop that races start, and read capture outside the buffer lock by @aagprojectsteam-max in #1023
  • fix(shortcuts): preserve Ctrl events for mouse-wheel zoom by @loject in #967
  • fix(clipboard): keep paste-injection copies out of clipboard history 🤖🤖🤖 by @Nosion in #956
  • fix(aur): gate source publication on attested sdists by @sesav in #1020
  • chore(deps): bump the github-actions group across 1 directory with 6 updates by @dependabot[bot] in #1014
  • fix(ui): keep standalone dialogs from binding to other windows on Wayland by @devin-ai-integration[bot] in #1024
  • chore(deps): bump the pip group across 2 directories with 4 updates by @dependabot[bot] in #1015
  • fix(evdev): release EVIOCGRAB when forwarding cannot run by @devin-ai-integration[bot] in #1025
  • fix(installer): add upgrade mode that keeps the existing configuration by @devin-ai-integration[bot] in #1026
  • fix(audio): prevent dictation hangs on stalled microphones by @neuroborus in #974
  • chore(release): v0.18.5 by @devin-ai-integration[bot] in #1027

New Contributors

Full Changelog: v0.18.4...v0.18.5

Full Changelog: v0.18.4...v0.18.5

Don't miss a new vocalinux release

NewReleases is sending notifications on new releases.