v2.2.502026-05-13
Auth refresh storm fix + server-driven update gate
Closes the loop on the BRIDGEVOICE-R auth refresh event storm, adds a server-driven update gate so stuck clients can be moved forward, and ships better Windows microphone diagnostics.
- Auth refresh now stops cleanly. When your session is revoked, BridgeVoice stops retrying and prompts you to sign in again instead of looping forever.
- Server-driven update prompt. Older clients stuck on a buggy build now see a blocking update overlay so the fix can land.
- Better Windows mic diagnostics. When Windows mic privacy is denied, BridgeVoice now tells you exactly that and the dashboard banner has an "Open Microphone Settings" button that jumps straight to the Windows privacy toggle.
- Windows clipboard now keeps the transcript. After dictation on Windows, the transcript stays on your clipboard. Previously BridgeVoice restored your prior clipboard contents ~500 ms later, which could re-expose passwords or 2FA codes to background apps that read the clipboard on a delay.
Added
- Server-driven X-App-Min-Version / X-App-Update-Required headers with a new in-app UpdateRequiredOverlay.
- Per-candidate microphone enumeration diagnostics; Windows ConsentStore registry probe with a deep-link to ms-settings:privacy-microphone.
Changed
- Aligned the renderer and Rust HTTP endpoint classifiers so future auth route 404s surface as a specific bucket.
- Demoted recoverable conditions (get_access_token empty, automatic refresh failed) from log::warn to log::info to stop Sentry promotion.
- Windows clipboard is no longer restored to its prior contents after dictation. The transcript stays on the clipboard so previously-copied secrets are not re-exposed to delayed clipboard readers.
Fixed
- BRIDGEVOICE-R: terminal revocation codes (AUTH_REFRESH_REVOKED / invalid_grant / NotAuthorizedException) stop the background refresh loop on revoked sessions; plain 401/403 stays retryable so a brief Cognito blip will not sign healthy users out, with a 6-failure hard cap as belt-and-suspenders.
- BRIDGEVOICE-2X / -2Z: auth.other -> 404 traced to graceful-degradation /auth/desktop/login-init fallback.
- BRIDGEVOICE-2V: Windows __chkstk guard for the last sync Tauri command (get_models is now async + spawn_blocking); 4 MiB RUST_MIN_STACK default.
- BRIDGEVOICE-H / -5: shrunk the audio buffer mutex critical section to a memcpy.
- BRIDGEVOICE-1D / -1E: split mic enumeration failures into actionable sub-types.
