synodic-client 0.0.1.dev85__tar.gz → 0.0.1.dev86__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/PKG-INFO +1 -1
  2. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/pyproject.toml +1 -1
  3. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/tray.py +3 -9
  4. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/LICENSE.md +0 -0
  5. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/README.md +0 -0
  6. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/__init__.py +0 -0
  7. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/__main__.py +0 -0
  8. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/__init__.py +0 -0
  9. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/bootstrap.py +0 -0
  10. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/config_store.py +0 -0
  11. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/data.py +0 -0
  12. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/debug.py +0 -0
  13. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/icon.py +0 -0
  14. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/init.py +0 -0
  15. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/instance.py +0 -0
  16. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/package_state.py +0 -0
  17. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/qt.py +0 -0
  18. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/schema.py +0 -0
  19. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/__init__.py +0 -0
  20. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/action_card.py +0 -0
  21. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/card.py +0 -0
  22. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/install.py +0 -0
  23. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/install_workers.py +0 -0
  24. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/log_panel.py +0 -0
  25. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/plugin_row.py +0 -0
  26. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/projects.py +0 -0
  27. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/schema.py +0 -0
  28. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/screen.py +0 -0
  29. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/settings.py +0 -0
  30. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/sidebar.py +0 -0
  31. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/spinner.py +0 -0
  32. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/tool_update_controller.py +0 -0
  33. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/update_banner.py +0 -0
  34. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/screen/wsl.py +0 -0
  35. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/theme.py +0 -0
  36. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/update_controller.py +0 -0
  37. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/update_model.py +0 -0
  38. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/application/uri.py +0 -0
  39. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/__init__.py +0 -0
  40. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/config.py +0 -0
  41. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/context.py +0 -0
  42. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/debug.py +0 -0
  43. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/install.py +0 -0
  44. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/output.py +0 -0
  45. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/project.py +0 -0
  46. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/tool.py +0 -0
  47. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/cli/update.py +0 -0
  48. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/client.py +0 -0
  49. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/config.py +0 -0
  50. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/logging.py +0 -0
  51. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/__init__.py +0 -0
  52. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/bootstrap.py +0 -0
  53. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/config.py +0 -0
  54. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/install.py +0 -0
  55. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/project.py +0 -0
  56. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/schema.py +0 -0
  57. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/tool.py +0 -0
  58. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/operations/update.py +0 -0
  59. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/protocol.py +0 -0
  60. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/py.typed +0 -0
  61. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/resolution.py +0 -0
  62. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/schema.py +0 -0
  63. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/startup.py +0 -0
  64. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/subprocess_patch.py +0 -0
  65. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/synodic_client/updater.py +0 -0
  66. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/__init__.py +0 -0
  67. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/conftest.py +0 -0
  68. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/__init__.py +0 -0
  69. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/__init__.py +0 -0
  70. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_config.py +0 -0
  71. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_install.py +0 -0
  72. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_install_plan.py +0 -0
  73. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_project.py +0 -0
  74. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_tool.py +0 -0
  75. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/operations/test_update.py +0 -0
  76. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/__init__.py +0 -0
  77. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/conftest.py +0 -0
  78. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_action_card.py +0 -0
  79. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_gather_packages.py +0 -0
  80. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_install_preview.py +0 -0
  81. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_log_panel.py +0 -0
  82. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_logging.py +0 -0
  83. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_package_state.py +0 -0
  84. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_preview_model.py +0 -0
  85. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_settings.py +0 -0
  86. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_sidebar.py +0 -0
  87. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_tray_window_show.py +0 -0
  88. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_update_banner.py +0 -0
  89. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_update_controller.py +0 -0
  90. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/qt/test_update_feedback.py +0 -0
  91. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_bootstrap.py +0 -0
  92. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_cli.py +0 -0
  93. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_client_updater.py +0 -0
  94. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_client_version.py +0 -0
  95. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_config.py +0 -0
  96. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_examples.py +0 -0
  97. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_init.py +0 -0
  98. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_install.py +0 -0
  99. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_resolution.py +0 -0
  100. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_updater.py +0 -0
  101. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_uri.py +0 -0
  102. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/test_workers.py +0 -0
  103. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/windows/__init__.py +0 -0
  104. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/windows/conftest.py +0 -0
  105. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/windows/test_protocol.py +0 -0
  106. {synodic_client-0.0.1.dev85 → synodic_client-0.0.1.dev86}/tests/unit/windows/test_startup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: synodic_client
3
- Version: 0.0.1.dev85
3
+ Version: 0.0.1.dev86
4
4
  Author-Email: Synodic Software <contact@synodic.software>
5
5
  License: LGPL-3.0-or-later
6
6
  Project-URL: homepage, https://github.com/synodic/synodic-client
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "velopack>=0.0.1535.dev45597",
16
16
  "typer>=0.24.1",
17
17
  ]
18
- version = "0.0.1.dev85"
18
+ version = "0.0.1.dev86"
19
19
 
20
20
  [project.license]
21
21
  text = "LGPL-3.0-or-later"
@@ -29,8 +29,6 @@ logger = logging.getLogger(__name__)
29
29
  class TrayScreen:
30
30
  """Tray screen for the application."""
31
31
 
32
- _MENU_POPUP_DELAY_MS = 100
33
-
34
32
  def __init__(
35
33
  self,
36
34
  app: QApplication,
@@ -57,6 +55,9 @@ class TrayScreen:
57
55
  self.tray.activated.connect(self._on_tray_activated)
58
56
 
59
57
  self._build_menu()
58
+ # setContextMenu delegates positioning to the OS tray API, which
59
+ # correctly avoids the taskbar. Do not manually handle the Context
60
+ # activation reason — that causes duplicate popups or z-order issues.
60
61
  self.tray.setContextMenu(self._menu)
61
62
 
62
63
  # At early Windows login the notification area may not be ready.
@@ -150,13 +151,6 @@ class TrayScreen:
150
151
  logger.debug('Tray activated: reason=%s', reason.name)
151
152
  if reason == QSystemTrayIcon.ActivationReason.DoubleClick:
152
153
  self._show_window()
153
- elif reason == QSystemTrayIcon.ActivationReason.Context:
154
- QTimer.singleShot(self._MENU_POPUP_DELAY_MS, self._show_tray_menu)
155
-
156
- def _show_tray_menu(self) -> None:
157
- """Show the tray context menu at the current cursor position."""
158
- geo = self.tray.geometry()
159
- self._menu.popup(geo.center())
160
154
 
161
155
  def _show_window(self) -> None:
162
156
  """Show, raise, and focus the main window."""