github VocaHQ/vocalinux v0.18.4

4 hours ago

Vocalinux v0.18.4

A patch release that closes the reports filed after 0.18.3. Long dictations keep all their audio, model downloads only happen when you say so, Test Dictation and the Dictation Pad stop competing for text, and GPU and thread selection now match what whisper.cpp actually runs on.

Highlights

Fix What changed
Long dictations kept whole Push-to-talk recordings past the buffer cap are queued in segments, so a 44.1 kHz mic no longer loses audio after about two minutes
Explicit model downloads Every download asks first with its size, Cancel cancels the whole change without freezing Settings, and switching models keeps your languages
Test Dictation gets its own result The Dictation Pad no longer swallows Test Dictation text, and its routing toggle moved to Settings > Dictation
GPU picker and CPU threads The GPU list follows ggml's own devices and CPU runs use most of your cores instead of 2 threads
Cancel a transcription Press the recording hotkey again (or use the tray item or Test Dictation's Cancel) to drop a slow transcription
Slovenian sl is a supported language

New Features

  • Cancel an in-progress transcription with the recording hotkey, the tray menu or Test Dictation's Cancel button; nothing is typed or saved to history (#1004; fixes #991 reported by @hopsayer)
  • Slovenian (sl) in Settings and language shortcuts (#995; fixes #970 reported by @samodadela)
  • Update checks can be turned off in Settings, and they follow the build channel so stable installs only hear about stable releases (#999; fixes #977 reported by @hopsayer)

Bug Fixes

Recognition

  • Long dictation segments are queued before the buffer cap instead of being truncated (#976 by @dishanood; fixes #975 reported by @dishanood)
  • The GPU picker maps to ggml's device enumeration, logs report the backend really in use, and CPU thread count follows the effective backend (#1001; fixes #987, #990 reported by @hopsayer)

Settings and models

  • Model downloads are explicit: no silent scheduling, "Use it" no longer drops the quantized variant, a cancelled download stays cancelled, Cancel does not freeze the dialog, and language settings survive a model change. New docs/MODEL_SELECTION.md hardware guide (#1006; fixes #979, #980, #981, #982, #985, #988 reported by @hopsayer)
  • Test Dictation keeps its result while the Dictation Pad is open, and "Dictate into Dictation Pad" moved to Settings > Dictation (#1005; fixes #983, #986 reported by @hopsayer)

Hotkeys

  • Keyboards whose evdev node also reports pointer axes (Logitech K860 and friends) are monitored again, ungrabbed (#978 by @ikarius; fixes #953 reported by @dherdt)
  • Flatpak on native X11 uses the X11 listener, so it no longer needs --device=all there (#997; fixes #971 reported by @samodadela)

Text injection (Wayland)

  • Every RemoteDesktop portal request gets a unique handle token, fixing the missing GNOME consent dialog and 15 second timeout (#996; fixes #993 reported by @hal2100)
  • XWayland apps not connected to IBus, such as SoftMaker TextMaker, get text through xdotool (#1003; fixes #972 reported by @kdseattlewa)
  • On GNOME Wayland the overlay is mapped at startup so the first recording keeps focus in your app (#998; fixes #992 reported by @lavoie005)

Packaging and installer

  • The Flatpak bundles onnxruntime, so Silero VAD works there (#1002; fixes #969 reported by @samodadela)
  • install.sh --engine=parakeet installs a working Parakeet engine again (#1000; fixes #973 reported by @Ma6nus)

Improvements

  • Faster Settings, typing and dictation, and mypy as a CI gate (#968)

Thanks

Reporters: @hopsayer, @samodadela, @dishanood, @dherdt, @kdseattlewa, @Ma6nus, @lavoie005, @hal2100. Code: @dishanood (#976) and @ikarius (#978).

Install / Upgrade

Quick Install (Recommended)

curl -fsSL https://raw.githubusercontent.com/VocaHQ/vocalinux/v0.18.4/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.4-x86_64.AppImage
./Vocalinux-0.18.4-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.4-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.4_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.4_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.4-x86_64.AppImage \
  --repo VocaHQ/vocalinux

What's Changed

  • fix(release): recreate refs/remotes dropped by git on the Flatpak remote publish by @devin-ai-integration[bot] in #966
  • perf: faster Settings, typing and dictation; mypy in CI, engine interface, architecture docs by @jatinkrmalik in #968
  • feat(languages): add Slovenian (sl) to the supported languages by @jatinkrmalik in #995
  • fix(hotkeys): use the X11 listener for Flatpak on native X11 sessions by @jatinkrmalik in #997
  • fix(overlay): map the dictation overlay at startup on Wayland so the first recording keeps focus by @jatinkrmalik in #998
  • fix(hotkeys): monitor keyboard nodes with pointer axes ungrabbed by @ikarius in #978
  • fix(installer): pin sherpa-onnx-core so Parakeet installs import by @jatinkrmalik in #1000
  • fix(injection): give every RemoteDesktop portal request a unique handle_token by @jatinkrmalik in #996
  • fix(whispercpp): map GPU picker to ggml devices and size threads by effective backend by @jatinkrmalik in #1001
  • fix(updates): follow the build channel and allow turning update checks off by @jatinkrmalik in #999
  • fix(flatpak): bundle onnxruntime for Silero VAD by @devin-ai-integration[bot] in #1002
  • fix(recognition): queue long dictation segments before the buffer cap by @dishanood in #976
  • fix(text-injection): route XWayland clients without IBus through xdotool by @jatinkrmalik in #1003
  • fix(settings): make model downloads explicit and cancel the whole intent by @devin-ai-integration[bot] in #1006
  • fix(dictation-pad): keep Test Dictation results and move pad routing to Settings by @jatinkrmalik in #1005
  • feat(recognition): cancel an in-progress transcription with the recording hotkey by @jatinkrmalik in #1004
  • chore(release): v0.18.4 by @devin-ai-integration[bot] in #1007

New Contributors

Full Changelog: v0.18.3...v0.18.4

Don't miss a new vocalinux release

NewReleases is sending notifications on new releases.