v2.2.572026-06-10
Auth-hiccup recording grace, harder Windows focus restore, faster startup
Paying builders keep push-to-talk through token-refresh hiccups, Windows focus restore escalates before falling back to manual paste, and both webviews start faster with per-window code splitting and a leaner widget render path.
- Recording survives sign-in hiccups. A session waiting on token refresh no longer locks the recording shortcuts for paying builders — the gate honors the cached subscription while sign-in self-heals in the background.
- Windows: focus restore retries harder. When Windows refuses to return focus to the target app, BridgeVoice now escalates with an input-state nudge and retries before falling back to clipboard paste.
- Faster widget and dashboard startup. Each webview now loads only its own code, fonts are self-hosted, and the live waveform renders in an isolated frame-coalesced island.
Added
- Hotkey self-diagnostics: BridgeVoice now detects the instant-stop failure signature (recordings ended by the release watchdog within 100 ms, repeatedly) and reports it automatically, so a regression of the v2.2.53 class surfaces in hours instead of via bug reports.
Changed
- Widget and dashboard load as separate lazy chunks — the always-on pill no longer parses the dashboard's entire module graph at launch, and vice versa.
- The live waveform is an isolated, memoized component with frame-coalesced updates, so audio levels no longer re-render the whole widget ~33 times per second.
- Fonts are self-hosted via @fontsource; the webview no longer blocks on a Google Fonts stylesheet at launch.
- Dictionary, statistics, and audio-device commands moved off the main/UI thread, removing event-loop freezes during dictation and dashboard refreshes.
- Release hardening: builds now refuse to ship a consuming keyboard hook (CI guard), and the release pipeline pushes tags atomically and verifies the build workflow actually starts — closing the gap that silently skipped v2.2.55.
Fixed
- A paying builder whose token refresh failed transiently saw "Pro subscription required" on every shortcut press until the background refresher recovered. The recording gate now stays open while the session is merely expired with a valid refresh token and the cached subscription is inside its paid period; each press also doubles as a recovery attempt.
- Windows: focus restore failures (the "paste manually" fallback) now retry once after a benign Alt tap that lifts the foreground lock — the same escalation AutoHotkey uses — and remaining failures are tagged with the refusing app so they can be fixed per-target.
- macOS: hotkey dispatch moved off the event-tap callback onto a worker thread, so showing windows or emitting events can no longer stall the tap into a system-disabled state mid-hold.
- Startup: the Whisper model probe hashes candidate files on the blocking pool and no longer holds the model-manager lock, so other commands aren't blocked while models verify.
- Recording start latency: the post-start capture probe no longer adds 25-50 ms of perceived delay on healthy recordings.
