Files
Lumotia/docs/issues/power-assertion-macos-objc2.md
Jake 592b894790 docs(cr-2026-04-22): add release-blocker issue tracker at docs/issues/
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.
2026-04-22 09:46:08 +01:00

1.6 KiB

RB-08 MAJOR: PowerAssertion is a non-functional stub on macOS

Severity: MAJOR (macOS only) Path: src-tauri/src/commands/power.rs:41-121 Source: 2026-04-22 code review, originally deferred during A.1 #9 Labels: release-blocker, major, macos, platform

Problem

begin_activity always returns Err on macOS, so PowerAssertion::begin converts to None and the guard never acquires an NSProcessInfo beginActivityWithOptions:reason: assertion. Live recording and LLM cleanup therefore run without App Nap protection on the one platform where it matters.

The stub was deliberate (A.1 #9 acceptance concession — untestable on Linux without a macOS build host). Re-flagged here so it is not forgotten before the first macOS ship.

Acceptance

  • objc2 + objc2-foundation deps added to the kon crate, gated cfg(target_os = "macos").
  • begin_activity calls [NSProcessInfo processInfo] beginActivityWithOptions:(NSActivityUserInitiated | NSActivityLatencyCritical) reason:reason] and retains the returned activity handle.
  • end_activity calls endActivity: on the retained handle.
  • Manual-test on a real macOS box: 10-minute background live session completes without throttling; pmset -g assertions shows Kon's activity during capture.

Fix scope

Medium. Dep addition + FFI glue + manual verification. Can be done from Linux with cargo check --target=aarch64-apple-darwin for compile validation, but runtime behaviour needs a macOS machine.

Dependencies

  • Hard blocker: before first macOS build/ship.