From 5c498348b84fd7fe3718bfab6572c12f280ba57a Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sat, 20 Sep 2025 20:10:51 -0700 Subject: [PATCH 01/18] fix: update to standardized mobile web app meta tag syntax (#5672) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixed WebKit deprecation warning by updating to standardized mobile web app meta tag syntax. ## Changes - **What**: Replaced deprecated `apple-mobile-web-app-capable` with cross-platform [`mobile-web-app-capable`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta/name#mobile-web-app-capable) meta tag to align with WebKit's move toward vendor-neutral standards ## Review Focus Verify "Add to Home Screen" functionality still works on iOS/iPadOS and that the WebKit console warning is resolved in production builds. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5672-fix-update-to-standardized-mobile-web-app-meta-tag-syntax-2736d73d3650811cb2a1f0b14ce0a0e7) by [Unito](https://www.unito.io) --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index de7710c63..8684af476 100644 --- a/index.html +++ b/index.html @@ -8,8 +8,8 @@ - - + + From 295332dc465e3132c80a1af94342ed17de16cc1c Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sat, 20 Sep 2025 20:11:35 -0700 Subject: [PATCH 02/18] update CODEOWNERS (#5667) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add explicit CODEOWNERS for new features to allow more domain-driven review/approval/ownership processes. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5667-update-CODEOWNERS-2736d73d3650817ea52be9c4a8fe5ff2) by [Unito](https://www.unito.io) --- CODEOWNERS | 70 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 8d4e4a90f..cd1b4e508 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,17 +1,61 @@ -# Admins -* @Comfy-Org/comfy_frontend_devs +# Desktop/Electron +/src/types/desktop/ @webfiltered +/src/constants/desktopDialogs.ts @webfiltered +/src/constants/desktopMaintenanceTasks.ts @webfiltered +/src/stores/electronDownloadStore.ts @webfiltered +/src/extensions/core/electronAdapter.ts @webfiltered +/src/views/DesktopDialogView.vue @webfiltered +/src/components/install/ @webfiltered +/src/components/maintenance/ @webfiltered +/vite.electron.config.mts @webfiltered -# Maintainers -*.md @Comfy-Org/comfy_maintainer -/tests-ui/ @Comfy-Org/comfy_maintainer -/browser_tests/ @Comfy-Org/comfy_maintainer -/.env_example @Comfy-Org/comfy_maintainer +# Common UI Components +/src/components/chip/ @viva-jinyi +/src/components/card/ @viva-jinyi +/src/components/button/ @viva-jinyi +/src/components/input/ @viva-jinyi -# Translations (AIGODLIKE team + shinshin86) -/src/locales/ @Yorha4D @KarryCharon @DorotaLuna @shinshin86 @Comfy-Org/comfy_maintainer +# Topbar +/src/components/topbar/ @pythongosssss -# Load 3D extension -/src/extensions/core/load3d.ts @jtydhr88 @Comfy-Org/comfy_frontend_devs +# Thumbnail +/src/renderer/core/thumbnail/ @pythongosssss -# Mask Editor extension -/src/extensions/core/maskeditor.ts @brucew4yn3rp @trsommer @Comfy-Org/comfy_frontend_devs +# Legacy UI +/scripts/ui/ @pythongosssss + +# Link rendering +/src/renderer/core/canvas/links/ @benceruleanlu + +# Node help system +/src/utils/nodeHelpUtil.ts @benceruleanlu +/src/stores/workspace/nodeHelpStore.ts @benceruleanlu +/src/services/nodeHelpService.ts @benceruleanlu + +# Selection toolbox +/src/components/graph/selectionToolbox/ @Myestery + +# Minimap +/src/renderer/extensions/minimap/ @jtydhr88 + +# Assets +/src/platform/assets/ @arjansingh + +# Workflow Templates +/src/platform/workflow/templates/ @Myestery @christian-byrne @comfyui-wiki +/src/components/templates/ @Myestery @christian-byrne @comfyui-wiki + +# Mask Editor +/src/extensions/core/maskeditor.ts @trsommer @brucew4yn3rp +/src/extensions/core/maskEditorLayerFilenames.ts @trsommer @brucew4yn3rp +/src/extensions/core/maskEditorOld.ts @trsommer @brucew4yn3rp + +# 3D +/src/extensions/core/load3d.ts @jtydhr88 +/src/components/load3d/ @jtydhr88 + +# Manager +/src/workbench/extensions/manager/ @viva-jinyi @christian-byrne @ltdrdata + +# Translations +/src/locales/ @Yorha4D @KarryCharon @shinshin86 @Comfy-Org/comfy_maintainer From c4c0e52e642f53c79c7e3c2a687b15c8b2f1b814 Mon Sep 17 00:00:00 2001 From: Alexander Brown Date: Sat, 20 Sep 2025 22:14:30 -0700 Subject: [PATCH 03/18] Refactor: Let LGraphNode handle more events itself (#5709) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Don't route events up through GraphCanvas if the component itself can handle the changes ## Changes - **What**: Reduce the indirect access or action dispatch to composables/stores. ## Review Focus The behavior should be either equivalent or a little snappier than before. Also, the local state in LGraphNode has (almost) all been removed in favor of reacting to the nodeData prop. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5709-Refactor-Let-LGraphNode-handle-more-events-itself-2756d73d365081e6a88ce6241bceecc0) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action --- eslint.config.ts | 6 + src/components/graph/GraphCanvas.vue | 12 -- src/components/graph/SelectionToolbox.vue | 2 +- src/lib/litegraph/src/litegraph.ts | 1 - src/renderer/core/canvas/injectionKeys.ts | 18 --- src/renderer/core/layout/injectionKeys.ts | 30 +--- .../vueNodes/components/LGraphNode.vue | 126 ++++----------- .../vueNodes/components/NodeHeader.vue | 2 - .../vueNodes/components/NodeSlots.vue | 2 - .../composables/useNodeEventHandlers.ts | 1 + .../composables/useVueNodeResizeTracking.ts | 11 +- .../execution/useExecutionStateProvider.ts | 36 ----- .../execution/useNodeExecutionState.ts | 25 ++- .../vueNodes/layout/useNodeLayout.ts | 5 +- .../extensions/vueNodes/lod/useLOD.ts | 5 +- .../vueNodes/preview/useNodePreviewState.ts | 5 +- src/stores/executionStore.ts | 153 +++++++----------- src/types/litegraph-augmentation.d.ts | 2 +- .../vueNodes/components/LGraphNode.spec.ts | 29 +++- 19 files changed, 159 insertions(+), 312 deletions(-) delete mode 100644 src/renderer/core/canvas/injectionKeys.ts delete mode 100644 src/renderer/extensions/vueNodes/execution/useExecutionStateProvider.ts diff --git a/eslint.config.ts b/eslint.config.ts index 3073948f2..04f4b2578 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -77,6 +77,12 @@ export default defineConfig([ '@typescript-eslint/prefer-as-const': 'off', '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-import-type-side-effects': 'error', + '@typescript-eslint/no-empty-object-type': [ + 'error', + { + allowInterfaces: 'always' + } + ], 'unused-imports/no-unused-imports': 'error', 'vue/no-v-html': 'off', // Enforce dark-theme: instead of dark: prefix diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index c5839e1f1..73020bb2e 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -53,9 +53,6 @@ " :zoom-level="canvasStore.canvas?.ds?.scale || 1" :data-node-id="nodeData.id" - @node-click="handleNodeSelect" - @update:collapsed="handleNodeCollapse" - @update:title="handleNodeTitleUpdate" /> @@ -121,8 +118,6 @@ import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteracti import TransformPane from '@/renderer/core/layout/transform/TransformPane.vue' import MiniMap from '@/renderer/extensions/minimap/MiniMap.vue' import VueGraphNode from '@/renderer/extensions/vueNodes/components/LGraphNode.vue' -import { useNodeEventHandlers } from '@/renderer/extensions/vueNodes/composables/useNodeEventHandlers' -import { useExecutionStateProvider } from '@/renderer/extensions/vueNodes/execution/useExecutionStateProvider' import { UnauthorizedError, api } from '@/scripts/api' import { app as comfyApp } from '@/scripts/app' import { ChangeTracker } from '@/scripts/changeTracker' @@ -173,7 +168,6 @@ const { shouldRenderVueNodes } = useVueFeatureFlags() // Vue node system const vueNodeLifecycle = useVueNodeLifecycle() const viewportCulling = useViewportCulling() -const nodeEventHandlers = useNodeEventHandlers() const handleVueNodeLifecycleReset = async () => { if (shouldRenderVueNodes.value) { @@ -204,12 +198,6 @@ const handleTransformUpdate = () => { // TODO: Fix paste position sync in separate PR vueNodeLifecycle.detectChangesInRAF.value() } -const handleNodeSelect = nodeEventHandlers.handleNodeSelect -const handleNodeCollapse = nodeEventHandlers.handleNodeCollapse -const handleNodeTitleUpdate = nodeEventHandlers.handleNodeTitleUpdate - -// Provide execution state to all Vue nodes -useExecutionStateProvider() watchEffect(() => { nodeDefStore.showDeprecated = settingStore.get('Comfy.Node.ShowDeprecated') diff --git a/src/components/graph/SelectionToolbox.vue b/src/components/graph/SelectionToolbox.vue index 067b04346..f0a18ed3e 100644 --- a/src/components/graph/SelectionToolbox.vue +++ b/src/components/graph/SelectionToolbox.vue @@ -11,7 +11,7 @@ :style="`backgroundColor: ${containerStyles.backgroundColor};`" :pt="{ header: 'hidden', - content: 'px-1 py-1 h-10 px-1 flex flex-row gap-1' + content: 'p-1 h-10 flex flex-row gap-1' }" @wheel="canvasInteractions.handleWheel" > diff --git a/src/lib/litegraph/src/litegraph.ts b/src/lib/litegraph/src/litegraph.ts index 46b094af0..098c30e7a 100644 --- a/src/lib/litegraph/src/litegraph.ts +++ b/src/lib/litegraph/src/litegraph.ts @@ -48,7 +48,6 @@ export interface LinkReleaseContextExtended { links: ConnectingLink[] } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface LiteGraphCanvasEvent extends CustomEvent {} export interface LGraphNodeConstructor { diff --git a/src/renderer/core/canvas/injectionKeys.ts b/src/renderer/core/canvas/injectionKeys.ts deleted file mode 100644 index 9c0d25733..000000000 --- a/src/renderer/core/canvas/injectionKeys.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { InjectionKey, Ref } from 'vue' - -import type { NodeProgressState } from '@/schemas/apiSchema' - -/** - * Injection key for providing executing node IDs to Vue node components. - * Contains a reactive Set of currently executing node IDs (as strings). - */ -export const ExecutingNodeIdsKey: InjectionKey>> = - Symbol('executingNodeIds') - -/** - * Injection key for providing node progress states to Vue node components. - * Contains a reactive Record of node IDs to their current progress state. - */ -export const NodeProgressStatesKey: InjectionKey< - Ref> -> = Symbol('nodeProgressStates') diff --git a/src/renderer/core/layout/injectionKeys.ts b/src/renderer/core/layout/injectionKeys.ts index dd6efda21..8e0e0e1d6 100644 --- a/src/renderer/core/layout/injectionKeys.ts +++ b/src/renderer/core/layout/injectionKeys.ts @@ -1,6 +1,6 @@ import type { InjectionKey } from 'vue' -import type { Point } from '@/renderer/core/layout/types' +import type { useTransformState } from '@/renderer/core/layout/transform/useTransformState' /** * Lightweight, injectable transform state used by layout-aware components. @@ -21,29 +21,11 @@ import type { Point } from '@/renderer/core/layout/types' * const state = inject(TransformStateKey)! * const screen = state.canvasToScreen({ x: 100, y: 50 }) */ -interface TransformState { - /** Convert a screen-space point (CSS pixels) to canvas space. */ - screenToCanvas: (p: Point) => Point - /** Convert a canvas-space point to screen space (CSS pixels). */ - canvasToScreen: (p: Point) => Point - /** Current pan/zoom; `x`/`y` are offsets, `z` is scale. */ - camera?: { x: number; y: number; z: number } - /** - * Test whether a node's rectangle intersects the (expanded) viewport. - * Handy for viewport culling and lazy work. - * - * @param nodePos Top-left in canvas space `[x, y]` - * @param nodeSize Size in canvas units `[width, height]` - * @param viewport Screen-space viewport `{ width, height }` - * @param margin Optional fractional margin (e.g. `0.2` = 20%) - */ - isNodeInViewport?: ( - nodePos: ArrayLike, - nodeSize: ArrayLike, - viewport: { width: number; height: number }, - margin?: number - ) => boolean -} +interface TransformState + extends Pick< + ReturnType, + 'screenToCanvas' | 'canvasToScreen' | 'camera' | 'isNodeInViewport' + > {} export const TransformStateKey: InjectionKey = Symbol('transformState') diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index ce318e82e..56a0984fb 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -54,7 +54,7 @@ :lod-level="lodLevel" :collapsed="isCollapsed" @collapse="handleCollapse" - @update:title="handleTitleUpdate" + @update:title="handleHeaderTitleUpdate" @enter-subgraph="handleEnterSubgraph" /> @@ -101,7 +101,6 @@ :node-data="nodeData" :readonly="readonly" :lod-level="lodLevel" - @slot-click="handleSlotClick" /> @@ -140,15 +139,7 @@ diff --git a/src/renderer/extensions/vueNodes/components/NodeHeader.vue b/src/renderer/extensions/vueNodes/components/NodeHeader.vue index 3bd75024c..40b8a7fe0 100644 --- a/src/renderer/extensions/vueNodes/components/NodeHeader.vue +++ b/src/renderer/extensions/vueNodes/components/NodeHeader.vue @@ -63,7 +63,6 @@ import EditableText from '@/components/common/EditableText.vue' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' import { useErrorHandling } from '@/composables/useErrorHandling' import { useNodeTooltips } from '@/renderer/extensions/vueNodes/composables/useNodeTooltips' -import type { LODLevel } from '@/renderer/extensions/vueNodes/lod/useLOD' import { app } from '@/scripts/app' import { getLocatorIdFromNodeData, @@ -73,7 +72,6 @@ import { interface NodeHeaderProps { nodeData?: VueNodeData readonly?: boolean - lodLevel?: LODLevel collapsed?: boolean } diff --git a/src/renderer/extensions/vueNodes/components/NodeSlots.vue b/src/renderer/extensions/vueNodes/components/NodeSlots.vue index 931cacb4d..26187899d 100644 --- a/src/renderer/extensions/vueNodes/components/NodeSlots.vue +++ b/src/renderer/extensions/vueNodes/components/NodeSlots.vue @@ -35,7 +35,6 @@ import { computed, onErrorCaptured, ref } from 'vue' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' import { useErrorHandling } from '@/composables/useErrorHandling' import type { INodeSlot } from '@/lib/litegraph/src/litegraph' -import type { LODLevel } from '@/renderer/extensions/vueNodes/lod/useLOD' import { isSlotObject } from '@/utils/typeGuardUtil' import InputSlot from './InputSlot.vue' @@ -44,7 +43,6 @@ import OutputSlot from './OutputSlot.vue' interface NodeSlotsProps { nodeData?: VueNodeData readonly?: boolean - lodLevel?: LODLevel } const { nodeData = null, readonly } = defineProps() diff --git a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts index 1d090af84..8ed854a0c 100644 --- a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts +++ b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts @@ -82,6 +82,7 @@ function useNodeEventHandlersIndividual() { const currentCollapsed = node.flags?.collapsed ?? false if (currentCollapsed !== collapsed) { node.collapse() + nodeManager.value.scheduleUpdate(nodeId, 'critical') } } diff --git a/src/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking.ts b/src/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking.ts index 4ce9f8e62..e8c38164d 100644 --- a/src/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking.ts +++ b/src/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking.ts @@ -8,7 +8,13 @@ * Supports different element types (nodes, slots, widgets, etc.) with * customizable data attributes and update handlers. */ -import { getCurrentInstance, onMounted, onUnmounted } from 'vue' +import { + type MaybeRefOrGetter, + getCurrentInstance, + onMounted, + onUnmounted, + toValue +} from 'vue' import { useSharedCanvasPositionConversion } from '@/composables/element/useCanvasPositionConversion' import { LiteGraph } from '@/lib/litegraph/src/litegraph' @@ -154,9 +160,10 @@ const resizeObserver = new ResizeObserver((entries) => { * ``` */ export function useVueElementTracking( - appIdentifier: string, + appIdentifierMaybe: MaybeRefOrGetter, trackingType: string ) { + const appIdentifier = toValue(appIdentifierMaybe) onMounted(() => { const element = getCurrentInstance()?.proxy?.$el if (!(element instanceof HTMLElement) || !appIdentifier) return diff --git a/src/renderer/extensions/vueNodes/execution/useExecutionStateProvider.ts b/src/renderer/extensions/vueNodes/execution/useExecutionStateProvider.ts deleted file mode 100644 index aae08298a..000000000 --- a/src/renderer/extensions/vueNodes/execution/useExecutionStateProvider.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { storeToRefs } from 'pinia' -import { computed, provide } from 'vue' - -import { - ExecutingNodeIdsKey, - NodeProgressStatesKey -} from '@/renderer/core/canvas/injectionKeys' -import { useExecutionStore } from '@/stores/executionStore' - -/** - * Composable for providing execution state to Vue node children - * - * This composable sets up the execution state providers that can be injected - * by child Vue nodes using useNodeExecutionState. - * - * Should be used in the parent component that manages Vue nodes (e.g., GraphCanvas). - */ -export const useExecutionStateProvider = () => { - const executionStore = useExecutionStore() - const { executingNodeIds: storeExecutingNodeIds, nodeProgressStates } = - storeToRefs(executionStore) - - // Convert execution store data to the format expected by Vue nodes - const executingNodeIds = computed( - () => new Set(storeExecutingNodeIds.value.map(String)) - ) - - // Provide the execution state to all child Vue nodes - provide(ExecutingNodeIdsKey, executingNodeIds) - provide(NodeProgressStatesKey, nodeProgressStates) - - return { - executingNodeIds, - nodeProgressStates - } -} diff --git a/src/renderer/extensions/vueNodes/execution/useNodeExecutionState.ts b/src/renderer/extensions/vueNodes/execution/useNodeExecutionState.ts index 8f03e29e1..aa4867db9 100644 --- a/src/renderer/extensions/vueNodes/execution/useNodeExecutionState.ts +++ b/src/renderer/extensions/vueNodes/execution/useNodeExecutionState.ts @@ -1,10 +1,7 @@ -import { computed, inject, ref } from 'vue' +import { storeToRefs } from 'pinia' +import { type MaybeRefOrGetter, computed, toValue } from 'vue' -import { - ExecutingNodeIdsKey, - NodeProgressStatesKey -} from '@/renderer/core/canvas/injectionKeys' -import type { NodeProgressState } from '@/schemas/apiSchema' +import { useExecutionStore } from '@/stores/executionStore' /** * Composable for managing execution state of Vue-based nodes @@ -12,18 +9,18 @@ import type { NodeProgressState } from '@/schemas/apiSchema' * Provides reactive access to execution state and progress for a specific node * by injecting execution data from the parent GraphCanvas provider. * - * @param nodeId - The ID of the node to track execution state for + * @param nodeIdMaybe - The ID of the node to track execution state for * @returns Object containing reactive execution state and progress */ -export const useNodeExecutionState = (nodeId: string) => { - const executingNodeIds = inject(ExecutingNodeIdsKey, ref(new Set())) - const nodeProgressStates = inject( - NodeProgressStatesKey, - ref>({}) - ) +export const useNodeExecutionState = ( + nodeIdMaybe: MaybeRefOrGetter +) => { + const nodeId = toValue(nodeIdMaybe) + const { uniqueExecutingNodeIdStrings, nodeProgressStates } = + storeToRefs(useExecutionStore()) const executing = computed(() => { - return executingNodeIds.value.has(nodeId) + return uniqueExecutingNodeIdStrings.value.has(nodeId) }) const progress = computed(() => { diff --git a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts index 3274d342d..515ebb04e 100644 --- a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts +++ b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts @@ -5,7 +5,7 @@ import { storeToRefs } from 'pinia' * Uses customRef for shared write access with Canvas renderer. * Provides dragging functionality and reactive layout state. */ -import { computed, inject } from 'vue' +import { type MaybeRefOrGetter, computed, inject, toValue } from 'vue' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { TransformStateKey } from '@/renderer/core/layout/injectionKeys' @@ -17,7 +17,8 @@ import { LayoutSource, type Point } from '@/renderer/core/layout/types' * Composable for individual Vue node components * Uses customRef for shared write access with Canvas renderer */ -export function useNodeLayout(nodeId: string) { +export function useNodeLayout(nodeIdMaybe: MaybeRefOrGetter) { + const nodeId = toValue(nodeIdMaybe) const mutations = useLayoutMutations() const { selectedNodeIds } = storeToRefs(useCanvasStore()) diff --git a/src/renderer/extensions/vueNodes/lod/useLOD.ts b/src/renderer/extensions/vueNodes/lod/useLOD.ts index 584e21f9a..87c1bb865 100644 --- a/src/renderer/extensions/vueNodes/lod/useLOD.ts +++ b/src/renderer/extensions/vueNodes/lod/useLOD.ts @@ -27,7 +27,7 @@ * * ``` */ -import { type Ref, computed, readonly } from 'vue' +import { type MaybeRefOrGetter, computed, readonly, toRef } from 'vue' export enum LODLevel { MINIMAL = 'minimal', // zoom <= 0.4 @@ -78,7 +78,8 @@ const LOD_CONFIGS: Record = { * @param zoomRef - Reactive reference to current zoom level (camera.z) * @returns LOD state and configuration */ -export function useLOD(zoomRef: Ref) { +export function useLOD(zoomRefMaybe: MaybeRefOrGetter) { + const zoomRef = toRef(zoomRefMaybe) // Continuous LOD score (0-1) for smooth transitions const lodScore = computed(() => { const zoom = zoomRef.value diff --git a/src/renderer/extensions/vueNodes/preview/useNodePreviewState.ts b/src/renderer/extensions/vueNodes/preview/useNodePreviewState.ts index 427cf20c0..8fc82147a 100644 --- a/src/renderer/extensions/vueNodes/preview/useNodePreviewState.ts +++ b/src/renderer/extensions/vueNodes/preview/useNodePreviewState.ts @@ -1,16 +1,17 @@ import { storeToRefs } from 'pinia' -import { type Ref, computed } from 'vue' +import { type MaybeRefOrGetter, type Ref, computed, toValue } from 'vue' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' import { useNodeOutputStore } from '@/stores/imagePreviewStore' export const useNodePreviewState = ( - nodeId: string, + nodeIdMaybe: MaybeRefOrGetter, options?: { isMinimalLOD?: Ref isCollapsed?: Ref } ) => { + const nodeId = toValue(nodeIdMaybe) const workflowStore = useWorkflowStore() const { nodePreviewImages } = storeToRefs(useNodeOutputStore()) diff --git a/src/stores/executionStore.ts b/src/stores/executionStore.ts index cfc7a2dd4..8791ab4e1 100644 --- a/src/stores/executionStore.ts +++ b/src/stores/executionStore.ts @@ -43,6 +43,57 @@ interface QueuedPrompt { workflow?: ComfyWorkflow } +const subgraphNodeIdToSubgraph = (id: string, graph: LGraph | Subgraph) => { + const node = graph.getNodeById(id) + if (node?.isSubgraphNode()) return node.subgraph +} + +/** + * Recursively get the subgraph objects for the given subgraph instance IDs + * @param currentGraph The current graph + * @param subgraphNodeIds The instance IDs + * @param subgraphs The subgraphs + * @returns The subgraphs that correspond to each of the instance IDs. + */ +function getSubgraphsFromInstanceIds( + currentGraph: LGraph | Subgraph, + subgraphNodeIds: string[], + subgraphs: Subgraph[] = [] +): Subgraph[] { + // Last segment is the node portion; nothing to do. + if (subgraphNodeIds.length === 1) return subgraphs + + const currentPart = subgraphNodeIds.shift() + if (currentPart === undefined) return subgraphs + + const subgraph = subgraphNodeIdToSubgraph(currentPart, currentGraph) + if (!subgraph) throw new Error(`Subgraph not found: ${currentPart}`) + + subgraphs.push(subgraph) + return getSubgraphsFromInstanceIds(subgraph, subgraphNodeIds, subgraphs) +} + +/** + * Convert execution context node IDs to NodeLocatorIds + * @param nodeId The node ID from execution context (could be execution ID) + * @returns The NodeLocatorId + */ +function executionIdToNodeLocatorId(nodeId: string | number): NodeLocatorId { + const nodeIdStr = String(nodeId) + + if (!nodeIdStr.includes(':')) { + // It's a top-level node ID + return nodeIdStr + } + + // It's an execution node ID + const parts = nodeIdStr.split(':') + const localNodeId = parts[parts.length - 1] + const subgraphs = getSubgraphsFromInstanceIds(app.graph, parts) + const nodeLocatorId = createNodeLocatorId(subgraphs.at(-1)!.id, localNodeId) + return nodeLocatorId +} + export const useExecutionStore = defineStore('execution', () => { const workflowStore = useWorkflowStore() const canvasStore = useCanvasStore() @@ -55,29 +106,6 @@ export const useExecutionStore = defineStore('execution', () => { // This is the progress of all nodes in the currently executing workflow const nodeProgressStates = ref>({}) - /** - * Convert execution context node IDs to NodeLocatorIds - * @param nodeId The node ID from execution context (could be execution ID) - * @returns The NodeLocatorId - */ - const executionIdToNodeLocatorId = ( - nodeId: string | number - ): NodeLocatorId => { - const nodeIdStr = String(nodeId) - - if (!nodeIdStr.includes(':')) { - // It's a top-level node ID - return nodeIdStr - } - - // It's an execution node ID - const parts = nodeIdStr.split(':') - const localNodeId = parts[parts.length - 1] - const subgraphs = getSubgraphsFromInstanceIds(app.graph, parts) - const nodeLocatorId = createNodeLocatorId(subgraphs.at(-1)!.id, localNodeId) - return nodeLocatorId - } - const mergeExecutionProgressStates = ( currentState: NodeProgressState | undefined, newState: NodeProgressState @@ -139,9 +167,13 @@ export const useExecutionStore = defineStore('execution', () => { // @deprecated For backward compatibility - stores the primary executing node ID const executingNodeId = computed(() => { - return executingNodeIds.value.length > 0 ? executingNodeIds.value[0] : null + return executingNodeIds.value[0] ?? null }) + const uniqueExecutingNodeIdStrings = computed( + () => new Set(executingNodeIds.value.map(String)) + ) + // For backward compatibility - returns the primary executing node const executingNode = computed(() => { if (!executingNodeId.value) return null @@ -159,36 +191,6 @@ export const useExecutionStore = defineStore('execution', () => { ) }) - const subgraphNodeIdToSubgraph = (id: string, graph: LGraph | Subgraph) => { - const node = graph.getNodeById(id) - if (node?.isSubgraphNode()) return node.subgraph - } - - /** - * Recursively get the subgraph objects for the given subgraph instance IDs - * @param currentGraph The current graph - * @param subgraphNodeIds The instance IDs - * @param subgraphs The subgraphs - * @returns The subgraphs that correspond to each of the instance IDs. - */ - const getSubgraphsFromInstanceIds = ( - currentGraph: LGraph | Subgraph, - subgraphNodeIds: string[], - subgraphs: Subgraph[] = [] - ): Subgraph[] => { - // Last segment is the node portion; nothing to do. - if (subgraphNodeIds.length === 1) return subgraphs - - const currentPart = subgraphNodeIds.shift() - if (currentPart === undefined) return subgraphs - - const subgraph = subgraphNodeIdToSubgraph(currentPart, currentGraph) - if (!subgraph) throw new Error(`Subgraph not found: ${currentPart}`) - - subgraphs.push(subgraph) - return getSubgraphsFromInstanceIds(subgraph, subgraphNodeIds, subgraphs) - } - // This is the progress of the currently executing node (for backward compatibility) const _executingNodeProgress = ref(null) const executingNodeProgress = computed(() => @@ -423,66 +425,25 @@ export const useExecutionStore = defineStore('execution', () => { return { isIdle, clientId, - /** - * The id of the prompt that is currently being executed - */ activePromptId, - /** - * The queued prompts - */ queuedPrompts, - /** - * The node errors from the previous execution. - */ lastNodeErrors, - /** - * The error from the previous execution. - */ lastExecutionError, - /** - * Local node ID for the most recent execution error. - */ lastExecutionErrorNodeId, - /** - * The id of the node that is currently being executed (backward compatibility) - */ executingNodeId, - /** - * The list of all nodes that are currently executing - */ executingNodeIds, - /** - * The prompt that is currently being executed - */ activePrompt, - /** - * The total number of nodes to execute - */ totalNodesToExecute, - /** - * The number of nodes that have been executed - */ nodesExecuted, - /** - * The progress of the execution - */ executionProgress, - /** - * The node that is currently being executed (backward compatibility) - */ executingNode, - /** - * The progress of the executing node (backward compatibility) - */ executingNodeProgress, - /** - * All node progress states from progress_state events - */ nodeProgressStates, nodeLocationProgressStates, bindExecutionEvents, unbindExecutionEvents, storePrompt, + uniqueExecutingNodeIdStrings, // Raw executing progress data for backward compatibility in ComfyApp. _executingNodeProgress, // NodeLocatorId conversion helpers diff --git a/src/types/litegraph-augmentation.d.ts b/src/types/litegraph-augmentation.d.ts index d404ff88f..0f5dee17d 100644 --- a/src/types/litegraph-augmentation.d.ts +++ b/src/types/litegraph-augmentation.d.ts @@ -82,7 +82,7 @@ declare module '@/lib/litegraph/src/litegraph' { } // Add interface augmentations into the class itself - // eslint-disable-next-line @typescript-eslint/no-empty-object-type + interface BaseWidget extends IBaseWidget {} interface LGraphNode { diff --git a/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts b/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts index 42d16569a..0615e9b9a 100644 --- a/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts +++ b/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts @@ -1,12 +1,13 @@ import { createTestingPinia } from '@pinia/testing' import { mount } from '@vue/test-utils' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { computed } from 'vue' +import { computed, toValue } from 'vue' import type { ComponentProps } from 'vue-component-type-helpers' import { createI18n } from 'vue-i18n' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' import LGraphNode from '@/renderer/extensions/vueNodes/components/LGraphNode.vue' +import { useNodeEventHandlers } from '@/renderer/extensions/vueNodes/composables/useNodeEventHandlers' import { useVueElementTracking } from '@/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking' const mockData = vi.hoisted(() => ({ @@ -25,6 +26,14 @@ vi.mock('@/renderer/core/canvas/canvasStore', () => { } }) +vi.mock( + '@/renderer/extensions/vueNodes/composables/useNodeEventHandlers', + () => { + const handleNodeSelect = vi.fn() + return { useNodeEventHandlers: () => ({ handleNodeSelect }) } + } +) + vi.mock( '@/renderer/extensions/vueNodes/composables/useVueNodeResizeTracking', () => ({ @@ -130,7 +139,13 @@ describe('LGraphNode', () => { it('should call resize tracking composable with node ID', () => { mountLGraphNode({ nodeData: mockNodeData }) - expect(useVueElementTracking).toHaveBeenCalledWith('test-node-123', 'node') + expect(useVueElementTracking).toHaveBeenCalledWith( + expect.any(Function), + 'node' + ) + const idArg = vi.mocked(useVueElementTracking).mock.calls[0]?.[0] + const id = toValue(idArg) + expect(id).toEqual('test-node-123') }) it('should render with data-node-id attribute', () => { @@ -179,12 +194,16 @@ describe('LGraphNode', () => { }) it('should emit node-click event on pointer up', async () => { + const { handleNodeSelect } = useNodeEventHandlers() const wrapper = mountLGraphNode({ nodeData: mockNodeData }) await wrapper.trigger('pointerup') - expect(wrapper.emitted('node-click')).toHaveLength(1) - expect(wrapper.emitted('node-click')?.[0]).toHaveLength(3) - expect(wrapper.emitted('node-click')?.[0][1]).toEqual(mockNodeData) + expect(handleNodeSelect).toHaveBeenCalledOnce() + expect(handleNodeSelect).toHaveBeenCalledWith( + expect.any(PointerEvent), + mockNodeData, + expect.any(Boolean) + ) }) }) From abd6823744fd543154f3d64a9fc0c0fc24420236 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 14:30:58 -0700 Subject: [PATCH 04/18] [refactor] Remove redundant module comment (#5711) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes a comment added in initial Vue Nodes commit. The comment is interpolated between import statements which is stylistically awkward and it is almost totally redundant with the doc comment on the composable: https://github.com/Comfy-Org/ComfyUI_frontend/blob/c1d4709e96a642188751007e7b76f12d496a0163/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts#L10-L14 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5711-refactor-Remove-redundant-module-comment-2756d73d365081ef9bffe0257b3670f1) by [Unito](https://www.unito.io) --- src/renderer/extensions/vueNodes/layout/useNodeLayout.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts index 515ebb04e..89718eb8d 100644 --- a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts +++ b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts @@ -1,10 +1,4 @@ import { storeToRefs } from 'pinia' -/** - * Composable for individual Vue node components - * - * Uses customRef for shared write access with Canvas renderer. - * Provides dragging functionality and reactive layout state. - */ import { type MaybeRefOrGetter, computed, inject, toValue } from 'vue' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' From 023e466dba3cd0f64fcaad75bcb54542411d2576 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 14:39:40 -0700 Subject: [PATCH 05/18] fix using shift modifier to (de-)select Vue nodes (#5714) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixes https://github.com/Comfy-Org/ComfyUI_frontend/issues/5688 by adding shift modifier support for multi-selecting Vue nodes, enabling standard shift+click selection behavior alongside existing ctrl/cmd+click. ## Changes - **What**: Updated Vue node event handlers to include `event.shiftKey` in multi-select logic - **Testing**: Added browser tests for both ctrl and shift modifier selection behaviors ## Review Focus Multi-select behavior consistency across different input modifiers and platform compatibility (Windows/Mac/Linux shift key handling). ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5714-fix-using-shift-modifier-to-de-select-Vue-nodes-2756d73d365081bcb5e0fe80eacdb2f0) by [Unito](https://www.unito.io) --- .../nodeInteractions/selectionState.spec.ts | 47 +++++++++++++++++++ .../composables/useNodeEventHandlers.ts | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 browser_tests/tests/vueNodes/nodeInteractions/selectionState.spec.ts diff --git a/browser_tests/tests/vueNodes/nodeInteractions/selectionState.spec.ts b/browser_tests/tests/vueNodes/nodeInteractions/selectionState.spec.ts new file mode 100644 index 000000000..ff8b6f951 --- /dev/null +++ b/browser_tests/tests/vueNodes/nodeInteractions/selectionState.spec.ts @@ -0,0 +1,47 @@ +import { + comfyExpect as expect, + comfyPageFixture as test +} from '../../../fixtures/ComfyPage' + +test.describe('Vue Node Selection', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) + await comfyPage.vueNodes.waitForNodes() + }) + + const modifiers = [ + { key: 'Control', name: 'ctrl' }, + { key: 'Shift', name: 'shift' } + ] as const + + for (const { key: modifier, name } of modifiers) { + test(`should allow selecting multiple nodes with ${name}+click`, async ({ + comfyPage + }) => { + await comfyPage.page.getByText('Load Checkpoint').click() + expect(await comfyPage.vueNodes.getSelectedNodeCount()).toBe(1) + + await comfyPage.page.getByText('Empty Latent Image').click({ + modifiers: [modifier] + }) + expect(await comfyPage.vueNodes.getSelectedNodeCount()).toBe(2) + + await comfyPage.page.getByText('KSampler').click({ + modifiers: [modifier] + }) + expect(await comfyPage.vueNodes.getSelectedNodeCount()).toBe(3) + }) + + test(`should allow de-selecting nodes with ${name}+click`, async ({ + comfyPage + }) => { + await comfyPage.page.getByText('Load Checkpoint').click() + expect(await comfyPage.vueNodes.getSelectedNodeCount()).toBe(1) + + await comfyPage.page.getByText('Load Checkpoint').click({ + modifiers: [modifier] + }) + expect(await comfyPage.vueNodes.getSelectedNodeCount()).toBe(0) + }) + } +}) diff --git a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts index 8ed854a0c..e3ab1c66c 100644 --- a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts +++ b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts @@ -38,7 +38,7 @@ function useNodeEventHandlersIndividual() { const node = nodeManager.value.getNode(nodeData.id) if (!node) return - const isMultiSelect = event.ctrlKey || event.metaKey + const isMultiSelect = event.ctrlKey || event.metaKey || event.shiftKey if (isMultiSelect) { // Ctrl/Cmd+click -> toggle selection From f951e07cea9cb2314447c63152181f77fe5fff37 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 17:32:12 -0700 Subject: [PATCH 06/18] fix bypass hotkey in vue nodes and fix node data instrumentation setup issue when switching to Vue nodes after initial load (#5715) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixed Vue node keybinding target element ID to enable bypass/pin/collapse hotkeys in both LiteGraph and Vue rendering modes. Also fixed a bug when starting in litegraph mode => switching to Vue nodes without reloading => `graph.onTrigger` is set to `undefined` which interferes with proper setup of node data instrumentation, among other things. ## Changes - **What**: Updated keybinding `targetElementId` from `graph-canvas` to `graph-canvas-container` for node manipulation commands (parent of both the canvas and transform pane -- vue nodes container). - **What**: Added conditional `onTrigger` handler restoration in slot layout sync to prevent Vue node manager conflicts ## Review Focus Event handler precedence between Vue nodes and LiteGraph systems during mode switching, ensuring hotkeys work consistently across rendering modes. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5715-fix-bypass-hotkey-in-vue-nodes-and-fix-node-data-instrumentation-setup-issue-when-switchi-2756d73d3650815c8ec8d5e4d06232e3) by [Unito](https://www.unito.io) --- .../tests/vueNodes/nodeStates/bypass.spec.ts | 49 +++++++++++++++++++ src/constants/coreKeybindings.ts | 10 ++-- .../settings/constants/coreSettings.ts | 2 +- .../core/layout/sync/useSlotLayoutSync.ts | 6 ++- src/scripts/app.ts | 5 +- 5 files changed, 64 insertions(+), 8 deletions(-) create mode 100644 browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts diff --git a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts new file mode 100644 index 000000000..c80a86503 --- /dev/null +++ b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts @@ -0,0 +1,49 @@ +import { + comfyExpect as expect, + comfyPageFixture as test +} from '../../../fixtures/ComfyPage' + +const BYPASS_HOTKEY = 'Control+b' +const BYPASS_CLASS = /before:bg-bypass\/60/ + +test.describe('Vue Node Bypass', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) + await comfyPage.vueNodes.waitForNodes() + }) + + test('should allow toggling bypass on a selected node with hotkey', async ({ + comfyPage + }) => { + const checkpointNode = comfyPage.page.locator('[data-node-id]').filter({ + hasText: 'Load Checkpoint' + }) + await checkpointNode.getByText('Load Checkpoint').click() + await comfyPage.page.keyboard.press(BYPASS_HOTKEY) + await expect(checkpointNode).toHaveClass(BYPASS_CLASS) + + await comfyPage.page.keyboard.press(BYPASS_HOTKEY) + await expect(checkpointNode).not.toHaveClass(BYPASS_CLASS) + }) + + test('should allow toggling bypass on multiple selected nodes with hotkey', async ({ + comfyPage + }) => { + const checkpointNode = comfyPage.page.locator('[data-node-id]').filter({ + hasText: 'Load Checkpoint' + }) + const ksamplerNode = comfyPage.page.locator('[data-node-id]').filter({ + hasText: 'KSampler' + }) + + await checkpointNode.getByText('Load Checkpoint').click() + await ksamplerNode.getByText('KSampler').click({ modifiers: ['Control'] }) + await comfyPage.page.keyboard.press(BYPASS_HOTKEY) + await expect(checkpointNode).toHaveClass(BYPASS_CLASS) + await expect(ksamplerNode).toHaveClass(BYPASS_CLASS) + + await comfyPage.page.keyboard.press(BYPASS_HOTKEY) + await expect(checkpointNode).not.toHaveClass(BYPASS_CLASS) + await expect(ksamplerNode).not.toHaveClass(BYPASS_CLASS) + }) +}) diff --git a/src/constants/coreKeybindings.ts b/src/constants/coreKeybindings.ts index b4245f789..fe2bde835 100644 --- a/src/constants/coreKeybindings.ts +++ b/src/constants/coreKeybindings.ts @@ -122,14 +122,14 @@ export const CORE_KEYBINDINGS: Keybinding[] = [ key: '.' }, commandId: 'Comfy.Canvas.FitView', - targetElementId: 'graph-canvas' + targetElementId: 'graph-canvas-container' }, { combo: { key: 'p' }, commandId: 'Comfy.Canvas.ToggleSelected.Pin', - targetElementId: 'graph-canvas' + targetElementId: 'graph-canvas-container' }, { combo: { @@ -137,7 +137,7 @@ export const CORE_KEYBINDINGS: Keybinding[] = [ alt: true }, commandId: 'Comfy.Canvas.ToggleSelectedNodes.Collapse', - targetElementId: 'graph-canvas' + targetElementId: 'graph-canvas-container' }, { combo: { @@ -145,7 +145,7 @@ export const CORE_KEYBINDINGS: Keybinding[] = [ ctrl: true }, commandId: 'Comfy.Canvas.ToggleSelectedNodes.Bypass', - targetElementId: 'graph-canvas' + targetElementId: 'graph-canvas-container' }, { combo: { @@ -153,7 +153,7 @@ export const CORE_KEYBINDINGS: Keybinding[] = [ ctrl: true }, commandId: 'Comfy.Canvas.ToggleSelectedNodes.Mute', - targetElementId: 'graph-canvas' + targetElementId: 'graph-canvas-container' }, { combo: { diff --git a/src/platform/settings/constants/coreSettings.ts b/src/platform/settings/constants/coreSettings.ts index d592a92f0..4adf2db9d 100644 --- a/src/platform/settings/constants/coreSettings.ts +++ b/src/platform/settings/constants/coreSettings.ts @@ -595,7 +595,7 @@ export const CORE_SETTINGS: SettingParams[] = [ migrateDeprecatedValue: (value: any[]) => { return value.map((keybinding) => { if (keybinding['targetSelector'] === '#graph-canvas') { - keybinding['targetElementId'] = 'graph-canvas' + keybinding['targetElementId'] = 'graph-canvas-container' } return keybinding }) diff --git a/src/renderer/core/layout/sync/useSlotLayoutSync.ts b/src/renderer/core/layout/sync/useSlotLayoutSync.ts index 618d1857f..281199e8b 100644 --- a/src/renderer/core/layout/sync/useSlotLayoutSync.ts +++ b/src/renderer/core/layout/sync/useSlotLayoutSync.ts @@ -134,7 +134,11 @@ export function useSlotLayoutSync() { restoreHandlers = () => { graph.onNodeAdded = origNodeAdded || undefined graph.onNodeRemoved = origNodeRemoved || undefined - graph.onTrigger = origTrigger || undefined + // Only restore onTrigger if Vue nodes are not active + // Vue node manager sets its own onTrigger handler + if (!LiteGraph.vueNodesMode) { + graph.onTrigger = origTrigger || undefined + } graph.onAfterChange = origAfterChange || undefined } diff --git a/src/scripts/app.ts b/src/scripts/app.ts index 43722f9b4..cd085eead 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -596,7 +596,10 @@ export class ComfyApp { const keybindingStore = useKeybindingStore() const keybinding = keybindingStore.getKeybinding(keyCombo) - if (keybinding && keybinding.targetElementId === 'graph-canvas') { + if ( + keybinding && + keybinding.targetElementId === 'graph-canvas-container' + ) { useCommandStore().execute(keybinding.commandId) this.graph.change() From 95baf8d2f1053155b39fec61c36cb0d6f4c74df9 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 20:01:33 -0700 Subject: [PATCH 07/18] [style] update Vue node tooltip style (#5717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Change Vue node tooltips to align with [design](https://www.figma.com/design/31uH3r4x3xbIctuRWYW6NM/V3---Nodes?node-id=6267-16837&m=dev) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5717-style-update-Vue-node-tooltip-style-2766d73d365081bdb095faef17f6aeb6) by [Unito](https://www.unito.io) --- .../extensions/vueNodes/composables/useNodeTooltips.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/extensions/vueNodes/composables/useNodeTooltips.ts b/src/renderer/extensions/vueNodes/composables/useNodeTooltips.ts index 0dd9922ef..034047471 100644 --- a/src/renderer/extensions/vueNodes/composables/useNodeTooltips.ts +++ b/src/renderer/extensions/vueNodes/composables/useNodeTooltips.ts @@ -93,10 +93,10 @@ export function useNodeTooltips( pt: { text: { class: - 'bg-charcoal-100 border border-slate-300 rounded-md px-4 py-2 text-white text-sm font-normal leading-tight max-w-75 shadow-none' + 'bg-charcoal-800 border border-slate-300 rounded-md px-4 py-2 text-white text-sm font-normal leading-tight max-w-75 shadow-none' }, arrow: { - class: 'before:border-charcoal-100' + class: 'before:border-slate-300' } } } From e314d9cbd9b289306fb129800d262c1771ecdd9f Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 21:53:25 -0700 Subject: [PATCH 08/18] [refactor] Simplify current user resolved hook implementation (#5718) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Refactored `onUserResolved` function in auth composable to use VueUse `whenever` utility instead of manual watch implementation and use `immediate` option instead of invoking manually before creating watcher. ## Changes - **What**: Replaced manual watch + immediate check pattern with [VueUse whenever](https://vueuse.org/shared/whenever/) utility in `useCurrentUser.ts:37` ## Review Focus Behavioral equivalence verification - `whenever` with `immediate: true` should maintain identical callback timing and cleanup semantics. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5718-refactor-Simplify-current-user-resolved-hook-implementation-2766d73d365081008b6de156dd78f940) by [Unito](https://www.unito.io) --- src/composables/auth/useCurrentUser.ts | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/composables/auth/useCurrentUser.ts b/src/composables/auth/useCurrentUser.ts index 2c70be227..37b9e4866 100644 --- a/src/composables/auth/useCurrentUser.ts +++ b/src/composables/auth/useCurrentUser.ts @@ -1,4 +1,5 @@ -import { computed, watch } from 'vue' +import { whenever } from '@vueuse/core' +import { computed } from 'vue' import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions' import { t } from '@/i18n' @@ -33,19 +34,8 @@ export const useCurrentUser = () => { return null }) - const onUserResolved = (callback: (user: AuthUserInfo) => void) => { - if (resolvedUserInfo.value) { - callback(resolvedUserInfo.value) - } - - const stop = watch(resolvedUserInfo, (value) => { - if (value) { - callback(value) - } - }) - - return () => stop() - } + const onUserResolved = (callback: (user: AuthUserInfo) => void) => + whenever(resolvedUserInfo, callback, { immediate: true }) const userDisplayName = computed(() => { if (isApiKeyLogin.value) { From da0d51311b2e5e052454961ced6105a3613da785 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Sun, 21 Sep 2025 21:56:03 -0700 Subject: [PATCH 09/18] fix Vue node being dragged when interacting with widgets (e.g., resizing textarea) (#5719) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Applying changes in https://github.com/Comfy-Org/ComfyUI_frontend/pull/5516 to entire widget wrapper. ## Changes - **What**: Added `.stop` modifier to pointer events in NodeWidgets component to prevent [event propagation](https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation) ## Review Focus Verify widget interactions remain functional while ensuring parent node drag/selection behavior is properly isolated. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5719-fix-Vue-node-being-dragged-when-interacting-with-widgets-e-g-resizing-textarea-2766d73d3650815091adcd1d65197c7b) by [Unito](https://www.unito.io) --- src/renderer/extensions/vueNodes/components/NodeWidgets.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue index 57461ce09..4645429da 100644 --- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue +++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue @@ -12,9 +12,9 @@ : 'pointer-events-none' ) " - @pointerdown="handleWidgetPointerEvent" - @pointermove="handleWidgetPointerEvent" - @pointerup="handleWidgetPointerEvent" + @pointerdown.stop="handleWidgetPointerEvent" + @pointermove.stop="handleWidgetPointerEvent" + @pointerup.stop="handleWidgetPointerEvent" >
Date: Tue, 23 Sep 2025 04:13:38 +1000 Subject: [PATCH 10/18] Fix reroute ID 0 treated as invalid (#5723) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Fixes old logic bug from refactor https://github.com/Comfy-Org/litegraph.js/pull/602/files ## Changes - Fixes truthy refactor to explicitly check undefined ## Review Focus No expectation that this will impact prod, however it may impact extensions IF someone has explicitly been setting link parentId to 0. This would be very strange, as it would cause unexpected behaviour in other parts of the code (which all explicitly check `undefined`). ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5723-Fix-reroute-ID-0-treated-as-invalid-2766d73d365081568124ce1f85cdf84e) by [Unito](https://www.unito.io) --- src/lib/litegraph/src/LLink.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/litegraph/src/LLink.ts b/src/lib/litegraph/src/LLink.ts index 58ae4e090..71b41f23d 100644 --- a/src/lib/litegraph/src/LLink.ts +++ b/src/lib/litegraph/src/LLink.ts @@ -205,7 +205,7 @@ export class LLink implements LinkSegment, Serialisable { network: Pick, linkSegment: LinkSegment ): Reroute[] { - if (!linkSegment.parentId) return [] + if (linkSegment.parentId === undefined) return [] return network.reroutes.get(linkSegment.parentId)?.getReroutes() ?? [] } @@ -229,7 +229,7 @@ export class LLink implements LinkSegment, Serialisable { linkSegment: LinkSegment, rerouteId: RerouteId ): Reroute | null | undefined { - if (!linkSegment.parentId) return + if (linkSegment.parentId === undefined) return return network.reroutes .get(linkSegment.parentId) ?.findNextReroute(rerouteId) @@ -498,7 +498,7 @@ export class LLink implements LinkSegment, Serialisable { target_slot: this.target_slot, type: this.type } - if (this.parentId) copy.parentId = this.parentId + if (this.parentId !== undefined) copy.parentId = this.parentId return copy } } From f086377307dd14b3336ad035c808643b7249f8d7 Mon Sep 17 00:00:00 2001 From: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Date: Mon, 22 Sep 2025 21:33:00 +0300 Subject: [PATCH 11/18] add pricing for new api nodes (#5724) ## Summary Added prices for the new upcoming API nodes. Backport required. --- src/composables/node/useNodePricing.ts | 69 +++++++- .../composables/node/useNodePricing.test.ts | 155 ++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) diff --git a/src/composables/node/useNodePricing.ts b/src/composables/node/useNodePricing.ts index e85e6adb6..91f957463 100644 --- a/src/composables/node/useNodePricing.ts +++ b/src/composables/node/useNodePricing.ts @@ -1548,6 +1548,71 @@ const apiNodeCosts: Record = }, ByteDanceImageReferenceNode: { displayPrice: byteDanceVideoPricingCalculator + }, + WanTextToVideoApi: { + displayPrice: (node: LGraphNode): string => { + const durationWidget = node.widgets?.find( + (w) => w.name === 'duration' + ) as IComboWidget + const resolutionWidget = node.widgets?.find( + (w) => w.name === 'size' + ) as IComboWidget + + if (!durationWidget || !resolutionWidget) return '$0.05-0.15/second' + + const seconds = parseFloat(String(durationWidget.value)) + const resolutionStr = String(resolutionWidget.value).toLowerCase() + + const resKey = resolutionStr.includes('1080') + ? '1080p' + : resolutionStr.includes('720') + ? '720p' + : resolutionStr.includes('480') + ? '480p' + : resolutionStr.match(/^\s*(\d{3,4}p)/)?.[1] ?? '' + + const pricePerSecond: Record = { + '480p': 0.05, + '720p': 0.1, + '1080p': 0.15 + } + + const pps = pricePerSecond[resKey] + if (isNaN(seconds) || !pps) return '$0.05-0.15/second' + + const cost = (pps * seconds).toFixed(2) + return `$${cost}/Run` + } + }, + WanImageToVideoApi: { + displayPrice: (node: LGraphNode): string => { + const durationWidget = node.widgets?.find( + (w) => w.name === 'duration' + ) as IComboWidget + const resolutionWidget = node.widgets?.find( + (w) => w.name === 'resolution' + ) as IComboWidget + + if (!durationWidget || !resolutionWidget) return '$0.05-0.15/second' + + const seconds = parseFloat(String(durationWidget.value)) + const resolution = String(resolutionWidget.value).trim().toLowerCase() + + const pricePerSecond: Record = { + '480p': 0.05, + '720p': 0.1, + '1080p': 0.15 + } + + const pps = pricePerSecond[resolution] + if (isNaN(seconds) || !pps) return '$0.05-0.15/second' + + const cost = (pps * seconds).toFixed(2) + return `$${cost}/Run` + } + }, + WanTextToImageApi: { + displayPrice: '$0.03/Run' } } @@ -1647,7 +1712,9 @@ export const useNodePricing = () => { ByteDanceTextToVideoNode: ['model', 'duration', 'resolution'], ByteDanceImageToVideoNode: ['model', 'duration', 'resolution'], ByteDanceFirstLastFrameNode: ['model', 'duration', 'resolution'], - ByteDanceImageReferenceNode: ['model', 'duration', 'resolution'] + ByteDanceImageReferenceNode: ['model', 'duration', 'resolution'], + WanTextToVideoApi: ['duration', 'size'], + WanImageToVideoApi: ['duration', 'resolution'] } return widgetMap[nodeType] || [] } diff --git a/tests-ui/tests/composables/node/useNodePricing.test.ts b/tests-ui/tests/composables/node/useNodePricing.test.ts index 6cd76cb75..32b18ed68 100644 --- a/tests-ui/tests/composables/node/useNodePricing.test.ts +++ b/tests-ui/tests/composables/node/useNodePricing.test.ts @@ -1894,4 +1894,159 @@ describe('useNodePricing', () => { expect(getNodeDisplayPrice(missingDuration)).toBe('Token-based') }) }) + + describe('dynamic pricing - WanTextToVideoApi', () => { + it('should return $1.50 for 10s at 1080p', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: '10' }, + { name: 'size', value: '1080p: 4:3 (1632x1248)' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$1.50/Run') // 0.15 * 10 + }) + + it('should return $0.50 for 5s at 720p', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: 5 }, + { name: 'size', value: '720p: 16:9 (1280x720)' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.50/Run') // 0.10 * 5 + }) + + it('should return $0.15 for 3s at 480p', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: '3' }, + { name: 'size', value: '480p: 1:1 (624x624)' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.15/Run') // 0.05 * 3 + }) + + it('should fall back when widgets are missing', () => { + const { getNodeDisplayPrice } = useNodePricing() + const missingBoth = createMockNode('WanTextToVideoApi', []) + const missingSize = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: '5' } + ]) + const missingDuration = createMockNode('WanTextToVideoApi', [ + { name: 'size', value: '1080p' } + ]) + + expect(getNodeDisplayPrice(missingBoth)).toBe('$0.05-0.15/second') + expect(getNodeDisplayPrice(missingSize)).toBe('$0.05-0.15/second') + expect(getNodeDisplayPrice(missingDuration)).toBe('$0.05-0.15/second') + }) + + it('should fall back on invalid duration', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: 'invalid' }, + { name: 'size', value: '1080p' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.05-0.15/second') + }) + + it('should fall back on unknown resolution', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanTextToVideoApi', [ + { name: 'duration', value: '10' }, + { name: 'size', value: '2K' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.05-0.15/second') + }) + }) + + describe('dynamic pricing - WanImageToVideoApi', () => { + it('should return $0.80 for 8s at 720p', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: 8 }, + { name: 'resolution', value: '720p' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.80/Run') // 0.10 * 8 + }) + + it('should return $0.60 for 12s at 480P', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: '12' }, + { name: 'resolution', value: '480P' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.60/Run') // 0.05 * 12 + }) + + it('should return $1.50 for 10s at 1080p', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: '10' }, + { name: 'resolution', value: '1080p' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$1.50/Run') // 0.15 * 10 + }) + + it('should handle "5s" string duration at 1080P', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: '5s' }, + { name: 'resolution', value: '1080P' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.75/Run') // 0.15 * 5 + }) + + it('should fall back when widgets are missing', () => { + const { getNodeDisplayPrice } = useNodePricing() + const missingBoth = createMockNode('WanImageToVideoApi', []) + const missingRes = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: '5' } + ]) + const missingDuration = createMockNode('WanImageToVideoApi', [ + { name: 'resolution', value: '1080p' } + ]) + + expect(getNodeDisplayPrice(missingBoth)).toBe('$0.05-0.15/second') + expect(getNodeDisplayPrice(missingRes)).toBe('$0.05-0.15/second') + expect(getNodeDisplayPrice(missingDuration)).toBe('$0.05-0.15/second') + }) + + it('should fall back on invalid duration', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: 'invalid' }, + { name: 'resolution', value: '720p' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.05-0.15/second') + }) + + it('should fall back on unknown resolution', () => { + const { getNodeDisplayPrice } = useNodePricing() + const node = createMockNode('WanImageToVideoApi', [ + { name: 'duration', value: '10' }, + { name: 'resolution', value: 'weird-res' } + ]) + + const price = getNodeDisplayPrice(node) + expect(price).toBe('$0.05-0.15/second') + }) + }) }) From e5d4d07d323557acfe329a06dee75043b14e8b58 Mon Sep 17 00:00:00 2001 From: Alexander Brown Date: Mon, 22 Sep 2025 13:15:33 -0700 Subject: [PATCH 12/18] Refactor: More state management simplification (#5721) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Remove more procedural synchronization in favor of using reactive references. > Note: Also includes some fixes for issues caused during HMR. ## Review Focus In testing it seems to work the same, but let me know if I missed something. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5721-Refactor-More-state-management-simplification-2766d73d3650819b8d7ddc047c460f2b) by [Unito](https://www.unito.io) --- src/components/graph/GraphCanvas.vue | 11 +- src/components/graph/NodeTooltip.vue | 10 +- .../searchbox/NodeSearchBoxPopover.vue | 37 ++--- src/composables/graph/useGraphNodeManager.ts | 140 +----------------- src/composables/graph/useViewportCulling.ts | 35 ++--- src/composables/graph/useVueNodeLifecycle.ts | 20 --- .../vueNodes/components/LGraphNode.vue | 18 +-- .../vueNodes/layout/useNodeLayout.ts | 28 ++-- .../vueNodes/components/LGraphNode.spec.ts | 1 + 9 files changed, 61 insertions(+), 239 deletions(-) diff --git a/src/components/graph/GraphCanvas.vue b/src/components/graph/GraphCanvas.vue index 73020bb2e..ac33aa280 100644 --- a/src/components/graph/GraphCanvas.vue +++ b/src/components/graph/GraphCanvas.vue @@ -43,8 +43,6 @@ v-for="nodeData in allNodes" :key="nodeData.id" :node-data="nodeData" - :position="nodePositions.get(nodeData.id)" - :size="nodeSizes.get(nodeData.id)" :readonly="false" :error=" executionStore.lastExecutionError?.node_id === nodeData.id @@ -189,15 +187,8 @@ watch( } ) -const nodePositions = vueNodeLifecycle.nodePositions -const nodeSizes = vueNodeLifecycle.nodeSizes const allNodes = viewportCulling.allNodes - -const handleTransformUpdate = () => { - viewportCulling.handleTransformUpdate() - // TODO: Fix paste position sync in separate PR - vueNodeLifecycle.detectChangesInRAF.value() -} +const handleTransformUpdate = viewportCulling.handleTransformUpdate watchEffect(() => { nodeDefStore.showDeprecated = settingStore.get('Comfy.Node.ShowDeprecated') diff --git a/src/components/graph/NodeTooltip.vue b/src/components/graph/NodeTooltip.vue index 6419326d6..45cbfc9f3 100644 --- a/src/components/graph/NodeTooltip.vue +++ b/src/components/graph/NodeTooltip.vue @@ -33,9 +33,11 @@ const tooltipText = ref('') const left = ref() const top = ref() -const hideTooltip = () => (tooltipText.value = '') +function hideTooltip() { + return (tooltipText.value = '') +} -const showTooltip = async (tooltip: string | null | undefined) => { +async function showTooltip(tooltip: string | null | undefined) { if (!tooltip) return left.value = comfyApp.canvas.mouse[0] + 'px' @@ -56,9 +58,9 @@ const showTooltip = async (tooltip: string | null | undefined) => { } } -const onIdle = () => { +function onIdle() { const { canvas } = comfyApp - const node = canvas.node_over + const node = canvas?.node_over if (!node) return const ctor = node.constructor as { title_mode?: 0 | 1 | 2 | 3 } diff --git a/src/components/searchbox/NodeSearchBoxPopover.vue b/src/components/searchbox/NodeSearchBoxPopover.vue index 58492cf72..470853b08 100644 --- a/src/components/searchbox/NodeSearchBoxPopover.vue +++ b/src/components/searchbox/NodeSearchBoxPopover.vue @@ -64,31 +64,29 @@ const litegraphService = useLitegraphService() const { visible, newSearchBoxEnabled } = storeToRefs(searchBoxStore) const dismissable = ref(true) -const getNewNodeLocation = (): Point => { +function getNewNodeLocation(): Point { return triggerEvent ? [triggerEvent.canvasX, triggerEvent.canvasY] : litegraphService.getCanvasCenter() } const nodeFilters = ref[]>([]) -const addFilter = (filter: FuseFilterWithValue) => { +function addFilter(filter: FuseFilterWithValue) { nodeFilters.value.push(filter) } -const removeFilter = ( - filter: FuseFilterWithValue -) => { +function removeFilter(filter: FuseFilterWithValue) { nodeFilters.value = nodeFilters.value.filter( (f) => toRaw(f) !== toRaw(filter) ) } -const clearFilters = () => { +function clearFilters() { nodeFilters.value = [] } -const closeDialog = () => { +function closeDialog() { visible.value = false } const canvasStore = useCanvasStore() -const addNode = (nodeDef: ComfyNodeDefImpl) => { +function addNode(nodeDef: ComfyNodeDefImpl) { const node = litegraphService.addNodeOnGraph(nodeDef, { pos: getNewNodeLocation() }) @@ -106,7 +104,7 @@ const addNode = (nodeDef: ComfyNodeDefImpl) => { window.requestAnimationFrame(closeDialog) } -const showSearchBox = (e: CanvasPointerEvent | null) => { +function showSearchBox(e: CanvasPointerEvent | null) { if (newSearchBoxEnabled.value) { if (e?.pointerType === 'touch') { setTimeout(() => { @@ -120,11 +118,12 @@ const showSearchBox = (e: CanvasPointerEvent | null) => { } } -const getFirstLink = () => - canvasStore.getCanvas().linkConnector.renderLinks.at(0) +function getFirstLink() { + return canvasStore.getCanvas().linkConnector.renderLinks.at(0) +} const nodeDefStore = useNodeDefStore() -const showNewSearchBox = (e: CanvasPointerEvent | null) => { +function showNewSearchBox(e: CanvasPointerEvent | null) { const firstLink = getFirstLink() if (firstLink) { const filter = @@ -149,7 +148,7 @@ const showNewSearchBox = (e: CanvasPointerEvent | null) => { }, 300) } -const showContextMenu = (e: CanvasPointerEvent) => { +function showContextMenu(e: CanvasPointerEvent) { const firstLink = getFirstLink() if (!firstLink) return @@ -226,7 +225,7 @@ watchEffect(() => { ) }) -const canvasEventHandler = (e: LiteGraphCanvasEvent) => { +function canvasEventHandler(e: LiteGraphCanvasEvent) { if (e.detail.subType === 'empty-double-click') { showSearchBox(e.detail.originalEvent) } else if (e.detail.subType === 'group-double-click') { @@ -249,8 +248,10 @@ const linkReleaseActionShift = computed(() => ) // Prevent normal LinkConnector reset (called by CanvasPointer.finally) -const preventDefault = (e: Event) => e.preventDefault() -const cancelNextReset = (e: CustomEvent) => { +function preventDefault(e: Event) { + return e.preventDefault() +} +function cancelNextReset(e: CustomEvent) { e.preventDefault() const canvas = canvasStore.getCanvas() @@ -260,7 +261,7 @@ const cancelNextReset = (e: CustomEvent) => { }) } -const handleDroppedOnCanvas = (e: CustomEvent) => { +function handleDroppedOnCanvas(e: CustomEvent) { disconnectOnReset = true const action = e.detail.shiftKey ? linkReleaseActionShift.value @@ -281,7 +282,7 @@ const handleDroppedOnCanvas = (e: CustomEvent) => { } // Resets litegraph state -const reset = () => { +function reset() { listenerController?.abort() listenerController = null triggerEvent = null diff --git a/src/composables/graph/useGraphNodeManager.ts b/src/composables/graph/useGraphNodeManager.ts index 618b3087a..962f2b460 100644 --- a/src/composables/graph/useGraphNodeManager.ts +++ b/src/composables/graph/useGraphNodeManager.ts @@ -72,8 +72,6 @@ export interface GraphNodeManager { // Reactive state - safe data extracted from LiteGraph nodes vueNodeData: ReadonlyMap nodeState: ReadonlyMap - nodePositions: ReadonlyMap - nodeSizes: ReadonlyMap // Access to original LiteGraph nodes (non-reactive) getNode(id: string): LGraphNode | undefined @@ -88,7 +86,6 @@ export interface GraphNodeManager { priority?: 'critical' | 'normal' | 'low' ): void forceSync(): void - detectChangesInRAF(): void // Spatial queries getVisibleNodeIds(viewportBounds: Bounds): Set @@ -101,17 +98,12 @@ export interface GraphNodeManager { getSpatialIndexDebugInfo(): SpatialIndexDebugInfo | null } -export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { +export function useGraphNodeManager(graph: LGraph): GraphNodeManager { // Get layout mutations composable - const { moveNode, resizeNode, createNode, deleteNode, setSource } = - useLayoutMutations() + const { createNode, deleteNode, setSource } = useLayoutMutations() // Safe reactive data extracted from LiteGraph nodes const vueNodeData = reactive(new Map()) const nodeState = reactive(new Map()) - const nodePositions = reactive(new Map()) - const nodeSizes = reactive( - new Map() - ) // Non-reactive storage for original LiteGraph nodes const nodeRefs = new Map() @@ -365,7 +357,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { // } // return metadata // } - const scheduleUpdate = ( nodeId?: string, priority: 'critical' | 'normal' | 'low' = 'normal' @@ -432,8 +423,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { nodeRefs.delete(id) vueNodeData.delete(id) nodeState.delete(id) - nodePositions.delete(id) - nodeSizes.delete(id) lastNodesSnapshot.delete(id) spatialIndex.remove(id) } @@ -459,8 +448,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { lastUpdate: performance.now(), culled: false }) - nodePositions.set(id, { x: node.pos[0], y: node.pos[1] }) - nodeSizes.set(id, { width: node.size[0], height: node.size[1] }) attachMetadata(node) // Add to spatial index @@ -496,120 +483,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { return visibleIds } - /** - * Detects position changes for a single node and updates reactive state - */ - const detectPositionChanges = (node: LGraphNode, id: string): boolean => { - const currentPos = nodePositions.get(id) - - if ( - !currentPos || - currentPos.x !== node.pos[0] || - currentPos.y !== node.pos[1] - ) { - nodePositions.set(id, { x: node.pos[0], y: node.pos[1] }) - - // Push position change to layout store - // Source is already set to 'canvas' in detectChangesInRAF - void moveNode(id, { x: node.pos[0], y: node.pos[1] }) - - return true - } - return false - } - - /** - * Detects size changes for a single node and updates reactive state - */ - const detectSizeChanges = (node: LGraphNode, id: string): boolean => { - const currentSize = nodeSizes.get(id) - - if ( - !currentSize || - currentSize.width !== node.size[0] || - currentSize.height !== node.size[1] - ) { - nodeSizes.set(id, { width: node.size[0], height: node.size[1] }) - - // Push size change to layout store - // Source is already set to 'canvas' in detectChangesInRAF - void resizeNode(id, { - width: node.size[0], - height: node.size[1] - }) - - return true - } - return false - } - - /** - * Updates spatial index for a node if bounds changed - */ - const updateSpatialIndex = (node: LGraphNode, id: string): void => { - const bounds: Bounds = { - x: node.pos[0], - y: node.pos[1], - width: node.size[0], - height: node.size[1] - } - spatialIndex.update(id, bounds) - } - - /** - * Updates performance metrics after change detection - */ - const updatePerformanceMetrics = ( - startTime: number, - positionUpdates: number, - sizeUpdates: number - ): void => { - const endTime = performance.now() - performanceMetrics.updateTime = endTime - startTime - performanceMetrics.nodeCount = vueNodeData.size - performanceMetrics.culledCount = Array.from(nodeState.values()).filter( - (state) => state.culled - ).length - spatialMetrics.nodesInIndex = spatialIndex.size - - if (positionUpdates > 0 || sizeUpdates > 0) { - performanceMetrics.rafUpdateCount++ - } - } - - /** - * Main RAF change detection function - */ - const detectChangesInRAF = () => { - const startTime = performance.now() - - if (!graph?._nodes) return - - let positionUpdates = 0 - let sizeUpdates = 0 - - // Set source for all canvas-driven updates - setSource(LayoutSource.Canvas) - - // Process each node for changes - for (const node of graph._nodes) { - const id = String(node.id) - - const posChanged = detectPositionChanges(node, id) - const sizeChanged = detectSizeChanges(node, id) - - if (posChanged) positionUpdates++ - if (sizeChanged) sizeUpdates++ - - // Update spatial index if geometry changed - if (posChanged || sizeChanged) { - updateSpatialIndex(node, id) - } - } - - updatePerformanceMetrics(startTime, positionUpdates, sizeUpdates) - } - /** * Handles node addition to the graph - sets up Vue state and spatial indexing * Defers position extraction until after potential configure() calls @@ -642,8 +515,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { const nodePosition = { x: node.pos[0], y: node.pos[1] } const nodeSize = { width: node.size[0], height: node.size[1] } - nodePositions.set(id, nodePosition) - nodeSizes.set(id, nodeSize) attachMetadata(node) // Add to spatial index for viewport culling with final positions @@ -709,8 +580,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { nodeRefs.delete(id) vueNodeData.delete(id) nodeState.delete(id) - nodePositions.delete(id) - nodeSizes.delete(id) lastNodesSnapshot.delete(id) // Call original callback if provided @@ -743,8 +612,6 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { nodeRefs.clear() vueNodeData.clear() nodeState.clear() - nodePositions.clear() - nodeSizes.clear() lastNodesSnapshot.clear() pendingUpdates.clear() criticalUpdates.clear() @@ -846,14 +713,11 @@ export const useGraphNodeManager = (graph: LGraph): GraphNodeManager => { return { vueNodeData, nodeState, - nodePositions, - nodeSizes, getNode, setupEventListeners, cleanup, scheduleUpdate, forceSync: syncWithGraph, - detectChangesInRAF, getVisibleNodeIds, performanceMetrics, spatialMetrics, diff --git a/src/composables/graph/useViewportCulling.ts b/src/composables/graph/useViewportCulling.ts index f311af01c..6ebebeba3 100644 --- a/src/composables/graph/useViewportCulling.ts +++ b/src/composables/graph/useViewportCulling.ts @@ -6,21 +6,18 @@ * 2. Set display none on element to avoid cascade resolution overhead * 3. Only run when transform changes (event driven) */ +import { useThrottleFn } from '@vueuse/core' import { computed } from 'vue' import { useVueNodeLifecycle } from '@/composables/graph/useVueNodeLifecycle' -import { useVueFeatureFlags } from '@/composables/useVueFeatureFlags' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { app as comfyApp } from '@/scripts/app' export function useViewportCulling() { const canvasStore = useCanvasStore() - const { shouldRenderVueNodes } = useVueFeatureFlags() - const { vueNodeData, nodeDataTrigger, nodeManager } = useVueNodeLifecycle() + const { vueNodeData, nodeManager } = useVueNodeLifecycle() const allNodes = computed(() => { - if (!shouldRenderVueNodes.value) return [] - void nodeDataTrigger.value // Force re-evaluation when nodeManager initializes return Array.from(vueNodeData.value.values()) }) @@ -28,7 +25,7 @@ export function useViewportCulling() { * Update visibility of all nodes based on viewport * Queries DOM directly - no cache maintenance needed */ - const updateVisibility = () => { + function updateVisibility() { if (!nodeManager.value || !canvasStore.canvas || !comfyApp.canvas) return const canvas = canvasStore.canvas @@ -70,31 +67,17 @@ export function useViewportCulling() { } } + const updateVisibilityDebounced = useThrottleFn(updateVisibility, 20) + // RAF throttling for smooth updates during continuous panning - let rafId: number | null = null - - /** - * Handle transform update - called by TransformPane event - * Uses RAF to batch updates for smooth performance - */ - const handleTransformUpdate = () => { - if (!shouldRenderVueNodes.value) return - - // Cancel previous RAF if still pending - if (rafId !== null) { - cancelAnimationFrame(rafId) - } - - // Schedule update in next animation frame - rafId = requestAnimationFrame(() => { - updateVisibility() - rafId = null + function handleTransformUpdate() { + requestAnimationFrame(async () => { + await updateVisibilityDebounced() }) } return { allNodes, - handleTransformUpdate, - updateVisibility + handleTransformUpdate } } diff --git a/src/composables/graph/useVueNodeLifecycle.ts b/src/composables/graph/useVueNodeLifecycle.ts index d2c1bcfcd..95e68be6a 100644 --- a/src/composables/graph/useVueNodeLifecycle.ts +++ b/src/composables/graph/useVueNodeLifecycle.ts @@ -43,15 +43,6 @@ function useVueNodeLifecycleIndividual() { // Vue node data state const vueNodeData = ref>(new Map()) const nodeState = ref>(new Map()) - const nodePositions = ref>( - new Map() - ) - const nodeSizes = ref>( - new Map() - ) - - // Change detection function - const detectChangesInRAF = ref<() => void>(() => {}) // Trigger for forcing computed re-evaluation const nodeDataTrigger = ref(0) @@ -71,9 +62,6 @@ function useVueNodeLifecycleIndividual() { // Use the manager's data maps vueNodeData.value = manager.vueNodeData nodeState.value = manager.nodeState - nodePositions.value = manager.nodePositions - nodeSizes.value = manager.nodeSizes - detectChangesInRAF.value = manager.detectChangesInRAF // Initialize layout system with existing nodes from active graph const nodes = activeGraph._nodes.map((node: LGraphNode) => ({ @@ -137,11 +125,6 @@ function useVueNodeLifecycleIndividual() { // Reset reactive maps to clean state vueNodeData.value = new Map() nodeState.value = new Map() - nodePositions.value = new Map() - nodeSizes.value = new Map() - - // Reset change detection function - detectChangesInRAF.value = () => {} } // Watch for Vue nodes enabled state changes @@ -236,11 +219,8 @@ function useVueNodeLifecycleIndividual() { return { vueNodeData, nodeState, - nodePositions, - nodeSizes, nodeDataTrigger: readonly(nodeDataTrigger), nodeManager: readonly(nodeManager), - detectChangesInRAF: readonly(detectChangesInRAF), isNodeManagerReady, // Lifecycle methods diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index 56a0984fb..f764a82bf 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -31,7 +31,7 @@ " :style="[ { - transform: `translate(${layoutPosition.x ?? position?.x ?? 0}px, ${(layoutPosition.y ?? position?.y ?? 0) - LiteGraph.NODE_TITLE_HEIGHT}px)`, + transform: `translate(${position.x ?? 0}px, ${(position.y ?? 0) - LiteGraph.NODE_TITLE_HEIGHT}px)`, zIndex: zIndex }, dragStyle @@ -172,8 +172,6 @@ import SlotConnectionDot from './SlotConnectionDot.vue' // Extended props for main node component interface LGraphNodeProps { nodeData: VueNodeData - position?: { x: number; y: number } - size?: { width: number; height: number } readonly?: boolean error?: string | null zoomLevel?: number @@ -181,8 +179,6 @@ interface LGraphNodeProps { const { nodeData, - position = { x: 0, y: 0 }, - size = { width: 100, height: 50 }, error = null, readonly = false, zoomLevel = 1 @@ -245,11 +241,7 @@ onErrorCaptured((error) => { }) // Use layout system for node position and dragging -const { - position: layoutPosition, - zIndex, - resize -} = useNodeLayout(() => nodeData.id) +const { position, size, zIndex, resize } = useNodeLayout(() => nodeData.id) const { handlePointerDown, handlePointerUp, @@ -259,11 +251,11 @@ const { } = useNodePointerInteractions(() => nodeData, handleNodeSelect) onMounted(() => { - if (size && transformState?.camera) { + if (size.value && transformState?.camera) { const scale = transformState.camera.z const screenSize = { - width: size.width * scale, - height: size.height * scale + width: size.value.width * scale, + height: size.value.height * scale } resize(screenSize) } diff --git a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts index 89718eb8d..60e5a7fd8 100644 --- a/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts +++ b/src/renderer/extensions/vueNodes/layout/useNodeLayout.ts @@ -1,5 +1,11 @@ import { storeToRefs } from 'pinia' -import { type MaybeRefOrGetter, computed, inject, toValue } from 'vue' +import { + type CSSProperties, + type MaybeRefOrGetter, + computed, + inject, + toValue +} from 'vue' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { TransformStateKey } from '@/renderer/core/layout/injectionKeys' @@ -182,14 +188,16 @@ export function useNodeLayout(nodeIdMaybe: MaybeRefOrGetter) { endDrag, // Computed styles for Vue templates - nodeStyle: computed(() => ({ - position: 'absolute' as const, - left: `${position.value.x}px`, - top: `${position.value.y}px`, - width: `${size.value.width}px`, - height: `${size.value.height}px`, - zIndex: zIndex.value, - cursor: isDragging ? 'grabbing' : 'grab' - })) + nodeStyle: computed( + (): CSSProperties => ({ + position: 'absolute' as const, + left: `${position.value.x}px`, + top: `${position.value.y}px`, + width: `${size.value.width}px`, + height: `${size.value.height}px`, + zIndex: zIndex.value, + cursor: isDragging ? 'grabbing' : 'grab' + }) + ) } } diff --git a/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts b/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts index 0615e9b9a..e046faf81 100644 --- a/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts +++ b/tests-ui/tests/renderer/extensions/vueNodes/components/LGraphNode.spec.ts @@ -50,6 +50,7 @@ vi.mock('@/composables/useErrorHandling', () => ({ vi.mock('@/renderer/extensions/vueNodes/layout/useNodeLayout', () => ({ useNodeLayout: () => ({ position: { x: 100, y: 50 }, + size: { width: 200, height: 100 }, startDrag: vi.fn(), handleDrag: vi.fn(), endDrag: vi.fn() From d01081dab4dca5125442dd5e9933dec32d535b36 Mon Sep 17 00:00:00 2001 From: Comfy Org PR Bot Date: Tue, 23 Sep 2025 09:36:12 +0800 Subject: [PATCH 13/18] 1.28.1 (#5728) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch version increment to 1.28.1 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5728-1-28-1-2776d73d365081b287e4fdc5cbcea07b) by [Unito](https://www.unito.io) Co-authored-by: AustinMroz <4284322+AustinMroz@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 923f04b7e..ec94c881b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@comfyorg/comfyui-frontend", "private": true, - "version": "1.28.0", + "version": "1.28.1", "type": "module", "repository": "https://github.com/Comfy-Org/ComfyUI_frontend", "homepage": "https://comfy.org", From 1611c7a2241153f77fc4e501ff1e727d82137da4 Mon Sep 17 00:00:00 2001 From: Alexander Brown Date: Mon, 22 Sep 2025 18:47:26 -0700 Subject: [PATCH 14/18] Refactor: Further state management cleanup (#5727) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Going through the GraphNodeManager and VueNodeLifecycle one property at a time and removing the pieces that are not currently wired up or used by the rest of the application Fixes paste location by updating the layoutStore in LGraphCanvas (which already mutates layoutStore elsewhere) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5727-WIP-Refactor-Further-state-management-cleanup-2766d73d36508173b379c6009c194a5a) by [Unito](https://www.unito.io) --- src/composables/graph/useGraphNodeManager.ts | 258 +----------------- src/composables/graph/useVueNodeLifecycle.ts | 21 +- src/lib/litegraph/src/LGraphCanvas.ts | 12 + src/lib/litegraph/src/interfaces.ts | 1 + src/renderer/core/layout/store/layoutStore.ts | 1 + .../composables/useNodeEventHandlers.ts | 1 - 6 files changed, 17 insertions(+), 277 deletions(-) diff --git a/src/composables/graph/useGraphNodeManager.ts b/src/composables/graph/useGraphNodeManager.ts index 962f2b460..ea3f61a14 100644 --- a/src/composables/graph/useGraphNodeManager.ts +++ b/src/composables/graph/useGraphNodeManager.ts @@ -2,42 +2,15 @@ * Vue node lifecycle management for LiteGraph integration * Provides event-driven reactivity with performance optimizations */ -import { nextTick, reactive } from 'vue' +import { reactive } from 'vue' import { useChainCallback } from '@/composables/functional/useChainCallback' import { useLayoutMutations } from '@/renderer/core/layout/operations/layoutMutations' import { LayoutSource } from '@/renderer/core/layout/types' -import { type Bounds, QuadTree } from '@/renderer/core/spatial/QuadTree' import type { WidgetValue } from '@/types/simplifiedWidget' -import type { SpatialIndexDebugInfo } from '@/types/spatialIndex' import type { LGraph, LGraphNode } from '../../lib/litegraph/src/litegraph' -export interface NodeState { - visible: boolean - dirty: boolean - lastUpdate: number - culled: boolean -} - -interface NodeMetadata { - lastRenderTime: number - cachedBounds: DOMRect | null - lodLevel: 'high' | 'medium' | 'low' - spatialIndex?: QuadTree -} - -interface PerformanceMetrics { - fps: number - frameTime: number - updateTime: number - nodeCount: number - culledCount: number - callbackUpdateCount: number - rafUpdateCount: number - adaptiveQuality: boolean -} - export interface SafeWidgetData { name: string type: string @@ -63,39 +36,15 @@ export interface VueNodeData { } } -interface SpatialMetrics { - queryTime: number - nodesInIndex: number -} - export interface GraphNodeManager { // Reactive state - safe data extracted from LiteGraph nodes vueNodeData: ReadonlyMap - nodeState: ReadonlyMap // Access to original LiteGraph nodes (non-reactive) getNode(id: string): LGraphNode | undefined // Lifecycle methods - setupEventListeners(): () => void cleanup(): void - - // Update methods - scheduleUpdate( - nodeId?: string, - priority?: 'critical' | 'normal' | 'low' - ): void - forceSync(): void - - // Spatial queries - getVisibleNodeIds(viewportBounds: Bounds): Set - - // Performance - performanceMetrics: PerformanceMetrics - spatialMetrics: SpatialMetrics - - // Debug - getSpatialIndexDebugInfo(): SpatialIndexDebugInfo | null } export function useGraphNodeManager(graph: LGraph): GraphNodeManager { @@ -103,61 +52,10 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { const { createNode, deleteNode, setSource } = useLayoutMutations() // Safe reactive data extracted from LiteGraph nodes const vueNodeData = reactive(new Map()) - const nodeState = reactive(new Map()) // Non-reactive storage for original LiteGraph nodes const nodeRefs = new Map() - // WeakMap for heavy data that auto-GCs when nodes are removed - const nodeMetadata = new WeakMap() - - // Performance tracking - const performanceMetrics = reactive({ - fps: 0, - frameTime: 0, - updateTime: 0, - nodeCount: 0, - culledCount: 0, - callbackUpdateCount: 0, - rafUpdateCount: 0, - adaptiveQuality: false - }) - - // Spatial indexing using QuadTree - const spatialIndex = new QuadTree( - { x: -10000, y: -10000, width: 20000, height: 20000 }, - { maxDepth: 6, maxItemsPerNode: 4 } - ) - let lastSpatialQueryTime = 0 - - // Spatial metrics - const spatialMetrics = reactive({ - queryTime: 0, - nodesInIndex: 0 - }) - - // Update batching - const pendingUpdates = new Set() - const criticalUpdates = new Set() - const lowPriorityUpdates = new Set() - let updateScheduled = false - let batchTimeoutId: number | null = null - - // Change detection state - const lastNodesSnapshot = new Map< - string, - { pos: [number, number]; size: [number, number] } - >() - - const attachMetadata = (node: LGraphNode) => { - nodeMetadata.set(node, { - lastRenderTime: performance.now(), - cachedBounds: null, - lodLevel: 'high', - spatialIndex: undefined - }) - } - // Extract safe data from LiteGraph node for Vue consumption const extractVueNodeData = (node: LGraphNode): VueNodeData => { // Determine subgraph ID - null for root graph, string for subgraphs @@ -278,7 +176,6 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { ...currentData, widgets: updatedWidgets }) - performanceMetrics.callbackUpdateCount++ } catch (error) { // Ignore widget update errors to prevent cascade failures } @@ -348,70 +245,6 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { }) } - // Uncomment when needed for future features - // const getNodeMetadata = (node: LGraphNode): NodeMetadata => { - // let metadata = nodeMetadata.get(node) - // if (!metadata) { - // attachMetadata(node) - // metadata = nodeMetadata.get(node)! - // } - // return metadata - // } - const scheduleUpdate = ( - nodeId?: string, - priority: 'critical' | 'normal' | 'low' = 'normal' - ) => { - if (nodeId) { - const state = nodeState.get(nodeId) - if (state) state.dirty = true - - // Priority queuing - if (priority === 'critical') { - criticalUpdates.add(nodeId) - flush() // Immediate flush for critical updates - return - } else if (priority === 'low') { - lowPriorityUpdates.add(nodeId) - } else { - pendingUpdates.add(nodeId) - } - } - - if (!updateScheduled) { - updateScheduled = true - - // Adaptive batching strategy - if (pendingUpdates.size > 10) { - // Many updates - batch in nextTick - void nextTick(() => flush()) - } else { - // Few updates - small delay for more batching - batchTimeoutId = window.setTimeout(() => flush(), 4) - } - } - } - - const flush = () => { - const startTime = performance.now() - - if (batchTimeoutId !== null) { - clearTimeout(batchTimeoutId) - batchTimeoutId = null - } - - // Clear all pending updates - criticalUpdates.clear() - pendingUpdates.clear() - lowPriorityUpdates.clear() - updateScheduled = false - - // Sync with graph state - syncWithGraph() - - const endTime = performance.now() - performanceMetrics.updateTime = endTime - startTime - } - const syncWithGraph = () => { if (!graph?._nodes) return @@ -422,9 +255,6 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { if (!currentNodes.has(id)) { nodeRefs.delete(id) vueNodeData.delete(id) - nodeState.delete(id) - lastNodesSnapshot.delete(id) - spatialIndex.remove(id) } } @@ -440,47 +270,7 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { // Extract and store safe data for Vue vueNodeData.set(id, extractVueNodeData(node)) - - if (!nodeState.has(id)) { - nodeState.set(id, { - visible: true, - dirty: false, - lastUpdate: performance.now(), - culled: false - }) - attachMetadata(node) - - // Add to spatial index - const bounds: Bounds = { - x: node.pos[0], - y: node.pos[1], - width: node.size[0], - height: node.size[1] - } - spatialIndex.insert(id, bounds, id) - } }) - - // Update performance metrics - performanceMetrics.nodeCount = vueNodeData.size - performanceMetrics.culledCount = Array.from(nodeState.values()).filter( - (s) => s.culled - ).length - } - - // Most performant: Direct position sync without re-setting entire node - // Query visible nodes using QuadTree spatial index - const getVisibleNodeIds = (viewportBounds: Bounds): Set => { - const startTime = performance.now() - - // Use QuadTree for fast spatial query - const results: string[] = spatialIndex.query(viewportBounds) - const visibleIds = new Set(results) - - lastSpatialQueryTime = performance.now() - startTime - spatialMetrics.queryTime = lastSpatialQueryTime - - return visibleIds } /** @@ -502,30 +292,11 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { // Extract initial data for Vue (may be incomplete during graph configure) vueNodeData.set(id, extractVueNodeData(node)) - // Set up reactive tracking state - nodeState.set(id, { - visible: true, - dirty: false, - lastUpdate: performance.now(), - culled: false - }) - const initializeVueNodeLayout = () => { // Extract actual positions after configure() has potentially updated them const nodePosition = { x: node.pos[0], y: node.pos[1] } const nodeSize = { width: node.size[0], height: node.size[1] } - attachMetadata(node) - - // Add to spatial index for viewport culling with final positions - const nodeBounds: Bounds = { - x: nodePosition.x, - y: nodePosition.y, - width: nodeSize.width, - height: nodeSize.height - } - spatialIndex.insert(id, nodeBounds, id) - // Add node to layout store with final positions setSource(LayoutSource.Canvas) void createNode(id, { @@ -569,9 +340,6 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { ) => { const id = String(node.id) - // Remove from spatial index - spatialIndex.remove(id) - // Remove node from layout store setSource(LayoutSource.Canvas) void deleteNode(id) @@ -579,8 +347,6 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { // Clean up all tracking references nodeRefs.delete(id) vueNodeData.delete(id) - nodeState.delete(id) - lastNodesSnapshot.delete(id) // Call original callback if provided if (originalCallback) { @@ -602,21 +368,9 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { graph.onNodeRemoved = originalOnNodeRemoved || undefined graph.onTrigger = originalOnTrigger || undefined - // Clear pending updates - if (batchTimeoutId !== null) { - clearTimeout(batchTimeoutId) - batchTimeoutId = null - } - // Clear all state maps nodeRefs.clear() vueNodeData.clear() - nodeState.clear() - lastNodesSnapshot.clear() - pendingUpdates.clear() - criticalUpdates.clear() - lowPriorityUpdates.clear() - spatialIndex.clear() } } @@ -712,15 +466,7 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { return { vueNodeData, - nodeState, getNode, - setupEventListeners, - cleanup, - scheduleUpdate, - forceSync: syncWithGraph, - getVisibleNodeIds, - performanceMetrics, - spatialMetrics, - getSpatialIndexDebugInfo: () => spatialIndex.getDebugInfo() + cleanup } } diff --git a/src/composables/graph/useVueNodeLifecycle.ts b/src/composables/graph/useVueNodeLifecycle.ts index 95e68be6a..84e095b5f 100644 --- a/src/composables/graph/useVueNodeLifecycle.ts +++ b/src/composables/graph/useVueNodeLifecycle.ts @@ -1,20 +1,9 @@ -/** - * Vue Node Lifecycle Management Composable - * - * Handles the complete lifecycle of Vue node rendering system including: - * - Node manager initialization and cleanup - * - Layout store synchronization - * - Slot and link sync management - * - Reactive state management for node data, positions, and sizes - * - Memory management and proper cleanup - */ import { createSharedComposable } from '@vueuse/core' -import { computed, readonly, ref, shallowRef, watch } from 'vue' +import { readonly, ref, shallowRef, watch } from 'vue' import { useGraphNodeManager } from '@/composables/graph/useGraphNodeManager' import type { GraphNodeManager, - NodeState, VueNodeData } from '@/composables/graph/useGraphNodeManager' import { useVueFeatureFlags } from '@/composables/useVueFeatureFlags' @@ -42,13 +31,10 @@ function useVueNodeLifecycleIndividual() { // Vue node data state const vueNodeData = ref>(new Map()) - const nodeState = ref>(new Map()) // Trigger for forcing computed re-evaluation const nodeDataTrigger = ref(0) - const isNodeManagerReady = computed(() => nodeManager.value !== null) - const initializeNodeManager = () => { // Use canvas graph if available (handles subgraph contexts), fallback to app graph const activeGraph = comfyApp.canvas?.graph || comfyApp.graph @@ -61,7 +47,6 @@ function useVueNodeLifecycleIndividual() { // Use the manager's data maps vueNodeData.value = manager.vueNodeData - nodeState.value = manager.nodeState // Initialize layout system with existing nodes from active graph const nodes = activeGraph._nodes.map((node: LGraphNode) => ({ @@ -124,7 +109,6 @@ function useVueNodeLifecycleIndividual() { // Reset reactive maps to clean state vueNodeData.value = new Map() - nodeState.value = new Map() } // Watch for Vue nodes enabled state changes @@ -218,10 +202,7 @@ function useVueNodeLifecycleIndividual() { return { vueNodeData, - nodeState, - nodeDataTrigger: readonly(nodeDataTrigger), nodeManager: readonly(nodeManager), - isNodeManagerReady, // Lifecycle methods initializeNodeManager, diff --git a/src/lib/litegraph/src/LGraphCanvas.ts b/src/lib/litegraph/src/LGraphCanvas.ts index 83ce47660..0cf68e3f7 100644 --- a/src/lib/litegraph/src/LGraphCanvas.ts +++ b/src/lib/litegraph/src/LGraphCanvas.ts @@ -4032,6 +4032,18 @@ export class LGraphCanvas // TODO: Report failures, i.e. `failedNodes` + const newPositions = created.map((node) => ({ + nodeId: String(node.id), + bounds: { + x: node.pos[0], + y: node.pos[1], + width: node.size?.[0] ?? 100, + height: node.size?.[1] ?? 200 + } + })) + + layoutStore.batchUpdateNodeBounds(newPositions) + this.selectItems(created) graph.afterChange() diff --git a/src/lib/litegraph/src/interfaces.ts b/src/lib/litegraph/src/interfaces.ts index 359ccfd5f..d8f623712 100644 --- a/src/lib/litegraph/src/interfaces.ts +++ b/src/lib/litegraph/src/interfaces.ts @@ -82,6 +82,7 @@ export interface Positionable extends Parent, HasBoundingRect { * @default 0,0 */ readonly pos: Point + readonly size?: Size /** true if this object is part of the selection, otherwise false. */ selected?: boolean diff --git a/src/renderer/core/layout/store/layoutStore.ts b/src/renderer/core/layout/store/layoutStore.ts index 254b27a2c..15d412814 100644 --- a/src/renderer/core/layout/store/layoutStore.ts +++ b/src/renderer/core/layout/store/layoutStore.ts @@ -1379,6 +1379,7 @@ class LayoutStoreImpl implements LayoutStore { this.spatialIndex.update(nodeId, bounds) ynode.set('bounds', bounds) + ynode.set('position', { x: bounds.x, y: bounds.y }) ynode.set('size', { width: bounds.width, height: bounds.height }) } }, this.currentActor) diff --git a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts index e3ab1c66c..6adee1e89 100644 --- a/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts +++ b/src/renderer/extensions/vueNodes/composables/useNodeEventHandlers.ts @@ -82,7 +82,6 @@ function useNodeEventHandlersIndividual() { const currentCollapsed = node.flags?.collapsed ?? false if (currentCollapsed !== collapsed) { node.collapse() - nodeManager.value.scheduleUpdate(nodeId, 'critical') } } From b4976c1ddc94751416e8c670055a9ecaef41fcf9 Mon Sep 17 00:00:00 2001 From: Christian Byrne Date: Mon, 22 Sep 2025 19:04:08 -0700 Subject: [PATCH 15/18] Revert: Move VueFire persistence configuration to initialization (#5614) (#5729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This reverts PR #5614 which moved VueFire persistence configuration to initialization. ## Reason for Revert It breaks Google SSO login with error: ``` useErrorHandling.ts:12 FirebaseError: Firebase: Error (auth/argument-error). at createErrorInternal (index-c92d61ad.js:506:41) at _assert (index-c92d61ad.js:512:15) at _withDefaultResolver (index-c92d61ad.js:9237:5) at signInWithPopup (index-c92d61ad.js:9457:30) at executeAuthAction.createCustomer (firebaseAuthStore.ts:263:25) at executeAuthAction (firebaseAuthStore.ts:223:28) at Proxy.loginWithGoogle (firebaseAuthStore.ts:262:5) at Proxy.wrappedAction (pinia.mjs:1405:26) at useFirebaseAuthActions.ts:104:28 at Object.signInWithGoogle (useErrorHandling.ts:39:22) ``` ## Changes - Reverts commit ea4e57b60 "Move VueFire persistence configuration to initialization (#5614)" - Restores previous Firebase auth persistence behavior ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5729-Revert-Move-VueFire-persistence-configuration-to-initialization-5614-2776d73d3650814c9b80d9c67c852874) by [Unito](https://www.unito.io) --- src/main.ts | 21 ++----------------- src/stores/firebaseAuthStore.ts | 4 ++++ .../tests/store/firebaseAuthStore.test.ts | 7 +++++++ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/main.ts b/src/main.ts index 267de4f44..b15d4067f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,11 +2,6 @@ import { definePreset } from '@primevue/themes' import Aura from '@primevue/themes/aura' import * as Sentry from '@sentry/vue' import { initializeApp } from 'firebase/app' -import { - browserLocalPersistence, - browserSessionPersistence, - indexedDBLocalPersistence -} from 'firebase/auth' import { createPinia } from 'pinia' import 'primeicons/primeicons.css' import PrimeVue from 'primevue/config' @@ -14,7 +9,7 @@ import ConfirmationService from 'primevue/confirmationservice' import ToastService from 'primevue/toastservice' import Tooltip from 'primevue/tooltip' import { createApp } from 'vue' -import { VueFire, VueFireAuthWithDependencies } from 'vuefire' +import { VueFire, VueFireAuth } from 'vuefire' import { FIREBASE_CONFIG } from '@/config/firebase' import '@/lib/litegraph/public/css/litegraph.css' @@ -71,18 +66,6 @@ app .use(i18n) .use(VueFire, { firebaseApp, - modules: [ - // Configure Firebase Auth persistence: localStorage first, IndexedDB last. - // Localstorage is preferred to IndexedDB for mobile Safari compatibility. - VueFireAuthWithDependencies({ - dependencies: { - persistence: [ - browserLocalPersistence, - browserSessionPersistence, - indexedDBLocalPersistence - ] - } - }) - ] + modules: [VueFireAuth()] }) .mount('#vue-app') diff --git a/src/stores/firebaseAuthStore.ts b/src/stores/firebaseAuthStore.ts index 6e4974839..698efff3e 100644 --- a/src/stores/firebaseAuthStore.ts +++ b/src/stores/firebaseAuthStore.ts @@ -6,10 +6,12 @@ import { GoogleAuthProvider, type User, type UserCredential, + browserLocalPersistence, createUserWithEmailAndPassword, deleteUser, onAuthStateChanged, sendPasswordResetEmail, + setPersistence, signInWithEmailAndPassword, signInWithPopup, signOut, @@ -80,6 +82,8 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => { // Retrieves the Firebase Auth instance. Returns `null` on the server. // When using this function on the client in TypeScript, you can force the type with `useFirebaseAuth()!`. const auth = useFirebaseAuth()! + // Set persistence to localStorage (works in both browser and Electron) + void setPersistence(auth, browserLocalPersistence) onAuthStateChanged(auth, (user) => { currentUser.value = user diff --git a/tests-ui/tests/store/firebaseAuthStore.test.ts b/tests-ui/tests/store/firebaseAuthStore.test.ts index ef8ffe0bd..d37c3857a 100644 --- a/tests-ui/tests/store/firebaseAuthStore.test.ts +++ b/tests-ui/tests/store/firebaseAuthStore.test.ts @@ -150,6 +150,13 @@ describe('useFirebaseAuthStore', () => { expect(store.loading).toBe(false) }) + it('should set persistence to local storage on initialization', () => { + expect(firebaseAuth.setPersistence).toHaveBeenCalledWith( + mockAuth, + firebaseAuth.browserLocalPersistence + ) + }) + it('should properly clean up error state between operations', async () => { // First, cause an error const mockError = new Error('Invalid password') From cec1de014722d29e06d9971d6d74a32f174a1a12 Mon Sep 17 00:00:00 2001 From: Simula_r <18093452+simula-r@users.noreply.github.com> Date: Mon, 22 Sep 2025 20:05:13 -0700 Subject: [PATCH 16/18] feat: vue nodes LOD system (#5631) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Replaced reactive (Vue-based) widget LOD with CSS visibility control. Performance doesn't dramatically improve, but we avoid the mount/unmount overhead during zoom/pan operations. This PR implements the visual component of LOD—complex widgets that need lifecycle management will be addressed separately. ### Problem & Solution Problem: we want LOD to improve rendering performance and visual feedback but discovered using reactivity in the current setup for it meant mounting/unmounting caused worse lag than the performance it aimed to fix. Switching to render all the details all the time but using css visibility proved to be the best solution. However, it doesn't improve rendering performance by much because the GPU texture size is the bottleneck (from TransformPane.vue CSS transforms) and not rasterization. Solution: Keep all nodes/widgets mounted, use CSS visibility: hidden for LOD. Trade memory for performance stability during zoom/pan/drag operations. ### Technical Decision We chose Performance > Memory: - CSS transforms create a single GPU texture whose size depends on node count, not widget complexity - Mounting/unmounting hundreds of widgets during zoom = noticeable lag from Vue VDOM diffing (since all components are mounted all the time because of viewport culling challenge/trade off see https://github.com/Comfy-Org/ComfyUI_frontend/pull/5510.) - CSS visibility changes = no reactivity overhead, smooth interactions - Result: Similar performance, but without interaction stutters This is the visual layer only. If we want a hook into the LOD state per node / widget that would be the next follow up system to implement. ### Next Steps (maybe) - Chunked (split up single Transform Pane transform layer) when rendering 1000+ nodes (maybe) - ~~Selective unmounting API for widgets that register as "expensive"~~ - ~~Client bound hydration system~~ ## Screenshots (if applicable) image image ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5631-feat-vue-nodes-LOD-system-2726d73d365081c6a6c4e14aa634f19c) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions --- .../vue-node-dragging-link-chromium-linux.png | Bin 54042 -> 54966 bytes browser_tests/tests/vueNodes/lod.spec.ts | 44 +++ .../vue-nodes-default-chromium-linux.png | Bin 0 -> 108956 bytes .../vue-nodes-lod-active-chromium-linux.png | Bin 0 -> 40749 bytes .../vue-nodes-lod-inactive-chromium-linux.png | Bin 0 -> 108983 bytes src/assets/css/style.css | 105 +++--- .../core/layout/transform/TransformPane.vue | 13 +- .../vueNodes/components/ImagePreview.vue | 27 +- .../vueNodes/components/InputSlot.vue | 16 +- .../vueNodes/components/LGraphNode.vue | 56 +-- .../vueNodes/components/LODFallback.vue | 3 + .../vueNodes/components/NodeContent.vue | 2 - .../vueNodes/components/NodeHeader.vue | 61 ++-- .../vueNodes/components/NodeWidgets.vue | 14 +- .../vueNodes/components/OutputSlot.vue | 19 +- .../vueNodes/components/SlotConnectionDot.vue | 1 + .../widgets/LOD_IMPLEMENTATION_GUIDE.md | 326 +++++------------- .../extensions/vueNodes/lod/useLOD.ts | 197 ++--------- .../vueNodes/preview/useNodePreviewState.ts | 9 +- .../widgets/components/WidgetTextarea.vue | 24 +- .../components/layout/WidgetLayoutField.vue | 34 +- .../vueNodes/components/LGraphNode.spec.ts | 11 - .../extensions/vueNodes/lod/useLOD.test.ts | 293 +++------------- 23 files changed, 381 insertions(+), 874 deletions(-) create mode 100644 browser_tests/tests/vueNodes/lod.spec.ts create mode 100644 browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png create mode 100644 browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png create mode 100644 browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png create mode 100644 src/renderer/extensions/vueNodes/components/LODFallback.vue diff --git a/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png b/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png index d4c32b4ea2f5e6f13e9409d41e82454e8db6f8d0..24f465271bbe1310da6a9de7bab1e9b352caf0fa 100644 GIT binary patch literal 54966 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¨|tMnpHXylg7hkP!+!ifqH%#>~WPc*P5TT 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≫|cx%BQ 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 Qp$8)+CNG)?eevf10X%eTMF0Q* diff --git a/browser_tests/tests/vueNodes/lod.spec.ts b/browser_tests/tests/vueNodes/lod.spec.ts new file mode 100644 index 000000000..9011f91b1 --- /dev/null +++ b/browser_tests/tests/vueNodes/lod.spec.ts @@ -0,0 +1,44 @@ +import { expect } from '@playwright/test' + +import { comfyPageFixture as test } from '../../fixtures/ComfyPage' + +test.describe('Vue Nodes - LOD', () => { + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting('Comfy.VueNodes.Enabled', true) + await comfyPage.setup() + await comfyPage.loadWorkflow('default') + }) + + test('should toggle LOD based on zoom threshold', async ({ comfyPage }) => { + await comfyPage.vueNodes.waitForNodes() + + const initialNodeCount = await comfyPage.vueNodes.getNodeCount() + expect(initialNodeCount).toBeGreaterThan(0) + + await expect(comfyPage.canvas).toHaveScreenshot('vue-nodes-default.png') + + const vueNodesContainer = comfyPage.vueNodes.nodes + const textboxesInNodes = vueNodesContainer.getByRole('textbox') + const buttonsInNodes = vueNodesContainer.getByRole('button') + + await expect(textboxesInNodes.first()).toBeVisible() + await expect(buttonsInNodes.first()).toBeVisible() + + await comfyPage.zoom(120, 10) + await comfyPage.nextFrame() + + await expect(comfyPage.canvas).toHaveScreenshot('vue-nodes-lod-active.png') + + await expect(textboxesInNodes.first()).toBeHidden() + await expect(buttonsInNodes.first()).toBeHidden() + + await comfyPage.zoom(-120, 10) + await comfyPage.nextFrame() + + await expect(comfyPage.canvas).toHaveScreenshot( + 'vue-nodes-lod-inactive.png' + ) + await expect(textboxesInNodes.first()).toBeVisible() + await expect(buttonsInNodes.first()).toBeVisible() + }) +}) diff --git a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..8e93b88f3f9c18104f5bb5ea67be850622875564 GIT binary patch literal 108956 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 literal 0 HcmV?d00001 diff --git a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-active-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfa61c196920ce05a95e4590d35e1c60a483eaa GIT binary patch literal 40749 zcmaI81yogC)GmBLK%_;GPU%Kcx{(&}&>F$=27LI^4NOyPr3t#>2 zz2n~T@8M89vGgNu1#i` zjFMHAcZ1vJw)fQ3xaX9m=G1KV@$8u8W|c;PK>-h2m_n#FPY~xN8r1_M`g=%(rovN) zHx5qn+8+@<5+$5_i{3c!AEr2_am~N>S)DL9GNQU`34yJ)Qc z-^-A<=3)?(yAQm5P-J*$*Fu5tEdYXX_W~paWrRHx8Ij}9e;_nSNU#3;={YKD>z|)E z95A;ILk)g#SpIwA8Rf+{LMq6;KW~dk{Jk~gt^eD<_k=tU4|Kj8EO1d`>7S~I;)dnS zhW9o2-0qeY_jUh3{O{S2hpp(;^nn-EuQ-Ba9#M6qaMM!L*XR^wy5&*)YX>27+pEI* z?X>0OUA~DJR4O{zk?u?B;aAnT5}_KGzr#)kTFwWf(h?VIOMI_4=Pt%-wp=b-HFq0! zn|Hld1sNF`7gB<;D@gw|rWNU-PY8w7K=f2gY@Ffi@(IVj$69J?1YRr3>hk41M)A{W zDHEUQJk>gnYo0wVCtKI9{uw%!6tj@-esQ$EIbPz*PwKeR|IFj)D~()ReDhf+JDXnZ z56dc#rrF8KNh6gH|3+1jAK}-6eSb1vNns%i4^LHYZmykW5{pK$UeBSIrlw{gQ)E<> zD!4Q>;t~_{7=ov^u~fC95Y^3~I1-93vOc5KZLddYv=2OZv>%4$FxDYAo;mEUsZUj( zdC1tS>+9>svl|wF{rX&9o{61Z^vzP>%~a!V^W|eUz2~Usd+peU9_!im%Ky`z{!#>f zR@UvDWZQ#tFYs-b2Jijfonc{NBI)cp_@SZe@Z1KyVrI?aj-`#n#6-SXx6JOvyrLo{ zW#!`h{5JxrO-)UbpIlu9!XE3&8@ziW*f%w?yxEv>cAZps#O&fSo;;8n5nlPUsHjL- zSa^AP*`=YWvGHncIMa2``}93BIx3ZHIH~(aUhX#`?7z{b__Q5mezUk?aNTL=S6OCu zc6MYHa0fG z$pmxq^V5V@2U82;pSd3_1yJ}93cbF*I3^+@@>Uu7@uSpcs+yyq?9H-##l+RglwE*& zQ)p;ta|8ySbkE=*dA|Ld6K+orm;G`pM%w5;o9cw}3bhD|XQMjaOa)ofuPbVtoRyU1 zsQmj4oYmnylEo*yI4K-QC9xJhz84W#@b@x3{*o@R>E9M>{QjkNOc$GNX!& zj0~nX0E;ZYxOi}2K)>E8Z`gdg#*Tst%vyb3UJy>X*ZF~u?DkxX;niyz8v_FaZEbCi z%#Z3}U@3^>V4z4+;-KmaO9ZyP`f;z05)}kp|G)rQ{!+AHbBe(WMO4m78-$v8oanT; zmyQ=#)wdT9sg|~OYR0B-_2n&O?d+0f(hOe28oZD~wGeV&`(C z6u|(25z+iv?t#o6Qa{_1mFIW~F}`3I78VM*?o2PV2VDF3>g&%Wa+#r_qX#riuZ5Ru zu|(653A*&}o~DcX`s~g&we=M1v1uy&x#o0#RMpgMvY%hyL`O$w%0}>VbNd^H#T)vZ zXU7|$(SrbG$iC1su9V&RVcnW zOxe`vI}Y&p<22E`7#S_x!xqBvqQ=3h{5LB^2_(l$y!O7L78VwCG3#K>j`(sDhhYW4 ze)WL}13?8=tKD>MSzcaVS=sQq6UaVB5oiX+Gxg3OD~NcV?FHt4VF=DRO8>;`Ju;oF1E! zrbXr8sD5(lTgd~eB@mY5@Llj&3eT;wPt2OLE>kvKru}E#zE|C{6yDtZ+RYE&{#i$q z#ZIoSn`CKzT+b)0c_p5!s0@{MpBx=IxwwQM1!wZh!z+t)Yn0PPK$`HrxjF|4+Vf3uc%@gm*a{0-0DCcYC(|IhiBmX;gUHd9A~OQhYH$4CoXgGFYpwzU5J+D*;& z!@=`6og}+(zD9(+vculd>+&Rz1-)+KAiWE7nH8eFvPkzCYa<+e!wOjMfxh;l$ z`0!!wYK71DywC7s%)9?-ajhO(M0ZSbG6_a&U0oe{ge-PzG|e%Y>|~AZF6gWf`Op{1 z0F*RGC)p1#UcT%gY_MN=Kbw5IQBVRhFe*KyM5~ONmUj7g+%VpxZue#w`ow>Bb~Zdb zeE!8oRu;{5j|3_iCc%4z+VRzvt&M78C9!O+f$FG(6VQa zD=#%P?(%g}k?-w-eLhHBz1kI~A0Aaapb9MmiL<)8+CwOfQ9Xx6zy7Er=+T8IKZD;y z{n{9NU{?giBSLAT-~l>D`SMW#E6Z^4v)X;<-pX}MdJ*F%iFNr!MXb!sA)LIWi8Wvk zprw_@@y|{3U`m;t;ZE6~_|ts|=df!Vxpy+>m>uJ1aaP^x!ph3nMSh9E@lEgjP69t+ zH?Rl{baZ+Ntt>6kkPtNrcxpeZ%E<*aM@Nc8906dkd3fIS<|QgfW1!z2m{XIJB4_jW zyvYlj`zVo{&VGl0&8}wFqrm4ArL=0A&&4`Nfy3o?4f=bW8zC)p0ydCIe%7d@3OLWV zzQg%IFn5z3y3W=9%%(jkBHZrUk)PI&Kb$L3Q4%wzTBnFSf+@?g;v^327%(GOQJvcdki! zCWFfPEPCAQ+VJ?=PUv9!6++Ldg@`w|22Tf#)}L?Vtl~*e)YusoT0Okoz-pqHK4}n1 z>~K_MkEjiFYiW9GjHL#Wv`?s-ej|KITR|Gy@k&*L2w@T4mySWw?H1d|4ww48mhNMh*=&N%ZD(T-~uLi_vG-!U_`08hq_XlWu* zM=bJZ4x4imvpx>#UR>Ya#$09i3o-*GK_*4mbWmHDQh7_obr3@z=M%h!@B1 zNGi*&L60pL&L|h1V^LO2AcfKG0KUP+1-GqvB!PkAH(=`6F!Lqix4N2I22}D-8{eXq z>J(8K;7fB7I;JR_0aTvB5L#wFik0z>GlxN5MFl(i<*g?NahOkw=n)Jn6!HGu*WT6| zmuVeg)=X_X3BdHp2n|6rWAR?0_#R7&{{`{2-wqp_hi7NWH|xc?ot&K3NHQ2cvIYIc zo({AL@4Z9}3pWvm=T9$>!{#d@zWmRQ|DgCZM7spnKZD@{<=?16+MYiD)8NQ8Byp|M zS8bt0T&PqaXUIm7V^%XLtI@^eH8u*JW#)tBd3SLZ{q+Bb^@9{}{L^oaat~Jq(02eZ zUh~5i`I>L3xXD8YaHQzuopN=zbrYe7eDv zooeYWqvq#d?6|gE`cYg_jzLKZD$IsNF1IQ!3SWVrns@3qZ_d+iwV|Uk4X)kwmS2Rf zkKh1ajO)A3xTTQ(op#)pQ0Qp6Ngn_}r#~dI*F9$ekO8>M?fhUF{V@x_*O`4GGd~?$ z{AOl^$Vkm8_}EUvuE>7JBg6AvO*%ISx#r)QkNkYMW1^nJ({Fydu5t|tIgUa#!Lyt_ zAZY^58zAEw>g!+MT<+fQV=-u~1&FulbheRjm6b>N1;tE^j1Q&v&sWp2>C7Yo z0d#HhaCUcp2HW~o25WHHK5!GdP|zqi4j0_{3Q{H$6ZpI;-m+%P#i*I+b^Y1LYe<_mkCfQ)YYt5h6bsh+D0P$!s5R<}=J19^;(|4@Py>wdSx>5Qx4 zUN(KY*PE@H63M^uh6Ghr1>t6(t2^bo+8IJ1C?K%XpO|@@@aa>P!(tcM&rdLmK>$pZ z8cEvN*l^V5WMv6mtYuD2Ot8g+(Xi@?rcLIxxi}y4^#LjKdzu-`k@FXZ>^5Pmu|h^B zCR`+=#jdcnRDcEAwm+Z~_^b-f$;r!G+S;zT-y~TTPc*t84*A|3K9LQ_kzje;*A+%G zW9#ba+0gdtdr!~#(Cw8*};ihF}rGCm>M07tjq+s}%qQ zy_uT3sb&afZ@GG-rZ%!&Gq0M){eqQS`8%tBtc2TWGIU%hrWK>;8WkA2+J!H8sGb+(S5rQ$DcU<+48R8`U%<^Z7*WOrF}l@b#htg#7VRjLM{S^<8MpBaOG557_x! zPR(twF3il#w0-xuJ_ZzU1z=)rl@5B_HYVJa0ZT&A9)n1(3$NF6xRfWf5*O^u9*%bjkl|w1dG9wVk&A&=VkYU}YqWN`IU}bGh<4;3RA5kfC zeaEI~Gf@6zqNogpfq?{69l(??yU3l>S5S&|Ajh=M4$+S-|}CKil+*Dx(p=oT&T6SrQ+k`yEF*b zqLz+tj^@%~IgmH0zJyoeyyH?^4axx*fNQazJ{_m})fW~j`dWn2r*pzS&dxQ=`E>ny z-taj9JLc7Y^!NQ_wG9c?Yp{wvtg^^o93#J*bz8*r9?DjTe+eChCxtK8fx{*j7-lxJME zHdQ)y_3LyJfz2suhPE}yY64*Kb87nHm?QirO(8jh9K_takEK`lW*JbQq3_@M-S*}|=DWlf^f)rNuvq5<3*ZhS0;E`2xRvTU`=B^R zNao+JQJdzzl2}<;$zwI92$)W7h2gZv?;!ddrDWc_{qAt(+^czes>XM(?f&VUukYN` zmYd@eY%+mL@Ya2Dx3_A&gn~|MKMsdPeK&sQ1*X#{`Rw^oO#9wmgYD~V0o(UE>iXK6 z8(6a-)y;+eehGrVZ)oVYi?8`h1e?$8^{MZ1fgvW#$yUV>2!dk$h7&8p%cSPj={mrdlbgS*=W?hj#bHpTcFFtTdCw~d1)g&{d`QC>_i{#|w zOV$=V3H!i<(iYo)@DA{qwV>~>pN3_eS2j1_fbAO0D5~gNacksN4)mG)(7(uOUnb7P zyXp&woZ(}N9iV({ZIK4#x79vZP=ND&#B3$J_n&V0Xq=%7;z$|~ggZM|C#TA)sxV(3 zD%0}v@*_y0g$~%5axAFOGLiWgz7oS#s!k1gjYmq^g zahacZGZ@T5D7q3{k1f7^;l~upwu`5%Y{1kud9^zZ-9uG88(v)A3e3m|MimbL531U)F5zegCDlkPT5ArQUkq{+Q6)LHONaPU8A@SgWm2za+Z~nB* z*Lc{`NAx^rrSe*_I2S=$}U{Z1TT|b~y;;P>sAPyZqZ-H=l zfSu2!VaBrRx2ld8EYw{nZFY9n9_FQqePX-e1=A# z1|8i!H8RaK3d*3;h}VEZ;dE<~X!3PhMYCBJ7``>&CNX5-77`5I4y5sGj$vz7HZ;~G z9NiA@al){Xy0oZUhKzpm4_a4unpGlu|?Y4}`{?0KAtb{uY9Iw~*;NbjI- zLSX6Dx>&55IF9is?;xQ%9!mxm1j12A>rtZlUyq*S{7oE?NSwb}9zsd=3gfRRFZBRs zJ)9velgY`-YBOIzMn?8dY<|AYZ;_h_4Kz|o{n|$~PF#L(-R8A6RR_rjbc-Y~Fqa~C z0zFNwbjV|5#CMC`5!lerm6cB5Mikyh!)|(H2!w$-7SS|D^%GLcEf7ChM`rhx0-*phim^{)x2a zV2c2^W!ST34ii!XJuJVVfPhtpTUk>UfU5o61lo$!zPCQtc@BZZY&wU8$04#t6m<0td0Tt22`+!q!GsP?M9qejT)6<2n z96Q_B4M9Rrxwy!%WC0}g^b`cU^Wee30gwc}FHd-Qcs|9(vS^il22>y?ht7!y?2Cp5 z2F;GEgDWd5KsvN4Y0`j>0^q$?0$$jeZE65A{pZiGI)m|nPDWu#lJRkLbQIj$KN4)q z5o<0-M_pBlt-t*#YR(e{C8&v00wT$z4%RcK9|Tl6Fa+- z=9!2L2Hk4wD4M+8!8_QKLw8Nn9YHY!uHIf^UI+m`K0r+x6xn*3n(?Wr`dV6q7}=PZ zm=_9Q2!Nsugh3Aoma1fYU-sO5tIXt&aUea8kodFf)pCGt%r6-|4v~(|0tEJ<#9+E; z2}AINHP+>J1j;{~D#Pq~QQ?L5vP1@mQ^o zWRrHUAKI;pb0ewZfmwmUU~^0ZX~McVNKLFd@SExkSt~0m6BCoOPo#ZSueHZ^CG6CI zbbA3vPjXTcF$qbka_%@u*azPBe-<8xkayZrV1JyD@68q1g8=+_PNCS~w*T7*d$@Za ztK+bdT>f%{P4v4I12#H~Rfgk9ix!#?EecvNa*-vh}^UcZA+|Bcv>< zNIfz=-50zHI#>g+O=YFO@+X1xq1Dq%E-o%V&ykUlMgu!a96~K%G!@OgSb8{W51v=> z^{aVTC=poUfaQA~k7|M;eF5lXiK47*cPTz{z;z0qtMr7>5pdlUZwpx2irG zS40R_?ErfgqU|EkeJ1Z*^e&nMzzxyB!SDFuJfa!W? zwzjs0ii8N}A@sTC;X7a(FSw-;(6PvY9gFVC+UKZRByk*Rs+3%Zn2;P!IgOXn;m*?Y zutv(R{SrwWpgukeCs`MT<>$*q7g{_rUlt3blh0!yMl$N~eFnkty>OWxts#P46ThNI zlwXf!R4>-6!!=cb$y;b>XqcI;wlbD~6y~6%%?5qj{a{(KDK;`J!lkr{x9wl|W5A*NP?zTRmE-mobz}}kb>hK+jHt7TuG|uFs=T`h+ zvVR|Y&`&N6iKDje@sV~XE3W*&Obg|V$aU4bS4tU(;>T&ZUF_4M65VAL+V;BR@cpnk zT19Doeo~GlG2$NoQ{n-b1%f&rV~RV^g;8jtV%%N{b6<3R_!-j)4YmXX@?R|gtnE-J z`^io04{l7QUeKZ-3F1QBp7{^ER1EqExjU36itQ%+% zXPNWnn3kr|8!?D7CEslAo1JOg@J#>6C$fV+XAAp22!!wBSefh3SLBliq(CAb7523J z{RARd7>7&?&&{FblHm>`6Lxhdg<@V#YE$(DJ6d#s9K9-Q(aNpQcPlB zw@$rwJAP5K`gVf93O2tyD_v&0F`fTcVlI-fvSQT?g_^A8sYCbhC;sLsU15zXyHZ_5 z?jk{OL9M`y=g)e7mPY3e8*yh55t@W@%GVZ$X#SVs-wumG!hO}@pD28ru9J{O;va^Q zXSSiL^YC`c4^W$NMKv;dee`?ckMw$Mq^Ro1oOPx!PoZG*#in4D`oJ14#*;P%+4b(a zcp00G8uKsyYXje7_fX&?0drqczA`>le+|XrfR5p5t0N{YY0{=Mopbk;AT=sJU>HI6 z-PM*}&-Oov&Gga}CIIpHU2||He9qeEer@wgL%E@w>+4Nk zbx+2sl55kv-mGqxP&}4a#dC*_5)BsuyK(q_X$UqrrhZca^Gu z;qr*qpEOTXnVT^;scKP4-ukfgP=1J6@H81C1H>J*>v30m>x!JxFy1G1A`^ccUrHRa zO*xAs(+n92Mk+O}tWj>Zq%6S+LAUu<0YuE>nl3sQEZ_b8VinsFu|KKZ**QTbE+b(woed&a? zZ4F5c1tKd8OQ;4W)#T0c?BF!UvQ@>YCsOrABWQkqRw!dW*GA0In~sKFnH36Tmw)CDq3 zBDKyeh(3Np|NUd=N#MW=p~4Vt%N%{*lfltY&IVz|tIdn+*)LtQsP8FJuS(Nd@8#vw z$sN3);5V(1#*@8zsT+;>P7KoLs)QD+rpk@_E%5dYg!1O-IzPvbtLy30rxK*p!N!0{ zHv?ZKReAMHlPeD3VmKUrybX#U_t4-Kw}@F-k$SuR#GUhT^)TNilLOAC$`rkDq}mH2V;)|O=erv6#C*^KT%9IWf^tTT> z$tdq{{`7OE2$1m;Lxa~QYI`}LxWe_y_+!$O`t|KC&2&Ch6m3jsY`?4^-XD${mc=rh(n=3$inyIO1w^AOjIh9KBGt2Gsn7agNQ--T>h*+)zo84n7X_ zuu%uk@bU13U05r`u{^V%Z~Y94FnqlIR?p}80>0Q9));r9Nvi_oan4RqP_Uu4 z)(wE9%wjX{IV1hKDQtaQ1b*AZuuvS_NO})0EPqPIta_ya+e_W#l6Pi~Z~RACY&Cd& z^%J$?o*Z3FxaWG5={Ni;9u*j!>`SU}{Vo+7AMeq}ivH$JG*1{~@S7v^>x!Xf(a(6x zwWwDU9FKkbCcBXEk$l!pwB&zVub6}6{2X;~;py60^YrvIfT+NL3CB688}er3|skH`Z|5~w8QEb8*W8#*Gd_Gw99JvZvZ&>;fk!;tyAX~n+K?&&2^Hi3nM`0nkn zd4F#&wSQ%GwR|*9u<@HWkyF>f@y9*gQ4`njbWHK~U)DHa42o zx2_^`K3UYVB+g0J;^$1llb@UIU)nHkE6lsO7vh}mlQSu zEoQzuB7LrQ+}`Jw?OjX`Go(gxREE*g@NJrB6Xjm+`$~KRP3J4Y$#!X)P#)nizSuRN zN?wywf|ygUwu3frxhY^Z}G?btrwjW++|M@WqQ)HB;lo`USh% zzywoMi%y#c1rKlDyy3N(lw!opRZPHVU}BmCWfH;o%%=SbMo$w_sYrOOfi;u}KJpQh z1eFR%z~B|FYHPsa_v2fxOwv|?2jSx*((M37#Y2WnFc)r7F>&PVge<`5{OX%uGxmaRLG1uE1-rpVK!$QViXG+Bg)2#*#!1a`XCP4(VE>$YRn> z#a@^kzz~I+`kE6v9+iryXqIN0m?6ast`YZuM1Do5;7>V|wLgUf6KyGF-r;;ZOk(&b zIK>qj!yTjZN?i(gTtZ1vndZZwf|Ae`#ZMgD^R9T~J{eC^YU%(XD2_QjLUzstTC%-m z_B#_|Vq%oE-Ua(RtHVEXXJ-fSyA45*;eh*jyq%Fj9p6`FHzy+T{o;5N9UWbtEq-X# zbF-)hl?s#>0pD9W*AWmVz%FJg%v6x(fmBT;7Wa z{@aT!wGe*q{K^omZ!9W|Ut$+){jY5aZqM6y)6 z$T;)^At!CHv6N|$pAVk&Ft-vER1{GX1LZ)YNXL2Y2USzW4j9F2pO#U}QNz(o8ju5s z!n&?6Py5RMRDhJUy&|mcU)z8W532&X-43WCKw3b=43l9H2wU{;t>);|uxXKh^+SACs6l$-DCImMWr zVUFX!Z@F>*tz6dbI2Wi@ii?VR_&X9<%WL}fn;RRTr0hi}21+}S@jP~>pEVV|QLC7+ z23gPJ6!2yK8VY1pFtM{fYxtpeh(y_t<7$!a$l*hjDztMoMC=q-LW>mRE4f{?Jk6)Q z(7fIkyZB%pCGWotN&`RxVk{A7B8-p&%>UfC~r8r2w|}@l(ie{1WJ6c)l=Cecc8nAA?~{g@g^(T5&j&X zB+GwYTC<%M_vusiTuF|F$M_nDohVwy9u{`vHPEjY6KNc~twPbwE+4+7QjAqgBRJB& z-}M~MEf;;^Vtyy$2V(s{-46RV52c4qD}ca=oT~?Hgp0ScNG*TvI4x_|5AK)l+xKuY zxYfV)Fs0LY$z3@P|BlM;yCGip+LN*eKXfzB$j{GUh`9}70#8wt2Vwd8>G~rX!mutN zWonI^Ps>H)ZSAGZ13-&tpEBh-ebi@%DU$n)=JVB6B`6Hb|4jJ_l;-rlySI9K*)kXA zoDJ>+>5?`x%l%VGJl4wf+yY!>ivFKkHw`QnPpiA3fj=Xn?)Rq0PAVdmVeRBig^$ zRr?Moz={T82-k10+Hvt=iX<+PL*^<)Mu?7(w{Fy%A#dsO!3ezrV?O73zbIW7ewj?5 zZmj<>@EsodjFw5QchuLfOI5Ig0B1{?8jV=|P0Kb&BP9-Q(~jKHqv3kJrPX`!CKf3< zv7{~LcXd^q0T9yL*^AbT%o69UT!wA^GiUn9mn7GN&Rv-3p>}DJ~les%&sFl`xN$x`2pCMT)mm`BIL-pTRL0V+9_;L*s%t#FN5N+jK5HiM zc5G~CHGR&GV=p+LsXUakH7FDpx08tTH$7)>c@~4#H1h!=3^*t_@xMKZnZg&ro-u4* zsl~FOB8jhy+WKH2^?GbGjtWBWFAYDJ6|vfJs=$nJw@kfmQ9?nKhrx31#IBE)&OfbtppbHN z3wFaTMI|)>&pna|U7_w~*GzY4-r4u$<{IU&<`42vXp1N!f|lKIP>1_nIMGoE<7`Z^ z#rLf{$w%Xv!4>UE%{T}F7uj|Zr0RIZ@ynXGW{PanLX_RTYFf3P;-DxDeF%mB z`jOs3D$7Umur}X)1)25?IH-p8N28I@W zJ>!?xz2D94M0fe{isOXIsMBoVV*z!7206p|8R++0^HMFAi;q*=E&{1##e=mCUgzZ# z*3}c%7fs;k0a%^SQCow47hxBQp2^EPq&Zz6l4o~+VlU$Ga?aj=cYC~3MCPNH@jXOt zh2~u_&^&^-Fx?uwXRdo+^af?{+a6yFdOR|8Dn^dMrX?M6AQdUc#V3nDZ%2S+_^rBo zXErqnTWUJ-lLEtKxNceu$gUoc@JYU&VR48u9vgPcVdQe0)l4q?FPJ_-U_!bL2Ydgj z-FaBUg1naDBQhCTX$|RUDmgfJSn0=|kJxNp95ne%!8~^~3-O z)!G^}H*FzTH9RD=vV-Z_%k=J%T0f&YhB_)$X!&ew$95_rPNzw*QO379kW6&iw4JF% zh^zm95Weakb}`rkN(-5p6?U@~QTIKXKs^@ld7_H6>=RobkiUK8RG-;VdH5uxv!l@T zh(GnH5al5Eve5Ki)1qtI9(f--t=076=Xk{2$LFWqdsvO|5?2FcxOo z($jBDIpjMrHl6Lgh+Kj@3lCjaN4u$9#|}sizj2w{HO+dw&f1Ff_u(&q&*b1xMu`eo z9{hA`qJo}}kB`u*qM`yE&}ceMYks_6X#rGKU0_In>j4$;1VHr-XOo|n1VovoWUExL z5G`Y9$%He~Y`4n5T=RA}-P;H&yn?9ExAyw<)^Tq=7wcx&w$jR98!05;GCzmkbJ15B z=(&)$`~XV+Z&)%iCB>RIxup5R@~*@^VrbRM*0#8?aEV_TItu(zU@*uujXgp}v^Rd{ zJev@ojd2XfgGf4`QGi}vzCas+860kBg^ex>yi#(V%bCRi`ZR$vS&2Z|gA^-K*$4E@ zKrkw2im(g2tInYu(b3Tvfy0SllB}ga$Hq*#iBEUu*!#*yEsyVNvH=tV&J;MF0G@#@ z@_gFj#lyFc2Js10zR#1H5y67rOL2=M!*}@%_CBWj#0>Oou1?qPxbkg?S}Gp)h$z9L z3%^QU6+@x>=Zy~wT%U(>Dv|gc)7{PYT0wKO2!GS#Y$te*5?KGH6*GWl1YlDXgR7{h z2{7C{@VDp=O5$kc-uy41rUrdRT*7zrnR!Yh0l1qe#C0^mvRTI>oH6Wd>F5^gAGJHn)l_}-y)R+4NF20 z$QNCC>bb`H@oS9C%y2$xkxnP1FQDMUoVfWw`6;zZ+D%3kUu*Np^!E{Vs@Dd}%gq<} zp0v_Qrd_a3o3uFbD|P~1N_2+=-g353&QxMyD^6-@`A#ogdaDK zna>0hr_O41iQgQQzd%z%-)Q*j(W4^TQ)k3JLK-$54yE4QT7c=NJ_u7Io}$h4aSF+^ zX7b%!B#+?kDFpG}vOa0?Np^sNd)mWBA+*KwWu^_yQb5=}$*h3q&8 zyVvW3LIKzb&JWMW7QTCc1YpU^%7fs<5-Jt&t8BrZmzOt8AJ6uuV9qQM7SE#nX1kZI}Oc=!OPT zSI|zYIfshA_Bs11&ps?qP!;W4QTo>R$fYknZ9k}FsU@<*MKt+(Aa|DIQ-~^N$yz+Q+ z{O+{L;}BX=(ey=rVWv$4xAu>i@of6P`E4i4P1qav5UH|&84Aw405+49fAZWVmypR31ON&Am-{%4Mhqoce!^3dV;@DS-vzAL&)B#)pyfQ002&1tJya@S!}ov#T8(ZFrJ&7&{Ubp)2p&H+XmpFh`Ryc7V>eeE4`x8S z*{iP8SQX0iXh`Tq0?#r^pvS%2_HTzBcMTKKA)c%VV@>yN1-r?gXx z4fpI)gSG5NyLP&)LW+Za{yDxuDFA9i{9tbbm=3#0?D|s$T|of@(0b;otj1dr!KuNT z8qGPNVgM$8Q9ZlxY;A9$9TX+T(5!!tdJ@$f@!&pqI7inJ!n?BK?=)h0U5>-LbiKCJ zL*7004KnB3#lvjw+zFH6=!PvD%nyaA?v{=sQU=4y@^aJRprC&wC<<0i6{yP2mcIQ4 zNCNEpt9Z=J9UwCwXu^Z4_mcE1Ao84QPQ#xY^0wLuIhR|iZaJ2&2 zq+iJywdcyCB6{_ryovBF4Na@pL%^(pKqOV6p8(ca$OsJO%Zjy~tn4x81~s$b;Nl_Z z1}K!Ei?INm$8PR8dWhM6n#f6@+w(KfW|-q4v7y1<`qoTD+ve7YE?|YW zhfYs5Hy(?+ie9)3RL_(DN%Ot)6!sbBl{!TaOFoJ`(4d^hM!J&J)2!6tq|jZmNZL5P zq-Ff!nhWSM!&*oN2rET<@0Ny*|H=dJGA}qGIUHZ}wV>e8O$dOvy}Od*yThV}<7*GW z0ZPDN{c&36M58pBx>5=toF^3NTm&Zer&n!)S`ZyJ}SOq4s_Qi$$G3kBa=UI}cT z&iWstl9KMK!<(C$yjj5KqT}Ln>_W4No}v9fCPwXc@Tc*R#DRsDp|S{at6>-NvasXY z0%$fRXfSZlt)pC+?%2+s`sau*3aE^~WVIO}^Oq_#L1>gW$=rRqEUN5dK zlU9yBo@h3FmxL%g#j5$WeRl|&B@lx`<J*myDG9xYV{Cv~CTXIcM zVSdtMgvp@+omeG_4;KjKlqT|0M7`{A)8lJfPy#|-pvWIeE3)|pSPV0^yK8Iq4Kt4_ zoSlBIYvM^K55$2Uot}=Z#*bAJRx*9SM&KV-l?Q$-X+>J;YrtZIBG*hlj8^zl6!O{m z^g8YwocYM;tu_8y+|*8LaqB)8r|YJ84zCoW#E}8EBXo3;NWGhc5K(>f!SyZV5S-H@Pdxu6Y>Fiz_5T%S?*|MF^xoX`kAn$%r7*3$I8~-5Om&=aM z1?fi0j^)h3;AFqsWLjT?@v^9yD$=mRql1RAcHNa&7C#e;qV?$3e7nXxxO8(Sy(w98 zIV)HowHn;OzNHWKvH_U;ZaT#Q#RbYXIPZjms<_wOmihUV^vF#Jyc9!yoq|9KSyS{5{)9uJR75oxV=ffq#kiE!Dmtrv) zSz+TyT7n(@?)wOE+PNkE+q1#n8MG4;>9^6x_Du&(n%BcE7Y(Z}(`qj8#YtgXcY}r_ z33jM(&c~={55%7g^Rr1<;r4Ky>NMeAPC6Q}%7m1=xCvnKk=0q89Q&TFCI0$(_azAB z7|z>w99-kVZbaGTuvb9Qu4(a0x;ejMx_L_san}yDexC)i4b0hqaoxAd2vG?G} z5g|LuyQ}>WjhN@VXQ`fza61hhA7xV`8OvgF53Zagl-ItxvXYmda+qi08}yVTO2#)g z_1|p&%n6~m+Q06`&oaDg@pBrZ;t4t$oQu%BP?GCSNHo-b>V4C{e)tkv zY?tTY!kgM;Z+`y*E=%+q!7uEsWbTbwoqF~tU z)~p?Fn+}*gK=xYTm`fl>a@5tj0u`nlEDwK7ESwEnELtR}b5zxUmX3 z{QZ6K+b?G#xvY!a!x;7S*dZ)^W%W@93vyFy(%i{ERqTY15jn(YXm!^dPqnA?CNdqN9B@RHMvzTSnK-)WDotwHrjE-Tv}sG~yh)4;Ar zJeSqhzQ4V$A9TqOk*Q;Ryl*y8PfKs6;CQ%-O=@p-G@NY5y@xV~bNGt03s0Iz;aV0P zM9a^g6a8LmLinUBAxHX>0Dv40hrkST-ehD@3>39ktEG9LS_aOo9fuFjBYBmR?qHOF zsf;RXR=Zm8fDg@`wAkCnK4KY4(BQQ@;la;l=2m*<;WBjSdmRxHmfNL9n>I2;fajH2 zdzLcQ1ddj3%o=##%3=oeXY>#d#+%Nn!ns*-2;qMB2+=&!?m@)9l}~MJ6ns(xh0$V5 z4y0z_r!mkUo6^0;F)=|n7fPiGHO^L+OZ_^^T2<@|oU(xDE@^x!F?iYh5$DYr zh_37N%dn!=E`tJ-ygX4RcD}uRvalzlt)9@k3_shc3&XSQQwt)D5)l=i>YRbiIGTW8FHukE>*06 zq1`;)QD@cRUmrIvXD`-js5}sWsz;x#&JBeDOOoR}Qh`_rxhYfOd@8OwLu#h|y!wV7eRtomtQOd9*l2bOrX295O zc$04mTo@9-ux_tLKf`3lfixJ^$`A}pcnE#)XhD3jc16E6?^78sky~)e??)>HqdqwJ>T*Xn zD#Gg!FR)kdLb!wjd-;5M7!rzBdgf**jFVg#B5iOmj{ZHF7tw;m#gB#w{O-) zL0*(;%wLyTyiMlWyx7_jHK;$DtEwWGen5YHm-jnrUZEYFmwq>v*t--pP<;LCBRA5# z6aZ=5u&$Q{qcT8D@|Jl**Fh3JV45Hz47{`;90}AW-=gc;#JF;n>H-;eW7m26YYx~) zB^d?ic@jRlEjW048PR50jF?Ijv|i_Xg@V6BC3Ud7GsP z;&KHI@(2v##((8X+@~`IA|YWWr$bOukQE0`Sa2;44{GfXO2nCwnNjHK^lk}!m}L4_hQGJSd3dr`c~6?6syF?WFE z#HvmH+z>afu$_r3$X_nyAfW14h}<*Ldh|N6UN0EFPUmk=+Ok`?S%6s6H)?({iu!xr zCsP(H4d>CPz3oJA-?O>+!kS*MpEa*zEaYx)ys4?j^lJCS9m+z(9PftgeK;j5uoZWQ zGXrEY0q1M-IJW%ki6^8Zgvi4DGMZ-23B_w|(Poa|@#y-ohdh3+dcAXjzz<=|2Jq`^ zP8I@W+uM(Y*!P57&)?Ls%w1l-|Nq*1^FS)wwS9OcNwXr#kRcf=lqB<1Dl#WBgoI>_ zLS~^9p^%acDXCCb51`5Vr=(jWx z=Mx+CE-o&9Xkg)8Fx>08*z9>XJUkiX4ryuWx-;vj^n-UuO4us%Iw+*;y)G$i-y{3@ z4pRq10Ce&-qpw{1f;vW~z8qphuus`E(Jp*Ek8TL3>frDTBDY9a{RE7_+y< zYlf$J5qmUN9fkSLn>QgYUKp|UOpI={$O6dlI-^!9faFG|@%mz@Z*8Q-x32W+=vzrn zhwb}}D}BSh{knATr?C4Hx8d-GMv~rW`yr06BLNIu=70ng&7p*F6FP`eICqyfEP(2gTj$4aw5yKQQ~1rCn&?n!MF&6)kA02y8?oNF07j0Ll|z zyl|Uxy9!Es9bM8hRj|6=++K6^@Jw200r`B_Fk@tGB7b7F`z4CZ&xhC!e&jjjCiHWC zp!*nZ1j)JvG6QP%O_IOr(8EiN)}-rwo)G<_%j$Ek-9%q)POB9(xl}%9e}1b%1qfG- zjDE$dKYt3N*4+t&xc<3)_3vNA!G0UpwL0JcoPzk-5;Q^1dS@d8Ty81TqJ2eH3& zY4K<7itZ@VUh0vZ$4@G{OZqT)SFP+=UF&A=;b8qXx{Ng{@1l~Ho763?p9>F1I}CwR zr)E!8mHCZ%=GnUbs8txNynt(_`3MV?sF)aXx6h_z!;+;k=_! z)9gf_UXqsF@f3q1*hYz-D_?(*X08 z#Oa0BkD48VTIlaiVM)H!$#?-Kxp^{!_nz7bDxX(OQ9nd=%9&4?uL$btoSivnc{gQB z$im3YZNYPTU?=ap6qTqp&xxm=HaP2XYu|z8z63QTD1l2;IVE>F2i`{A+>|_!f(-^j{~a^B_0?T?8n3Pfw4|nrG0wA_Bk{sm!)yQMmohF}kN^w^rixg!|zY@r@(l zsp}zrjxD;)IS}l*Kxj((6hgT`p0OSW5r6e2LJACrr&h5n(5>KdpibBD@#B^)Tf{E+ zm)bGwN$7hT{lu0cXb&*6f>ppVYUgivj=}NafrHK~KCJ`JSnPueIqk~S08gjpFU>2= z-_Kva#7^!Z=gnOMo50RiL#hnhe2bDi>dZTFDP{Fh4%rMmnh zo1Db7z&FkYbpw}w2c`&(RfL8();+C#gb-{IE;~l0UJM3TzEp9?6uQr6>o!_IOdmkc zhqjBw*R_UjKi)zxO2(qdAT6|<3kE1U3J)f08Wt91>IjITJ7Nw-)<|7>Dhy{0&4*fv zw3O1;rR|?`JJK5l%agAJAd@t zlqw~Or^3wOb*E3wD+VR8Oo1c3(V7iC7a_dG!rZ&A^v91M(ETL6e5qgTHd_@+Zh2q= z2Y@oaO(|sAd)1TECFI4M+|fp|PNiNeAnlDP=)Aa2+yDw(U~`P0e}TB<;ham7Azk;Z zH-B@Rh4QH;hwp^yX0D*y7ox<;F`Y%WqEY0CNLP+$>uQMZx>w()6vLQ@4;S7as0C*) zksBNzhzwde&&yTb*u3+Xi@S->iM|l z6CpxYEvfM5+T)*Y(;@chI~Fowl7ZgWt)o3?i{v|vE%iSRPS@Q%`FQUHzG|<2?roZ% zSVIS|3_$`6UC(_HyRU;yi8y1|go>GPd$pB+(0Rp)-`-yX+P+A+V6;~!fA zt7fj8Ow3FLEe5iGT2>sm=T`$}EFO!UHZ?OdGc|P>>x^1FoSBlLXmvy z#tkD&_f4!)Zcy;yrV!Qu*!3?wd87NJmuAk%RsI@i(Ahjdg~ry}`Mj0mbaY1hNP=q2)TgEeRhDwgspi0grKHY#+Zm>Zq}-Jl zYgj+Tke@uEv;-5ML|UjCam+aKq^9dGFuqe)D&$Xd9@|Q>&+Ab9{hE~Np=p^b zGvfF7t#dC|$zPaPED6)d(aXP7!A%yI<+UCb7ggkq{}nx?(JjTh)~p{}qw)^t&8^q` z0|Vtr8&~b$zke8zd8ul?@3qBz)tL9Wxn!rw!P=icZ4OO$8AQhOq*rhCV%uGv9_;OO zqwLT+9Eje-j^c@aR)P^Q_&^-MZysk4c>CI;!#@s7HesL~sKa!kkCu3eb_&A4Sh2@q zT1p8&yjCs;>k6o?8adr0>$KA$kJvN1N7TchmDA!B<>KO!kSL6cdksRExCHeGs#mU1 zUM{Zdfm0c$8frYof{}5!91Z+_Uee|LKz+}VQ%z4EAFFL@q|84?e3DEHTdF}yvjzOK zqEznPzrU@2$5q=reSX!a1waQfuV3$p9%!44fAS#`awWIk+)5xaTW&~A5h`zM>m=?#ptHKycbaGVvk~`mD7RanB~-x*vWR$CJL7c6p&adX}C2>B~hx1%cQw z9JLcyM>k&yjN=L6gdi3ES+(3b#8sAV3ow;UG1wfJJL<&Nu-e=P+| z=X>Y8^d2=#xw`lg^uWOF)kMwLvF&rBocM>pMYVWOfVr;DyY8Rbo76*9r;A)5*(;D7J8DG4_vUZrU%_!L&FZsC<0pS?w%UGj&;N*YQ{FD%j<}Fcg6l*wn#cyP>l)d3;>d6=#G8eM zpL^|jU+Iw~jP!%X7-4OEX`K?waumG5q~ZG#mA>3=5NQx0bp(Xw6GHb2+@Y!{fFl zt?sCp4mCgZUtR|!sf4Goa9@;}UbXP*%f-}{lLf)$Y$PB5eEko%JD8NiO@}wWRZ}!= z?FxwDjkn3UMZWoSmEu-1Sq{;F;>6-1zE6wSsi&nar`bql(mejJ?euAB)p+Ao&a<#T zyR!bO?DMboqKJRpz7c)I4_S{}Idd$xH@AFg*R2{4wr)8`3h$J&lLzq|T_4q(Yn(g@ z5i7{sthYD9vc~q~69t06Z~yJMj99lNb?GDTnzb}Sj7q<*Wh>AK!AGmEh*~a8<6bqd zf<~-3QQg!)Ayf_N84nK(sbpj4w>+frI;_$_`)I`#gF1`I=h4k#VOw(A-D@YGF<1PM zNT{FrR?M!VZW2^hN8C9QaBHvYl(Kaelf}7$@rp9Lt%$fs!un*tzQuq>VjJnHQ}C9d z%VJ4dWmH4I#DD;P7h&Nfziy!mLb z3RAe$IIDnj-!)oRiMm#o0L;S4RN)HUJtx+8TPS*Y&U#IfnWe7=}G_{lUfaJ=wY zQz!YY=oasRVsu%Jm~+;DTZWpj3rP~f>Pvr`~Lm=_Y7RBEV59Hc3EU?k#m_G%z_u;_5)_m zR-8^~FompPat?+nu*lgg2YMah`baf5>xPDiZkdN46FEQyrQoj#clqerTLJUIZ{F0~ z*-=!mWa{?8F08q?muGOfuf=YR`$OgP1tprv?^@+yXebPpY9(M8hKz#1LO;M82E|&q z#~SuO>V2@l-P|OYzPrzS@!Pp`C)i45V4{43!N4H!OW!rL6w?=_Q10${6sD!Ac_#Pb zH5yp#V)+jM=(D=08SFc-1b3 z!f@2(d&K!USil&7qmM@S&A9vMH{QNo_vrBIpdRCM=hmDF&rhES{#(PXxWdjaBSR+t%kOpS)$Ay zfBWX`E(0H%PTWiWSs2@J!MW2f;M}SpCVCdha^qPAH@90V+5?w8JVx5!u+`O7JW>!z z!~jy}x{ZE5G;z&CKy6(#QkrSy;C z8=NmV311k|8WF#7UQ<`MEyWOsQrPFu`jaM#ifdg1ikSBs`x>OwR#mAtjCHhZBb>S5 zh`RXk2MQ{YZ$dm{Zilj0rg~$FD{NWfwiK{1p29V6}*cQ)1yRskl3Gb_`Lro)SIH+I4hi_1z-;{h`_4si$ zX;a}yo#R?8(jIOgjnHx_%`8mRo*} z*x(N8O{_a;59}42d$f_|byl0D(R1%xsd`xa8@{vC9|!uvU0_pJ1ckYoIiH- zs6|#2zqXBOuX^I7x%}H;9*bT>f4MUudXB4|Z%Uh^WbuzHPY9UB{wa)KS}*9R#2Xk8 zVEJ_?iq+xR*x1r(mS0>Mt%cA-yB6QQcaLy)P47ufO(j5y%G>Oa=d<~0YHGT{ArA$` z$z~F*-1UttFyWBX+F#vk&jQKaH8*n?*-iy38Ua4np*IIg5uBAQ2H}>{hsko%xG%r@}SUWAQKYT~*IF{ctNZ zh@qhuF16Z$RaI&gv}xTrTb2yn;8U7-loHqcwXXV*)*~$-)dl%#l5Cy>0!nxH8k|jeMKD77$rIs-dA%LACmx3P zIe5qRiukbgA7orv%Ou2jr>`}EUrW0Wjcc+Q+ zQ37$X9B*|$%n;m)K10 zRn9>eQdNIJ<8a{_hxX^Zlez)du8q(&pMKLTqCz9&Ql#n)-3ezNWBZw?k<{LR`RgL` z>S~@$B$8ZU`-s`i<0;MUBU3U?tKEW>znDdo41`mc)-i_BD6ToBR-aS!)%R%ES7%u| zdBe||>bRISc@fe8UNb^w8gbZDh@-;c>RiopC%5l%C=`gxgf9L8hr0UAjSH z&i`z4v$KG4OOfk{$gXd?f%Cc>zBtS7+)~wR6L)*r5Lm{jb;PmApjKECUeHK~Q3T9{ zSNHxj$%m0se+Y_@JAoG&*OV)Nab~BczxXa)iPxH3yL^y5!Raa?@!4F6>Xr1#M{B|~ zVEm=0H>7Zmvb#>6*IK@=h&!kUdRbk!!bRZmpKa)>i8GOU3tFig{mP8?!A})J>`o_F zN$(O~f6(&UN0LDfaSLQ=de!>Y`E>n|^7Bc+j?3a>vJs(sl5-U{)e zUbAflm6zwEu>21Gf{tUmK0MpoRlv_0uc zyEoI{2rcD(zN_*XWN&D2DDdA~S8aUwcTe z`#eb5n0!{(PUt3OgP!~4%NJi75NiY@tc3L%Vt$TN?@MSJEOL3}dBM0rml|tZpZ`3~ z`mVDZP<(-Bg68`*4!PqnXT~emm9jH|$G_|g4?jP=m(N*Q?T!2~dQs$o$}WSArBb?D zD!gysEDEcHa0XdUcd1>mJZG|eYhzPWJ@?)QV;gnJ*!P-90Kg`KX@>3~Qqu zfjXG@%Q`M<@6wGgwJc-jDVE^R@`@srM>s>69=x}27n#3^1TpAJ8usj<70hHzl0Em# zQM1cwtdvy*TE#W5-ZSD(t5~cBv2WdF!%|iliHfV0%$vi7Nv85q*lznF2CGZVUseUO zjZc=HoZfiGb7Cg(k}&!G9!W~+(tNC8YU9DzN}5G$HxK3;QW}wR{pKT6KiK*9h$ee@ z=bzG^JZ^u~>WWo-(d^*F^2Lh5dzo>ckqlBF*i@{JtkF_aqv_v~bpTPYdsWs4-6}qZ zeMgp=rKD8t>h`L<5ISPa#EH-H;7_PRy{>$u#LKi|> ztvYk<&H=(ac5B-Y82R0Z%S9LH;MGH}0)S`CfX3qUQSV`!;gVs*RWPpuAoHZE zkap0pYr=K298g^t8%smU`30U|n>TMpHwbwb%*3j@&v8ZMI#1XUxD4b{cqiRS@I;U6<1Ba_cRdy zMU+Z}PwigYlDWY|Aez-RHIkRU-*R~lCm`fF#B_#`Ct$ml%zlrAOoBj0r8zo;e_S2K z>Ir8vKce3Lkxc6w?k*mF(EMFchPeCGa=aeVP*Qr2!U9`w4wkqANWojr#}r}Y1Ds)B zcPgJaG1Q)eXYH!PvCEf^fdO+0_V3+mg|<#o0pY;5w9qG=F?Sk2ODigd~r32Fw7(}Vw-}eZnq1YmW1@-myzPHgf>spk>u#tRmVXe2H%3PBSislHv zYPfE8dXn7}8g$guE~24;T_DOFWMB&{Ly_|hXd(e#0A#7i%$jC zU89wwl)Y^-aOcUb*2Cwwc1q+dwTNFGWg*sH$;bJmeWe+n-E4nam3alK}$7 zFco_sbm1d7&n;CUAzQNVS}jKTyS)i@l|Oovi<`TP_>QK;)o3bT?Dk@#MtH@n6zsgp zsx{X=e`e)U)32`E@m<)9)$09x{|~2f_GQw_6%KChgydu!IHnHX(#IbpJNYwlDRmWOtOKT{$r^fu6-A8nYK6?yIS- z?aI7xQdahA^Vn!rkyeU@1en;t5GT$+FI;xMYbh5vGXPvv3V>#a*{)Est zIxX?D`+P458K2-zJ`n;z;^#|DoIySE>W$`VG&}I+3y+qh#as8s3-R+O-wb|JQIWCI z@Xc}7{fvR=Cl+2F2Lg0i@wGYaHCyf&q)eB2?WTOF`#7=nY7D*h)n#@h$-KIejt>0!{$elbH*emg zuEhCGyr}sGpQTipV8YAQ(Ty|k7CY-I4lfTJi%*%(trc4S8%h{LA|>bG;Am+vx^m@; zy!^EqGfVlibmkcl@kS`2ogo$#6h)-uT4_KQi8px}oy%#5`bsNtmv8^&e0-(MG_@NF zLFe>NCfH`Jh!5-AAJe6s+DmltGLONb4jJIl$D3UbQ5{lz-eHrHlr;HdKeFTqHfpK4 zJ=Znbj_6z>>i6#2jOnWM_Fnt5Cy3+MJlMk0l4YYGrsbFm#qk(da^C0p*F<~el?WaS zce*2{I*wv2(@Mt76&H||qhnjlj+qB9!-<@B3g#hu7gwRdbA^GM8Z4V%O-=jVm+>u< zE)X%|Cy~6vdHnBFu!QYfg^UibZbLQ7JvRV^1AG@FJQMwmh;2-gIUW!cWY*3md$C94 zgNfjUtTxz5nlTYJuf)Hmp1pa4rMa;Yt=Mzt0@%tX3bhi6t#ajx2>X%5rUyz~D0to{ zEHn|SBfLESNp)wN617=^Ty421M()M&K<$*9ORx(L;Lg>I9z&J8{P(iEAS+`*`wMoG zMEN&_#CEVWWiHWn{ZknqCv_A9@>5muyv3Qs^>}?>gUq%uO_tgQIT2Ur%?(S3I<~CX zR`|Zx{&~N=`jYHO^q^_uw14cpdVhxH3Q{nPJ(_#yHQZz+aGZ!Fftb{te(C|h<+pC$i~!*VH)9c&K-pg(z}^~(P)v^N+70acyzbdCk3D`~>F>R5c_&`I zcjt~Qbt?ueEQX4Tio)QARml8yU-K7d4*+G8waiGOU$I>T{|q27Ot$He9sO!h-Q%yJ zrZ(Pt&k)J!<5x|_#>SXV)0L!m=yCmNIJMuq=L9=)E&cQ0SOBg87M8)Ofar#>nt$bo zv5&BBk|R!Jf^~c=6St zx1P}8j0p;J+}6VFNG0JlxEgD7(?;M>34|c6oU@(BaDThtS91nlWf7 z&f~k%@#8bZKnkQY=yM-Aas*32<^I02IMzI2$*+4k3S62RpyFm3=xSq?AfExSngmu5 zl52}d*lz<}??B0s^a*zx?a$=L6nVvIctRCuB?PG%kwA_f!1l%^^30}`adL{gA#=*ps9U~KLL6VhTU|;=z0uxfrg-ue?_kkIKLfsg?QM6f!wMJOUgpSZ8>sXmYHkl&yp^pt2IXO%9wQ zzvk_Kdjc2Y9%$?6Y-i`>_WLzv+5OsJF5Mx< z^r)g~g>ec`gZQvjm1Cq9H+jyiTt|#OBRUW7-iciqkF7B~XN{!wscOtp32ac{RM9RS zO%I1=0ir$dP%A`#xa9OW|E+xDcokAZb&eweyEjQE<9n#8l${7OD2gt_X%*8i77o0TG+9YJs!L! zQfIFmzo|+hb*9bZF|mW?Ox)439;W5w)Mt)7Z1R^g95>o}QcbP9AV_lh^Cc{C)7je_ z0x^n4vE!T8<9Z?Lm>1BSYO%cw6-Mce@&*?$gsk4!m;=P{i;x&MmoTt%?%g|#8-T_G zPc8XeLVGosVVI0mVBfpeb>NG`-{!->yZ_dFFgW%e4Mv2;r%MkJpYu?h15TO?hI5t_ zNT9tN?fvvF8#Tec1mJ4M zw3z!`CbxD0tHr57GtUm{_1((w+rI3=I^xe&?awL7w5O62JVpz5yDpkO#}mXH61r_z z$6k(Qh=`td1}9w%H%Z9p#eSNzu(Hy}{M6337m#-Q7w2ZS^W}9+^KY+M3>6q<`Z<0H z;l#`FXb5Mv&>>+Ur6P1h-Qi=la^EM?;edmARQDlwDPC9V;NZj<*#xD^K8oRWA)KPj zP8yEK#7T?8VT$B)NpIvcU9m6%+e$hw&2J}c?vG8M2 zR^G73lo=G^9Xkxb2+3%Dz_P>F@d%xKXcZk!MEb9AQ&CPJAXMT-E$3KpCZ*XjOIPlO zO2RoNvJB0oJpE`Tr@qCH%WVk~sRU;JK!;o2bM&h#V$g)CX*_q}{y*b+Up@a!n)>cTT1|l(FL)F)4tB+E<$3#> z_;&M(BkFJH`eS{0>+0y$a`ZSjNuf&m{M=kQGZgdoV1y7KZ5}v2e(`aArJX)#A)OTy zg#c3rE}uPn7D91cT&OBL$>-3jK>>!K9upm|BO5C_h|n3k!T(?D6J6D{vj0PMf{AYL zE!S~L)LLe>!S&#}pC7Fpw9%**QR%t8GwfKdXGr6#(LaLZ3H6L&kxSE;i)@Qj+vU}n zHy(o-Nt1=?`PXG-2OpSSzw&pW-I&~0B>?S-vJ~t`pGn}n88kcE6XYs~FFEUp4*-6=kdJzvPq2`wh}fs$kSm^n+*Q zpR|}nM^EoK*6EHptl+q3xd@7h&4I!0E-Q;{aUF6}1%);6dJE%n+|Bq;GAMs7$;g}I z^z!wPRuEO@7CGcM2IOy;W2Ki*d2hr4nW3p*L}Tb*d@|8gKoqv*oSdA`HoP~x1iJ8{ z=*N<;{@zOBG6)}$w#*AS!cniOGH;Ne|SZ4b7mhJ8ww559!#2b(Hm$KWDj^>1A3PqtI{2)I! zK0m2L58rK3dy}RYrv|eR|AsiG7mQE`Exy)9O9o_rMMcH0B0(AtVq!{=JkCj9CHQfe zw?WX0zS`$){IASyjmRX!5-Cwp=hwb#HfV9>*bSObfru7qe*I5tq6_A9E$Y8B7Xsg80%Zfh=TRqlbtMG_AbD0kT}EHelFI2|+e<8(-RXNXMy^rH znlrS|Ha0au7UbHifp>r;9$2(TK|_uHm4;KO1$fne9xIJzOSTMVI2*7MkRvF#j%*4V z4SfHc0nd1OV1ilazQXgy&6{Ue|0(}zbQ^n9A}gv?Nu(V)3P)r$K`S**qs$lY)z5+4{8kbh=ik!yzhjFy zHNjf0utQty3dqecWh zn(m`l58~Ouoc6#CSAEt)G2{qf;}Ublk^}+>9I<~jGoN0yarx)`FTmrU;XIUEWocTj zHd$;S`rzn9wp``$U*@?G??(#vKe2R|lMER(_33%}rbL=Ajs>l<87sD(iv7LO; zQLW!bwA@%dW?q?PY^9?EIbG`NpL@Wr__!Vr4w!$@(w*y6ci4EMX-$A_ z3=H=kJ{&Gu+9J&04(prYToltN`#Ot?`~D^kZ4q$i#6jmc*ho}(1kMQBEGGHYU=)y+ zKJiszQKM+DcjR5-UY;`l>{(?&(J4Ap7%UBo;P@OMK|Xdg;H{wJ@aeIstFoK-EBf@@%jcuLTzk>qN#KRQ4fvyryW#t+?r^1gp0Okr|H$+SbU7C<4PoS#Rs)e2( z4zQO8K3?m|MY%oPMHu-ix*x*H>q%bnr4jz(jNgjp&{rV{JupuvDhkBF&VAHO2>a2Q z9lg85gBaga^h?9VC7;pjaa`)->%j8tfn>1k9}vIe2gqOO1c`?w=AQC)}0EV+jqI>k?G7@lQh{ zRvq0sfHY$4CWzrcM160A+(zgn17SLZBd_(o1=`Uk1d2?ubYUW8o29GsJOQob5BK*U z-rx_;kGQyAN^@=GpY4`E@zoQl(>B{8WDb7P&AL?c-z1~RCUR@n&4HxTFv^*(#sH2#l{R`UM<&k z*y=|C@IhAt=EU82L%HKPCE>|)`g9Aes>G`gzxl!fx|uiPkH}SmIt;{#37%ZwCVY^9 zVDiqLI{=QgPbdKu)i(5)jnA2L?)$(Z?0LUN1_QH}yX$kN?gXm>ABiMDqU0%eZBy~z zSR1R3WPT@cprI4*Syhyee%=Ek_!V z;>jYcJG9k`!ElQF{{;-&N=F`UeZ-8r&DD zgfX9DVS^6nwrIePv0BkOO|;$V(1FMrzI>|;TLZB`qYG z$IB>oC4h499nVwBf=_UCaaEC3ueF?<_Z)9V>wCF$|AW!{&O()XiU@K8ORh7RJ!%3~ z1Y-63s;aZ+;hp#Ho$*9+1dvn)L$|c0j>z7sON;3IrtbxH{G?>r#Ddp~mAZ=}Fum)^ z1+bVow^sRYp6#0n!aPy{VG$i&-F%F@m8*n0kQgzIsihc+8alFg0J$IDMX*-~?~g%z0!W;xN`iaw6XVTCFp=WRy z#3>9e&t?V&ClngZ2Cm9cPu$V_!J(@J#0=~k5K|J9lXsxi1vIkNO3Lo*5g$2y>XE&JL)L@#2n468(GFK6 z+o)5sb(4T=isr< zDfpM;l@?&tmN@{mhlQG&3uK+Z&=6N$dhcqB1U(M>-q&Z_miZi+@I=9t8GX3EsUS8Z zJmLk@Z_KIiMBoOjt5XE_$Oezs2=&_qO{nMN9?6oHz@~Zp__62D&=^Q&f}^0Pj?1Cg zM<_8<^aTy*)0q?>o1>4@&eujma1V2x zqylfh+NK;^!)1^E3dM^Z2>`BqeJR2HJbk)f!PUX|zvk6@C@$*jGwY?e!mC`GQ;Avx zS#3TghYaV&XtiVlHs#^}B*U29}D zWo2b+*maXWnFzvR`Kk1-Bl7aIiGIsBg=AnP#29%6u5<^#6NpxUW6g-;xx?LThk4=4 z57dFVB29XeSk#9v7ljrNuGYHxCqMo7(zQQ{sH{8XW2AKBKAG*qsF2hK++G4!viaoMvfTAx5MuP9tr*s?$Bihm`+0t`t>N4A3a? z2}P=4i21}|F;X->pMPuj8HxsHY-fUa`AQFcf`*|<@()&WefI+BN+M?Ow>_?(`BA|- zpO#?ox7w_`^}ld8cdMOgLtFW+@pd>h?2&Q>RE3Q27xci!X;2d#mh1un?#7K9XfbMq zJfUJ0MY)Yo0b|Fpf}X3sknS$OYH%D>Vv|)@wzhST>e&wtTnaJi$vco0wYiP zuB~xl0^XFCnYAH2r&Vyf*$F>l&J_>cOWnbIsg2I ze($gAefVhc(OiNlH8L_XupgyvgwoS7!>r8A1zVD#+Xoyk5lXM zVUT@Qg9%R%WQb_s=KY%LX~%-YpSi=qf>=s86C^5hkoTkcbg7mEdcoK9+PLS>c|)t- zM@!CQSKvZ$u;Uk9c=|NIpn!p2|Go`K@x|Ja^Z7FmvB&Om;)yEbfKyPY!hwp85V)|a zQ84g28Om9e<(AxXfLP4;_Mv9EzWf5kv*_2y6JQWa!bOLm4R{bHFtFdiZ;{|DD10e5%;-Y zoC?J#?>sixSBb)f;c0xlDfXK}h!Qx zu6we`*k^IU#zqSJcuo&~x=tMq&A3#|`fW{-{TVTVs_-L8#WN1N2~ZTl$Hjud&%bDE zJJuwXQL@Vm)jmIa&iaqoF))G+hD!x1p3gbxq$-AdL+BxQNkfTMW1WH~E3klI$*C4p z9~a>!40b!{s5xM+OF50|mz3xE6OR^M`8Bj$Xn}@@h5afbi>l7PpT$%eDNT$qt@fNYl>hn_Am^cZdVokwp~cF=VQ%)WQV z@&}6sw*ibIJUMYZGSo!sAe)>z)ill0*z85XxRu%fmlI+<9#okC$Vf*bdbtldT?nUw zt*tF%mFEStvk3_t%4!dkfmrPz=EuWb8F(XFuBwV#YX<~?*#SKr2S`+z^u`tIf>?f0 zVv}HEzyp6^!$-syAT}`v&a0@Z*47;ADuiJVZm|paN(9x`W8q2&C;q*-H(ZafrN-Ff z?Cfkn>8MWy&g5spniq*Z&lJUsVd{U5?f z45jMBuxN^9#)=sXhjN<|y~9;;Tb2S)3rOOoWBaAYF?Tju+VP0j4`a*TNzI z06|Ab2gDD>h#ROY?zTV9WSA)fEjfJnF#2fueYj;rc>qfg`-*P|R4h|OCbu@}5d?`Afc&za`)_80fhP7%PJ=Tu+;{D?J zIlI zLlR@r)EkmyNWO-OF@cFV4{z+6CJkayqijl^zC3dt9m*$r_DxPrJr!surmiM>c4R>Y zLn_`#%r9(}^`Y9OAb7dI4yTosaC<{TXmN4`(_sJ}K;J=l7DHR@vZ|h5JLbdlFKLI% z0)Vv?gIH0fQW*|924^Y0Fs*#Yxbaqbf`uO=aI?zTTx>$z) z^sXc*_sgsR4c3nw4H4&j*@&P^ElV^NX}pQ3!$wIQuQJrcUGSnI-brF7?$dwX@SnT% zpQZ7i{ZNWf@SmvhpHTV#!}DQ599fnA81MMll;^>E<~LPg(#xGx1$mVt$#O>C{||Z} B*53dC literal 0 HcmV?d00001 diff --git a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..59802088fc77053fe510b2757e1c3e0bcbc7e652 GIT binary patch literal 108983 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

E9CTSqKbAbD!3Eiocls89{JM50v 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 z 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�f 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 0.8) - Complete detail rendering */ -.lg-node--lod-full { - /* Uses default styling - no overrides needed */ -} .lg-node { /* Disable text selection on all nodes */ @@ -996,23 +954,52 @@ audio.comfy-audio.empty-audio-widget { will-change: transform; } -/* Global performance optimizations for LOD */ -.lg-node--lod-minimal, -.lg-node--lod-reduced { - /* Remove ALL expensive paint effects */ - box-shadow: none !important; - filter: none !important; - backdrop-filter: none !important; - text-shadow: none !important; - -webkit-mask-image: none !important; - mask-image: none !important; - clip-path: none !important; +/* START LOD specific styles */ +/* LOD styles - Custom CSS avoids 100+ Tailwind selectors that would slow style recalculation when .isLOD toggles */ + +.isLOD .lg-node { + box-shadow: none; + filter: none; + backdrop-filter: none; + text-shadow: none; + -webkit-mask-image: none; + mask-image: none; + clip-path: none; + background-image: none; + text-rendering: optimizeSpeed; + border-radius: 0; + contain: layout style; + transition: none; + } -/* Reduce paint complexity for minimal LOD */ -.lg-node--lod-minimal { - /* Skip complex borders */ - border-radius: 0 !important; - /* Use solid colors only */ - background-image: none !important; +.isLOD .lg-node > * { + pointer-events: none; } + +.lod-toggle { + visibility: visible; +} + +.isLOD .lod-toggle { + visibility: hidden; +} + + +.lod-fallback { + display: none; +} + +.isLOD .lod-fallback { + display: block; +} + +.isLOD .image-preview img { + image-rendering: pixelated; +} + + +.isLOD .slot-dot { + border-radius: 0; +} +/* END LOD specific styles */ diff --git a/src/renderer/core/layout/transform/TransformPane.vue b/src/renderer/core/layout/transform/TransformPane.vue index 29abc1262..43cc0e328 100644 --- a/src/renderer/core/layout/transform/TransformPane.vue +++ b/src/renderer/core/layout/transform/TransformPane.vue @@ -1,7 +1,12 @@ @@ -119,6 +122,8 @@ import { downloadFile } from '@/base/common/downloadUtil' import { useCommandStore } from '@/stores/commandStore' import { useNodeOutputStore } from '@/stores/imagePreviewStore' +import LODFallback from './LODFallback.vue' + interface ImagePreviewProps { /** Array of image URLs to display */ readonly imageUrls: readonly string[] diff --git a/src/renderer/extensions/vueNodes/components/InputSlot.vue b/src/renderer/extensions/vueNodes/components/InputSlot.vue index ef38c0754..1e8387335 100644 --- a/src/renderer/extensions/vueNodes/components/InputSlot.vue +++ b/src/renderer/extensions/vueNodes/components/InputSlot.vue @@ -10,12 +10,15 @@ /> - - {{ slotData.localized_name || slotData.name || `Input ${index}` }} - +

@@ -38,6 +41,7 @@ import { useSlotElementTracking } from '@/renderer/extensions/vueNodes/composabl import { useSlotLinkInteraction } from '@/renderer/extensions/vueNodes/composables/useSlotLinkInteraction' import { cn } from '@/utils/tailwindUtil' +import LODFallback from './LODFallback.vue' import SlotConnectionDot from './SlotConnectionDot.vue' interface InputSlotProps { diff --git a/src/renderer/extensions/vueNodes/components/LGraphNode.vue b/src/renderer/extensions/vueNodes/components/LGraphNode.vue index f764a82bf..08ff30d3b 100644 --- a/src/renderer/extensions/vueNodes/components/LGraphNode.vue +++ b/src/renderer/extensions/vueNodes/components/LGraphNode.vue @@ -23,7 +23,7 @@ bypassed, 'will-change-transform': isDragging }, - lodCssClass, + shouldHandleNodePointerEvents ? 'pointer-events-auto' : 'pointer-events-none' @@ -48,10 +48,9 @@
-