Releases: a692570/bolo
Release list
Bolo 1.4.2 prompt and vocabulary controls
Bolo 1.4.2 adds two user-facing controls for better daily dictation.
- Added per-app cleanup styles from the menu bar. Set the current app to default, email, chat, or notes cleanup.
- Added durable prompt bindings in ~/.bolo/prompt_bindings.json.
- Added vocabulary aliases for recurring mishears like cloud to Claude or chrome to cron.
- Added Add Vocabulary Alias... in the menu bar.
- Applied vocabulary aliases locally before LLM cleanup, so these fixes do not add latency.
- Updated the legacy vocabulary helper and README for the new format.
Verification:
- cargo fmt --check
- cargo test, 50 passed
- cargo build --release
- Python syntax checks for macOS helpers
- git diff --check and secret scan
Bolo 1.4.1 reliability and live preview update
What changed
- Added live streaming preview in the overlay while dictating.
- Improved text insertion so Bolo restores the previous clipboard contents after paste when macOS allows it.
- Added local tracking for immediate Backspace or Cmd+A after insertion, so Bolo can flag low-quality transcripts without logging transcript content.
- Improved streaming reliability around transcript endings and suspicious partial results.
- Reduced release-to-paste latency for streaming dictation.
- Fixed stale privacy copy on the docs site around transcript history.
- Bumped the app package version to 1.4.1.
Verification
- Release build passes.
- Unit tests pass.
- Python helper scripts compile.
- Local Bolo restart verified before release prep.
v1.4.0 Bolo reliability and streaming update
What is new
- Streaming STT through Telnyx for faster post-release transcription, with Deepgram and AssemblyAI streaming options.
- Tail-word protection for streaming dictation, including a short release drain, final audio chunk flush, and longer final-result wait.
- Transcript history in the menu bar, including recent transcript copy and clear-history controls.
- Smart cleanup path that inserts text first and defers LLM cleanup to history, so long dictations do not block paste.
- Local correction tools for day-to-day dictation errors, including voice correction commands and deterministic replacement rules.
- Better accent and vocabulary handling for terms like Claude, cron, Tavily, Kimi, Telnyx, and personal vocabulary entries.
- Configurable max recording length with BOLO_MAX_RECORDING_SECONDS for longer dictation sessions.
- Self-update flow from the launcher and menu bar so local installs can fast-forward and rebuild when the checkout is clean.
- Health check menu item for microphone, language, STT mode, and history state.
- Clean macOS install fix for PyObjC dependencies and older system pip versions.
Install
git clone https://github.com/a692570/bolo.git
cd bolo
./install.shUpgrade
Restart Bolo or choose Check for Updates from the menu bar. Launch-time updates run only when the local checkout is clean and can fast-forward.
v1.3.0 — Configurable hotkey, clipboard backup, onboarding, website redesign
What's new
- Configurable hotkey — Set
BOLO_HOTKEYtoright_option,right_control,right_shift,fn,f1-f19, orcaps_lock. Works with external keyboards, Windows keyboards, and mechanical boards. - First-run onboarding — Dialog asks for your preferred hotkey on first launch. Never start with the wrong key.
- Clipboard backup — Every dictation result is copied to your clipboard. Text is never lost, even if no text field is active.
- Copied HUD state — HUD now shows
Copiedafter successful dictation so you know the text is safe. - Stuck recording watchdog — Auto-recovers from hotkey desync if a recording gets stuck.
- Website redesign — Dark theme, cleaner layout, faster.
Install
git clone https://github.com/a692570/bolo.git
cd bolo
./install.shv1.2.3
Patch release for the Rust runtime hotkey crash.
Changes:
- Replaced the Rust rdev hotkey listener with a native AppKit helper for Right Option press and release events.
- Removed rdev from the Rust dependency tree.
- Added PyObjC Quartz to install checks because the hotkey helper uses macOS keyboard flag state.
- Cleaned up hotkey helper processes during restart and launch.
- Kept Bolo as a menu bar-only app without a Dock tile.
Why:
- v1.2.2 could crash-loop with exit code 133. The macOS crash report pointed to rdev calling HIToolbox keyboard layout APIs from the hotkey thread.
Validation:
- python3 -m py_compile hotkey.py overlay.py
- bash -n install.sh start-bolo.command start-bolo.sh restart.sh
- cargo fmt --check
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
- cargo build --release
- local restart confirmed Bolo, start-bolo.command, and hotkey.py stay running, no Bolo Dock tile, no new crash report after restart
v1.2.2
Patch release for the Rust runtime menu bar behavior.
Changes:
- Runs the main Rust app with macOS accessory activation policy, so Bolo stays out of the Dock and behaves like a menu bar-only app.
- Documents the menu bar-only behavior in the README.
- Cleans up the temporary app PID file during restart.
Validation:
- cargo fmt --check
- bash -n install.sh start-bolo.command start-bolo.sh restart.sh
- python3 -m py_compile overlay.py
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
- cargo build --release
- local restart confirmed Bolo is running and absent from visible app process list
Bolo 1.2.1
Bolo 1.2.1
Patch release for the Rust runtime release.
Changes:
- README now documents the native macOS HUD dependency
- install.sh checks for PyObjC AppKit and installs it if missing
- package metadata bumped to 1.2.1
Validation:
- python3 -m py_compile overlay.py
- bash -n install.sh start-bolo.command start-bolo.sh restart.sh
- cargo fmt --check
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
- cargo build --release
Bolo 1.2.0
Bolo 1.2.0
This release makes the Rust runtime the default path for Bolo.
Highlights:
- Rust push-to-talk menu bar app with Right Option dictation
- Faster startup and cleaner single-binary runtime
- Telnyx STT with Nova to Distil Whisper fallback
- Local transcript cleanup, Telnyx term fixes, and optional Kimi or Qwen LLM cleanup
- Native macOS status HUD with Dictating, Thinking, Inserting, and Inserted states
- Updated install, restart, launcher, and single-instance flow
Validation before release:
- python3 -m py_compile overlay.py
- cargo fmt --check
- cargo clippy --all-targets --all-features -- -D warnings
- cargo test
- cargo build --release
- local restart and smoke dictation
Bolo alpha 4: Wispr Flow parity features
What's in this release
Auto-silence detection
Recording stops automatically after 1.5 seconds of silence, matching Wispr Flow behavior. Toggleable from the menu bar.
Filler word removal
Words like "um", "uh", "you know", and "and all" are stripped from transcripts before output, producing cleaner text without any manual editing.
Crash fixes
- asyncio daemon thread exceptions are now caught in stt.py so a background thread failure no longer silently kills the process.
- A crash signal handler logs diagnostics on SIGTERM and SIGABRT for easier post-mortem debugging.
Duplicate instance prevention
The supervisor now tracks its own PID and kills any orphaned supervisor loops before restarting. Restarting Bolo no longer spawns a second hidden instance.
Term corrections expanded
LLM cleanup prompt and known-term patterns now cover: Sonnet (previously mangled as "sonnet" or "Saunet"), Kimi K2.5, Qwen, and nova-3. Misrecognition variants are matched by regex so partial matches still correct.
Vocabulary hints via Deepgram keyterms
Custom vocabulary terms are now sent to Deepgram using the keyterms parameter (the correct field for nova-3) instead of the deprecated keywords field, restoring vocabulary boosting.
Live word-count overlay
Long recordings (over a few seconds) now show a running word-count estimate in the overlay so you know the recording is progressing.
Stability: crash-loop guard
Restart delay raised to 5 seconds with a force-kill before restart, preventing rapid crash loops that would exhaust resources.
Known issues
- Long recordings (30s+) show a word-count estimate rather than a live rolling transcript.
- Context awareness (pulling surrounding text from the active app) is not yet implemented.
- Hotkey is not configurable.
- Rate limit UX (Basso sound + countdown overlay), expanded voice commands, and CorrectionStore re-enablement are in progress and will land in alpha.5.
Upgrade: pull latest, restart Bolo from the menu bar.
Bolo alpha 3: corrections, commands, and reliability
This prerelease restores correction memory, expands voice commands, and improves reliability.
What changed
- Auto-restart supervisor loop restored — Bolo now recovers automatically from crashes without manual intervention
- Correction memory re-enabled — "actually [text]" corrections now persist across sessions, with atomic writes and a 200-entry cap
- 9 new voice commands — new line, comma, period, full stop, question mark, exclamation mark, open/close quote, dash, colon, semicolon
- Rate limit feedback — Basso sound and overlay countdown instead of silent drops when rate limited
- Vocabulary → Deepgram keywords — personal vocab terms are now passed to nova-3 STT for better accuracy on names and brand terms
- Recording stuck watchdog — force-stops a stuck recording session only if the key is genuinely not held (safe for long voice notes)
Known issues
- Long-form dictation still needs more real-world validation
- Core pipeline logic still concentrated in bolo.py
- Hotkey is not yet configurable