Files
coco-app/scripts
copilot-swe-agent[bot] e6119e1b76 feat(camera): permission state machine, recovery UI, privacy panel
- Deduplicate NSCameraUsageDescription / NSMicrophoneUsageDescription
  in src-tauri/Info.plist and add scripts/check-info-plist.cjs +
  info-plist-check.yml workflow to enforce uniqueness in CI
- Rewrite Camera.tsx with explicit permission state machine
  (checking/prompting/granted/denied/restricted/error). Denial is
  detected via getUserMedia NotAllowedError instead of a silent
  60-second poll
- Add "Camera blocked" recovery panel: Open System Settings deep link
  (x-apple.systempreferences:...Privacy_Camera), Re-check button, and
  collapsible Diagnostics with copy-to-clipboard
- Always log err.name from getUserMedia rejections; drop console.log
  device noise
- Add Settings → Privacy panel listing Camera, Microphone,
  Accessibility, Screen Recording, Automation with status pills,
  per-row "Open in System Settings" buttons and a tccutil escape-hatch
  hint. macOS-only
- Add CONTRIBUTING.md documenting tccutil reset for dev-vs-release
  bundle id collisions and the useHttpsScheme requirement for
  Camera-hosting windows
- EN/ZH translations for all new strings

Agent-Logs-Url: https://github.com/infinilabs/coco-app/sessions/c8e85860-673a-4951-8677-8fcaeb8ad109

Co-authored-by: medcl <64487+medcl@users.noreply.github.com>
2026-05-18 09:42:58 +00:00
..