| author | |
| committer | |
| log | 78c9fcaafcbee9e2b941d8b0129a9f968373c6b2 |
| tree | 7bd9ab85d18d90afa871dbe5699fc902f72428d2 |
| parent | 3dfe373fddb966101371805b0b102ae5af75b15b |
| signature | Signed by PGP key B5690EEEBB952194 |
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>5 files changed, 14 insertions(+), 0 deletions(-)
apps/desktop/src/backend/DesktopBackendConfiguration.test.ts+5| ... | ... | @@ -979,9 +979,11 @@ describe("DesktopBackendConfiguration", () => { |
| 979 | 979 | |
| 980 | 980 | const previousWslEnv = process.env.WSLENV; |
| 981 | 981 | const previousDisabled = process.env.OTEL_SDK_DISABLED; |
| 982 | const previousTelemetry = process.env.T3CODE_TELEMETRY_ENABLED; | |
| 982 | 983 | try { |
| 983 | 984 | delete process.env.WSLENV; |
| 984 | 985 | process.env.OTEL_SDK_DISABLED = "true"; |
| 986 | process.env.T3CODE_TELEMETRY_ENABLED = "false"; | |
| 985 | 987 | |
| 986 | 988 | yield* Effect.gen(function* () { |
| 987 | 989 | const configuration = yield* DesktopBackendConfiguration.DesktopBackendConfiguration; |
| ... | ... | @@ -989,6 +991,8 @@ describe("DesktopBackendConfiguration", () => { |
| 989 | 991 | |
| 990 | 992 | assert.equal(config.env.OTEL_SDK_DISABLED, "true"); |
| 991 | 993 | assert.include((config.env.WSLENV ?? "").split(":"), "OTEL_SDK_DISABLED"); |
| 994 | assert.equal(config.env.T3CODE_TELEMETRY_ENABLED, "false"); | |
| 995 | assert.include((config.env.WSLENV ?? "").split(":"), "T3CODE_TELEMETRY_ENABLED"); | |
| 992 | 996 | }).pipe( |
| 993 | 997 | Effect.provide( |
| 994 | 998 | DesktopBackendConfiguration.layer.pipe( |
| ... | ... | @@ -1009,6 +1013,7 @@ describe("DesktopBackendConfiguration", () => { |
| 1009 | 1013 | } finally { |
| 1010 | 1014 | restoreEnv("WSLENV", previousWslEnv); |
| 1011 | 1015 | restoreEnv("OTEL_SDK_DISABLED", previousDisabled); |
| 1016 | restoreEnv("T3CODE_TELEMETRY_ENABLED", previousTelemetry); | |
| 1012 | 1017 | } |
| 1013 | 1018 | }).pipe(Effect.scoped, Effect.provide(NodeServices.layer)), |
| 1014 | 1019 | ); |
apps/desktop/src/backend/DesktopBackendConfiguration.ts+1| ... | ... | @@ -101,6 +101,7 @@ const DESKTOP_BACKEND_ENV_NAMES = [ |
| 101 | 101 | const WSL_FORWARDED_ENV_NAMES = [ |
| 102 | 102 | "OPENAI_API_KEY", |
| 103 | 103 | "ANTHROPIC_API_KEY", |
| 104 | "T3CODE_TELEMETRY_ENABLED", | |
| 104 | 105 | // Otherwise the WSL server keeps exporting to endpoints from the bootstrap. |
| 105 | 106 | "T3CODE_OTEL_SDK_DISABLED", |
| 106 | 107 | "OTEL_SDK_DISABLED", |
apps/desktop/src/shell/DesktopShellEnvironment.test.ts+2| ... | ... | @@ -268,11 +268,13 @@ describe("DesktopShellEnvironment", () => { |
| 268 | 268 | envOutput({ |
| 269 | 269 | PATH: "/home/linuxbrew/.linuxbrew/bin:/usr/bin", |
| 270 | 270 | SSH_AUTH_SOCK: "/tmp/secretive.sock", |
| 271 | T3CODE_TELEMETRY_ENABLED: "false", | |
| 271 | 272 | }), |
| 272 | 273 | }); |
| 273 | 274 | |
| 274 | 275 | assert.equal(env.PATH, "/home/linuxbrew/.linuxbrew/bin:/usr/bin"); |
| 275 | 276 | assert.equal(env.SSH_AUTH_SOCK, "/tmp/secretive.sock"); |
| 277 | assert.equal(env.T3CODE_TELEMETRY_ENABLED, "false"); | |
| 276 | 278 | }), |
| 277 | 279 | ); |
| 278 | 280 |
apps/desktop/src/shell/DesktopShellEnvironment.ts+3| ... | ... | @@ -85,6 +85,7 @@ const LOGIN_SHELL_ENV_NAMES = [ |
| 85 | 85 | "XDG_SESSION_DESKTOP", |
| 86 | 86 | "XDG_SESSION_TYPE", |
| 87 | 87 | "WAYLAND_DISPLAY", |
| 88 | "T3CODE_TELEMETRY_ENABLED", | |
| 88 | 89 | ] as const; |
| 89 | 90 | const WINDOWS_PROFILE_ENV_NAMES = ["PATH", "FNM_DIR", "FNM_MULTISHELL_PATH"] as const; |
| 90 | 91 | const LOCALE_ENV_NAMES = ["LANG", "LC_ALL", "LC_CTYPE"] as const; |
| ... | ... | @@ -450,6 +451,8 @@ const installPosixEnvironment = Effect.fn("desktop.shellEnvironment.installPosix |
| 450 | 451 | "XDG_DATA_HOME", |
| 451 | 452 | "XDG_RUNTIME_DIR", |
| 452 | 453 | "WAYLAND_DISPLAY", |
| 454 | // The telemetry opt-out is documented as a shell variable; GUI launches never see it. | |
| 455 | "T3CODE_TELEMETRY_ENABLED", | |
| 453 | 456 | ] as const) { |
| 454 | 457 | if (!config.env[name] && shellEnvironment[name]) { |
| 455 | 458 | config.env[name] = shellEnvironment[name]; |
docs/user/telemetry.md+3| ... | ... | @@ -9,3 +9,6 @@ raw provider events, or child-agent output. Child-agent token use is excluded fr |
| 9 | 9 | |
| 10 | 10 | To disable collection, set `T3CODE_TELEMETRY_ENABLED=false` in the server's environment before |
| 11 | 11 | starting it. This stops product events from being recorded or sent. |
| 12 | ||
| 13 | The desktop app reads the variable from your shell profile (for example `~/.zshrc`) on macOS and | |
| 14 | Linux, so export it there and restart the app. On Windows, set it as a user environment variable. |