import { logEvent } from 'src/services/analytics/index.js' import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js' import { logError } from '../utils/log.js' import { getSettingsForSource, updateSettingsForSource, } from '../utils/settings/settings.js' /** * Migration: Move user-set autoUpdates preference to settings.json env var * Only migrates if user explicitly disabled auto-updates (not for protection) * This preserves user intent while allowing native installations to auto-update */ export function migrateAutoUpdatesToSettings(): void { const globalConfig = getGlobalConfig() // Only migrate if autoUpdates was explicitly set to false by user preference // (not automatically for native protection) if ( globalConfig.autoUpdates !== false || globalConfig.autoUpdatesProtectedForNative === true ) { return } try { const userSettings = getSettingsForSource('userSettings') || {} // Always set DISABLE_AUTOUPDATER to preserve user intent // We need to overwrite even if it exists, to ensure the migration is complete updateSettingsForSource('userSettings', { ...userSettings, env: { ...userSettings.env, DISABLE_AUTOUPDATER: '1', }, }) logEvent('tengu_migrate_autoupdates_to_settings', { was_user_preference: true, already_had_env_var: !!userSettings.env?.DISABLE_AUTOUPDATER, }) // explicitly set, so this takes effect immediately process.env.DISABLE_AUTOUPDATER = '1' // Remove autoUpdates from global config after successful migration saveGlobalConfig(current => { const { autoUpdates: _, autoUpdatesProtectedForNative: __, ...updatedConfig } = current return updatedConfig }) } catch (error) { logError(new Error(`Failed to migrate auto-updates: ${error}`)) logEvent('tengu_migrate_autoupdates_error', { has_error: true, }) } }