Skip to content

Telemetry: track auto-install-of-updates (autoInstallUpdates) setting so adoption is measurable #1220

Description

@Kosinkadink

Summary

We have no reliable way to measure how many users have auto-install of desktop updates (autoInstallUpdates) enabled vs disabled. The setting's current state is not emitted as a person property or on any session/boot event, so it cannot be queried directly in PostHog. We should track it definitively.

Why it's currently un-measurable

  • The autoInstallUpdates toggle is a Global Settings field. Toggling it routes through comfy-titlepopup:global-settings-update-fieldapplySettingSet() in src/main/lib/ipc/registerSettingsHandlers.ts, which runs side-effects and broadcasts the settings-changed IPC but emits no PostHog event.
  • The comfy.desktop.settings.changed telemetry event is only emitted from the per-ComfyUI-instance settings panel (src/renderer/src/lib/.../useComfyUISettings.tsemitTelemetryAction('comfy.desktop.settings.changed', { setting_key, value_kind, bool_value })). It never fires for the desktop auto-update toggle. As a result, a query filtering setting_key = 'autoInstallUpdates' returns nothing.
  • The cohort person-properties registered at boot in src/renderer/src/lib/rendererBootstrap.ts (registerCohortContext) include app_version, app_channel, local_installation_count, has_launched_cloud, etc. — but not the auto-update setting.
  • Net result: there is no person property and no session event that reports the current autoInstallUpdates state. Adoption of the setting is invisible.

What exists today (partial / behavioral only)

The only related signals are emitted from src/main/lib/updater.ts and reflect isAutoInstallEnabled() at the moment an update is detected/triggered, not the general population:

  • comfy.desktop.app_update.availableauto_update_setting: 'on' | 'off'
  • comfy.desktop.app_update.install_triggeredauto_update_setting: 'on' | 'off'

These only cover users who actually received an update-available / triggered an install in the window, so they undercount and are biased toward out-of-date users. They are not a substitute for a population-wide state.

Proposed fix

Register the current setting as a PostHog person property at boot (and re-register on change) so adoption is queryable across the whole base:

  • Add auto_install_updates: settings.get('autoInstallUpdates') !== false (and likely install_updates_on_startup) to the cohort registered in registerCohortContext (rendererBootstrap.ts), via registerTelemetryProperties → person $set.
  • Re-emit the person property when the setting changes — hook applySettingSet() / updater.notifyAutoUpdateChanged() in registerSettingsHandlers.ts so the value stays current without waiting for the next boot.

Once shipped, the on/off split is a trivial argMax(person.properties.auto_install_updates, timestamp) per person_id.

Acceptance criteria

  • auto_install_updates (and install_updates_on_startup) are present as person properties on PostHog for v-next clients.
  • Property updates immediately when the user toggles the setting (not just on next boot).
  • A PostHog query can report the on/off split and percentage across all active users.

Notes

Default is on (autoInstallUpdates !== false; auto-checks/installs enabled unless opted out), so until this lands the practical proxy is "users whose latest app_update.available.auto_update_setting is off" = explicit opt-outs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions