PowerAssertion file-level doc previously claimed Linux logind and Windows SetThreadExecutionState implementations in present tense. Both are no-ops; the macOS path compiles but is unverified on Apple Silicon (RB-08). Rewrite top doc to state present vs planned posture and reference KNOWN-ISSUES.md. Surfaced as tracked limitations: - KI-01: macOS App Nap guard pending Apple Silicon verification - KI-02: Linux power assertion is a no-op - KI-03: Windows power assertion is a no-op - KI-04: magnotia-cloud-providers crate not user-exposed in v0.1 (in-memory keystore needs OS keychain before any save-key UX) README links to KNOWN-ISSUES.md from Status, Platform support table, and Project documentation. Platform support table notes adjusted per OS to reflect actual idle-inhibit posture. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.3 KiB
Known issues
Tracked limitations and partial implementations in the current codebase. Each entry points at the code that owns the gap so future work can find it.
Power management
KI-01 — macOS App Nap guard pending Apple Silicon runtime verification
Status: macOS code path compiles and the registry tests pass, but runtime behaviour against actual OS idle-throttling has not been confirmed on Apple Silicon hardware. Also tracked internally as RB-08.
Source: src-tauri/src/commands/power.rs:73 (PowerAssertion::begin), src-tauri/src/commands/power.rs:140 (objc_bridge).
Impact: Long live-dictation sessions on macOS may still be slowed or paused by the OS until verified end-to-end on hardware.
Workaround: Keep the app window focused, or move the cursor periodically. For testing, App Nap can be disabled globally with defaults write NSGlobalDomain NSAppSleepDisabled -bool YES (revert with -bool NO).
KI-02 — Linux power assertion is a no-op
Status: PowerAssertion::begin does nothing on Linux. The planned implementation (systemd-logind / GNOME idle inhibitor via org.freedesktop.login1.Inhibit) is described in the file-level doc but not wired up.
Source: src-tauri/src/commands/power.rs.
Impact: Long sessions can be paused by the compositor's idle hooks (screen lock, suspend timers) on KDE, GNOME, Hyprland, Sway, etc.
Workaround: Raise the system idle / screen-lock timeout while dictating, or wrap launch with systemd-inhibit --what=idle:sleep:handle-lid-switch ./run.sh.
KI-03 — Windows power assertion is a no-op
Status: PowerAssertion::begin does nothing on Windows. The planned implementation (SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED) on begin, ES_CONTINUOUS alone on end) is described in the file-level doc but not wired up.
Source: src-tauri/src/commands/power.rs.
Impact: Long sessions can be paused by Windows sleep policies.
Workaround: Set the active power plan's sleep to "Never" while dictating.
Cloud providers
KI-04 — magnotia-cloud-providers crate is not user-exposed
Status: The crate is a declared workspace dependency in src-tauri/Cargo.toml:36 and compiles into the binary, but no Tauri command, page, or settings field invokes store_api_key / retrieve_api_key. There is no UI to enter or store a cloud API key in the current build.
Source: crates/cloud-providers/src/keystore.rs. The TODO in the doc comment captures the planned migration to OS-native credential storage (the keyring crate or equivalent) before the feature is wired up.
Impact: None for end users today (no exposed surface). When the feature is wired post-launch, cross-restart persistence must land before any "save key" UX ships, otherwise saved keys reset on every restart.
Workaround: N/A.
How to add an entry
When shipping a partial implementation or known limitation, add a KI-NN entry here with the four standard fields: Status, Source (file:line), Impact, Workaround. Link from the affected module's doc comment back to this file by ID.