Releases: newtro/Murmur
Releases · newtro/Murmur
Murmur 1.0.6
Added
- AssemblyAI batch transcription provider. New cloud STT option alongside Groq / OpenAI / Mistral. Two model tiers:
universal-3-pro($0.0035/min, flagship accuracy) and$0.0025/min, budget). Usesuniversal-2(speech_modelswith automatic fallback touniversal-2if the primary model is unavailable. API key configured in Settings → Transcription. - Live dictation mode. Text streams into the focused application as you speak, via AssemblyAI's streaming WebSocket (
u3-rt-promodel). Toggle in Settings → Transcription → Live Dictation. Two typing modes:- Finals-only (default, recommended): Text appears in chunks at sentence boundaries. No backspacing into adjacent content. Safer.
- Stability-gated partials: Text streams word-by-word with backspacing on revisions. Closer to Wispr Flow's feel. Configurable stability threshold (50–500 ms, default 150 ms) in Advanced settings. Don't switch focus to other apps mid-utterance.
- Cross-platform keyboard injection. New
TypingServiceuses@nut-tree-fork/libnut-{win32,darwin,linux}directly (skipping the heavier@nut-tree-fork/nut-jswrapper) forkeyTap('backspace')+ clipboard-paste hybrid text insertion. Prebuilt native binaries for all three platforms. - TypingEngine with two modes + 29 vitest unit tests. Pure-logic engine that converts streaming turns into TypingService calls. Word-aware longest-common-prefix snap avoids mid-word flicker on partial revisions. First test runner in this repo (vitest with
npm test,npm run test:watch,npm run test:coverage). - Microphone capability in MSIX manifest (
<DeviceCapability Name="microphone" />). Without this, MSIX-installed Murmur was blocked by Windows fromgetUserMediaand threw permission errors on every hotkey press. Existing MSIX installs need to be uninstalled and reinstalled to pick up the new capability, then microphone access approved in Settings → Privacy → Microphone. - ESLint v9 flat config. Project had been silently lint-broken since the ESLint 9 upgrade;
npm run lintnow runs cleanly.
Changed
- Live-dictation streaming pipeline. Audio captured at native rate (typically 48 kHz) is downsampled to 16 kHz PCM16 in the renderer via
ScriptProcessorNode, sent to main as ~85 ms chunks. AssemblyAI requires 50–1000 ms per chunk — earlier 42 ms attempts producedInput Duration Violationerrors and have been fixed. - Settings store invariant. A hand-edited
murmur-store.jsonthat hasliveDictationEnabled: truewith a non-streaming provider (or an out-of-rangeliveDictationStabilityMs) is now normalized on load + save instead of crashing or hanging. - Forge / Vite native-module bundling.
forge.config.tsandvite.main.config.tsupdated for the new libnut packages +bindings+file-uri-to-pathtransitive deps, all now declared as direct dependencies for installer reliability.
Fixed
- MSIX microphone permission error on auto-start. See "Added → Microphone capability" above.
- Final transcript dropped on hotkey-stop in live mode. AssemblyAI emits the final formatted turn during the WebSocket close-ack window; the previous gating logic flipped
isLiveDictating=falsetoo early and discarded the final. Now uses a separateisLiveStoppingflag plus an explicitforceEndpoint()to make the final turn arrive promptly while the engine is still routing. - Stale orphan files removed.
src/renderer/components/settings/{Models,ApiKeys}.tsxwere dead code (zero imports) and had outdated provider lists. Deleted.
Known limitations
- Linux Wayland sessions can't use live dictation. libnut is X11-only;
TypingService.isAvailable()detectsXDG_SESSION_TYPE === 'wayland'and reports unavailable. XWayland sessions work normally. - macOS Accessibility permission is required for live dictation to inject keystrokes. The app probes for it before the recording overlay shows and prompts the user if missing.
- Stream-error fallback to batch is not yet implemented. If the AssemblyAI WebSocket drops mid-utterance, the session ends with an error overlay rather than transparently re-transcribing via the configured batch fallback provider. Deferred to a future release.
Migration notes for existing users
- If you have Murmur installed via MSIX: uninstall the existing version from Apps & Features, install the new
.msixfrom this release, then grant microphone access when Windows prompts (or via Settings → Privacy → Microphone if it doesn't prompt). - If you have Murmur installed via NSIS (.exe installer): just install the new build on top.
- First live-dictation session with AssemblyAI requires entering an API key in Settings → Transcription. Sign up at assemblyai.com/dashboard — the free tier covers light personal use.
Murmur 1.0.5
Full Changelog: v1.0.4...v1.0.5
Murmur 1.0.4
Full Changelog: v1.0.3...v1.0.4
Murmur 1.0.3
Full Changelog: v1.0.2...v1.0.3
Murmur 1.0.2
Full Changelog: v1.0.1...v1.0.2
Murmur 1.0.1
Full Changelog: v1.0.0...v1.0.1
Murmur 1.0.0+559d1df
Full Changelog: v1.0.0-f52db90...v1.0.0-559d1df
Murmur 1.0.0+f52db90
Full Changelog: v1.0.0-3a04686...v1.0.0-f52db90