diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a737025..cc744394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,9 @@ Status of the `main` branch. Changes prior to the next official version change w * Dashboard: - Fix: Serena PyPI version check triggered by callback on main thread could delay agent startup #1774 + - Fix: on macOS, the `tray_manager` interface put an icon in the Dock and in the app switcher + (should only use menu bar icon) + - Use `tray_manager` interface as new default on macOS * Hooks: - Add `serena-hooks --client=grok`, including Grok-native PreToolUse allow/deny output. diff --git a/src/serena/agent.py b/src/serena/agent.py index 3b340702..2b70389a 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -388,8 +388,7 @@ class DashboardManager: case "Windows": return cls.WEBVIEW case "Darwin": - # TODO: Switch to TRAY_MANAGER once support is tested - return cls.BROWSER + return cls.TRAY_MANAGER case _: return cls.BROWSER diff --git a/src/serena/dashboard.py b/src/serena/dashboard.py index 852d0c1b..c9873608 100644 --- a/src/serena/dashboard.py +++ b/src/serena/dashboard.py @@ -1195,9 +1195,12 @@ class SerenaDashboardTrayManager: # set up tray icon with a dynamic menu (callable returns items on each open) kwargs: dict[str, Any] = {} if sys.platform == "darwin": - from AppKit import NSApplication + from AppKit import NSApplication, NSApplicationActivationPolicyAccessory - kwargs["darwin_nsapplication"] = NSApplication.sharedApplication() + nsapp = NSApplication.sharedApplication() + # run as an accessory app so that only the menu bar icon is shown (no Dock icon) + nsapp.setActivationPolicy_(NSApplicationActivationPolicyAccessory) + kwargs["darwin_nsapplication"] = nsapp self._tray_icon = pystray.Icon( "serena_tray_manager",