|
| 1 | +# Global Telemetry Properties |
| 2 | + |
| 3 | +This document describes the common properties that are automatically included with telemetry events across the Uno Platform ecosystem. |
| 4 | + |
| 5 | +## Common Global Properties |
| 6 | + |
| 7 | +These properties are included with most telemetry events across all Uno Platform components: |
| 8 | + |
| 9 | +### System Information |
| 10 | + |
| 11 | +| Property | Type | Description | |
| 12 | +|----------|------|-------------| |
| 13 | +| `Timestamp` | DateTime | UTC timestamp when the event occurred | |
| 14 | +| `OS` | String | Operating system name (Windows, macOS, Linux, Android, iOS) | |
| 15 | +| `OSVersion` | String | Operating system version | |
| 16 | +| `OSArchitecture` | String | System architecture (x64, x86, ARM, ARM64) | |
| 17 | +| `KernelVersion` | String | Operating system kernel version | |
| 18 | + |
| 19 | +### Environment Information |
| 20 | + |
| 21 | +| Property | Type | Description | |
| 22 | +|----------|------|-------------| |
| 23 | +| `Culture` | String | Current system culture (e.g., en-US, fr-FR) | |
| 24 | +| `IsCI` | Boolean | Whether running in a CI environment | |
| 25 | +| `CIProvider` | String | CI provider name (Travis, Azure DevOps, AppVeyor, Jenkins, GitHub Actions, BitBucket, BuildKite, CodeBuild, Drone, MyGet, Space, TeamCity) | |
| 26 | + |
| 27 | +### Uno Platform Version Information |
| 28 | + |
| 29 | +| Property | Type | Description | |
| 30 | +|----------|------|-------------| |
| 31 | +| `UnoVersion` | String | Uno Platform package version | |
| 32 | +| `UnoPlatformVersion` | String | Uno Platform SDK version | |
| 33 | +| `TargetFramework` | String | Target framework (e.g., net10.0, net9.0-android, net10.0-ios) | |
| 34 | +| `TargetFrameworks` | Array | All target frameworks in multi-targeted projects | |
| 35 | + |
| 36 | +### IDE and Tooling Properties |
| 37 | + |
| 38 | +| Property | Type | Description | |
| 39 | +|----------|------|-------------| |
| 40 | +| `IDE` | String | IDE being used (visualstudio, vscode, rider) | |
| 41 | +| `IDEVersion` | String | Version of the IDE | |
| 42 | +| `PluginVersion` | String | Version of the Uno Platform IDE extension/plugin | |
| 43 | + |
| 44 | +### Application Information |
| 45 | + |
| 46 | +| Property | Type | Description | |
| 47 | +|----------|------|-------------| |
| 48 | +| `SessionId` | GUID | Unique identifier for the current session | |
| 49 | +| `UserId` | String | Anonymous, hashed user identifier (SHA256 of MAC address or stable token) | |
| 50 | +| `MachineId` | String | Hashed (SHA256) MAC address for anonymous machine identification | |
| 51 | + |
| 52 | +### Build and Project Information |
| 53 | + |
| 54 | +| Property | Type | Description | |
| 55 | +|----------|------|-------------| |
| 56 | +| `ProjectType` | String | Type of project (app, library, test) | |
| 57 | +| `IsDebug` | Boolean | Whether this is a debug build | |
| 58 | +| `WorkingDirectory` | String | Hashed (SHA256) working directory path | |
| 59 | + |
| 60 | +## Component-Specific Properties |
| 61 | + |
| 62 | +Different Uno Platform components may include additional automatic properties: |
| 63 | + |
| 64 | +### IDE Extensions |
| 65 | + |
| 66 | +| Component | Automatic Properties | |
| 67 | +|-----------|---------------------| |
| 68 | +| **VS Code** | `IDE` (always "vscode"), `PluginVersion` | |
| 69 | +| **Rider** | `IDE` (always "rider"), `IDEVersion`, `PluginVersion` | |
| 70 | +| **Visual Studio** | `IDE` (always "visualstudio"), `IDEVersion`, `PluginVersion` | |
| 71 | + |
| 72 | +### Hot Design |
| 73 | + |
| 74 | +| Property | Description | |
| 75 | +|----------|-------------| |
| 76 | +| `SessionDuration` | Duration since Hot Design server session started (ms) | |
| 77 | +| `UsageEvent` | Name of the client event being forwarded | |
| 78 | + |
| 79 | +### Dev Server |
| 80 | + |
| 81 | +| Property | Description | |
| 82 | +|----------|-------------| |
| 83 | +| `SessionType` | "Root" (DevServer process) or "Connection" (client connection) | |
| 84 | +| `ConnectionId` | Unique connection identifier | |
| 85 | +| `SolutionPath` | Path to solution being served (optional) | |
| 86 | + |
| 87 | +### App MCP |
| 88 | + |
| 89 | +| Property | Description | |
| 90 | +|----------|-------------| |
| 91 | +| `AgentType` | Type of agent (Claude, Copilot, Codex, etc.) | |
| 92 | +| `AppPlatform` | Platform of running app (WebAssembly, iOS, Android, Windows, etc.) | |
| 93 | + |
| 94 | +## Privacy and Anonymization |
| 95 | + |
| 96 | +All global properties follow these privacy principles: |
| 97 | + |
| 98 | +### What is Hashed/Anonymized |
| 99 | + |
| 100 | +- **MAC Address**: Hashed with SHA256 to create stable, anonymous machine ID |
| 101 | +- **Working Directory**: Hashed with SHA256 to avoid exposing file paths |
| 102 | +- **User Tokens**: Hashed with SHA256 when used as user identifiers |
| 103 | +- **Stack Traces**: Only exception types are logged, not full stack traces |
| 104 | + |
| 105 | +### What is NOT Collected |
| 106 | + |
| 107 | +- **Personal Information**: No usernames, email addresses, or account names |
| 108 | +- **File Paths**: Only hashed representations |
| 109 | +- **Source Code**: No code content or project-specific information |
| 110 | +- **Credentials**: No passwords, API keys, or tokens |
| 111 | +- **Project Details**: No project names, repository names, or author information |
| 112 | + |
| 113 | +## Application Insights Context |
| 114 | + |
| 115 | +Telemetry is sent to Azure Application Insights with the following standard context properties: |
| 116 | + |
| 117 | +### Cloud Context |
| 118 | + |
| 119 | +| Property | Description | |
| 120 | +|----------|-------------| |
| 121 | +| `cloud.roleInstance` | Instance identifier | |
| 122 | +| `cloud.role` | Component name (uno/hot-design, uno/devserver, etc.) | |
| 123 | + |
| 124 | +### Device Context |
| 125 | + |
| 126 | +| Property | Description | |
| 127 | +|----------|-------------| |
| 128 | +| `device.type` | Device type (Desktop, Mobile, Server) | |
| 129 | +| `device.osVersion` | Operating system version | |
| 130 | +| `device.locale` | System locale | |
| 131 | + |
| 132 | +### Session Context |
| 133 | + |
| 134 | +| Property | Description | |
| 135 | +|----------|-------------| |
| 136 | +| `session.id` | Application Insights session ID | |
| 137 | +| `session.isFirst` | Whether this is the first session | |
| 138 | + |
| 139 | +## Opt-Out |
| 140 | + |
| 141 | +Users can disable telemetry collection globally by setting the environment variable: |
| 142 | + |
| 143 | +```bash |
| 144 | +# On macOS/Linux |
| 145 | +export UNO_PLATFORM_TELEMETRY_OPTOUT=true |
| 146 | + |
| 147 | +# On Windows (PowerShell) |
| 148 | +$env:UNO_PLATFORM_TELEMETRY_OPTOUT = "true" |
| 149 | + |
| 150 | +# On Windows (Command Prompt) |
| 151 | +set UNO_PLATFORM_TELEMETRY_OPTOUT=true |
| 152 | +``` |
| 153 | + |
| 154 | +Or via MSBuild property: |
| 155 | + |
| 156 | +```xml |
| 157 | +<PropertyGroup> |
| 158 | + <UnoPlatformTelemetryOptOut>true</UnoPlatformTelemetryOptOut> |
| 159 | +</PropertyGroup> |
| 160 | +``` |
| 161 | + |
| 162 | +See [Privacy & Compliance](Telemetry-Privacy.md) for more opt-out options specific to different tools. |
| 163 | + |
| 164 | +## Reference |
| 165 | + |
| 166 | +For component-specific telemetry properties, see: |
| 167 | + |
| 168 | +- [Hot Design Telemetry](Telemetry-HotDesign.md) - SessionDuration and usage event properties |
| 169 | +- [AI Features](Telemetry-AIFeatures.md) - Design thread and operation phase properties |
| 170 | +- [Dev Server](Telemetry-DevServer.md) - Session and connection properties |
| 171 | +- [Licensing](Telemetry-Licensing.md) - License-specific properties |
| 172 | +- [IDE Extensions](Telemetry-IDEExtensions.md) - IDE and plugin version properties |
| 173 | +- [App MCP](Telemetry-AppMCP.md) - Agent and platform properties |
0 commit comments