[Bug]: macOS Accessibility warning persists after permission is enabled
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- Nửa ngày
- Mức phù hợp với người mới
- 50/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- electron, macos, typescript
- Lĩnh vực
- desktop
Hướng nghiên cứu
Start in src/hooks/useScreenRecorder.ts, where the darwin editable-overlay preflight calls requestNativeMacCursorAccess and shows recording.cursorAccessibilityUnavailable on a not-determined helper result. The proposed change removes that toast and the System Settings prompt, keeping the position-only fallback. Done means a regression test shows recording starts without the Accessibility toast, and the change is checked on a macOS build.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search existing issues
- I have searched the existing issues
- Related: #878 and merged fix #886
Describe the bug
On macOS, OpenScreen can still show the Accessibility warning even after Accessibility is enabled for the OpenScreen app in System Settings.
Observed message:
Accessibility is off. Recording will continue, but cursor effects may be limited. Enable it in System Settings for full cursor effects.
The warning is misleading in this state: the main app is authorized, recording can start, and the warning appears to be based on the result of a separate native cursor helper process rather than the main OpenScreen app's TCC grant.
This was first observed in a local 2.0.1-hans.7 build and reproduced in a local arm64 build based on the official v2.0.0 code line. I have not yet claimed that it reproduces in the unmodified notarized v2.0.0 DMG.
Expected behavior
- Accessibility should be treated as optional for recording.
- If the main app is authorized, no Accessibility warning should be shown.
- If Accessibility is unavailable, recording should still start with position-only cursor telemetry, without repeatedly opening System Settings.
- A warning should only be shown when the app can reliably determine that the main app's permission is missing.
To Reproduce
- On macOS, enable OpenScreen under System Settings → Privacy & Security → Accessibility.
- Restart OpenScreen.
- Use the cursor/editable-overlay recording mode.
- Start a recording.
- Observe that the Accessibility warning can still appear even though the permission is enabled.
- The recording itself can still succeed.
Environment
- OS: macOS 26.6.2
- Architecture: Apple Silicon (arm64)
- Official release line: v2.0.0
- Bundle identifier:
com.etiennelescot.openscreen
Proposed fix
Treat the native cursor-access request as best-effort and do not use its helper-process status as a recording-start gate or as proof that the main app lacks Accessibility.
In src/hooks/useScreenRecorder.ts, the recording preflight can be reduced to:
if (platform === "darwin" && cursorCaptureMode === "editable-overlay") {
await window.electronAPI.requestNativeMacCursorAccess();
}
Remove the recording-start path that:
- tracks
cursorAccessibilityWarningShown; - shows
recording.cursorAccessibilityUnavailablebased on anot-determinedhelper result; - opens System Settings from that toast.
Keep the native cursor session's position-only fallback and add a regression test asserting that recording starts and the misleading Accessibility toast is not shown.
I applied this change locally. Targeted tests passed, and a real 87.9-second H.264/AAC recording completed successfully.
Separate packaging note
During local testing, an ad-hoc package whose main executable identifier was Electron produced SCStream -3805 (application connection interrupted). Restoring the official bundle identifier com.etiennelescot.openscreen and preserving the correct app identity removed that failure. This appears to be a local packaging/signing issue rather than an upstream runtime regression, but the release packaging should continue to preserve the app bundle identity.
- Ngôn ngữ chính
- TypeScript
- Star
- 3.7k
- Fork
- 231
- Merge trung bình
- 16 giờ 38 phút
- Pull request đã merge (30 ngày)
- 327
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của getopenscreen/openscreen
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
getopenscreen/openscreen#1423 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Native review wanted: machine-translated recording bar tooltips (14 locales)Có thể làm lại được @auberginewly đã nhận 21 ngày trước và không có pull request nào đang mở. Đang mởgood first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
getopenscreen/openscreen#913 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
QA: e2e pass on v2.2.0-rc.1 (macOS, Windows)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
getopenscreen/openscreen#1431 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 3/5 Nửa ngày Mức phù hợp với người mới 68/100
getopenscreen/openscreen#1428 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
getopenscreen/openscreen#1426 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của getopenscreen/openscreen
Issue tương tự
-
bug triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Export the Hemi Earn Router address and the Router and Agent ABIs from `@vetro-protocol/earn`Đang mởhemi-earn
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
vetro-protocol/vetro-monorepo#1043 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
stage 2: bare names resolve against PATH differently from the shell (empty and relative entries)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
STRML/omp-classifier#206 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
atlassian-labs/mermaid-diagrams-viewer#188 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
dashboard enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Olanetsoft/agent-lookout#225 ·
Maintainer thường phản hồi trong vòng 1 ngày