v2.5.32026-06-12
Session loops ended, mic auto-recovery, steadier push-to-talk
BridgeVoice 2.5.3 stops expired sessions from silently retrying forever and prompts re-login instead, rebuilds silent microphone streams before giving up, and hardens push-to-talk against phantom releases and macOS event-tap drops.
- Expired sessions now ask for re-login. Permanently dead refresh tokens end the background retry loop, clear themselves, and surface the sign-in prompt instead of silently hammering the API.
- Silent mics recover on their own. A stream that delivers no audio rebuilds on the same device, then fails over to the next mic before the no-audio banner appears.
- Push-to-talk holds its ground. Recordings can no longer be cut by a phantom release in the first 150ms, and macOS event-tap drops self-heal with one aggregated diagnostic.
Added
- Silent microphone streams now run a two-stage recovery — rebuild on the same device, then fail over to the next candidate — before the no-audio banner shows.
- Update checks identify themselves to the edge and retry once after 30 seconds; a scheduled canary now watches the update feed every 30 minutes.
- Switching to local transcription with a missing model falls back to the best downloaded model and says so, instead of erroring.
Changed
- Audio capture moved to a wait-free ring buffer, so the realtime callback no longer drops samples under lock contention.
- Loopback devices (Stereo Mix, Line In, virtual cables) are excluded from automatic microphone fallback unless explicitly selected.
- Error reports truncate embedded HTML bodies, consolidate fragmented groupings, and skip known no-op messages.
Fixed
- Permanently expired sessions (invalid or 30-day-old refresh tokens) stop retry-looping, clear the dead token, and prompt re-login; flaky networks can no longer bypass the auth failure hard-stop.
- Push-to-talk requires a real key-up during the first 150ms of a hold, ending sub-100ms phantom stops on virtual audio setups.
- Dictated text re-resolves its target window when the saved one is destroyed on Windows, and frontmost-app lookup runs in-process on macOS instead of shelling out to AppleScript.
- Command panics are caught and reported instead of aborting the app on Linux.
- Model downloads tolerate antivirus stat races on Windows with a short retry.
