You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Nivo `Responsive*`**: uses `ResizeObserver`— fires once at `0×0`, never re-fires on show
425
+
-**Nivo `Responsive*`**: uses `ResizeObserver`via `useMeasure`/`useDimensions` in `@nivo/core` — initially measures `0×0` when hidden and skips rendering; re-measures and re-renders correctly when container becomes visible, but the initial blank frame can cause a flash
426
426
-**React conditional rendering**: prefer `visibility:hidden` + `position:absolute` over toggling `display:none` if you want charts to stay mounted and pre-rendered
Copy file name to clipboardExpand all lines: docs/docs/reference/security-faq.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,6 +126,23 @@ Or via environment variable:
126
126
export ALTIMATE_TELEMETRY_DISABLED=true
127
127
```
128
128
129
+
### How does Altimate Code identify users for analytics?
130
+
131
+
-**Logged-in users:** Your email is SHA-256 hashed before sending. We never see your raw email.
132
+
-**Anonymous users:** A random UUID (`crypto.randomUUID()`) is generated on first run and stored at `~/.altimate/machine-id`. This is NOT tied to your hardware, OS, or identity — it's purely random.
133
+
-**Both identifiers** are only sent when telemetry is enabled. Disable with `ALTIMATE_TELEMETRY_DISABLED=true`.
134
+
-**No fingerprinting:** We do not use browser fingerprinting, hardware IDs, MAC addresses, or IP-based tracking.
135
+
136
+
### What happens on first launch?
137
+
138
+
A single `first_launch` event is sent containing only:
139
+
140
+
- The installed version (e.g., "0.5.9")
141
+
- Whether this is a fresh install or upgrade (boolean)
142
+
- Your anonymous machine ID (random UUID)
143
+
144
+
No code, queries, file paths, or personal information is included. This event helps us understand adoption and is fully opt-out-able.
145
+
129
146
## What happens when I authenticate via a well-known URL?
130
147
131
148
When you run `altimate auth login <url>`, the CLI fetches `<url>/.well-known/altimate-code` to discover the server's auth command. Before executing anything:
Copy file name to clipboardExpand all lines: docs/docs/reference/telemetry.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,7 @@ We collect the following categories of events:
36
36
|`skill_used`| A skill is loaded (skill name and source — `builtin`, `global`, or `project` — no skill content) |
37
37
|`sql_execute_failure`| A SQL execution fails (warehouse type, query type, error message, PII-masked SQL — no raw values) |
38
38
|`core_failure`| An internal tool error occurs (tool name, category, error class, truncated error message, PII-safe input signature, and optionally masked arguments — no raw values or credentials) |
39
+
|`first_launch`| Fired once on first CLI run after installation. Contains version and is_upgrade flag. No PII. |
39
40
40
41
Each event includes a timestamp, anonymous session ID, CLI version, and an anonymous machine ID (a random UUID stored in `~/.altimate/machine-id`, generated once and never tied to any personal information).
41
42
@@ -88,6 +89,19 @@ We take your privacy seriously. Altimate Code telemetry **never** collects:
88
89
89
90
Error messages are truncated to 500 characters and scrubbed of file paths before sending.
90
91
92
+
### New User Identification
93
+
94
+
Altimate Code uses two types of anonymous identifiers for analytics, depending on whether you are logged in:
95
+
96
+
-**Anonymous users (not logged in):** A random UUID is generated using `crypto.randomUUID()` on first run and stored at `~/.altimate/machine-id`. This ID is not tied to your hardware, operating system, or identity — it is purely random and serves only to distinguish one machine from another in aggregate analytics.
97
+
-**Logged-in users (OAuth):** Your email address is SHA-256 hashed before sending. The raw email is never transmitted.
98
+
99
+
Both identifiers are only sent when telemetry is enabled. Disable telemetry entirely with `ALTIMATE_TELEMETRY_DISABLED=true` or the config option above.
100
+
101
+
### Data Retention
102
+
103
+
Telemetry data is sent to Azure Application Insights and retained according to [Microsoft's data retention policies](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/data-retention-configure). We do not maintain a separate data store. To request deletion of your telemetry data, contact privacy@altimate.ai.
104
+
91
105
## Network
92
106
93
107
Telemetry data is sent to Azure Application Insights:
0 commit comments