Skip to content

fix: improve Models tab UX and preserve downloaded models - #15

Merged
jatinkrmalik merged 1 commit into
mainfrom
fix/models-tab-improvements
Mar 5, 2026
Merged

fix: improve Models tab UX and preserve downloaded models#15
jatinkrmalik merged 1 commit into
mainfrom
fix/models-tab-improvements

Conversation

@jatinkrmalik

Copy link
Copy Markdown
Member

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-checks isDownloaded for 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 isLoading state to WhisperModelInfo. During loading, shows a spinner instead of a button. The isLoading || downloadProgress != nil guard 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.

- 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
@jatinkrmalik
jatinkrmalik merged commit f19af79 into main Mar 5, 2026
1 check passed
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.
@cursor cursor Bot mentioned this pull request Aug 19, 2026
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.
@jatinkrmalik
jatinkrmalik deleted the fix/models-tab-improvements branch August 22, 2026 05:32
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.

1 participant