Fix macOS camera permission registration on first use#131
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (31)
📝 WalkthroughWalkthroughThis PR centralizes platform-specific permission decisions, adds backend restart metadata and stale-client handling, updates onboarding and studio UI flows, gates microphone capture on exact grants, expands lifecycle tests, documents acceptance results, and strengthens macOS artifact metadata validation. ChangesSystem permission flow
macOS release artifact validation
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint install failed: private package registry requires authentication. Disable ESLint in CodeRabbit settings or use public packages. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Ships #131 (macOS camera/mic permission registration on first use — a never-asked device now offers Enable + real TCC prompt instead of a dead-end Settings link) and #130 (Windows: retry transient locked MP4 finalization, keep MP4 over MKV fallback). Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
dev.theorcdev.videorcand both camera/microphone usage descriptions are non-emptyFixes #125
Root cause
The Rust backend collapses AVFoundation
not-determined,denied, andrestrictedstates intopermission-required. The renderer trusted that lossy value on macOS and therefore treated a never-asked camera as denied. Every visible action opened System Settings, but opening Settings cannot create the initial TCC registration; only the existing nativeaskForMediaAccessbridge can do that.Verification
pnpm typecheckpnpm lintpnpm format:checkpnpm --filter @videorc/desktop test: 1,111 passed, 1 skippedpnpm test:scripts: 640/640pnpm buildpnpm check:renderer-assets: 369,926/370,000 gzip bytespnpm audit:depscargo fmt --check --allcargo clippy -p videorc-backend -- -D warningscargo test -p videorc-backendrerun: 1,291 passed, 8 ignored, plus wire testAcceptance record:
docs/acceptance/2026-07-15-issue-125-camera-permission-registration.mdExisting gate blockers observed
smoke:local-gatesreaches the existing temporary../../../shared/backendmodule-resolution failure insmoke:sourcespreview.surface.createauthorization failureThis stays draft until the macOS 27 clean-TCC checklist is run on a disposable account, VM, or device.
Summary by CodeRabbit