fix(app): CUDA toolkit detection, niri IBus pin warning, Gitea update checks, legacy dictionary path #36

Merged
xavierk merged 6 commits from fix/app-post-merge into main 2026-11-06 14:38:44 +00:00
6 Commits
Author SHA1 Message Date
xavierk 474b522281 test(update): isolate the update checker tests from a packaged marker
CI / security (pull_request) Successful in 1m14s
CI / lint (pull_request) Successful in 21s
CI / ai-review (pull_request) Successful in 9s
The update checker tests now patch the packaged-install check, so they do
not depend on /usr/share/voculinux/packaged being absent on the host. The
model ladder test for an unrequested cuda-without-toolkit order is dropped.

Refs #16, #20
2026-11-06 20:02:44 +05:30
xavierk 15a527beb1 fix(legacy): repoint a stored dictionary path even when no file was copied
A stored dictionary path to an importer-owned legacy file was rewritten
only when this run copied that file. A user who never created a legacy
dictionary, or who already has a new dictionary.txt, kept the legacy path,
and the first edit was written back into the legacy directory. The path is
now rewritten to the file's new location whenever it names a payload file,
copied this run or not. Paths outside the legacy payload are kept as stored.

Refs #18
2026-11-06 20:02:44 +05:30
xavierk c3c7f98117 fix(legacy): point a migrated dictionary path at the copied file
The one-time import copied config.json and dictionary.txt, but a stored
dictionary path that still named the legacy file kept pointing there, so
dictionary edits were written back to the legacy location. After the copy,
the new configuration copy now has its dictionary path rewritten when it
names a legacy file copied in this run. Only the new copy is written, and
a path chosen outside the legacy directory is kept as stored.

Refs #18
2026-11-06 19:58:32 +05:30
xavierk 51ecd686d8 fix(update): check the Voculinux release server, never upstream
Source installs look up releases on the Gitea repository
(git.bongbetic.com/xavierk/voculinux) through its JSON API and parse
tag_name, html_url and body. The GitHub API and the HTML scrape fallback
are removed, and only that Gitea repository's release pages are trusted
links.

Packaged installs (the xbps marker) make no release request at all:
fetch_latest_release returns before importing requests, and Settings
-> About shows that updates arrive via sudo xbps-install -Su.

Refs #16, #27
2026-11-06 19:56:53 +05:30
xavierk 5a0e16da89 fix(inject): explain the silent-drop risk of an explicit IBus pin on niri
An explicit ibus pin (VOCULINUX_FORCE_BACKEND or text_injection.backend)
is still honoured on niri, as the documented escape hatch. The one warning
it logs now names niri and says IBus there can report success while text
is silently dropped, instead of the generic compositor wording.

Refs #16
2026-11-06 19:53:04 +05:30
xavierk e88afd224f fix(model): detect CUDA toolkit outside PATH and rank by installed build
cuda_toolkit_ready() only accepted nvcc on PATH, so a session started
before the CUDA profile snippet ranked Vulkan above a CUDA-compiled build.
A complete toolkit is now also recognised under CUDA_HOME, CUDA_PATH or
/usr/local/cuda*, requiring nvcc, include/cuda_runtime.h and libcudart in
the architecture-matching target. The backend order only names backends
the installed build compiled in, so a Vulkan-only build never lists CUDA.

Refs #20
2026-11-06 19:51:57 +05:30