fix: persist telemetry banner dismissal state across VSCode restarts

- Changed banner dismissal to set telemetry to "disabled" instead of "enabled"
- Fixed backend to properly handle "unset" state when checking previous opt-in status
- Ensures telemetry setting is always persisted when user dismisses the banner

Fixes #9184
This commit is contained in:
Roo Code 2025-11-12 02:14:22 +00:00
parent 69d4efc335
commit ad4e33bee7
2 changed files with 4 additions and 3 deletions

View file

@ -2367,13 +2367,13 @@ export const webviewMessageHandler = async (
const telemetrySetting = message.text as TelemetrySetting
const previousSetting = getGlobalState("telemetrySetting") || "unset"
const isOptedIn = telemetrySetting !== "disabled"
const wasPreviouslyOptedIn = previousSetting !== "disabled"
const wasPreviouslyOptedIn = previousSetting !== "disabled" && previousSetting !== "unset"
// If turning telemetry OFF, fire event BEFORE disabling
if (wasPreviouslyOptedIn && !isOptedIn && TelemetryService.hasInstance()) {
TelemetryService.instance.captureTelemetrySettingsChanged(previousSetting, telemetrySetting)
}
// Update the telemetry state
// Update the telemetry state - always persist the setting
await updateGlobalState("telemetrySetting", telemetrySetting)
if (TelemetryService.hasInstance()) {
TelemetryService.instance.updateTelemetryState(isOptedIn)

View file

@ -13,7 +13,8 @@ const TelemetryBanner = () => {
const handleClose = () => {
setIsDismissed(true)
vscode.postMessage({ type: "telemetrySetting", text: "enabled" satisfies TelemetrySetting })
// When user dismisses the banner without making a choice, default to disabled
vscode.postMessage({ type: "telemetrySetting", text: "disabled" satisfies TelemetrySetting })
}
const handleOpenSettings = () => {