Captures the 12 items from docs/code-review-2026-04-22.md that must land before v0.1 ships. One markdown file per issue with: severity, path:line, problem description, acceptance criteria, fix scope, and dependency graph. Split by severity: - 3 CRITICAL: live-session race, migration atomicity, transcript- profile FK - 9 MAJOR: monolith refactor, channel-fatality, capture worker join, runtime capabilities, macOS App Nap, decoder error prop, LLM prompt preflight, keystore thread-safety, hotkey device filter README.md indexes them with a fix-order dependency graph and a fish-shell script for bulk-converting to GitHub issues once `gh` CLI is installed and authed. Deferred step by user decision — markdown tracker is authoritative until then.
25 lines
1.1 KiB
Markdown
25 lines
1.1 KiB
Markdown
# 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](../code-review-2026-04-22.md)
|
|
**Labels:** release-blocker, major, ipc-lifecycle
|
|
|
|
## 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.
|