voxtype-bin: update to 1.1.0 (#640)
* voxtype-bin: update to 1.1.0 Ship the signed 1.1.0 release assets, baseline and ARM binaries, and the complete Quickshell and OSD style trees. Add OpenVINO optional dependencies from #526 and select the baseline binary automatically on pre-AVX2 hosts. * voxtype-bin: bump pkgrel past the published 1.1.0-1 voxtype-bin 1.1.0-1 is already published to edge, rc and stable from master's upstream sync. This branch changes that package's contents (baseline binary, OSD styles and recipes, the install hook, OpenVINO optdepends) without changing its version, so publish.yml would call it already published and skip it, and publish-artifact refuses different bytes under an existing filename. pacman would not offer it as an upgrade either. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * voxtype-bin: list accelerator optdepends for x86_64 only makepkg appends optdepends_$CARCH to optdepends rather than replacing it, so optdepends_aarch64 did not drop the Vulkan, CUDA, ROCm and MIGraphX entries on aarch64: it listed all sixteen shared ones and then eleven of them a second time. The accelerator runtimes move to optdepends_x86_64 beside the OpenVINO ones, and the aarch64 array goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * voxtype-bin: move pre-AVX2 hosts to the baseline build on upgrade The baseline pick in _set_default_backend only runs when no backend was saved, which is a fresh install. Every release before 1.1.0 gave a CPU without AVX2 voxtype-avx2, and pre_upgrade saves that path, so post_upgrade restored the build the host cannot run and the machines the baseline binary exists for never reached it. A saved AVX2 or AVX-512 build whose instruction set the CPU lacks is now picked again; GPU and ONNX choices are left alone. tests/voxtype-bin-install.sh covers the fresh-install pick and the upgrade cases, and runs with the other self-tests. It borrows the hook's fixed /tmp/.voxtype-backend-upgrade, so it refuses to start when anything is already there, a dangling symlink included: CI runs it as root, and writing through a planted link would land outside the test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex XHigh <noreply@openai.com> * tests: keep voxtype-bin-install's upgrade state out of /tmp The test borrowed the hook's /tmp/.voxtype-backend-upgrade and checked it was free only once, so a real voxtype-bin upgrade writing its state during the run could have that state overwritten or deleted, and the hook would then lose the user's backend. The test now redefines the sourced _preserve_or_set_backend with the path moved into its own directory, and fails outright if the hook stops using that path rather than passing without reading it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex XHigh <noreply@openai.com> * tests: never parse voxtype-bin-install's temp path as code The redefined _preserve_or_set_backend went through eval with the mktemp path pasted in, so a TMPDIR holding shell syntax -- a directory named $HOME, or $(...) -- was expanded or run when the function was called. It now carries a reference to $SAVED, which expands to the path only at run time. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Co-Authored-By: Codex XHigh <noreply@openai.com> --------- Co-authored-by: Spencer Bull <spencer@omarchy.org> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Codex XHigh <noreply@openai.com>
This commit is contained in:
5 files changed
+309
-218
No files matched your search
@@ -52,6 +52,10 @@ _install_active_binary() {
|
||||
esac
|
||||
}
|
||||
|
||||
_cpu_has() {
|
||||
grep -q "$1" /proc/cpuinfo 2>/dev/null
|
||||
}
|
||||
|
||||
_set_default_backend() {
|
||||
# aarch64 ships one generic CPU binary — no AVX2/AVX-512 split exists on
|
||||
# that architecture, so there's nothing to detect.
|
||||
@@ -61,13 +65,17 @@ _set_default_backend() {
|
||||
return
|
||||
fi
|
||||
|
||||
# Set the default CPU backend based on CPU capabilities
|
||||
if grep -q avx512f /proc/cpuinfo 2>/dev/null; then
|
||||
# Set the default CPU backend based on CPU capabilities. The baseline
|
||||
# binary supports x86-64-v2 hosts that lack AVX2.
|
||||
if _cpu_has avx512f; then
|
||||
_install_active_binary /usr/lib/voxtype/voxtype-avx512
|
||||
echo "avx512"
|
||||
else
|
||||
elif _cpu_has avx2; then
|
||||
_install_active_binary /usr/lib/voxtype/voxtype-avx2
|
||||
echo "avx2"
|
||||
else
|
||||
_install_active_binary /usr/lib/voxtype/voxtype-baseline
|
||||
echo "baseline"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -101,6 +109,13 @@ _preserve_or_set_backend() {
|
||||
target="/usr/lib/voxtype/cuda-${cuda_major}/voxtype-onnx-cuda-${cuda_major}" ;;
|
||||
esac
|
||||
|
||||
# Before 1.1.0 a CPU without AVX2 was given voxtype-avx2 anyway, so a
|
||||
# saved CPU build the host cannot run is picked again, not restored.
|
||||
case "$target" in
|
||||
*/voxtype-avx512) _cpu_has avx512f || target="" ;;
|
||||
*/voxtype-avx2) _cpu_has avx2 || target="" ;;
|
||||
esac
|
||||
|
||||
if [ -f "$target" ]; then
|
||||
_install_active_binary "$target"
|
||||
# Strip the /usr/lib/voxtype/[<subdir>/]voxtype- prefix for the echo
|
||||
@@ -273,7 +288,10 @@ pre_upgrade() {
|
||||
|
||||
post_upgrade() {
|
||||
echo ""
|
||||
echo "==> Voxtype upgraded to 1.0.0"
|
||||
# pacman passes the new full version (pkgver-pkgrel) as $1; strip the
|
||||
# pkgrel. Hardcoding the number here is how an upgrade to 1.1.0 once
|
||||
# announced itself as 1.0.0.
|
||||
echo "==> Voxtype upgraded to ${1%%-*}"
|
||||
echo ""
|
||||
|
||||
BACKEND=$(_preserve_or_set_backend)
|
||||
@@ -287,49 +305,35 @@ post_upgrade() {
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo " What's new in v1.0.0:"
|
||||
echo " * Every setting is reachable from a script:"
|
||||
echo " voxtype config schema --json"
|
||||
echo " voxtype config get output.mode"
|
||||
echo " voxtype config set audio.pause_media true"
|
||||
echo " Plus voxtype info engines/models/devices/accel/variants"
|
||||
echo " for the read-only side."
|
||||
echo " * Graphical settings panel for Omarchy 4, generated from"
|
||||
echo " the config schema. See omarchy-plugin/ in the source tree."
|
||||
echo " * voxtype record stop --wait blocks until a dictation"
|
||||
echo " finishes and reports the outcome, so a script no longer"
|
||||
echo " polls the transcript file and guesses."
|
||||
echo " * Media pausing talks D-Bus directly. playerctl is no"
|
||||
echo " longer needed, which matters on Omarchy Quattro."
|
||||
echo " * Notifications replace the previous one on KDE instead of"
|
||||
echo " stacking (#532)."
|
||||
echo " * setup gpu --status reports the backend the daemon is"
|
||||
echo " actually running, and warns when a GPU provider cannot"
|
||||
echo " load instead of claiming acceleration that is not there."
|
||||
echo " * Model downloads are atomic. An interrupted download no"
|
||||
echo " longer leaves a truncated model that reports as installed."
|
||||
echo " * voxtype setup --download --model small fetches Whisper"
|
||||
echo " small. It was shadowed by SenseVoice."
|
||||
echo " * The package installs voxtype-osd, voxtype-osd-gtk4,"
|
||||
echo " voxtype-osd-quickshell and voxtype-audio-bridge (#488)."
|
||||
echo " * Soniox is compiled into every binary, no feature flag."
|
||||
echo ""
|
||||
echo " Known issues:"
|
||||
echo " * The Quickshell overlay captures pointer events across the"
|
||||
echo " whole screen (#440). The default [osd] frontend = \"gtk4\""
|
||||
echo " is unaffected and Quickshell stays opt-in."
|
||||
echo " * onnx-migraphx builds: the ONNX Runtime MIGraphX provider"
|
||||
echo " corrupts the heap, which used to abort the daemon on exit"
|
||||
echo " and write a 1.9 GB core dump. The daemon now exits without"
|
||||
echo " running that teardown, so the symptom is gone. The bug is"
|
||||
echo " upstream in ORT. Nothing is lost either way: it happened"
|
||||
echo " after shutdown was already complete."
|
||||
echo " What's new in v1.1.0:"
|
||||
echo " * New openvino engine: Whisper on Intel CPU, iGPU, and the"
|
||||
echo " Core Ultra NPU. Needs Intel's OpenVINO GenAI runtime;"
|
||||
echo " loaded only when the engine is selected."
|
||||
echo " * [text] replacements and spoken punctuation now apply on"
|
||||
echo " every output path, including streaming and"
|
||||
echo " voxtype transcribe. If you use replacements with a"
|
||||
echo " streaming engine, your output changes with this release."
|
||||
echo " * The Quickshell OSD follows Omarchy theme switches live,"
|
||||
echo " and takes style packages and recipes:"
|
||||
echo " voxtype info styles"
|
||||
echo " voxtype config set osd.style <name>"
|
||||
echo " Example styles land in /usr/share/voxtype/osd and recipes"
|
||||
echo " in /usr/share/voxtype/osd-recipes."
|
||||
echo " * New baseline binary for CPUs without AVX2 (x86-64-v2,"
|
||||
echo " Nehalem 2008+), OSD included:"
|
||||
echo " voxtype setup variant --to baseline"
|
||||
echo " * A panicked transcription recovers on every engine, not"
|
||||
echo " just Whisper."
|
||||
echo " * A config with one bad value loads everything else and"
|
||||
echo " names the bad section in the log instead of stopping the"
|
||||
echo " daemon."
|
||||
echo " * The GTK4 OSD dmabuf crash on AMD iGPUs is fixed (#656)."
|
||||
echo ""
|
||||
echo " Restart the daemon to apply updates:"
|
||||
echo " systemctl --user restart voxtype"
|
||||
echo ""
|
||||
echo " Full release notes:"
|
||||
echo " https://github.com/peteonrails/voxtype/releases/tag/v1.0.0"
|
||||
echo " https://github.com/peteonrails/voxtype/releases/tag/v1.1.0"
|
||||
echo ""
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user