From 9182b1a85af8017a9b1ffa443c212953f0eae2cc Mon Sep 17 00:00:00 2001 From: Arjan Singh <1598641+arjansingh@users.noreply.github.com> Date: Sat, 1 Nov 2025 16:18:48 -0700 Subject: [PATCH] [rh-test] Telemetry Backports (#6522) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Resolves issues with #6503 ## Changes - Backport #6400 - Fix circular dependency issue - Backport #6505 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6522-rh-test-Telemetry-Backports-29e6d73d365081258d10c08299bde69b) by [Unito](https://www.unito.io) --------- Co-authored-by: Christian Byrne Co-authored-by: Christian Byrne Co-authored-by: Claude --- .../ComfyRunButton/ComfyQueueButton.vue | 4 +- .../dialog/content/ErrorDialogContent.vue | 7 + .../content/credit/CreditTopUpOption.vue | 7 +- .../dialog/content/setting/CreditsPanel.vue | 7 + .../helpcenter/HelpCenterMenuContent.vue | 36 +- src/components/searchbox/NodeSearchBox.vue | 25 +- src/composables/useCoreCommands.ts | 48 +- src/composables/useTemplateFiltering.ts | 36 +- .../components/SubscribeButton.vue | 2 + .../composables/useSubscriptionActions.ts | 10 + .../cloud/MixpanelTelemetryProvider.ts | 113 ++- src/platform/telemetry/types.ts | 71 +- .../__tests__/surveyNormalization.test.ts | 682 ++++++++++++++++++ .../telemetry/utils/computeNodeMetrics.ts | 84 +++ .../telemetry/utils/surveyNormalization.ts | 606 ++++++++++++++++ src/scripts/app.ts | 4 + src/utils/graphTraversalUtil.ts | 21 + src/views/GraphView.vue | 81 +++ .../useSubscriptionActions.test.ts | 14 +- tests-ui/tests/store/subgraphStore.test.ts | 5 + 20 files changed, 1784 insertions(+), 79 deletions(-) create mode 100644 src/platform/telemetry/utils/__tests__/surveyNormalization.test.ts create mode 100644 src/platform/telemetry/utils/computeNodeMetrics.ts create mode 100644 src/platform/telemetry/utils/surveyNormalization.ts diff --git a/src/components/actionbar/ComfyRunButton/ComfyQueueButton.vue b/src/components/actionbar/ComfyRunButton/ComfyQueueButton.vue index a6359763e..cba25fc5a 100644 --- a/src/components/actionbar/ComfyRunButton/ComfyQueueButton.vue +++ b/src/components/actionbar/ComfyRunButton/ComfyQueueButton.vue @@ -158,9 +158,7 @@ const queuePrompt = async (e: Event) => { ? 'Comfy.QueuePromptFront' : 'Comfy.QueuePrompt' - if (isCloud) { - useTelemetry()?.trackRunButton({ subscribe_to_run: false }) - } + useTelemetry()?.trackRunButton({ subscribe_to_run: false }) await commandStore.execute(commandId) } diff --git a/src/components/dialog/content/ErrorDialogContent.vue b/src/components/dialog/content/ErrorDialogContent.vue index 97b0a18d3..7b08cbe1b 100644 --- a/src/components/dialog/content/ErrorDialogContent.vue +++ b/src/components/dialog/content/ErrorDialogContent.vue @@ -61,6 +61,7 @@ import { useI18n } from 'vue-i18n' import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue' import FindIssueButton from '@/components/dialog/content/error/FindIssueButton.vue' import { useCopyToClipboard } from '@/composables/useCopyToClipboard' +import { useTelemetry } from '@/platform/telemetry' import { api } from '@/scripts/api' import { app } from '@/scripts/app' import { useCommandStore } from '@/stores/commandStore' @@ -92,12 +93,18 @@ const showReport = () => { const toast = useToast() const { t } = useI18n() const systemStatsStore = useSystemStatsStore() +const telemetry = useTelemetry() const title = computed( () => error.nodeType ?? error.exceptionType ?? t('errorDialog.defaultTitle') ) const showContactSupport = async () => { + telemetry?.trackHelpResourceClicked({ + resource_type: 'help_feedback', + is_external: true, + source: 'error_dialog' + }) await useCommandStore().execute('Comfy.ContactSupport') } diff --git a/src/components/dialog/content/credit/CreditTopUpOption.vue b/src/components/dialog/content/credit/CreditTopUpOption.vue index 402df3ac0..f134aba5e 100644 --- a/src/components/dialog/content/credit/CreditTopUpOption.vue +++ b/src/components/dialog/content/credit/CreditTopUpOption.vue @@ -43,8 +43,10 @@ import Tag from 'primevue/tag' import { onBeforeUnmount, ref } from 'vue' import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions' +import { useTelemetry } from '@/platform/telemetry' const authActions = useFirebaseAuthActions() +const telemetry = useTelemetry() const { amount, @@ -61,8 +63,11 @@ const didClickBuyNow = ref(false) const loading = ref(false) const handleBuyNow = async () => { + const creditAmount = editable ? customAmount.value : amount + telemetry?.trackApiCreditTopupButtonPurchaseClicked(creditAmount) + loading.value = true - await authActions.purchaseCredits(editable ? customAmount.value : amount) + await authActions.purchaseCredits(creditAmount) loading.value = false didClickBuyNow.value = true } diff --git a/src/components/dialog/content/setting/CreditsPanel.vue b/src/components/dialog/content/setting/CreditsPanel.vue index 0e8ae20a2..378675b1d 100644 --- a/src/components/dialog/content/setting/CreditsPanel.vue +++ b/src/components/dialog/content/setting/CreditsPanel.vue @@ -123,6 +123,7 @@ import { computed, ref, watch } from 'vue' import UserCredit from '@/components/common/UserCredit.vue' import UsageLogsTable from '@/components/dialog/content/setting/UsageLogsTable.vue' import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions' +import { useTelemetry } from '@/platform/telemetry' import { useDialogService } from '@/services/dialogService' import { useCommandStore } from '@/stores/commandStore' import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' @@ -139,6 +140,7 @@ const dialogService = useDialogService() const authStore = useFirebaseAuthStore() const authActions = useFirebaseAuthActions() const commandStore = useCommandStore() +const telemetry = useTelemetry() const loading = computed(() => authStore.loading) const balanceLoading = computed(() => authStore.isFetchingBalance) @@ -168,6 +170,11 @@ const handleCreditsHistoryClick = async () => { } const handleMessageSupport = async () => { + telemetry?.trackHelpResourceClicked({ + resource_type: 'help_feedback', + is_external: true, + source: 'credits_panel' + }) await commandStore.execute('Comfy.ContactSupport') } diff --git a/src/components/helpcenter/HelpCenterMenuContent.vue b/src/components/helpcenter/HelpCenterMenuContent.vue index bfa1cbc96..c069cea17 100644 --- a/src/components/helpcenter/HelpCenterMenuContent.vue +++ b/src/components/helpcenter/HelpCenterMenuContent.vue @@ -130,13 +130,14 @@