From 6c09812271695696eb74d0c7d5f6d4cc524185e5 Mon Sep 17 00:00:00 2001 From: Xavier Karma Date: Sat, 7 Nov 2026 01:46:38 +0530 Subject: [PATCH] chore(release): prepare v0.19.0 The first Voculinux release. It has no phase suffix, so the tag is v0.19.0 and the xbps version is 0.19.0_1. - src/vocalinux/version.py, the Void template (version and _tag), the web softwareVersion and package version, the README badge and current-release blurb - docs/UPDATE.md: What's New in v0.19.0, and the source checkout tag - CHANGELOG.md: v0.19.0 entry from v0.18.5..main, the fork's changes and the upstream fixes carried after 0.18.5 - SECURITY.md: 0.19.x is the supported line - pyproject.toml: project URLs point at git.bongbetic.com/xavierk/voculinux --- CHANGELOG.md | 17 +++++++++++++++ README.md | 4 ++-- SECURITY.md | 3 ++- docs/UPDATE.md | 25 ++++++++++++++++++++++- packaging/void/srcpkgs/voculinux/template | 4 ++-- pyproject.toml | 10 ++++----- src/vocalinux/version.py | 4 ++-- web/package-lock.json | 4 ++-- web/package.json | 2 +- web/src/app/page.tsx | 2 +- 10 files changed, 58 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 352102c..ce1829c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,23 @@ Release history for Vocalinux. ## Current stable +**[v0.19.0](https://git.bongbetic.com/xavierk/voculinux/releases/tag/v0.19.0)** (2026-11-07) + +The first Voculinux release: a hard fork of 0.18.5 for Void Linux (glibc, x86_64), published as a signed xbps repository from the fork's Gitea host. Changes since v0.18.5, from the commit subjects and PR titles on `main`: + +- **Void Linux packaging:** signed xbps repository and release pipeline, a package smoke gate across all templates, the `voculinux` template built from the release tag (#37, #39), and carried templates for `python3-pywhispercpp` 1.5.0 with CPU variants loaded at runtime (#49), `python3-pynput`, `python3-PyAudio` and `python3-pysocks`. The Void package is the only published install channel, and upstream install references are gone (#38, #40). +- **Identity:** user-visible names are Voculinux, with the identity centralised in one module (#17). An existing configuration and custom dictionary are imported once on first run (#18), and the migrated dictionary points at the fork (#36). +- **Model default:** a memory-aware whisper.cpp ladder with a conditional backend order (CUDA only with a complete toolkit, then Vulkan, then CPU). Free-memory thresholds are per backend, from the installed-build measurement in #19. A load failure steps down one rung and retries once (#20). +- **Dictation on niri:** a niri keybind pack and Dank Material Shell notes (#22), a niri-aware inject probe and conflict-free example keybinds (#47). The injection fallback ladder is portal, direct typing, virtual-input tool, XWayland, then clipboard (#31). +- **Audio:** system audio is captured from PipeWire sink monitors. A configured microphone is never swapped, and the microphone is never opened for system audio (#48). +- **Interface and scripting:** a dictation state signal and property on D-Bus (#21), a brand accent hook in the GTK colour scheme (#23), and the installed-build performance baseline protocol (#19). +- **Website:** rebranded to Voculinux, with Google Analytics removed and site links pointing at the fork (#24, #35). +- **Fixes:** CUDA detection outside `PATH`, an IBus warning on niri, update checks against the fork's Gitea repository (#36), and the review findings for the Void port (#34). + +Carried from upstream after 0.18.5 (VocaHQ/vocalinux PR numbers): overlay Wayland detection (#1030, #1035), quitting when the dock closes the overlay window (#1028, #1036), the selected microphone's full name in the device tooltip (#1029, #1037), escaped device names in the audio status label (#1043), Parakeet Underdog Bark 3.0 models (#1031), the snap build from locked inputs (#1041), the GitHub Actions dependency bump (#1042), and the website's 404 page and SEO work (#1038, #1039, #1040). + +See [docs/UPDATE.md](docs/UPDATE.md#whats-new-in-v0190) for the highlight table. + **[v0.18.5](https://github.com/VocaHQ/vocalinux/releases/tag/v0.18.5)** (2026-10-27) Patch on the stable line: a stop that races a recording start can no longer leave the microphone recording with no way to halt it, and a stalled microphone read can no longer hang Stop forever, keyboards survive suspend and the GNOME lock screen again because the evdev grab is released when forwarding cannot run, Dictation Pad and Settings no longer bind to other windows or travel workspaces together on Wayland, Ctrl+mouse-wheel zoom works again, the installer gains an upgrade mode that keeps your existing configuration, paste-injection copies are marked sensitive on wl-clipboard 2.2+ so clipboard managers that honor the hint keep them out of history, and AUR source publication is gated on attested release sdists. diff --git a/README.md b/README.md index 8a71a22..82bc8cb 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Privacy: on-device](https://img.shields.io/badge/privacy-on--device-success)](#privacy-and-security) [![X11 & Wayland](https://img.shields.io/badge/display-X11%20%7C%20Wayland-lightgrey)](#features) -[![Release](https://img.shields.io/badge/release-v0.18.5-478061)](https://git.bongbetic.com/xavierk/voculinux/releases/tag/v0.18.5) +[![Release](https://img.shields.io/badge/release-v0.19.0-478061)](https://git.bongbetic.com/xavierk/voculinux/releases/tag/v0.19.0) [Website](https://voculinux.com) · [Install](#install) · [Docs](#documentation) · [Releases](https://git.bongbetic.com/xavierk/voculinux/releases) · [Issues](https://git.bongbetic.com/xavierk/voculinux/issues) @@ -21,7 +21,7 @@ Voculinux turns speech into typed text in whatever app has focus. It is a free, No account is required. Models download once. After that, speech-to-text stays on your machine. -**Current release:** [v0.18.5](https://git.bongbetic.com/xavierk/voculinux/releases/tag/v0.18.5). Patch: a stop that races a recording start can no longer leave the mic recording forever, keyboards stay alive through suspend and the GNOME lock screen, Ctrl+mouse-wheel zoom works again, Dictation Pad and Settings stop travelling workspaces together, and paste-injection copies are marked sensitive for clipboard history on wl-clipboard 2.2+. Details: [docs/UPDATE.md](docs/UPDATE.md). +**Current release:** [v0.19.0](https://git.bongbetic.com/xavierk/voculinux/releases/tag/v0.19.0). The first Voculinux release: a Void Linux package from the signed repository above, niri and Dank Material Shell support, a model default chosen by free GPU memory, and a fix that keeps system-audio capture from ever opening the microphone. Details: [docs/UPDATE.md](docs/UPDATE.md). ## Features diff --git a/SECURITY.md b/SECURITY.md index a4c6cb4..8beaf0a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,8 @@ Only the current stable minor line receives security fixes: | Version | Supported | | ------- | --------- | -| 0.18.x | Yes | +| 0.19.x | Yes | +| 0.18.x | No | | 0.17.x | No | | 0.16.x | No | | 0.15.x | No | diff --git a/docs/UPDATE.md b/docs/UPDATE.md index 5cd79fe..ec98f2f 100644 --- a/docs/UPDATE.md +++ b/docs/UPDATE.md @@ -25,7 +25,7 @@ installer as below. ```bash cd voculinux git fetch origin -git checkout v0.18.5 +git checkout v0.19.0 ./install.sh ``` @@ -90,6 +90,29 @@ Missing system packages: see [INSTALL.md](INSTALL.md) or [DISTRO_COMPATIBILITY.m --- +## What's New in v0.19.0 + +0.19.0 is the first Voculinux release: a hard fork of the 0.18.5 line for Void Linux +(glibc, x86_64), installed and updated through the signed xbps repository. The default +engine is still whisper.cpp, and the speech models still download on first run against +pinned checksums. + +### 0.19.0 highlights + +| Area | Change | +|------|--------| +| Packaging | Signed Void xbps repository with the `voculinux` package. Carried templates for pywhispercpp 1.5.0 (with CPU variants), pynput, PyAudio and PySocks. Install and update with `xbps-install`. | +| Names and first run | User-visible names are Voculinux. An existing configuration and custom dictionary are copied once on first run; the Voculinux configuration always wins after that. | +| Model default | The whisper.cpp model is chosen at load time from free memory: VRAM on a GPU build, system RAM otherwise. Thresholds are per backend, measured on a 4 GB RTX 2050. A load failure steps down one size and retries once. | +| niri and Dank Material Shell | A niri keybind pack for dictation toggles. On niri, typing goes straight to the cursor with no permission prompt. The tray is a standard StatusNotifier item. | +| Audio | System-audio sources come from PipeWire. A saved system-audio source that disappears is an error, never a silent switch to the microphone. | +| Scripting | The D-Bus interface reports dictation state (idle, listening, processing) for bars and scripts. | +| Fixes | CUDA detection outside `PATH`, the IBus warning on niri, and update checks against this fork's Gitea repository. | + +Full change list: [CHANGELOG.md](../CHANGELOG.md). + +--- + ## What's New in v0.18.5 0.18.5 is a **patch** on the stable line. Default engine is still whisper.cpp. It closes the reports filed after 0.18.4: a stop pressed while a recording is starting can no longer leave the microphone recording forever, microphones that stall mid-read can no longer wedge dictation, keyboards survive suspend and the GNOME lock screen, Ctrl+mouse-wheel zoom works again, and the installer learns an upgrade mode that keeps your settings. diff --git a/packaging/void/srcpkgs/voculinux/template b/packaging/void/srcpkgs/voculinux/template index dc71bb8..ae556c4 100644 --- a/packaging/void/srcpkgs/voculinux/template +++ b/packaging/void/srcpkgs/voculinux/template @@ -1,11 +1,11 @@ # Template file for 'voculinux' pkgname=voculinux -version=0.18.5 +version=0.19.0 revision=1 # The release tag this template names: v + __version__, with the pre-release # hyphen kept (the tag is v0.19.0-beta while version is 0.19.0beta). The release # gate (packaging/void/build-release.sh check-tag) refuses any mismatch. -_tag=v0.18.5 +_tag=v0.19.0 # The release sdist ships no setup.py (setuptools pyproject-only), so the # build goes through the PEP 517 wheel (cf. Solaar, PhotoCollage). build_style=python3-pep517 diff --git a/pyproject.toml b/pyproject.toml index 1866cdc..4578ce7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -123,11 +123,11 @@ voculinux = "vocalinux.main:main" voculinux-gui = "vocalinux.main:main" [project.urls] -Homepage = "https://github.com/VocaHQ/vocalinux" -Documentation = "https://github.com/VocaHQ/vocalinux/tree/main/docs" -Repository = "https://github.com/VocaHQ/vocalinux" -Issues = "https://github.com/VocaHQ/vocalinux/issues" -Changelog = "https://github.com/VocaHQ/vocalinux/releases" +Homepage = "https://git.bongbetic.com/xavierk/voculinux" +Documentation = "https://git.bongbetic.com/xavierk/voculinux/src/branch/main/docs" +Repository = "https://git.bongbetic.com/xavierk/voculinux" +Issues = "https://git.bongbetic.com/xavierk/voculinux/issues" +Changelog = "https://git.bongbetic.com/xavierk/voculinux/releases" [tool.uv] # Contributors may use uv 0.12 or 0.13. CI and lock/export generation use diff --git a/src/vocalinux/version.py b/src/vocalinux/version.py index eb45cf2..af210e7 100644 --- a/src/vocalinux/version.py +++ b/src/vocalinux/version.py @@ -2,8 +2,8 @@ Version information for Voculinux. """ -__version__ = "0.18.5" -__version_info__ = (0, 18, 5) +__version__ = "0.19.0" +__version_info__ = (0, 19, 0) __author__ = "Jatin K Malik" __email__ = "jatinkrmalik@gmail.com" __license__ = "AGPL-3.0-only" diff --git a/web/package-lock.json b/web/package-lock.json index 55f4417..108d78c 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { "name": "voculinux-website", - "version": "0.18.5", + "version": "0.19.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "voculinux-website", - "version": "0.18.5", + "version": "0.19.0", "dependencies": { "@types/node": "^20.14.10", "@types/react": "^18.3.3", diff --git a/web/package.json b/web/package.json index a28a6c1..fa3d186 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "voculinux-website", - "version": "0.18.5", + "version": "0.19.0", "private": true, "type": "module", "scripts": { diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index 6862f9d..16ed721 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -29,7 +29,7 @@ const homeJsonLd = [ }, description: "Offline voice dictation and speech-to-text for Linux with whisper.cpp, Faster Whisper, Whisper, VOSK, and Parakeet.", - softwareVersion: "0.18.5", + softwareVersion: "0.19.0", author: { "@type": "Person", name: "Xavier Karma",