diff --git a/CHANGELOG.md b/CHANGELOG.md index d2deeade..29de4dfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,12 @@ Status of the `main` branch. Changes prior to the next official version change w - Added `serena init` and `serena setup` commands - **Major**: added commands for hooks and documentation on recommended setup. Consider setting up the [recommended hooks](https://oraios.github.io/serena/02-usage/030_clients.html) ! - Reworked installation instructions, switching to releases on pypi for distribution. Please update your mcp startup commands! + - Add minimal usage data collection on startup (only Serena version, language backend, OS, dashboard enabled status; no personally identifiable information) * Language Servers: - - Added Crystal language support (uses [Crystalline](https://github.com/elbywan/crystalline) language server) + - Added Crystal language support (uses [Crystalline](https://github.com/elbywan/crystalline) language server) + +* JetBrains: - `JetBrainsFindReferencingSymbolTool`: Include context lines (when using plugin version 2023.2.15+) * Dashboard: @@ -18,7 +21,7 @@ Status of the `main` branch. Changes prior to the next official version change w * Fixes: - Fix reactivation of the same project restarting language servers #1280 - - Fix git commit id in version + - Fix git commit id in version string - Fix manual server shutdown triggered by GUI tool/dashboard not cleaning everything up. # 1.0.0 diff --git a/src/serena/agent.py b/src/serena/agent.py index 694320e3..b3feec7d 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -14,6 +14,7 @@ from contextlib import contextmanager from logging import Logger from typing import TYPE_CHECKING, Optional, TypeVar +import requests import webview from sensai.util import logging from sensai.util.logging import LogTime @@ -406,6 +407,23 @@ class SerenaAgent: if self._gui_log_viewer is not None: self._gui_log_viewer.set_dashboard_url(dashboard_url) + self._send_usage_info() + + def _send_usage_info(self): + is_ci = os.getenv("CI") == "true" or os.getenv("GITHUB_ACTIONS") == "true" + if is_ci: + return + params = { + "os": platform.system(), + "dashboard": int(self.serena_config.web_dashboard), + "version": self.version, + "backend": self._language_backend.value, + } + try: + requests.get("https://www.oraios-software.de/serena_usage.php", params=params, timeout=1, verify=False) + except Exception as e: + log.debug(f"Failed to send usage info: {e}") + @classmethod def _create_base_toolset( cls,