From ecb261b53a05a222c44ce3bfba755498a60f217a Mon Sep 17 00:00:00 2001 From: NeuralFault Date: Mon, 3 Nov 2025 18:17:21 -0500 Subject: [PATCH 1/2] Fix duplicate custom node installation in workflow import When importing workflows with custom nodes that appear multiple times in the node index (e.g., ComfyUI-Impact-Pack), the same extension was being added to MissingNodes multiple times. This caused duplicate InstallExtensionStep objects to be created, leading to multiple git clone attempts for the same extension. The second clone would fail because the directory already exists. Added deduplication using a HashSet to track which extension titles have already been added to MissingNodes, ensuring each extension is only installed once. --- .../ViewModels/Dialogs/OpenArtWorkflowViewModel.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs index 41b2d6a0..5debb091 100644 --- a/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs @@ -101,6 +101,7 @@ private async Task> ParseNodes(List nodes) var installedNodesNames = new HashSet(); var nameToManifestNodes = new Dictionary(); + var addedMissingNodes = new HashSet(); var packagePair = SelectedPackagePair; @@ -160,9 +161,11 @@ out var manifestExtension IsInstalled = installedNodesNames.Contains(node), }; - // Add missing nodes to the list + // Add missing nodes to the list (deduplicate by title) if ( - !currentSection.IsInstalled && nameToManifestNodes.TryGetValue(node, out var manifestNode) + !currentSection.IsInstalled + && nameToManifestNodes.TryGetValue(node, out var manifestNode) + && addedMissingNodes.Add(manifestNode.Title) ) { MissingNodes.Add(manifestNode); From 1fde1e0254295f5c7dd2c46dca454f3818407d57 Mon Sep 17 00:00:00 2001 From: NeuralFault <65365345+NeuralFault@users.noreply.github.com> Date: Mon, 3 Nov 2025 18:23:12 -0500 Subject: [PATCH 2/2] Fix condition to add missing nodes in workflow --- .../ViewModels/Dialogs/OpenArtWorkflowViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs index 5debb091..a1848afe 100644 --- a/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/Dialogs/OpenArtWorkflowViewModel.cs @@ -164,8 +164,8 @@ out var manifestExtension // Add missing nodes to the list (deduplicate by title) if ( !currentSection.IsInstalled + && addedMissingNodes.Add(node) && nameToManifestNodes.TryGetValue(node, out var manifestNode) - && addedMissingNodes.Add(manifestNode.Title) ) { MissingNodes.Add(manifestNode);