diff --git a/.gitignore b/.gitignore index 77dd181..d5419df 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ Desktop.ini .vscode/ .idea/ .pytest_cache/ +.venv/ # Distribution / packaging dist/ diff --git a/openspace/local_server/README.md b/openspace/local_server/README.md index 0e0f8d4..ca69ae2 100644 --- a/openspace/local_server/README.md +++ b/openspace/local_server/README.md @@ -37,9 +37,15 @@ Set `"mode": "server"` in `openspace/config/config_grounding.json`: macOS ```bash -pip install pyobjc-core pyobjc-framework-cocoa pyobjc-framework-quartz atomacos +pip install pyobjc-core pyobjc-framework-cocoa pyobjc-framework-quartz ``` +`atomacos` is not included in the default macOS dependency set right now because +its published releases require `pyautogui<0.9.42`, which conflicts with +OpenSpace's `pyautogui>=0.9.54`. OpenSpace will still run without it, but the +macOS accessibility-tree features will stay unavailable until that upstream +constraint is resolved. + **Permissions required** (macOS will prompt automatically on first run): - **Accessibility** (for GUI control) - **Screen Recording** (for screenshots and video capture) diff --git a/openspace/local_server/platform_adapters/macos_adapter.py b/openspace/local_server/platform_adapters/macos_adapter.py index db7d5f6..00d8028 100644 --- a/openspace/local_server/platform_adapters/macos_adapter.py +++ b/openspace/local_server/platform_adapters/macos_adapter.py @@ -20,7 +20,8 @@ def __init__(self): global _warning_shown if not MACOS_LIBS_AVAILABLE and not _warning_shown: logger.warning("macOS libraries are not fully installed, some features may not be available") - logger.info("To install missing libraries, run: pip install pyobjc-framework-Cocoa atomacos") + logger.info("To install missing libraries, run: pip install pyobjc-core pyobjc-framework-Cocoa pyobjc-framework-quartz") + logger.info("Note: atomacos is currently optional because its published versions conflict with pyautogui>=0.9.54") _warning_shown = True self.available = MACOS_LIBS_AVAILABLE @@ -719,4 +720,4 @@ def get_terminal_output(self) -> Optional[str]: except Exception as e: logger.error(f"Failed to get terminal output: {e}") - return None \ No newline at end of file + return None diff --git a/openspace/local_server/requirements.txt b/openspace/local_server/requirements.txt index 5d67d69..e03319a 100644 --- a/openspace/local_server/requirements.txt +++ b/openspace/local_server/requirements.txt @@ -8,7 +8,8 @@ requests>=2.32.0 # pyobjc-core>=12.0; sys_platform == 'darwin' # pyobjc-framework-cocoa>=12.0; sys_platform == 'darwin' # pyobjc-framework-quartz>=12.0; sys_platform == 'darwin' -# atomacos>=3.2.0; sys_platform == 'darwin' +# atomacos is intentionally excluded for now: atomacos 3.2+/3.3 requires +# pyautogui<0.9.42, which conflicts with OpenSpace's pyautogui>=0.9.54. # # Linux-specific dependencies (local server) # python-xlib>=0.33; sys_platform == 'linux' @@ -18,4 +19,4 @@ requests>=2.32.0 # # Windows-specific dependencies (local server) # pywinauto>=0.6.8; sys_platform == 'win32' # pywin32>=306; sys_platform == 'win32' -# PyGetWindow>=0.0.9; sys_platform == 'win32' \ No newline at end of file +# PyGetWindow>=0.0.9; sys_platform == 'win32' diff --git a/pyproject.toml b/pyproject.toml index 06c199c..7e4a632 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,6 @@ macos = [ "pyobjc-core>=12.0", "pyobjc-framework-cocoa>=12.0", "pyobjc-framework-quartz>=12.0", - "atomacos>=3.2.0", ] linux = [ diff --git a/requirements.txt b/requirements.txt index 6371308..a925686 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,7 +19,8 @@ requests>=2.32.0 # pyobjc-core>=12.0; sys_platform == 'darwin' # pyobjc-framework-cocoa>=12.0; sys_platform == 'darwin' # pyobjc-framework-quartz>=12.0; sys_platform == 'darwin' -# atomacos>=3.2.0; sys_platform == 'darwin' +# atomacos is intentionally excluded for now: atomacos 3.2+/3.3 requires +# pyautogui<0.9.42, which conflicts with OpenSpace's pyautogui>=0.9.54. # # Linux-specific dependencies (local server) # python-xlib>=0.33; sys_platform == 'linux'