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.
1.4 KiB
1.4 KiB
RB-07 MAJOR: get_runtime_capabilities advertises wrong accelerators
Severity: MAJOR
Path: src-tauri/src/commands/models.rs:435-489
Source: 2026-04-22 code review
Labels: release-blocker, major, ui-integrity
Problem
The IPC response hard-codes accelerators = ["cpu", "vulkan"] and supports_gpu = true for Whisper, even when:
detect_active_compute_devicewould reportmetalon macOS (via MoltenVK).- The binary was compiled without the
whisperfeature — in which case Whispersupports_gpuis meaningless because there is no Whisper backend at all.
The frontend uses this response to render Settings toggles (GPU selection, active-device badge, feature availability). Wrong values mean wrong UI states on exactly the builds this function is meant to describe.
Acceptance
acceleratorsis derived from actual build configuration and runtime probe, not hard-coded.- On macOS,
acceleratorsincludes"metal"when the Metal loader resolves. - On whisper-disabled builds, Whisper entries advertise
supports_gpu = false(or the engine is omitted from the response entirely). - Regression tests cover each platform variant via cfg-gated test cases.
Fix scope
Medium. The detection helpers already exist (detect_active_compute_device, vulkan_loader_available); this is about wiring their output into the RuntimeCapabilities struct honestly.
Dependencies
- None — standalone fix.