fix(settings): make the generation budget reachable and honest (#1797)

The compute-time error told users to raise a generation timeout that had no control anywhere in the app — the only knob was an environment variable, and on Windows the docs explicitly warn against the usual way of setting one. Both budgets are now editable in Settings under Performance & Device, persisted and applied on the next start.

Two defects found in review and fixed here rather than shipped: an explicit universal budget silently overrode a separately saved CPU budget, so the CPU row would have looked like it worked and done nothing; and a value already set in the environment shadowed the saved preference while the panel still reported success. A shadowed row now says so instead. Long-input warnings also fire on Apple Silicon, which gets the accelerated budget and was the device in one of the duplicate reports.

Fixes #1787. Closes the reports tracked in #1774 and #1778.
This commit is contained in:
Palash Debnath
2026-09-04 01:55:06 +05:30
committed by GitHub
parent e5916acc01
commit 7f7a4c5f83
42 changed files with 1305 additions and 69 deletions
+15 -2
View File
@@ -557,8 +557,21 @@ them to fail faster on a small machine.
CPU-only hosts use a bounded 600-second generation floor because correct CPU
synthesis can take longer than the accelerated five-minute budget. Override it
with `OMNIVOICE_CPU_GENERATE_TIMEOUT_S`; an explicit higher
or lower `OMNIVOICE_GENERATE_TIMEOUT_S` always wins.
with `OMNIVOICE_CPU_GENERATE_TIMEOUT_S` an explicit value here always
governs CPU-family generation, independent of `OMNIVOICE_GENERATE_TIMEOUT_S`.
Setting *only* `OMNIVOICE_GENERATE_TIMEOUT_S` still governs CPU hosts too, the
same as it always has (a quick way to lower the watchdog everywhere with one
var); it only stops doing so once you also set an explicit
`OMNIVOICE_CPU_GENERATE_TIMEOUT_S`, which then takes precedence for CPU jobs.
Both budgets are also editable from **Settings → Performance & Device →
Compute-time budget** — no env var or config file needed. A value saved there
persists across restarts but only takes effect on the *next* backend restart
(the running process already read the old value at startup), which the panel
states — and if an external env var (shell profile, `.env`, Docker `-e`,
systemd unit, …) is already providing the same key, the panel says so instead,
since that external value keeps winning on every future restart too, not just
this one.
**Two things changed here** ([#1190](https://github.com/debpalash/VoiceStudio/issues/1190)):