Skip to content

Offer a source-build fallback when Voxtype's binary needs AVX2 - #8316

Open
ironbract wants to merge 14 commits into
omacom:quattrofrom
ironbract:fix-dictation-avx2-fallback
Open

Offer a source-build fallback when Voxtype's binary needs AVX2#8316
ironbract wants to merge 14 commits into
omacom:quattrofrom
ironbract:fix-dictation-avx2-fallback

Conversation

@ironbract

Copy link
Copy Markdown

Fixes #8312

Problem

voxtype-bin targets the x86-64-v3 instruction baseline (AVX2, FMA, BMI1/2, F16C, MOVBE), so it SIGILLs on CPUs older than Haswell (~2013). The install hook (bin/omarchy-voxtype-install) had no capability check, so it always installed the incompatible binary. Worse, if a post-install step failed, set -e aborted the script mid-way and left the package + ~/.config/voxtype on disk with no cleanup.

Fix

  • Add bin/omarchy-hw-x86-64-v3, a boolean predicate following the existing omarchy-hw-* convention, to detect the baseline via /proc/cpuinfo flags.
  • Gate the install on that check. When it fails, offer to build the AUR voxtype package from source instead of the prebuilt binary, with an explicit warning that this can take 20+ minutes and may run noticeably slower — only proceeds on confirmation.
  • Roll back cleanly via the existing omarchy-voxtype-remove if any post-install step fails, instead of abandoning a half-installed package.
  • Updated omarchy-voxtype-remove to drop whichever of voxtype-bin/voxtype is actually installed.
  • Added test/shell.d/hw-x86-64-v3-test.sh and test/shell.d/voxtype-install-test.sh, and a short note in the manual.

Testing

./test/all passes (208 shell test files + CLI suite), aside from pre-existing failures unrelated to this change (config-test.sh, snapper-test.sh, theme-install-guards-test.sh, unowned-system-paths-test.sh, and one CLI test needing a sibling omarchy-pkgs checkout not present in this sandbox — all reproduce identically on quattro before this change). Also manually verified omarchy-hw-x86-64-v3 against a real Ivy Bridge CPU (i7-3520M) lacking AVX2.

Disclosure

This fix was drafted and tested with AI assistance (Claude), in response to the project's own agent-contributing workflow (default/agents/skills/omarchy/contributing.md). I filed #8312 after hitting this myself, then worked with Claude to build and test this patch before opening the PR.

voxtype-bin targets the x86-64-v3 baseline (AVX2, FMA, BMI1/2, F16C,
MOVBE), so it SIGILLs on older CPUs. The install hook had no capability
check, so it always installed the incompatible binary and, on any
post-install failure, left a half-installed package behind with set -e.

Add omarchy-hw-x86-64-v3 to detect the baseline, gate the install on
it, and offer to build the AUR voxtype package from source instead
(with a warning about build time and possible performance). Roll back
via omarchy-voxtype-remove if setup fails partway through instead of
abandoning a broken install.

Fixes omacom#8312

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings August 26, 2026 01:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds CPU compatibility detection and a source-build fallback for Voxtype, with rollback handling and documentation.

Changes:

  • Detect x86-64-v3 support and select binary or source installation.
  • Improve failed-install cleanup and package removal.
  • Add shell tests and user documentation.

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 3 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
bin/omarchy-hw-x86-64-v3 Detects required CPU capabilities.
bin/omarchy-voxtype-install Adds fallback selection and rollback.
bin/omarchy-voxtype-remove Removes either Voxtype package variant.
manual/11-text-extraction-dictation.md Documents compatibility and fallback behavior.
test/shell.d/hw-x86-64-v3-test.sh Tests CPU capability detection.
test/shell.d/voxtype-install-test.sh Tests installation paths and rollback invocation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

voxtype-bin declares Provides=voxtype, so yay -S --noconfirm --needed
voxtype silently resolved to the repo-provided voxtype-bin instead of
building the AUR voxtype package -- defeating the fallback and
reinstalling the exact binary that SIGILLs on pre-AVX2 CPUs.

omarchy-pkg-aur-add now accepts an optional repo/ prefix (e.g.
aur/voxtype) to force resolution from a specific source while still
verifying/erroring against the bare package name pacman reports.
omarchy-voxtype-install passes aur/voxtype to use it.

Verified on real pre-AVX2 hardware: the source build now actually
compiles and installs voxtype (not voxtype-bin), and the resulting
systemd service starts and runs correctly.
@ironbract

Copy link
Copy Markdown
Author

Pushed a follow-up fix after testing the source-build fallback on real pre-AVX2 hardware (an Ivy Bridge i7-3520M).

Bug found: voxtype-bin declares Provides=voxtype, so yay -S --noconfirm --needed voxtype silently resolved to the repo-provided voxtype-bin instead of building the AUR voxtype package — completely defeating the fallback and reinstalling the exact binary that SIGILLs on this CPU.

Fix: omarchy-pkg-aur-add now accepts an optional repo/ prefix (e.g. aur/voxtype) to force resolution from a specific source, while still verifying/erroring against the bare package name pacman actually reports. omarchy-voxtype-install now passes aur/voxtype.

Re-verified on the same hardware: the source build now genuinely compiles (~20 min) and installs voxtype (not voxtype-bin), and the resulting voxtype.service starts and runs correctly with no SIGILL.

Also added test/shell.d/pkg-aur-add-test.sh covering the prefix behavior, and updated voxtype-install-test.sh's assertion accordingly. Full ./test/all run clean aside from the same pre-existing, unrelated sandbox failures noted before.

(Disclosure: this fix, like the rest of the PR, was developed with AI assistance — Claude Code, reviewed and tested by me on real hardware before pushing.)

omarchybot and others added 3 commits August 26, 2026 05:34
omarchy-restart-shell was the last command in install_voxtype, so its exit
status became the function's, and the new rollback treated it as a failed
install: omarchy-voxtype-remove drops the package and deletes
~/.config/voxtype and ~/.local/share/voxtype, taking the 150MB model that
had just downloaded with it. It exits non-zero for reasons unrelated to
Voxtype -- a locked session, or the shell not answering its ping within two
seconds, which is likeliest on exactly the older CPUs this fallback targets,
and after a 20+ minute source build.

