mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 19:09:52 +00:00
Add telemetry for entering linear mode (#8263)
Standard disclaimer: Telemetry only applies on cloud builds ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8263-Add-telemetry-for-entering-linear-mode-2f16d73d3650819ea53efeeb562ea095) by [Unito](https://www.unito.io)
This commit is contained in:
@@ -5,6 +5,11 @@ import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
|||||||
import { useCommandStore } from '@/stores/commandStore'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
|
|
||||||
const canvasStore = useCanvasStore()
|
const canvasStore = useCanvasStore()
|
||||||
|
function toggleLinearMode() {
|
||||||
|
useCommandStore().execute('Comfy.ToggleLinear', {
|
||||||
|
metadata: { source: 'button' }
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="p-1 bg-secondary-background rounded-lg w-10">
|
<div class="p-1 bg-secondary-background rounded-lg w-10">
|
||||||
@@ -12,7 +17,7 @@ const canvasStore = useCanvasStore()
|
|||||||
size="icon"
|
size="icon"
|
||||||
:title="t('linearMode.linearMode')"
|
:title="t('linearMode.linearMode')"
|
||||||
:variant="canvasStore.linearMode ? 'inverted' : 'secondary'"
|
:variant="canvasStore.linearMode ? 'inverted' : 'secondary'"
|
||||||
@click="useCommandStore().execute('Comfy.ToggleLinear')"
|
@click="toggleLinearMode"
|
||||||
>
|
>
|
||||||
<i class="icon-[lucide--panels-top-left]" />
|
<i class="icon-[lucide--panels-top-left]" />
|
||||||
</Button>
|
</Button>
|
||||||
@@ -20,7 +25,7 @@ const canvasStore = useCanvasStore()
|
|||||||
size="icon"
|
size="icon"
|
||||||
:title="t('linearMode.graphMode')"
|
:title="t('linearMode.graphMode')"
|
||||||
:variant="canvasStore.linearMode ? 'secondary' : 'inverted'"
|
:variant="canvasStore.linearMode ? 'secondary' : 'inverted'"
|
||||||
@click="useCommandStore().execute('Comfy.ToggleLinear')"
|
@click="toggleLinearMode"
|
||||||
>
|
>
|
||||||
<i class="icon-[comfy--workflow]" />
|
<i class="icon-[comfy--workflow]" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -1235,8 +1235,11 @@ export function useCoreCommands(): ComfyCommand[] {
|
|||||||
id: 'Comfy.ToggleLinear',
|
id: 'Comfy.ToggleLinear',
|
||||||
icon: 'pi pi-database',
|
icon: 'pi pi-database',
|
||||||
label: 'Toggle Simple Mode',
|
label: 'Toggle Simple Mode',
|
||||||
function: () => {
|
function: (metadata?: Record<string, unknown>) => {
|
||||||
|
const source =
|
||||||
|
typeof metadata?.source === 'string' ? metadata.source : 'keybind'
|
||||||
const newMode = !canvasStore.linearMode
|
const newMode = !canvasStore.linearMode
|
||||||
|
if (newMode) useTelemetry()?.trackEnterLinear({ source })
|
||||||
app.rootGraph.extra.linearMode = newMode
|
app.rootGraph.extra.linearMode = newMode
|
||||||
workflowStore.activeWorkflow?.changeTracker?.checkState()
|
workflowStore.activeWorkflow?.changeTracker?.checkState()
|
||||||
canvasStore.linearMode = newMode
|
canvasStore.linearMode = newMode
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { reduceAllNodes } from '@/utils/graphTraversalUtil'
|
|||||||
import type {
|
import type {
|
||||||
AuthMetadata,
|
AuthMetadata,
|
||||||
CreditTopupMetadata,
|
CreditTopupMetadata,
|
||||||
|
EnterLinearMetadata,
|
||||||
ExecutionContext,
|
ExecutionContext,
|
||||||
ExecutionTriggerSource,
|
ExecutionTriggerSource,
|
||||||
ExecutionErrorMetadata,
|
ExecutionErrorMetadata,
|
||||||
@@ -354,6 +355,10 @@ export class MixpanelTelemetryProvider implements TelemetryProvider {
|
|||||||
this.trackEvent(TelemetryEvents.WORKFLOW_OPENED, metadata)
|
this.trackEvent(TelemetryEvents.WORKFLOW_OPENED, metadata)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trackEnterLinear(metadata: EnterLinearMetadata): void {
|
||||||
|
this.trackEvent(TelemetryEvents.ENTER_LINEAR_MODE, metadata)
|
||||||
|
}
|
||||||
|
|
||||||
trackPageVisibilityChanged(metadata: PageVisibilityMetadata): void {
|
trackPageVisibilityChanged(metadata: PageVisibilityMetadata): void {
|
||||||
this.trackEvent(TelemetryEvents.PAGE_VISIBILITY_CHANGED, metadata)
|
this.trackEvent(TelemetryEvents.PAGE_VISIBILITY_CHANGED, metadata)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ export interface WorkflowImportMetadata {
|
|||||||
open_source?: 'file_button' | 'file_drop' | 'template' | 'unknown'
|
open_source?: 'file_button' | 'file_drop' | 'template' | 'unknown'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface EnterLinearMetadata {
|
||||||
|
source?: string
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Workflow open metadata
|
* Workflow open metadata
|
||||||
*/
|
*/
|
||||||
@@ -297,6 +301,7 @@ export interface TelemetryProvider {
|
|||||||
// Workflow management events
|
// Workflow management events
|
||||||
trackWorkflowImported(metadata: WorkflowImportMetadata): void
|
trackWorkflowImported(metadata: WorkflowImportMetadata): void
|
||||||
trackWorkflowOpened(metadata: WorkflowImportMetadata): void
|
trackWorkflowOpened(metadata: WorkflowImportMetadata): void
|
||||||
|
trackEnterLinear(metadata: EnterLinearMetadata): void
|
||||||
|
|
||||||
// Page visibility events
|
// Page visibility events
|
||||||
trackPageVisibilityChanged(metadata: PageVisibilityMetadata): void
|
trackPageVisibilityChanged(metadata: PageVisibilityMetadata): void
|
||||||
@@ -372,6 +377,7 @@ export const TelemetryEvents = {
|
|||||||
// Workflow Management
|
// Workflow Management
|
||||||
WORKFLOW_IMPORTED: 'app:workflow_imported',
|
WORKFLOW_IMPORTED: 'app:workflow_imported',
|
||||||
WORKFLOW_OPENED: 'app:workflow_opened',
|
WORKFLOW_OPENED: 'app:workflow_opened',
|
||||||
|
ENTER_LINEAR_MODE: 'app:toggle_linear_mode',
|
||||||
|
|
||||||
// Page Visibility
|
// Page Visibility
|
||||||
PAGE_VISIBILITY_CHANGED: 'app:page_visibility_changed',
|
PAGE_VISIBILITY_CHANGED: 'app:page_visibility_changed',
|
||||||
@@ -441,3 +447,4 @@ export type TelemetryEventProperties =
|
|||||||
| HelpResourceClickedMetadata
|
| HelpResourceClickedMetadata
|
||||||
| HelpCenterClosedMetadata
|
| HelpCenterClosedMetadata
|
||||||
| WorkflowCreatedMetadata
|
| WorkflowCreatedMetadata
|
||||||
|
| EnterLinearMetadata
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
ComfyWorkflow,
|
ComfyWorkflow,
|
||||||
useWorkflowStore
|
useWorkflowStore
|
||||||
} from '@/platform/workflow/management/stores/workflowStore'
|
} from '@/platform/workflow/management/stores/workflowStore'
|
||||||
|
import { useTelemetry } from '@/platform/telemetry'
|
||||||
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
|
import type { ComfyWorkflowJSON } from '@/platform/workflow/validation/schemas/workflowSchema'
|
||||||
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
||||||
import { useWorkflowThumbnail } from '@/renderer/core/thumbnail/useWorkflowThumbnail'
|
import { useWorkflowThumbnail } from '@/renderer/core/thumbnail/useWorkflowThumbnail'
|
||||||
@@ -315,8 +316,11 @@ export const useWorkflowService = () => {
|
|||||||
if (
|
if (
|
||||||
workflowData.extra?.linearMode !== undefined ||
|
workflowData.extra?.linearMode !== undefined ||
|
||||||
!workflowData.nodes.length
|
!workflowData.nodes.length
|
||||||
)
|
) {
|
||||||
|
if (workflowData.extra?.linearMode && !useCanvasStore().linearMode)
|
||||||
|
useTelemetry()?.trackEnterLinear({ source: 'workflow' })
|
||||||
useCanvasStore().linearMode = !!workflowData.extra?.linearMode
|
useCanvasStore().linearMode = !!workflowData.extra?.linearMode
|
||||||
|
}
|
||||||
|
|
||||||
if (value === null || typeof value === 'string') {
|
if (value === null || typeof value === 'string') {
|
||||||
const path = value as string | null
|
const path = value as string | null
|
||||||
|
|||||||
Reference in New Issue
Block a user