fix: improve Models tab UX and preserve downloaded models - #15
Merged
Conversation
- System information now takes full width of the settings panel - Added live Resource Usage section (CPU, Memory, Peak, Threads) - Downloaded models are preserved when downloading new ones - Improved download progress feedback with simulated progress - Fixed button states during download+load flow to prevent errors - Added isLoading state to WhisperModelInfo for better UX - Refresh all model statuses after any download completes
cursor Bot
pushed a commit
that referenced
this pull request
Aug 19, 2026
Mac now ships the start/stop bytes from VocaLinux #707. Windows #15 has the same catalog but different samples, so those were not used. The in-app oscillator is gone.
jatinkrmalik
added a commit
that referenced
this pull request
Aug 19, 2026
* feat: add a shared dictation tone picker Settings can choose a start/stop cue from the family catalog. Unset preferences resolve to voca. Off is stored as a silent tone. * fix: release the preview sound if playback fails NSSound stays retained until the finish callback. If play() fails, that callback never arrives, so drop the sound and finish the waiter. * fix: isolate the sound-effects preference in tests Turning effects off in one recording test wrote UserDefaults and left later cases with the switch off, so start/stop cues were skipped. * feat: play the Linux dictation tone WAV files Mac now ships the start/stop bytes from VocaLinux #707. Windows #15 has the same catalog but different samples, so those were not used. The in-app oscillator is gone. * fix: replace bundled tones with the preview pair files The Linux remakes did not match the shared preview WAVs. Mac now ships those exact start/stop files. Voca start is 19448 bytes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problems Fixed
1. System Information not taking full width
The SystemInfoPill components were not expanding to fill the GroupBox width.
Fix: Added
.frame(maxWidth: .infinity)to pills and their container HStack.2. Downloaded models deleted when downloading a new one
After downloading a new model, previously downloaded models showed "Download & Load" again.
Fix: Added
refreshModelStatuses()method that re-checksisDownloadedfor ALL models after any download completes, ensuring previously downloaded models are always detected.3. Download progress stuck at 10%
The download only reported 0.1 (10%) then jumped to 1.0 (100%) because WhisperKit doesn't expose granular download progress.
Fix: Added simulated progress that advances smoothly from 10% to 95% during download, then jumps to 100% on completion.
4. Load button shown during download+load flow causing errors
After "Download & Load" completed the download phase, a "Load" button briefly appeared. Clicking it while the model was already loading in the background caused an error.
Fix: Added
isLoadingstate toWhisperModelInfo. During loading, shows a spinner instead of a button. TheisLoading || downloadProgress != nilguard prevents any action buttons from appearing during the download+load flow.5. Resource monitoring added to Models tab
New: Live resource usage section showing CPU usage, memory, peak memory, and thread count — same data available in the menu bar popover, now also visible in Settings.