v0.5.0-beta
In-App Updates
VocaMac can now check for updates automatically and download the latest release right from the app. On launch (once every 24 hours), it queries GitHub Releases and shows an update banner in the menu bar popover when a newer version is available. One-click download with real-time progress, SHA-256 integrity verification, and guided drag-to-Applications install.
Manual check available at Settings > About > Check for Updates.
Improved Mic Indicator Placement
The floating mic indicator now uses a 4-tier Accessibility API fallback strategy instead of the previous binary caret-or-mouse approach:
| Tier | Method | Works In |
|---|---|---|
| 1 | Exact caret position | Native AppKit/SwiftUI apps |
| 2 | Focused element bounds | Electron apps, terminal emulators |
| 3 | Focused window position | Almost all apps |
| 4 | Mouse cursor | Last resort |
This significantly improves indicator placement in apps like Cursor and iTerm2 that don't implement full AX text attributes.
Overhauled Model Recommendation & Support
The model recommendation system has been completely overhauled to fix contradictory states where a larger model could show as "Recommended" while a smaller one was marked "Too Large":
- Fixed prefix matching —
isModelSupported()now uses exact prefix boundary matching and checks WhisperKit's disabled list, preventing false positives from turbo/quantized variant name collisions (e.g.large-v3vslarge-v3_turbo). - Monotonic support ordering — If a smaller model is unsupported, all larger models are automatically marked unsupported too.
- Recommendation validation — The recommended model is now verified against actual support status, with fallback to the largest supported model.
- Force-load unoptimized models — Users can now override device recommendations and try any model with a confirmation warning about potential performance impacts.
- Friendlier labels — "Unsupported" red badge replaced with "Unoptimized" orange badge, and the recommendation footer shows display names instead of raw WhisperKit model IDs.
Other Changes
- Fixed large-v3 model incorrectly marked as unsupported due to substring matching against disabled model variants. The recommendation engine now checks the supported list directly and falls back to the best supported model when the default is too large for the device.
- Improved log rotation efficiency — reduced max log size from 5 MB to 1 MB, cached date formatter, eliminated per-write
fsync, and added proper error handling during rotation. - Tests run 2x faster with zero system side effects — all service dependencies (audio, hotkeys, sounds, permissions) are now injected via protocols with mock implementations.
Installation
- Download
VocaMac-0.5.0-arm64.dmg - Open the DMG and drag VocaMac to Applications
- Open VocaMac from Applications
- Grant Microphone, Accessibility, and Input Monitoring permissions when prompted
This release is Developer ID signed and notarized by Apple.
macOS will open it without any security warnings.
Requirements
- macOS 13 (Ventura) or later
- Apple Silicon (arm64)
Checksums (SHA-256)
See checksums.txt for verification.
What's Changed
- fix: large-v3 model incorrectly marked as unsupported due to substring matching bug by @jatinkrmalik in #92
- fix: improve log rotation efficiency and reduce max log size by @jatinkrmalik in #94
- fix: inject mock services in tests to eliminate system side effects by @jatinkrmalik in #95
- feat: add in-app GitHub Releases update flow by @jatinkrmalik in #96
- fix: add tiered fallback for cursor indicator positioning by @jatinkrmalik in #93
- chore: bump version to 0.5.0 by @jatinkrmalik in #97
- fix: overhaul model recommendation logic and allow force-loading unoptimized models by @jatinkrmalik in #99
Full Changelog: v0.4.0...v0.5.0