Reloading Hyprland and restarting the shell only load the new bindings, so
they belong on the success path rather than inside the rollback boundary.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Exiting 0 on aarch64 said the CPU satisfies an x86 baseline, which the
installer reads as "the prebuilt binary is fine" and reaches for
voxtype-bin -- an x86_64-only package. Every other omarchy-hw-* detector
answers 0 only for a match; unknown hardware exits non-zero. With that, an
ARM machine takes the source-build path instead, and the AUR voxtype
package builds for aarch64.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
Both entries keyed off voxtype-bin, which the source-build fallback never
installs: Remove > AI > Dictation stayed hidden, so the population this
fallback exists for had no way to uninstall, and Install > AI > Dictation
stayed enabled and would re-run the installer over a working setup --
overwriting ~/.config/voxtype with the default and, on any later failure,
rolling the whole thing back. omarchy-cmd-present answers for either
package, the way omarchy-voxtype-remove and the Ollama entries already do.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
@omarchybot

Copy link
Copy Markdown
Collaborator

Reviewed on a disposable VM, with an independent second opinion from Codex at xhigh reasoning. Three defects found and fixed on this branch; the rest is listed below for you to judge.

Pushed to fix-dictation-avx2-fallback:

  • c2ec87d6omarchy-restart-shell was the last command in install_voxtype, so its exit status became the function's and the new rollback treated it as a failed install: omarchy-voxtype-remove drops the package and rm -rfs ~/.config/voxtype and ~/.local/share/voxtype, taking the 150MB model that had just downloaded. It exits non-zero for reasons unrelated to Voxtype — a locked session, or the shell not answering its ping within its 2s window, which is likeliest on exactly the older CPUs this fallback targets, and after a 20+ minute source build. Moved hyprctl reload and omarchy-restart-shell to the success path, outside the rollback boundary.
  • 22506147bin/omarchy-hw-x86-64-v3:5 exited 0 on non-x86_64, i.e. "this CPU satisfies an x86 baseline", so an aarch64 machine takes the voxtype-bin path. voxtype-bin in the omarchy repo is Architecture: x86_64 only, while the AUR voxtype is arch=('x86_64' 'aarch64') — so the wrong answer picks the one package that cannot be installed. Every other omarchy-hw-* answers 0 only for a match (omarchy-hw-nvidia:16, omarchy-hw-laptop:17, omarchy-hw-external-monitors:12). Changed to exit 1. This matters now rather than hypothetically: Guard three x86-only assumptions so Omarchy can install on aarch64 #8039 is an open PR making aarch64 installs work.
  • df67e748default/omarchy/omarchy-menu.jsonc:240,304 still key both dictation entries off voxtype-bin, which the source-build path never installs. Remove > AI > Dictation stayed hidden, so the exact population this fallback exists for had no way to uninstall; Install > AI > Dictation stayed enabled and would re-run the installer over a working setup, overwriting ~/.config/voxtype/config.toml with the default and, on any later failure, rolling the whole thing back. Switched both to omarchy-cmd-present voxtype, which answers for either package — what omarchy-voxtype-remove itself gates on, and what the Ollama entries at :243 already use.

Open, left for you or the maintainer:

  • bin/omarchy-voxtype-install:9wtype is installed before the CPU decision, so declining the source build, an unreachable AUR, or a rollback all leave it behind. voxtype-install-test.sh:101-104 describes that case as "installs nothing" but only checks that voxtype-bin was not installed. Harmless package, but the claim and the code disagree.
  • bin/omarchy-hw-x86-64-v3:10 — the flag list omits LZCNT (abm in /proc/cpuinfo), which the x86-64 psABI includes in v3. Practically every AVX2 part has it, so this is hardening rather than a live bug — but note your own Haswell fixture in hw-x86-64-v3-test.sh carries abm and nothing asserts it, so the test would not catch its removal.
  • test/shell.d/voxtype-install-test.shrun_install is called five times and its exit status is never asserted, and the file has no set -e. The two success cases could exit non-zero and still pass; the AUR-unreachable and setup-failure cases could exit zero and still pass. Line 124 proves only that omarchy-voxtype-remove was invoked — the stub removes nothing, so a rollback that silently did nothing would satisfy it. The negative grep … && fail assertions are sound.
  • bin/omarchy-voxtype-install:45hyprctl reload is still unchecked (it was under set -e before). After the push it is on the success path, so a failed reload means the bindings are not loaded but the ready notification still fires.
  • bin/omarchy-pkg-aur-add:13 — the missing-check runs on the stripped name, so if a sync-repo package named voxtype were ever installed, yay -S aur/voxtype would never run and the AUR-forcing mode would be defeated by the thing it exists to defeat. Not reachable today: voxtype is in no sync repo, so the aur/ prefix is currently a no-op and purely forward-defensive.
  • bin/omarchy-voxtype-install:28 — house style asks for a quoted literal here: [[ $voxtype_pkg == "voxtype-bin" ]].
  • Pre-existing on quattro, not yours, but you are in the line: bin/omarchy-voxtype-install:50 has -g followed by two spaces and no glyph, so -g swallows "Voxtype Dictation Ready" as its glyph argument and the notification headline becomes the Hold-F9 sentence with an empty body.

