Skip to content

chore: bump version to 0.6.0 and prepare release notes - #116

Merged
jatinkrmalik merged 1 commit into
mainfrom
chore/release-0.6.0
Apr 16, 2026
Merged

chore: bump version to 0.6.0 and prepare release notes#116
jatinkrmalik merged 1 commit into
mainfrom
chore/release-0.6.0

Conversation

@jatinkrmalik

Copy link
Copy Markdown
Member

VocaMac v0.6.0 — Release Preparation

This PR bumps the version to 0.6.0 and adds release notes. Once merged, tag v0.6.0 to trigger the release workflow.

Version changes

  • scripts/build.sh — default APP_VERSION updated to 0.6.0
  • web/layouts/index.htmlsoftwareVersion JSON-LD field and hero version badge updated to v0.6.0
  • docs/RELEASE_NOTES_v0.6.0.md — new release notes document

Zero-Download First Launch 🚀

VocaMac now ships with the Whisper Tiny model bundled inside the app. On first launch, it's automatically installed into Application Support so you can start dictating immediately — no internet connection required, no waiting for a model download.

Previously, every fresh install would fail to load a model until the user manually triggered a download. This eliminates that friction entirely.

Note: The bundled Tiny model is optimised for speed on all Apple Silicon devices. You can switch to a larger model any time via Settings.

Nightly Builds — Now Signed & Notarized ✅

Nightly builds now go through the same Developer ID signing and notarization pipeline as stable releases. Every nightly DMG:

  • Is signed with Apple Developer ID — no Gatekeeper warnings
  • Is notarized and stapled — validates offline
  • Embeds a proper SemVer pre-release version string (e.g. 0.6.0-nightly.20260414+abc1234) so you always know exactly which nightly you're running

Nightly builds also now have an on-demand /build trigger — comment /build on any PR and a signed, notarized DMG is built from that branch and posted as a comment within ~10–20 minutes.

Bug Fixes

Fixed: Stale Paste After Transcription

After injecting transcribed text, pressing Cmd+V within ~2 seconds would paste the transcribed text instead of the user's original clipboard contents. The clipboard restore had a race condition — it was scheduled after the simulated Cmd+V keypress instead of running before it.

Reported by Dinç Ciftci (via #104). Fixed in #106 by @jatinkrmalik.

Fixed: Tokenizer Asset Crash on First-Run Download

Fresh installs showed "No model loaded" with [ERROR] Tokenizer assets are missing immediately after the model downloaded successfully. Two separate issues were fixed:

  1. ensureTokenizerAssets was pre-validating tokenizer files before passing the folder to WhisperKit — but WhisperKit fetches tokenizers itself during load. Removed the redundant pre-validation entirely. (#113 by @jatinkrmalik)
  2. An incorrect path construction caused the validation to look for tokenizer files in the wrong directory anyway. (#112 by @jatinkrmalik)

Fixed: Double Startup / Duplicate Model Loading

Every launch showed duplicate startup sequences in the logs, meaning the model was being loaded 2–3× unnecessarily. SwiftUI was instantiating multiple AppState objects and performStartup was called on all of them. Fixed by guarding startup with a Task-based once-flag keyed to the specific instance. (#114 by @jatinkrmalik)

Fixed: GitHub Update Checker Rate Limiting (HTTP 403)

The update checker was consuming one of GitHub's 60 unauthenticated API requests/hour per IP on every check — easily exhausting the pool on shared networks (office NAT, VPN). Fixed by:

  • ETag caching — persisting the ETag response header and sending If-None-Match on subsequent requests. GitHub returns 304 Not Modified (rate-limit free, served from CDN edge) when the release hasn't changed.
  • Versioned User-Agent — sending VocaMac/<version> instead of bare VocaMac as recommended by GitHub.

What's Changed

PR Description Author
#110 feat: support bundled tiny model installs @jatinkrmalik
#101 feat: sign, notarize, and version nightly builds @jatinkrmalik
#106 fix: eliminate clipboard restore race condition — closes #104 (reported by Dinç Ciftci) @jatinkrmalik
#112 fix: resolve tokenizer asset crash on first-run download @jatinkrmalik
#113 fix: let WhisperKit handle tokenizer fetching instead of pre-validating @jatinkrmalik
#114 fix: prevent double performStartup across multiple AppState instances @jatinkrmalik
(direct) fix: add ETag caching to UpdateChecker to avoid GitHub rate limits @jatinkrmalik
#107 ci: add on-demand PR build workflow with /build comment trigger @jatinkrmalik
#111 ci: use Python venv for huggingface-cli on macOS 15 runners @jatinkrmalik
#103 fix: correct version extraction in nightly build workflow @jatinkrmalik
#102 docs: add nightly builds section to README @jatinkrmalik

Issue Credits

Issue Reporter Description
#104 Dinç Ciftci Clipboard restore delay causes stale paste after transcription

Post-Merge Steps

  1. Verify CI passes ✅
  2. Tag the release: git tag -a v0.6.0 -m "VocaMac v0.6.0" && git push origin v0.6.0
  3. GitHub Actions will build, sign, notarize, and publish a draft release
  4. Edit the draft release on GitHub — paste contents of docs/RELEASE_NOTES_v0.6.0.md
  5. Publish the release 🎉

Full Changelog: v0.5.0...v0.6.0

@jatinkrmalik
jatinkrmalik force-pushed the chore/release-0.6.0 branch 2 times, most recently from abf0b70 to 98d8ddc Compare April 16, 2026 19:10
@jatinkrmalik
jatinkrmalik merged commit d6dc283 into main Apr 16, 2026
3 checks passed
@jatinkrmalik
jatinkrmalik deleted the chore/release-0.6.0 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.

bug: clipboard restore delay causes stale paste after transcription

1 participant