diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ee9de6f..53712e8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,8 @@ 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) * Hooks: - Add `serena-hooks --client=grok`, including Grok-native PreToolUse allow/deny output. 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",