Verified, not just read: ${@#*/} leaves an unslashed name unchanged and yields an empty array for zero arguments, and every existing omarchy-pkg-aur-add caller (omarchy-install-browser:50,59,68,77,94, omarchy-install-editor-emacs:6, migrations/1784510887.sh:6) passes plain names — the helper change breaks none of them. The AUR voxtype PKGBUILD builds on the user's machine with makepkg's flags unset and no -march/target-cpu forcing, so the fallback really does produce a baseline-compatible binary, which is what #8312 and #8197 need.

Tests: on a disposable Omarchy VM, after the pushed commits — hw-x86-64-v3-test.sh 4/4, pkg-aur-add-test.sh 3/3, voxtype-install-test.sh pass, menu-test.sh 121/121, menu-guards-test.sh 18/18, menu-plugin-test.sh 12/12, and ./test/cli clean. Nothing was run on the machine holding credentials.

Second opinion: Codex at xhigh agreed independently on the rollback, the non-x86_64 exit code, and the stale menu guards — though its independence is not currently guaranteed, since it can read this session's own transcript. It contributed three things this review had not reasoned about and that stand on their own: the missing LZCNT/abm flag, the unasserted installer exit statuses, and the -g glyph argument.

Waiting on: the maintainer. #7890 (kx0101) changes the same file and the same test filename to reject Voxtype outright on non-AVX2 CPUs rather than offer an alternative — the two conflict, and choosing between them is not this review's call. This PR closes #8312 and would also answer #7883 and #8197.

@twitchax

Copy link
Copy Markdown

Tested this on Apple Silicon (MacBook Air M1, aarch64, Asahi) — filed #8530 for the ARM side before finding this PR.

Good news: omarchy-hw-x86-64-v3 exits 1 on uname -m == aarch64, so this PR already fixes ARM functionally. voxtype-bin is arch=('x86_64') there (makepkg refuses outright), and your fallback routes to aur/voxtype, which builds and works.

Two things still bite on ARM:

1. hw-x86-64-v3-test.sh cannot pass on a non-x86 host. The test overrides OMARCHY_CPUINFO_PATH but not uname -m, so the machine check rejects the fixture before the flags are read:

ok     - Ivy Bridge without AVX2/BMI1/BMI2 does not satisfy x86-64-v3
not ok - Haswell with the full x86-64-v3 baseline satisfies it

The three assert_rejects cases pass for the wrong reason, too — the arch guard, not the flags. Making the machine type overridable the same way cpuinfo already is fixes both:

machine=${OMARCHY_UNAME_M:-$(uname -m)}
[[ $machine == "x86_64" ]] || exit 1

With OMARCHY_UNAME_M set in the test helper, plus a case asserting aarch64 is rejected even with x86 flags present, it goes 5/5 here.

2. The message is wrong on ARM. "Your CPU is missing instructions (AVX2/x86-64-v3)" isn't true of an M1 — nothing is missing, there's just no prebuilt binary for the architecture. Same for "may result in noticeably slower dictation": the source build is native there. Branching the copy on [[ $(uname -m) == "x86_64" ]] covers both cases.

I have these as two commits on top of your branch, tested on real M1 hardware (./test/all goes from 6 failures to 5; the remaining 5 also fail on clean quattro). Happy to open them as a PR against fix-dictation-avx2-fallback, or you can just take the diff — whichever you prefer.

@omarchybot

Copy link
Copy Markdown
Collaborator

Re-reviewed at df67e748. The head has not moved, so this pass is only about @twitchax's comment and the new issue #8530. Nothing pushed this round; the three commits from the last review stand.

#8530 is fixed by this PR, functionally. Traced at this head: on aarch64 uname -m fails the machine check at bin/omarchy-hw-x86-64-v3:5, so the predicate exits 1 before a single CPU flag is read, bin/omarchy-voxtype-install:12 takes the fallback branch, and line 31 installs aur/voxtype. It never reaches the voxtype-bin branch at :28-29, and no other path under bin/, install/, migrations/, default/ or shell/ installs or offers voxtype-bin — the first-run hook at install/user/first-run/install-voxtype.hook:8 only launches this installer, and the menu now guards on the voxtype command. Worth being precise about where that coverage comes from: it is the non-x86_64 exit 1 (22506147), not anything AVX2-shaped. As the predicate was originally written it exited 0 on aarch64 — "this CPU satisfies the x86 baseline" — and Apple Silicon would have gone straight to the one package that cannot install. The predicate answers "does this CPU meet x86-64-v3"; the installer is asking "can the prebuilt binary run here". Those two agree for every architecture only because voxtype-bin is x86_64-only, so if it ever gains an aarch64 build, ARM users get routed to a 20-minute source build for nothing.

Checked the AUR side on a disposable VM rather than taking it on trust: voxtype-bin in the omarchy repo is Architecture: x86_64 and Provides: voxtype (which is why the aur/ prefix in this PR matters); the AUR voxtype at 0.7.5-1 is arch=('x86_64' 'aarch64'), its PKGBUILD unsets makepkg's flags and forces no -march/target-cpu anywhere, so an aarch64 build is native. Its makedepends have grown past the list quoted in #8530vulkan-headers, vulkan-icd-loader, gtk4 and gtk4-layer-shell are in there now as well. We cannot build for aarch64 here, so that the build actually succeeds on an M1 rests on @twitchax's run, not on anything verified in this review. One correction to #8530's suggested fix: omarchy-hw-apple-silicon does not exist on quattro — nothing in the tree matches — and it is not needed, since the machine check already routes ARM correctly.

@twitchax's first point holds; reproduced it. Running test/shell.d/hw-x86-64-v3-test.sh on a worker with uname shimmed to report aarch64 prints ok for Ivy Bridge and then not ok - Haswell with the full x86-64-v3 baseline satisfies it, and fail exits there. Two details worth having exact: on a real x86_64 host all four cases pass for the right reasons (4/4 verified on the worker at this head), and in a single non-x86 run the last two cases never execute at all, because the suite aborts on the Haswell failure — so it is the Ivy Bridge case, not three of them, that passes for the wrong reason in practice. This repo has no CI (.github holds only ISSUE_TEMPLATE), so a contributor's own machine is the only place the suite runs, which is exactly where this bites. The seam is also the only way to cover the exit 1 that 22506147 added: nothing asserts it today, so a regression back to exit 0 would pass the suite silently.

On the name: PR #8149 (Skip Claude and Pi on CPUs without SSE4.2/POPCNT) adds a second CPU predicate, bin/omarchy-hw-cpu-sse4_2, with seams already called OMARCHY_ARCH and OMARCHY_CPUINFO. If this one lands as OMARCHY_UNAME_M alongside OMARCHY_CPUINFO_PATH, that is four names for two things. More than naming, the two predicates answer the architecture question in opposite directions — omarchy-hw-cpu-sse4_2 exits 0 on aarch64 ("Bun runs there"), this one exits 1 ("no x86 baseline here"). Both are right for their own caller and both are omarchy-hw-*, so which convention the family follows is a maintainer call rather than either PR's.

@twitchax's second point holds too, and it reaches one more line than the comment names. bin/omarchy-voxtype-install:14 tells every rejected machine its CPU is "missing instructions (AVX2/x86-64-v3)", and :16 warns the build "may result in noticeably slower dictation on this CPU" — neither is true of an M1, where nothing is missing and the build is native. The same conflation is in the published manual this PR adds, manual/11-text-extraction-dictation.md:15: "On older CPUs, the installer offers to build Voxtype from source".

The source-build path fails without leaving a half-installed Voxtype, but it does not tell the user much. Walked every failure: an unreachable AUR at the preflight gets the explicit red message and exits; a yay/makepkg failure exits 1 with only yay's own output, no Omarchy-level explanation; a failure inside install_voxtype prints "Voxtype setup failed. Rolling back the install." and rolls back through omarchy-voxtype-remove. No path continues into setup after a failed build. What is left behind on a failed build is wtype (installed at :9, before the CPU decision), yay's build cache, and whatever makedepends yay pulled in — cargo, clang, cmake, shaderc, vulkan-headers, gtk4, gtk4-layer-shell — which nothing here removes. One thing a user would notice after twenty minutes: the presentation wrapper runs omarchy-show-done for every status except 130, so a failed install ends on a green "Done! Press any key to close" printed over the error that caused it. A Ctrl-C mid-build gets no cancellation message either — either the signal takes the wrapper's own shell down with the build and the window closes, or the status reaching the wrapper is not 130 and it says "Done!" as well. Also worth knowing: omarchy-voxtype-remove runs under set -e, so if systemctl --user daemon-reload fails, the rollback stops there and the installer never says the rollback itself failed.

It does not fire where the binary would have worked. On an x86 host reporting accurate flags there is no false-positive path — the six flags at bin/omarchy-hw-x86-64-v3:10 are exactly the v3 set the binary needs. A VM or container with a masked flag list, or a /proc/cpuinfo with no flags line, does take the fallback, but it takes it as an offer the user can decline rather than as a decision, and such a machine cannot prove it would run v3 code anyway.

Second opinion: Codex at xhigh reasoning, pinned to df67e748 and confirmed against four file:line anchors before anything it said was believed. It agreed on the aarch64 routing, both of @twitchax's points and the absence of any other voxtype-bin install path — its independence is not currently guaranteed, since it can read this session's own transcript, so that agreement is worth less than what it added on its own: the manual line carrying the same wrong wording, that a non-x86 run aborts before reaching the last two cases, the green "Done!" over a failed install, and the rollback's own set -e.

Waiting on you and the maintainer. @twitchax has both fixes as commits tested on real M1 hardware and offered them either way; they are his to land, and nothing was pushed here that would collide with them. The x86 population is unaffected by either. Still open from the last review and unchanged: wtype installed before the CPU decision, the missing LZCNT/abm flag, the unasserted run_install exit statuses, the unchecked hyprctl reload, the stripped-name check in omarchy-pkg-aur-add, and the unquoted literal at bin/omarchy-voxtype-install:28. #7890 still changes the same file and the same test filename to refuse the install rather than offer an alternative, and choosing between the two remains the maintainer's call.

@ironbract

Copy link
Copy Markdown
Author

@twitchax Thanks for testing on real M1 hardware — I'd like to take your fix. Could you open the two commits as a PR against ironbract:fix-dictation-avx2-fallback, or push them to a public branch/gist I can pull from? I don't have ARM hardware to verify independently, so I'll take your commits as-is and just confirm they don't regress the x86 path before merging.

hw-x86-64-v3-test.sh couldn't exercise the non-x86_64 rejection since
it only overrode OMARCHY_CPUINFO_PATH, not the machine check; add an
OMARCHY_UNAME_M override and a case asserting aarch64 is rejected even
with x86-64-v3 flags present. Also stop telling non-x86_64 machines
(e.g. Apple Silicon) their CPU is "missing instructions" or warning of
slower dictation when the fallback build there is native, not a
degraded compatibility build.

Based on a report and fix from @twitchax on omacom#8316, tested on real M1
hardware; applied here and verified against the x86_64 test suite
since ARM hardware wasn't available locally.
@ironbract

Copy link
Copy Markdown
Author

Pushed 1d37f811 implementing both points from the review above (the aarch64 test-override and the arch-aware messaging), based on the exact approach described in the comment. I don't have ARM hardware to verify directly, so I've only confirmed it doesn't regress the x86_64 path — full ./test/all clean aside from the same pre-existing sandbox failures noted earlier (unrelated omarchy-pkgs checkout missing). @twitchax if you get a chance to verify this still works on your M1, that'd close the loop — happy to adjust if your actual commits differ from what I derived from the writeup.

@ironbract

Copy link
Copy Markdown
Author

Follow-up: I asked for your commits and then, before waiting for a reply, went ahead and pushed my own reconstruction anyway (AI over-enthusiasm on my end — sorry for the mixed signal). What's on the branch now is my best-effort implementation from your writeup, verified only against the x86_64 suite since I don't have ARM hardware.

Your actual commits, tested on real M1 hardware, are still what I'd prefer over my reconstruction — if you push them (or open them as a PR against this branch), I'll swap them in over what's there now.

@twitchax

Copy link
Copy Markdown

@ironbract, sorry, let me open them as a PR against your branch, but let me pull the latest first, so we don't conflict.

@twitchax

twitchax commented Aug 28, 2026

Copy link
Copy Markdown

Verified 1d37f811 on real M1 hardware (MacBook Air M1, aarch64, Asahi, linux-asahi 7.1.6). Your reconstruction is correct — no PR needed from me.

hw-x86-64-v3-test.sh, run natively on aarch64:

ok - Ivy Bridge without AVX2/BMI1/BMI2 does not satisfy x86-64-v3
ok - Haswell with the full x86-64-v3 baseline satisfies it
ok - AVX2 alone without FMA/BMI1/BMI2/F16C/MOVBE does not satisfy x86-64-v3
ok - empty cpuinfo does not satisfy x86-64-v3
ok - aarch64 is rejected even with x86-64-v3 flags present

5/5. The Haswell case now genuinely exercises the flags path on ARM rather than being short-circuited by the machine check, which was the actual bug.

Full ./test/all: 5 of 209 files fail, and all 5 also fail on clean quattro on this machine (bar-icon-geometry, config, snapper, theme-install-guards, unowned-system-paths) — pre-existing and unrelated to this PR.

I diffed your version against my local commits: bin/omarchy-hw-x86-64-v3 is byte-identical, and the rest differs only in variable naming and prose. Your manual wording is better than mine — it says the non-x86 build has no expected slowdown, which mine left out. So there's nothing for me to swap in; dropping my branch.

One thing I have not verified: that the source build actually produces working dictation on ARM. I've confirmed voxtype (the AUR source package) declares arch=('x86_64' 'aarch64') where voxtype-bin is x86_64-only, and that the predicate correctly routes ARM to the fallback — but I haven't run the full install end to end yet. Will report back if I do (but I may not since I don't really need it atm).

The installer's copy branches on `uname -m` while the suite stubbed only the predicate, so on an x86_64 host the non-x86_64 message was unreachable and neither prompt was asserted. Stubbing `uname` lets both branches run on any host; flipping the branch in either direction now fails the file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@omarchybot

Copy link
Copy Markdown
Collaborator

Reviewed 1d37f811 as new code rather than as a check that the earlier commits survived — @ironbract, your note that this is your own reconstruction is exactly why, and it holds up. One commit pushed for a coverage gap; nothing else found in df67e748..1d37f811.

What the gate actually does on aarch64, read from source rather than inferred. bin/omarchy-hw-x86-64-v3:6 exits 1 on any non-x86_64 machine before a single CPU flag is read, so bin/omarchy-voxtype-install:12 takes the fallback branch and :38 installs aur/voxtype. That is the right answer for the wrong-sounding reason — the predicate is answering "does this CPU meet x86-64-v3", not "can the prebuilt binary run here" — and it is worth knowing it survives the seam being wrong as well: forcing OMARCHY_UNAME_M=x86_64 against an ARM-shaped /proc/cpuinfo still exits 1, because aarch64 publishes Features, not flags, so the grep "^flags" at :9 matches nothing and the flag loop rejects on the first iteration. Verified both on a worker. In the other direction it does not misfire: on a real x86_64 host with the baseline, with no seam set, the predicate exits 0 and voxtype-bin installs exactly as before.

@twitchax's 5/5, reproduced from the other side. Running hw-x86-64-v3-test.sh on an x86_64 worker with uname -m shimmed to report aarch64 gives the same 5/5 — at df67e748 that same shim failed the Haswell case, which is the bug you found. Worth being precise about what that proves and what it does not: the test harness now genuinely exercises the flags path on a non-x86 host, and nothing here or on your M1 has run the installer on ARM, so that the AUR source build produces working dictation on aarch64 still rests on nobody's evidence.

The one thing missing, now pushed as a27badb7. test/shell.d/voxtype-install-test.sh stubbed the predicate but not uname, and the installer branches its copy on uname -m at :13 — so on an x86_64 host only the x86_64 wording branch ever ran, and the suite asserted neither prompt. The architecture-aware messaging is the whole user-visible half of 1d37f811 and it had no coverage. The commit stubs uname in $test_bin alongside the existing stubs, threads a third argument through run_install, and asserts each prompt. Proved it bites rather than just passes: forcing the x86_64 branch on every machine fails the aarch64 assertion, forcing the non-x86 branch fails the x86_64 one, and restoring the file passes. No production code touched.

Tests, all on a disposable worker, never here. hw-x86-64-v3-test.sh 5/5, voxtype-install-test.sh, pkg-aur-add-test.sh, voxtype-invitation-test.sh and ./test/cli all green at a27badb7.

Second opinion: Codex at xhigh reasoning, pinned to 1d37f811 and made to confirm five file:line anchors before anything it said was believed — all five matched. It reported no defects in df67e748..1d37f811 and named the same coverage gap, so on that point read it as agreement rather than independent confirmation: it can read this session's own files, and it spent part of the run doing exactly that. Two things it contributed on its own terms, both checked here: a VAR=value funcname prefix assignment reaches the command inside the function and is restored afterwards under bash 5, so the OMARCHY_UNAME_M="aarch64" case at hw-x86-64-v3-test.sh:49 cannot leak into anything added after it; and test/shell:27 keeps going after a failing file, so a failure aborts its own file but never produces a false pass across the suite.

New since the last review: issue #8645. It reports the whole Install menu offering x86_64-only packages on aarch64, and it says explicitly that nothing in the tree checks architecture, so no menu entry can gate on one today. This PR adds the first one. That sharpens the naming question already raised against #8149, which calls its seams OMARCHY_ARCH and OMARCHY_CPUINFO where this one has OMARCHY_UNAME_M and OMARCHY_CPUINFO_PATH: three separate items now want an architecture predicate and there is no agreed name or shape for it. That is a maintainer call, not this PR's to make, and nothing here blocks on it. Alongside #8312 and #8530, this also covers #8197 and #7883, which describe the same symptom.

Waiting on the maintainer, for the choice between this and #7890 — which still changes the same file and the same test filename to refuse the install rather than offer an alternative — and for the predicate naming above. The open items listed in the previous review are unchanged; none of them are regressions from this commit.

@peteonrails

Copy link
Copy Markdown
Contributor

I had trouble getting voxtype to compile on pre-haswell CPUs and didn'thave the hardware at the time to test. I'll revisit shipping a pre-haswell binary to make this faster / easier for the end user.

@peteonrails

peteonrails commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Update here - I have figured out how to ship binaries for pre-haswell CPUs. Hopefully that makes things a little simpler. They'll be in voxtype 1.0.1 shipping (optimistically) tonight.

ARM binaries will be in there too.

@ironbract

Copy link
Copy Markdown
Author

Thanks for the update — great news that 1.0.1 will carry pre-Haswell/pre-AVX2 binaries. I'll watch for the release and test on the same hardware this PR was built against (Ivy Bridge i7-3520M, no AVX2/FMA/BMI1/BMI2). If the new binary works cleanly there, this PR's source-build fallback may no longer be needed — happy to help reconcile once 1.0.1 is out.

(Disclosure: posted with AI assistance — Claude Code.)

@ironbract

Copy link
Copy Markdown
Author

Reporting back as promised — thanks for turning 1.0.1 around so quickly, and the ARM builds did land (voxtype-1.0.1-linux-aarch64-cpu). The pre-Haswell x86_64 side looks like it didn't make it into the release, though.

Tested on the same Ivy Bridge i7-3520M (avx present; avx2/fma/bmi1/bmi2 absent), installing your 1.0.1 prebuilt directly via aur/voxtype-bin. pacman -Ql shows the only x86_64 Whisper binaries are voxtype-avx2 and voxtype-avx512 — same in v1.1.0-rc1. Everything on the CPU path SIGILLs here: both Whisper variants, both onnx-avx*, voxtype-vulkan, and all three OSD frontends. The onnx-cuda/rocm/migraphx builds do start, but need GPU runtimes this machine doesn't have and there's no generic onnx-cpu, so they're not a way out either. The service ends up crash-looping.

One thing that might be useful to you: the new variant guard can't fire, because it lives inside a binary that won't execute — voxtype setup variant --status and voxtype setup check both SIGILL. The crash banner points at setup check and at symlinking to voxtype-avx2, which is already the target and the binary that's crashing, so there's no self-service recovery from inside voxtype on this hardware.

Building 1.0.1 from source on this same machine works and dictation runs fine, so I'd suggest keeping this PR's fallback for now rather than treating 1.0.1 as superseding it. Happy to revisit if a pre-Haswell binary shows up in a later release — and glad to test it here whenever you want a machine to try it on.

(Disclosure: posted with AI assistance — Claude Code.)

omarchybot and others added 2 commits September 3, 2026 05:24
pacman -Q resolves provides, so with voxtype-bin installed "pacman -Q voxtype" answers "voxtype-bin 1.0.0-2" and exits 0. The aur/ prefix was therefore measured against the provider it exists to bypass: on a machine already carrying voxtype-bin, "omarchy-pkg-aur-add aur/voxtype" found nothing missing, never ran yay, and then took that same provider as proof the package had installed, exiting 0 having built nothing.

A prefixed target is now checked with "pacman -Qq", which prints the real package name, and compared against the name asked for. Plain targets keep the old provides-resolving check, so no existing caller changes behaviour. The test's pacman stub modelled -Q as exact-name only, which is why the suite was green; it now answers for a provided name the way pacman does.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
voxtype-bin declares conflicts=('voxtype'), and pacman answers no to its conflict prompt under --noconfirm, aborting with "unresolvable package conflicts detected". A machine still carrying the prebuilt binary -- which is every machine this fallback exists for, since the way users arrive here is a voxtype-bin that SIGILLs -- would build for twenty minutes and then fail to install what it built.

The drop runs only on the source-build branch, after the user has confirmed the build, and omarchy-pkg-drop is a no-op when the package is absent. On a non-x86_64 machine voxtype-bin cannot be installed in the first place, so nothing changes there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@omarchybot

Copy link
Copy Markdown
Collaborator

Re-reviewed at a27badb7. The head has not moved since the last pass, so this is about the new comments and about something the earlier reviews got wrong. Two commits pushed.

A correction to our own earlier review. The last two passes called the aur/ prefix "not reachable today ... purely forward-defensive, since voxtype is in no sync repo". That was wrong, and wrong in the direction that matters: pacman -Q resolves provides. Verified on a disposable Arch VM with voxtype-bin genuinely installed:

$ pacman -Q voxtype
voxtype-bin 1.0.0-2
$ omarchy-pkg-missing voxtype; echo $?
1

So on a machine that already carries voxtype-bin — which is how every user in #8312, #8197 and #7883 arrives here — omarchy-pkg-aur-add aur/voxtype found nothing missing, never invoked yay, and then took that same provider as proof the package had installed. Ran it end to end against a yay stub that logs its arguments: exit 0, empty log, nothing built. The installer went on to voxtype setup --download against the binary that SIGILLs, failed, and rolled the whole thing back — 150MB fetched, ~/.config/voxtype and ~/.local/share/voxtype deleted, and nothing said to the user about the fallback not having happened. The same mechanism defeats the second check: with voxtype-bin installed by a yay that ignored the prefix, omarchy-pkg-aur-add aur/voxtype exits 0 while pacman -Qq voxtype answers voxtype-bin. The case in test/shell.d/pkg-aur-add-test.sh asserting that cannot happen passed because its pacman stub models -Q as exact-name-only, which is not what pacman does.

be3457a6 — a prefixed target is now checked with pacman -Qq, which prints the real package name, and compared against the name asked for. Plain targets keep the provides-resolving check, so no existing caller changes behaviour; checked that directly (omarchy-pkg-aur-add sh still exits 0 on a machine where only bash provides sh, while aur/sh now goes to yay). The stub answers for a provided name the way pacman does, and there is a case for an installed provider. Proved it bites rather than merely passes: restoring the old helper fails the new case, the fix passes it.

41fbafebvoxtype-bin also declares conflicts=('voxtype'), and pacman answers no to its conflict prompt under --noconfirm. Built two throwaway packages on the VM to check rather than assume it:

:: b-1-1 and a-1-1 are in conflict. Remove a? [y/N] error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)

So even with the missing-check fixed, the build would run for twenty minutes and then fail to install what it built. The source-build branch now runs omarchy-pkg-drop voxtype-bin after you have confirmed the build, and the test asserts the drop happens before the AUR install and not at all on the v3 path. One thing worth your judgement: if the build then fails, that machine has no voxtype at all where it previously had a crash-looping one. On the hardware this branch exists for that is no loss, but on a machine where the predicate misfires — a VM with a masked flag list — the user pays for it.

On @peteonrails' 1.0.1 and your report from yesterday. Read the release assets directly. You are right that 1.0.1 has no baseline x86_64 build; through v1.1.0-rc1 the only x86_64 Whisper binaries are avx2 and avx512. But v1.1.0-rc2, published 2026-09-02T21:42:35Z — a few hours after your comment — does ship voxtype-1.1.0-rc2-linux-x86_64-baseline. The pre-Haswell binary landed, just not where you looked.

That does not retire this PR yet, and there is a second thing in the way beyond the version bump: voxtype-bin.install's _set_default_backend picks between avx512 and avx2 and nothing else, so a machine that received the baseline binary in /usr/lib/voxtype/ would still be symlinked to voxtype-avx2 and still SIGILL. omacom-io/omarchy-pkgs is on voxtype-bin 1.0.0-2 with arch=('x86_64'). Both would have to move before the prebuilt path covers an Ivy Bridge.

@twitchax: the aarch64 assets have shipped in every release since 1.0.0 (voxtype-1.0.1-linux-aarch64-cpu and friends), so an aarch64 voxtype-bin is one PKGBUILD change away. If that lands, this PR's predicate sends ARM machines to a twenty-minute source build for nothing, because it answers "does this CPU meet x86-64-v3" rather than "can the prebuilt binary run here". Not a defect today — voxtype-bin is arch=('x86_64'), so #8530 stays functionally fixed by the non-x86_64 exit 1 — but it is the thing that would quietly break first.

Tests, all on a disposable VM, never on the machine holding credentials. At the pushed head: ./test/cli clean (116 ok, no failures), pkg-aur-add-test.sh 4/4, voxtype-install-test.sh pass, hw-x86-64-v3-test.sh 5/5. A real source build cannot be exercised there — nothing in this review compiled Voxtype, on any architecture — so that the AUR package builds and dictates correctly still rests on your Ivy Bridge run and on nobody else's.

Second opinion: Codex at xhigh reasoning, pinned to a27badb7, made to confirm five file:line anchors first; all five matched. It reached the same finding about pacman -Q and providers, with a mechanism it demonstrated itself (pacman -Q jack answering pipewire-jack on its own machine) and with the conflicts=('voxtype') consequence, and it named the test stub as the reason the suite could not see it. Read that as agreement rather than independent confirmation: its read scope is not confined, and the working tree it could see had gained the fix and its explanatory comment partway through its run. It contributed one thing on its own terms, on the LZCNT gap already known from an earlier pass: Voxtype's binaries are built with target-cpu=haswell, which may emit LZCNT, so a VM or CPUID mask carrying the six checked flags but not abm would be accepted by the predicate and could still SIGILL.

Still open, unchanged, none of them regressions. bin/omarchy-voxtype-install:9 installs wtype before the CPU decision, so declining the build still leaves it behind while the test comment says "installs nothing". bin/omarchy-hw-x86-64-v3:11 still omits LZCNT (abm), and your Haswell fixture carries abm with nothing asserting it. run_install's exit status is never asserted in voxtype-install-test.sh. hyprctl reload at :61 is unchecked. [[ $voxtype_pkg == voxtype-bin ]] at :35 wants a quoted literal per AGENTS.md. A failed build still exits at :42 with only yay's output and leaves the build cache and makedepends behind. Pre-existing on quattro rather than yours, but you are in the line: the presentation wrapper prints a green "Done!" over any failure that is not a Ctrl-C, and omarchy-notification-send -g "Voxtype Dictation Ready" at :63 has no glyph after -g, so the title becomes the glyph.

Waiting on the maintainer for the choice against #7890, which still changes the same file and the same test filename to refuse the install rather than offer an alternative, and for the seam naming shared with #8149 and #8645 — three items now want an architecture predicate and there is still no agreed name for one.

ironbract and others added 5 commits September 3, 2026 09:12
wtype was installed before the CPU capability decision, so declining the source
build on a machine that cannot run the prebuilt binary left the package behind
on a system that got no dictation -- while the test's own comment claimed the
declining path "installs nothing".

It now waits until after the decision, on both the prebuilt and source-build
paths. The declining case asserts no package is installed at all rather than
only that voxtype-bin isn't, which is what makes the regression visible.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143VhE2XACsuXdHLRkWoy37
LZCNT is part of the x86-64-v3 baseline, and Voxtype's binaries are built with
target-cpu=haswell, which may emit it. The predicate checked the other six
flags, so a CPU -- or a VM presenting a masked CPUID -- carrying everything but
LZCNT was accepted and could still take the SIGILL this branch exists to avoid.

It is reported as "abm" in /proc/cpuinfo on both Intel and AMD. The Haswell
fixture already carried the flag with nothing asserting it; the new case is the
full baseline minus that one flag, and it fails without this change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143VhE2XACsuXdHLRkWoy37
Dropping the conflicting prebuilt binary before the build means a build that
then fails leaves the machine with no voxtype at all, where it previously had a
crash-looping one. That is no loss on the hardware this branch exists for, but
the user saw only yay's own output and was left to work out what state they
were in.

The failure now says what happened, that the prebuilt binary is gone and why it
was never usable here anyway, and how to retry. Also quotes the voxtype-bin
literal in its comparison, per AGENTS.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143VhE2XACsuXdHLRkWoy37
The tests checked which commands each path logged but never what the installer
returned, so a path that did the right work and then exited wrong -- or the
rollback branch reporting success -- would have passed. The menu and any caller
act on that status.

Every case now asserts it: success on the prebuilt, declining, and source-build
paths, failure on an unreachable AUR and on a rolled-back setup.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0143VhE2XACsuXdHLRkWoy37
The drop of voxtype-bin was run for its effect and not for its status, so a machine where pacman refuses the removal still spent the build and then hit the conflict it was meant to clear. The failure message that followed told the user the prebuilt binary had been removed, which on that path is false, and sent them to Install > Dictation to retry -- an entry that stays disabled while voxtype-bin is installed, because the guard is `omarchy-cmd-present voxtype`.

Nothing the build produces can be installed while the conflict stands, so the install now stops there and says what happened instead of spending twenty minutes to arrive at the same place.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex XHigh <noreply@openai.com>
@omarchybot

Copy link
Copy Markdown
Collaborator

Re-reviewed at b12afd8d. Your four commits close most of what the last pass left open, and this is the first review that actually compiled Voxtype rather than reading about it. One commit pushed, 4a66f53f.

What the four commits fixed. e403558e adds abm, and it is the right spelling: the kernel defines X86_FEATURE_ABM as feature word 6 bit 5 — extended CPUID leaf 0x80000001, ECX bit 5, which is where both Intel and AMD report LZCNT — so one flag name covers both vendors. e691c740 moves wtype behind the CPU decision and quotes the literal at what is now :37. af1d77be replaces the bare exit 1 with a red explanation. b12afd8d asserts the exit status on every path, which is the thing the menu and the presentation wrapper actually act on. Still open from the earlier lists and unchanged: hyprctl reload at :67 is unchecked; a failed build leaves wtype, the yay cache and the makedepends behind; the presentation wrapper prints a green "Done!" over any failure that is not a Ctrl-C, and omarchy-notification-send -g "Voxtype Dictation Ready" at :69 has no glyph after -g, so the title is eaten as the glyph — the last two are pre-existing on quattro rather than yours. The manual's flag list at manual/11-text-extraction-dictation.md:15 did not gain LZCNT alongside e403558e, which is worth a word since it is the published copy of the same requirement.

4a66f53f — the drop of the conflicting binary was run for its effect and not its status. omarchy-pkg-drop voxtype-bin at :43 ends in sudo pacman -Rns and propagates its failure, but nothing read it, so a machine where the removal is refused still spent the whole build and then hit the exact conflict the drop exists to clear. The new message then told that user the prebuilt binary had been removed — false on that path — and sent them to Install > Dictation to retry, which is disabled while voxtype-bin is installed because the guard is omarchy-cmd-present voxtype. Nothing the build produces can be installed while the conflict stands, so the install now stops before the build and says so. Proved it bites rather than merely passes: with the guard reverted the new case fails with exited 0, expected 1 — the unguarded path can report success while nothing was built — and it passes with the guard in.

The source build, actually run. On a disposable Omarchy VM (4 vCPUs of a Ryzen 9 9955HX, 4 GB RAM), yay -S --noconfirm --needed aur/voxtype succeeded in 16m09s and produced a working voxtype 1.0.1 at /usr/bin/voxtype -> /usr/lib/voxtype/voxtype-native. Numbers worth having, since the prompt promises "20+ minutes": the toolchain is pulled at install time — rust 1:1.98.0 and cmake 4.4.2, 96 MiB downloaded and 414 MiB installed, on top of the clang, shaderc, gtk4, gtk4-layer-shell and vulkan-headers an Omarchy install already carries — and afterwards ~/.cargo holds 386 MiB and ~/.cache/yay 38 MiB. voxtype-debug gets installed alongside. pacman -Qtdq then lists rust and voxtype-debug as orphans, so the next omarchy update offers to remove the toolchain it just installed. Sixteen minutes is the floor, not the number the target user sees: that is four modern Zen 5 cores, and the hardware this PR exists for is an Ivy Bridge dual-core.

One thing nobody has raised, and it is the part that outlives the install. omarchy update runs omarchy-update-aur-pkgs, which is yay -Sua --noconfirm --cleanafter over every foreign package. After the fallback, pacman -Qem on that machine is exactly voxtype 1.0.1-1 — so each time the AUR package's version moves, a routine omarchy update rebuilds Voxtype from source, unattended, with --cleanafter discarding the build tree so nothing is reused. Upstream has shipped 1.0.0, 1.0.1, 1.1.0-rc1 and 1.1.0-rc2 inside about a week. The install itself is properly idempotent — re-running omarchy-pkg-aur-add aur/voxtype with the package present returns in 18ms without touching yay, and nothing under install/, migrations/ or the first-run hook re-runs the installer — so this is not a defect in the diff. It is the standing cost of choosing an AUR source package as the fallback, and the maintainer should know the number before this lands.

Reported rather than pushed. After a successful drop and a failed build, the running session keeps its Voxtype state: hyprctl reload happens only on the success branch, so default/hypr/bindings/voxtype.lua's F9 and Super + Ctrl + X stay bound to a command that is now missing until the next reload, and a voxtype.service that was enabled stays enabled pointing at a removed unit file. That population is precisely #8312's — someone who arrived here with a crash-looping voxtype-bin. The obvious fix is to route the failure through omarchy-voxtype-remove, but that deletes ~/.config/voxtype and ~/.local/share/voxtype, so it would throw away a 150MB model the user already had. That is a product call rather than a defect, so it is yours and the maintainer's.

Tests, all on a disposable worker, never on the machine holding credentials. At the pushed head: ./test/cli clean (116 ok, no failures), hw-x86-64-v3-test.sh 6/6, pkg-aur-add-test.sh 4/4, voxtype-install-test.sh pass. The build above ran on that same worker. What is still unproven anywhere: nothing here dictated — voxtype setup --download and the model were not exercised, and no pre-AVX2 or aarch64 machine was involved, so that the source build produces working dictation on the hardware this PR is for still rests on your Ivy Bridge run and @twitchax's M1.

Second opinion: Codex at xhigh reasoning, pinned to b12afd8d and made to confirm five file:line anchors before anything it said was believed; all five matched. The ignored drop status above is its finding, verified here against bin/omarchy-pkg-drop and the menu guard before it was acted on, which is why it is a co-author on 4a66f53f. It also contributed the stale-bindings/service consequence and the manual's flag list. One finding rejected: it argued the predicate should also require cx16, popcnt, sse4_2 and friends, with a -cpu Haswell,-popcnt guest as the example. Any real CPU carrying AVX2, FMA and BMI2 carries those, and a hand-built CPUID mask that omits one is not a machine anyone runs — abm was worth adding because Voxtype's binaries are built with target-cpu=haswell, and that argument does not extend to the v1 and v2 flags. Its independence is not guaranteed and was visibly not independent this run: it read this session's own protocol files and quoted the worker-isolation rule back, and then tried to create a worker of its own.

Waiting on the maintainer, unchanged: the choice against #7890, which still changes the same file and the same test filename to refuse the install rather than offer an alternative, and the predicate naming shared with #8149 and #8645.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dictation (Voxtype) leaves broken install on CPUs without AVX2 instead of failing gracefully

5 participants