Releases: Aiml3ss/whisper-face
Release list
Whisper Face 0.4.0
Windows has a download for the first time. Plus a release gate that remembers what quality looked like, and a real visual pass over every screen.
Windows (preview)
Download WhisperFace-0.4.0-windows-x64.zip, unzip it somewhere you can write, and double-click Install.cmd. That one file is all you run — it exists because Windows blocks a double-clicked PowerShell script, and the bundle's START HERE.txt walks through the rest.
Windows has always shared the real pipeline — the same capture, the same Tiny→Turbo cascade, the same cleanup, snippets, tones, and learning — and its installer has been exercised in CI on a real Windows runner on every change. What it has never had is something to download. Now it does.
Before you install, three things worth knowing:
- winget must already be present (App Installer, from the Microsoft Store). The installer needs it and does not install it for you.
- Windows will warn you. This build carries no Authenticode signature, so SmartScreen says the publisher cannot be verified. You can skip the prompt entirely by right-clicking the downloaded ZIP → Properties → Unblock before extracting, or verify the download against
SHA256SUMSfirst. Install.commandsits one letter away in the same folder. That one is the macOS installer and does nothing on Windows.
Two real differences from the Mac, by design: Whisper Face lives in the tray rather than a menu bar and has no main window, and text is inserted with a plain paste instead of the Mac's verified insertion transaction, because Windows has no equivalent of the Accessibility API that path depends on. The hotkey is Right Alt.
This is a preview. No full dictation has been performed on real Windows hardware yet — CI proves it imports, installs, and passes its tests, not that dictating into Word feels right. Expect rough edges and please report them. One known gap: the installer does not install git, and Diagnostics → Exact Source shells out to it, so that one screen errors without it. Dictation is unaffected.
Every screen got looked at
A pass over all 24 rendered pages at five window sizes in both themes, fixing what was actually wrong rather than restyling:
- The metric cards were ghosting their own text. Their offset shadow had no explicit path, so it was derived from the layer silhouette including the glyphs — and the translucent sticker fill let that text-shaped shadow show through, five points down and right. Only visible live, never in a screenshot, which is why it survived this long.
- Tall windows no longer strand everything at the top. The Home cluster and the onboarding poster centre themselves, and the backdrop follows.
- Every status capsule was quietly right-aligned — the model pills, the Capture badge, the onboarding kicker — because the alignment constant meant something different than assumed. All centred now.
- "1 words in 1.38s" is gone, along with every other broken singular, handled in the string catalogue so all eleven languages can express it.
- The Personalize face card stops reserving a row that is not there.
Quality can no longer drift quietly
quality_gate.py replays the deterministic quality suites and compares 49 pinned, content-free metrics against a checked-in baseline. Any difference fails the build — a drop is a regression, and an unrecorded improvement is a baseline that would silently absorb the next regression. Moving quality now takes a deliberate --rebaseline whose diff is reviewed beside the change that caused it. It runs on every pull request and every release.
Also fixed
- Snippets can be named in any script. Both name normalisers stripped everything outside
[a-z0-9 ], so every Cyrillic, Japanese, Korean, or Chinese name collapsed to the same empty key: the editor refused the second one as a duplicate, and saying a non-Latin name pasted whichever snippet happened to come first. Accented Latin also stops losing its accents. - Long status messages wrap instead of losing their tail. "Paste unverified — check target; saved in Voice Outbox" was being cut at the semicolon, which removed the half that tells you what to do.
- The rename to
whisper-facefinally reached the release manifest's source offer, which had been pointing at the old repository name since the move.
Install on a Mac
Download the disk image, drag the Whisper Face folder (and the app beside it) somewhere writable like Documents, then run Install.command from that copy. The installer refuses to run from the read-only image.
Updating from 0.3.x in the same checkout preserves all personal files; the manifest links back to v0.3.0 for rollback. macOS still warns that the developer is unverified — signing and notarization remain the top of the roadmap.
Whisper Face 0.3.0
Eleven languages, an update check that tells the truth, and proof that speech stays local.
Fixed
- "Check for Updates" could say you were current while you were nine commits behind. It compared the checkout on disk instead of the build you were running; anything that moved the checkout without reinstalling — a pull, a script, a rolled-back update — made the two drift apart. It now compares the revision the installer actually provisioned, refuses to "update" a checkout that has its own commits, and rolls back to the last build that installed cleanly rather than the one that just failed. If 0.2.1 ever told you "no updates available" when you knew better, this was why.
- Dictating twice in a row welded the sentences together. A new dictation now gets one joining space when the text before the cursor needs it — and none after an opening bracket, before punctuation, or in scripts that do not use spaces.
- The window opened on the second click. Accessory-app activation order; now the first click works.
- Text that landed perfectly was being reported as a failed paste. A destination that differs only by trimmed edge whitespace is now proven delivery, under its own receipt reason; anything weaker is still a conflict, and conflicts now say how they differed.
New
- Dictate in eleven languages. English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Japanese, Korean, and Chinese — pick one in Settings → Controls. This surfaced a real correctness bug: the English-only Parakeet model answers
okfor any audio, returning phonetic English mush for Dutch ("Het kwartaalrapport…" came back "At Kartala Portis Marchen Ochten Klai for Bordaling"), and the pipeline would have pasted it at 84% confidence. Non-English now routes around Parakeet entirely, and a dozen English-assuming cleanup rules stand down when they cannot apply — including the hallucination filter that was silently discarding every correct Japanese, Russian, and Korean transcript. - Fourteen companions. Frog, Rabbit, Hedgehog, and Penguin join the roster; the picker wraps into two tidy rows.
- Choose your keys. The capture key and every modifier are now configurable, dictations can be undone, and the sounds can be turned off — Settings → Controls.
- An uninstaller.
Uninstall.commandremoves exactly what the installer created, from an explicit inventory, and nothing else. - Speech-stays-local is now a tested claim. Two independent test layers prove the dictation path opens no connection to anything but local Ollama and the app's own loopback: structurally (exactly one of 43 first-party modules may import a network client — and an aliased import can't hide one) and dynamically (a tripwire drives a synthetic utterance through the real compile path and fails on any non-local target). The evidence-capture tools are proven unable to reach the network at all.
- Releases carry build provenance. Starting with this release, artifacts published by CI are attested via Sigstore —
gh attestation verify WhisperFace-0.3.0-macOS-arm64.dmg --repo Aiml3ss/whisper-facenames the workflow, commit, and trigger that produced them. No project signing key exists to leak. (This local preview build documents the mechanism; the attestation lands on CI-published artifacts.) - Benchmark honesty is enforced in code, not convention. A synthetic number structurally cannot be published as a physical one; scorecard metrics bind to named hardware and dates or stay explicitly unmeasured; forged summaries are refused for lacking the provenance a real run always carries.
- Faster and more measurable. Whisper Tiny's speculative pass is cross-checked against Parakeet so agreement earns higher confidence, fixed latency is cut, and per-stage timings are measurable from your own logs.
Honest numbers
The README overstated two things, now corrected and bound by tests so they cannot drift again: the cleanup corpus holds 30 cases (not six), and the proof mediator recovers 27 of them (not five of six). Internal corpora remain synthetic and are still not evidence about real-world accuracy.
Install
Download the disk image, drag the Whisper Face folder (and the app beside it) somewhere writable like Documents, then run Install.command from that copy. The installer refuses to run from the read-only image.
Updating from 0.2.x in the same checkout preserves all personal files; the manifest links back to v0.2.1 for rollback. macOS will still warn that the developer is unverified — signing and notarization remain the top of the roadmap.
Whisper Face 0.2.1
First run got a face, every screen got one voice, and a contrast bug got fixed.
Fixed
- The amber buttons were unreadable in dark mode. Pause and the onboarding action rendered white-on-amber at roughly 1.9:1 — an import error swallowed by a bare
exceptsent them to a fallback colour. If you are on 0.2.0, this is the reason to update. - Every squish was growing out of the wrong corner. macOS gives view-backed layers a bottom-left anchor, so every spring animation in the window and the HUD scaled from the corner instead of the centre. Now centred in both.
- The 404 page's owl was invisible, and long copy could run edge-to-edge on a phone.
New
- First run in the product's voice — "First, let me hear you" through "Nice. You're ready.", with the character present at each step, a progress bar, and step chips that read at a glance. The four evidence-driven steps are unchanged: nothing marks itself done until it is actually observed.
- One voice everywhere else — empty states now invite you to a next step instead of apologising, and errors name what failed and what to do. Section switches crossfade; the notice bar fades. All motion is off under Reduce Motion.
- whisperface.com and the app now share a spring language. Both surfaces run the same four named motions from the same constants, so a button on the site feels like a button in the app.
- Evidence capture harnesses for anyone reproducing the project's accuracy and reliability claims: guided, resumable sessions for the re-listen, calibration, and keyword corpora, plus the 50-app insertion matrix and lifecycle/stress runs. They record what actually happened and hand it to the existing gates — they cannot approve anything themselves, and tests enforce that.
Install
Download the disk image, drag the Whisper Face folder (and the app beside it) somewhere writable like Documents, then run Install.command from that copy. The installer refuses to run from the read-only image.
Updating from 0.2.0 in the same checkout preserves all personal files; the manifest links back to v0.2.0 for rollback.
Still not notarized
Ad-hoc signed — the project is not enrolled in the Apple Developer Program, so macOS will not vouch for the developer: right-click Install.command → Open → confirm. Verify your download against SHA256SUMS.
Full source corresponds to commit 7359baa.
Whisper Face 0.2.0
The personality release: the app now looks and moves like the site promised.
What's new
- A real redesign of the app window — a sidebar-navigated, resizable window with three simple sections (Home, Settings, Advanced) replacing five dense tabs; native switches, grouped lists, a disciplined type scale, and full light/dark parity. Everyday controls sit up front; evidence and expert tools live one click deeper, unchanged.
- Jelly motion everywhere — buttons squash on press and spring back with a wobble, the sidebar pops, and the mascot squishes, all driven by real spring physics and fully disabled under Reduce Motion.
- Ten refreshed characters — richer art for every face (twin catchlights, blush, proper species details, a parrot beak that actually opens) and a better speaking animation: perceptual lip sync, blinks, and idle breathing in the HUD; a three-frame mouth on the site.
- A quick-glance menu bar — six choices by default; recovery rows (Voice Outbox/Inbox), the Last Recognition shortcut, and the evidence-gated re-listen toggle appear only when they have something for you.
- Reliability fixes — self-update no longer dies on launchd's minimal PATH, the installer stops trusting inherited PATHs, and Ollama service verification now proves the service identity rather than just the endpoint.
Install
Download the disk image, drag the Whisper Face folder (and the app beside it) somewhere writable like Documents, then run Install.command from that copy. The installer refuses to run from the read-only image.
This build is not notarized
Ad-hoc signed (the project is not enrolled in the Apple Developer Program), so macOS will say it cannot verify the developer: right-click Install.command → Open → confirm. Verify your download against SHA256SUMS. Updating from 0.1.0 in the same checkout preserves all personal files; the update manifest links back to v0.1.0 for rollback.
Full source corresponds to commit e7b41ee.
Whisper Face 0.1.0
First downloadable build. Apple Silicon Mac, macOS 14 or newer.
Install
- Download
WhisperFace-0.1.0-macOS-arm64.dmgand open it. - Drag Whisper Face 0.1.0 (the folder) somewhere you want to keep it, such as
~/Projects. - Open that folder and double-click
Install.command. - When the installer finishes, grant Input Monitoring and Accessibility to "Whisper Face" under System Settings → Privacy & Security.
Hold Right Option, speak, release. The text lands at your cursor.
This build is unsigned
macOS will say it cannot verify the developer. This build is ad-hoc signed, not notarized, because the project is not yet enrolled in the Apple Developer Program. To open it anyway: right-click the app or Install.command and choose Open, then confirm.
You can check what you downloaded against SHA256SUMS:
shasum -a 256 -c SHA256SUMS
A signed and notarized build is the plan; it needs Developer ID enrollment. Until then, permission grants also have to be renewed after each update, because an ad-hoc signature changes identity on every build.
What's in it
Built from a6e9c751bdc37b83b430bc166bc050cf60fa538b.
- The ten menu-bar characters now appear in colour in the app window, the first-run hero, and the Results empty state, instead of the flat menu-bar silhouette scaled up
- Pig gained a snout, so it no longer reads as a pink bear; dog's ears now match its own menu-bar mark
- Character geometry moved into one shared spec, so the recording HUD, the app window, and the website cannot drift apart
- Self-update is more durable, and lost dictation paths are surfaced rather than silently dropped
Everything still runs on your machine. No account, no word cap, no audio leaves the Mac.