* feat(models): make the recommendation applicable and stop ignoring the disk
The panel worked out which model fits the hardware and the language, printed it
as a plain label, and left the pickers on the wrong one. Applying it meant
hitting two dropdowns by hand after decoding that "Small EN" means size Small
plus specialization English-only.
Three changes:
- the recommendation gets a button that moves both pickers at once
- before offering a download, look at what is already on disk. A candidate has
to be no smaller than the recommendation, and an English-only recommendation
is not answered with multilingual weights, which weigh the same and recognise
English worse (#776). So nothing is ever quietly downgraded.
- the size list shows weight and the downloaded marker, the way the
specialization list already did. A size is a download decision too.
Closes#778
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TKVa2qTLQYMCHffjp97yqT
* fix(settings): keep recommendation fresh across language and apply
Changing EN to PL left Use it pointed at the old English-only target, and
clicking it briefly auto-applied the default size (full large) before the
intended turbo specialization landed. Refresh the recommendation card after
language changes, and move both pickers under _populating_models before the
single apply.
* fix(settings): type the recommendation language and apply callbacks
* style(settings): wrap whispercpp model info import for isort
Lint Python was failing the isort check on the single-line
WHISPERCPP_MODEL_INFO import. Parenthesize it so black/isort agree.
---------
Co-authored-by: Kacper Paczos <23406555+kacperpaczos@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Jatin K Malik <jatinkrmalik@gmail.com>