Telemetry
PML 2 uses Sentry for telemetry (error tracking and performance monitoring), so we can locate crashes, fix defects and improve stability. Telemetry is off by default and is only enabled after you accept the privacy policy on first launch.
1. Consent and the switch
| Point in time | Behaviour |
|---|---|
| First launch | The privacy policy dialog is shown. Choosing "Agree" sets both PrivacyAgreed and IsTelemetryEnabled to true and initialises Sentry immediately; choosing "Decline" leaves PrivacyAgreed as false and exits the app. |
| Later launches | Sentry is initialised only when IsTelemetryEnabled is true. |
Both fields live in Config/Settings.json (see the configuration file) and default to false. A change takes effect only after you restart the app; once IsTelemetryEnabled is set to false and the app restarted, the Sentry client is closed and no further data is sent.
2. What is collected
| Category | Details |
|---|---|
| Crashes and errors | Exception type, message and stack trace, plus the operation tag of whatever failed (for example plugin.load, api.nodes.status) |
| Device information | Device unique identifier (used as the Sentry user ID), operating system version, application version |
| Account information | Username and e-mail address after a successful sign-in |
| Sessions and performance | Session start/end (automatic session tracking), performance transactions sampled at 30% in Release builds, and the latency of some network calls |
| Usage behaviour | Breadcrumb events such as page views and user actions, for example plugin.install, plugin.enable, plugin.market.refresh |
3. What is not collected
Telemetry never includes:
- Account passwords or sign-in tokens
- Tunnel configuration contents or traffic data
- DNS provider credentials (credentials are kept only in local encrypted storage and are never written to logs or telemetry)
4. Storage and third parties
Telemetry data is processed by Sentry (Functional Software, Inc.) on servers located in the European Union. Retention follows Sentry's standard data retention policy; see the Sentry privacy policy for details.
5. Plugins and telemetry
Key plugin operations also produce telemetry:
| Instrumentation | When it fires |
|---|---|
plugin.load / plugin.reload | Plugin loaded / hot-reloaded |
plugin.enable / plugin.disable | Plugin enabled / disabled |
plugin.install / plugin.uninstall | Plugin installed / uninstalled |
plugin.trigger:<event name> | Reported as an error tag when a plugin action throws |
Plugin action logs and exception messages should therefore never contain sensitive data. If you do not want this data reported, leave telemetry switched off.