2.2 KiB
RB-05 MAJOR: poll_inference treats IPC listener loss as session-fatal
Severity: MAJOR
Path: src-tauri/src/commands/live.rs:721-813
Source: 2026-04-22 code review
Labels: release-blocker, major, ipc-lifecycle
Status: RESOLVED (2026-04-22)
Resolution
poll_inference no longer propagates result_channel.send(...) with ?.
Instead, live-result delivery is routed through a small helper that
tracks whether the frontend listener has already been lost:
- First send failure: mark the result listener as unavailable, log a
warning, and best-effort send a
LiveStatusMessage::Warningexplaining that transcription will continue in the background until the user stops the session. - Subsequent chunks: skip re-sending to the dead result channel and keep the worker running.
Crucially, this path is now separate from actual transcription failure:
inference errors still emit LiveStatusMessage::Error and stop the
session, while listener-loss just stops live preview delivery.
Regression test:
result_listener_loss_is_warned_once_and_not_treated_as_inference_failuresimulates a dead result channel, confirms the first processed chunk downgrades to a warning, and confirms a second chunk still processes successfully without a second warning.
Problem
result_channel.send(...) propagates with ?, so closing the listening frontend or reloading the webview terminates the whole live session — even when capture and inference are healthy. Tauri channel-lifecycle events are not transcription failures and should not kill the worker.
Acceptance
- Channel-send errors log a warning and continue the session (if recoverable) or terminate gracefully (if the session was going to end anyway).
- The distinction between "transcription failed" and "no listener to report to" is explicit in the error handling.
- Regression test: simulate channel close mid-session, assert the worker keeps capturing and produces a valid WAV file.
Fix scope
Medium. Isolated to poll_inference and its error handling; interacts with RB-04 (monolith refactor) since that restructures the same function family.
Dependencies
- Related: RB-04.