From 53a60ffb80f1d451887793ed46090020cd8f8144 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Tue, 26 May 2026 13:42:26 +0530 Subject: [PATCH 1/5] Added support for creativity in Runware Image Inference Settings --- clientlibs/utils.js | 5 +++++ modules/settings.py | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 97cfc8e..8b75b27 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -5168,6 +5168,8 @@ function settingsToggleHandler(settingsNode) { const autoCropWidget = settingsNode.widgets.find(w => w.name === "autoCrop"); const useDilatePixelsWidget = settingsNode.widgets.find(w => w.name === "useDilatePixels"); const dilatePixelsWidget = settingsNode.widgets.find(w => w.name === "dilatePixels"); + const useCreativityWidget = settingsNode.widgets.find(w => w.name === "useCreativity"); + const creativityWidget = settingsNode.widgets.find(w => w.name === "creativity"); // Helper function to toggle widget enabled state function toggleWidgetState(useWidget, paramWidget, paramName) { @@ -5266,6 +5268,9 @@ function settingsToggleHandler(settingsNode) { if (useDilatePixelsWidget && dilatePixelsWidget) { toggleWidgetState(useDilatePixelsWidget, dilatePixelsWidget, "dilatePixels"); } + if (useCreativityWidget && creativityWidget) { + toggleWidgetState(useCreativityWidget, creativityWidget, "creativity"); + } } function outpaintSettingsToggleHandler(settingsNode) { diff --git a/modules/settings.py b/modules/settings.py index dc96459..157d344 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -3,7 +3,7 @@ Runware Image Inference Settings (registered as Runware Settings for workflow co Provides settings for image generation including temperature, systemPrompt, topP, layers, quality, background, style, search, promptExtend, editRegions, thinking (boolean), thinkingLevel (high/medium/low), sequential, renderingSpeed (TURBO/DEFAULT/QUALITY), -magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, and colorPalette +magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), and colorPalette (from Runware Image Inference Settings Color Palette). """ @@ -193,6 +193,14 @@ class RunwareSettings: "max": 100, "step": 1, }), + "useCreativity": ("BOOLEAN", { + "tooltip": "Enable to include creativity in settings.", + "default": False, + }), + "creativity": (["raw", "low", "medium", "high"], { + "default": "medium", + "tooltip": "Creativity level. Only used when 'Use Creativity' is enabled.", + }), } } @@ -203,7 +211,7 @@ class RunwareSettings: DESCRIPTION = ( "Configure general settings for image generation: temperature, system prompt, top-p, layers, quality, background, style, search, " "promptExtend, editRegions (JSON), thinking (boolean), thinkingLevel (high/medium/low), sequential, " - "renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, and optional colorPalette from the Color Palette node." + "renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), and optional colorPalette from the Color Palette node." ) def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]: @@ -229,6 +237,7 @@ class RunwareSettings: useMagicPrompt = kwargs.get("useMagicPrompt", False) useAutoCrop = kwargs.get("useAutoCrop", False) useDilatePixels = kwargs.get("useDilatePixels", False) + useCreativity = kwargs.get("useCreativity", False) # Get value parameters temperature = kwargs.get("temperature", 1.0) @@ -241,6 +250,7 @@ class RunwareSettings: style = kwargs.get("style", "auto") renderingSpeed = kwargs.get("renderingSpeed", "DEFAULT") magicPrompt = kwargs.get("magicPrompt", "AUTO") + creativity = kwargs.get("creativity", "medium") # Build settings dictionary - only include what is enabled settings: Dict[str, Any] = {} @@ -299,6 +309,11 @@ class RunwareSettings: settings["autoCrop"] = bool(kwargs.get("autoCrop", False)) if useDilatePixels: settings["dilatePixels"] = int(kwargs.get("dilatePixels", 10)) + if useCreativity: + creativity = str(creativity) + if creativity not in ("raw", "low", "medium", "high"): + raise ValueError("creativity must be raw, low, medium, or high when useCreativity is enabled.") + settings["creativity"] = creativity # Clean up None values settings = {k: v for k, v in settings.items() if v is not None} From edd0cb45604435bb2edceca5062afe8193160ffb Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Wed, 27 May 2026 19:39:15 +0530 Subject: [PATCH 2/5] Added support for Moodboards --- __init__.py | 2 + clientlibs/main.js | 4 +- clientlibs/types.js | 5 + clientlibs/utils.js | 20 ++++ modules/imageInferenceSettingsMoodboards.py | 112 ++++++++++++++++++++ modules/settings.py | 12 ++- modules/utils/runwareUtils.py | 2 +- 7 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 modules/imageInferenceSettingsMoodboards.py diff --git a/__init__.py b/__init__.py index e3cdd81..368c579 100644 --- a/__init__.py +++ b/__init__.py @@ -108,6 +108,7 @@ from .modules.videoInputsFrame import RunwareVideoInputsFrameImages from .modules.safetyInputs import safetyInputs from .modules.settings import RunwareSettings from .modules.imageInferenceSettingsColorPalette import RunwareImageInferenceSettingsColorPalette +from .modules.imageInferenceSettingsMoodboards import RunwareImageInferenceSettingsMoodboards from .modules.videoAdvancedFeatureInputs import videoAdvancedFeatureInputs from .modules.advancedFeatureSettings.wanAnimateAdvancedFeatureSettings import RunwareWanAnimateAdvancedFeatureSettings from .modules.saveImage import RunwareSaveImage @@ -245,6 +246,7 @@ NODE_CLASS_MAPPINGS = { "Runware Safety Inputs": safetyInputs, "Runware Settings": RunwareSettings, "Runware Image Inference Settings Color Palette": RunwareImageInferenceSettingsColorPalette, + "Runware Image Inference Settings Moodboards": RunwareImageInferenceSettingsMoodboards, "Runware Video Advanced Feature Inputs": videoAdvancedFeatureInputs, "Runware Wan Animate Advanced Feature Settings": RunwareWanAnimateAdvancedFeatureSettings, "Runware Save Image": RunwareSaveImage, diff --git a/clientlibs/main.js b/clientlibs/main.js index ed97d78..7cb4f4c 100644 --- a/clientlibs/main.js +++ b/clientlibs/main.js @@ -1,6 +1,6 @@ import { app } from "../../scripts/app.js"; import { api } from "../../scripts/api.js"; -import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, videoInferenceSettingsTtsToggleHandler, videoInferenceSettingsActiveSpeakerDetectionToggleHandler, videoInferenceSettingsActiveSpeakerBoundingBoxesToggleHandler, videoInferenceSettingsSegmentsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, outpaintSettingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler, audioInferenceSpeechVoicesToggleHandler, referenceVideosToggleHandler } from "./utils.js"; +import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, saveTextHandler, mediaUUIDHandler, save3DFilepathHandler, videoTranscriptionHandler, videoOutputsHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, textModelSearchFilterHandler, vectorizeModelSearchFilterHandler, vectorizeToggleHandler, useParameterToggleHandler, imageInferenceToggleHandler, imageInferenceAdvancedFeaturesToggleHandler, watermarkAdvancedFeatureToggleHandler, videoInferenceSpeechInputToggleHandler, regionalPromptingRegionsToggleHandler, upscalerToggleHandler, imageUpscalerSettingsToggleHandler, videoUpscalerToggleHandler, audioInferenceToggleHandler, audioInferenceSpeechToggleHandler, audioSettingsToggleHandler, textInferenceSettingsToggleHandler, videoSettingsToggleHandler, videoInferenceSettingsTtsToggleHandler, videoInferenceSettingsActiveSpeakerDetectionToggleHandler, videoInferenceSettingsActiveSpeakerBoundingBoxesToggleHandler, videoInferenceSettingsSegmentsToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, xaiProviderSettingsToggleHandler, viduProviderSettingsToggleHandler, sourcefulProviderSettingsToggleHandler, sourcefulProviderSettingsFontsToggleHandler, threeDInferenceToggleHandler, threeDInferenceSettingsToggleHandler, threeDInferenceSettingsLatToggleHandler, ultralyticsProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, lightricksProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler, briaProviderSettingsToggleHandler, pixverseProviderSettingsToggleHandler, alibabaProviderSettingsToggleHandler, mireloProviderSettingsToggleHandler, googleProviderSettingsToggleHandler, syncProviderSettingsToggleHandler, syncSegmentToggleHandler, settingsToggleHandler, outpaintSettingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, imageInferenceSettingsMoodboardsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, wanAnimateAdvancedFeatureSettingsToggleHandler, videoAdvancedFeatureInputsToggleHandler, audioInferenceInputsToggleHandler, audioInferenceSpeechVoicesToggleHandler, referenceVideosToggleHandler } from "./utils.js"; import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js"; const nodeInitList = []; @@ -151,6 +151,8 @@ app.registerExtension({ safetyInputsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.IMAGEINFERENCESETTINGSCOLORPALETTE) { imageInferenceSettingsColorPaletteToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.IMAGEINFERENCESETTINGSMOODBOARDS) { + imageInferenceSettingsMoodboardsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOINPUT) { audioInputToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.SPEECHINPUT) { diff --git a/clientlibs/types.js b/clientlibs/types.js index 12443e7..e1cc897 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -157,6 +157,7 @@ const RUNWARE_NODE_TYPES = { SAFETYINPUTS: "Runware Safety Inputs", SETTINGS: "Runware Settings", IMAGEINFERENCESETTINGSCOLORPALETTE: "Runware Image Inference Settings Color Palette", + IMAGEINFERENCESETTINGSMOODBOARDS: "Runware Image Inference Settings Moodboards", VIDEOADVANCEDFEATUREINPUTS: "Runware Video Advanced Feature Inputs", WANANIMATEADVANCEDFEATURESETTINGS: "Runware Wan Animate Advanced Feature Settings", SAVEIMAGE: "Runware Save Image", @@ -621,6 +622,10 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.IMAGEINFERENCESETTINGSMOODBOARDS]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, [RUNWARE_NODE_TYPES.VIDEOADVANCEDFEATUREINPUTS]: { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 8b75b27..f615388 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -5052,6 +5052,7 @@ export { outpaintSettingsToggleHandler, safetyInputsToggleHandler, imageInferenceSettingsColorPaletteToggleHandler, + imageInferenceSettingsMoodboardsToggleHandler, audioInputToggleHandler, speechInputToggleHandler, briaProviderMaskToggleHandler, @@ -5450,6 +5451,25 @@ function imageInferenceSettingsColorPaletteToggleHandler(paletteNode) { } } +function imageInferenceSettingsMoodboardsToggleHandler(moodboardsNode) { + if (!moodboardsNode?.widgets) return; + + const useStrengthWidget = moodboardsNode.widgets.find((w) => w && w.name === "useStrength"); + const strengthWidget = moodboardsNode.widgets.find((w) => w && w.name === "strength"); + if (!useStrengthWidget || !strengthWidget) return; + + function toggleStrengthState() { + const enabled = useStrengthWidget.value === true; + toggleWidgetEnabled(strengthWidget, enabled, moodboardsNode); + moodboardsNode.setDirtyCanvas(true); + } + + appendWidgetCB(useStrengthWidget, () => { + setTimeout(toggleStrengthState, 50); + }); + setTimeout(toggleStrengthState, 100); +} + function syncProviderSettingsToggleHandler(syncNode) { // Find all "use" parameter widgets for Sync Provider Settings const useEditRegionWidget = syncNode.widgets.find(w => w.name === "useEditRegion"); diff --git a/modules/imageInferenceSettingsMoodboards.py b/modules/imageInferenceSettingsMoodboards.py new file mode 100644 index 0000000..8d1631b --- /dev/null +++ b/modules/imageInferenceSettingsMoodboards.py @@ -0,0 +1,112 @@ +""" +Runware Image Inference Settings Moodboards +Builds settings.moodboards: list of { "id": "", "strength": }. +""" + +from typing import Any, Dict, List, Tuple + + +class RunwareImageInferenceSettingsMoodboards: + """Build moodboards list for image inference settings.""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "id": ("STRING", { + "default": "", + "tooltip": "Moodboard UUID (settings.moodboards[].id).", + }), + }, + "optional": { + "useStrength": ("BOOLEAN", { + "default": False, + "label_on": "Enabled", + "label_off": "Disabled", + "tooltip": "Include strength in moodboards entry.", + }), + "strength": ("FLOAT", { + "default": 0.35, + "min": -0.5, + "max": 1.5, + "step": 0.01, + "tooltip": "Moodboard strength (-0.5 to 1.5). Only used when useStrength is enabled.", + }), + }, + } + + RETURN_TYPES = ("RUNWAREIMAGEINFERENCEMOODBOARDS",) + RETURN_NAMES = ("moodboards",) + FUNCTION = "build_moodboards" + CATEGORY = "Runware" + DESCRIPTION = ( + "Build settings.moodboards for image inference settings. " + "Outputs one-element array with required id and optional strength." + ) + + def build_moodboards(self, **kwargs) -> Tuple[List[Dict[str, Any]]]: + moodboard_id = str(kwargs.get("id") or "").strip() + if not moodboard_id: + return ([],) + + entry: Dict[str, Any] = {"id": moodboard_id} + if kwargs.get("useStrength", False): + entry["strength"] = float(kwargs.get("strength", 0.35)) + + return ([entry],) +""" +Runware Image Inference Settings Moodboards +Builds settings.moodboards: list of { "id": "", "strength": }. +""" + +from typing import Any, Dict, List, Tuple + + +class RunwareImageInferenceSettingsMoodboards: + """Build moodboards list for image inference settings.""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "id": ("STRING", { + "default": "", + "tooltip": "Moodboard UUID (settings.moodboards[].id).", + }), + }, + "optional": { + "useStrength": ("BOOLEAN", { + "default": False, + "label_on": "Enabled", + "label_off": "Disabled", + "tooltip": "Include strength in moodboards entry.", + }), + "strength": ("FLOAT", { + "default": 0.35, + "min": -0.5, + "max": 1.5, + "step": 0.01, + "tooltip": "Moodboard strength (-0.5 to 1.5). Only used when 'Use Strength' is enabled.", + }), + }, + } + + RETURN_TYPES = ("RUNWAREIMAGEINFERENCEMOODBOARDS",) + RETURN_NAMES = ("moodboards",) + FUNCTION = "build_moodboards" + CATEGORY = "Runware" + DESCRIPTION = ( + "Build settings.moodboards for image inference settings. " + "Outputs one-element array with required id and optional strength." + ) + + def build_moodboards(self, **kwargs) -> Tuple[List[Dict[str, Any]]]: + moodboard_id = str(kwargs.get("id") or "").strip() + if not moodboard_id: + return ([],) + + entry: Dict[str, Any] = {"id": moodboard_id} + if kwargs.get("useStrength", False): + entry["strength"] = float(kwargs.get("strength", 0.35)) + + return ([entry],) diff --git a/modules/settings.py b/modules/settings.py index 157d344..8361ae0 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -3,7 +3,8 @@ Runware Image Inference Settings (registered as Runware Settings for workflow co Provides settings for image generation including temperature, systemPrompt, topP, layers, quality, background, style, search, promptExtend, editRegions, thinking (boolean), thinkingLevel (high/medium/low), sequential, renderingSpeed (TURBO/DEFAULT/QUALITY), -magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), and colorPalette +magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), colorPalette, +and moodboards (from Runware Image Inference Settings Color Palette). """ @@ -121,6 +122,9 @@ class RunwareSettings: "colorPalette": ("RUNWAREIMAGEINFERENCECOLORPALETTE", { "tooltip": "Connect Runware Image Inference Color Palette. When the palette node outputs at least one swatch, it is merged into settings.colorPalette.", }), + "moodboards": ("RUNWAREIMAGEINFERENCEMOODBOARDS", { + "tooltip": "Connect Runware Image Inference Settings Moodboards. When connected with at least one entry, it is merged into settings.moodboards.", + }), "useThinkingLevel": ("BOOLEAN", { "tooltip": "Enable to include thinkingLevel (string) in settings.", "default": False, @@ -211,7 +215,8 @@ class RunwareSettings: DESCRIPTION = ( "Configure general settings for image generation: temperature, system prompt, top-p, layers, quality, background, style, search, " "promptExtend, editRegions (JSON), thinking (boolean), thinkingLevel (high/medium/low), sequential, " - "renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), and optional colorPalette from the Color Palette node." + "renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, " + "creativity (raw/low/medium/high), and optional colorPalette and moodboards from dedicated settings nodes." ) def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]: @@ -300,6 +305,9 @@ class RunwareSettings: palette: Optional[List[Dict[str, Any]]] = kwargs.get("colorPalette") if palette is not None and isinstance(palette, list) and len(palette) > 0: settings["colorPalette"] = palette + moodboards: Optional[List[Dict[str, Any]]] = kwargs.get("moodboards") + if moodboards is not None and isinstance(moodboards, list) and len(moodboards) > 0: + settings["moodboards"] = moodboards if useRenderingSpeed: settings["renderingSpeed"] = str(renderingSpeed) diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index 0c97b0f..75ba920 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -158,7 +158,7 @@ def getCustomEndpoint(): custom_endpoint = os.getenv("RUNWARE_CUSTOM_ENDPOINT") if custom_endpoint and isinstance(custom_endpoint, str): return custom_endpoint - return "https://api.runware.ai/v1" + return "https://api.runware.dev/v1" SESSION_TIMEOUT = getTimeout() RUNWARE_API_KEY = getAPIKey() From 9f5121be7646b014641c060a12946c8955fddbd3 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Wed, 27 May 2026 19:39:50 +0530 Subject: [PATCH 3/5] Fixed base URL --- modules/utils/runwareUtils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index 75ba920..0c97b0f 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -158,7 +158,7 @@ def getCustomEndpoint(): custom_endpoint = os.getenv("RUNWARE_CUSTOM_ENDPOINT") if custom_endpoint and isinstance(custom_endpoint, str): return custom_endpoint - return "https://api.runware.dev/v1" + return "https://api.runware.ai/v1" SESSION_TIMEOUT = getTimeout() RUNWARE_API_KEY = getAPIKey() From 130e178fb20da35cf02aa075f89781b0288d33be Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Wed, 27 May 2026 20:03:05 +0530 Subject: [PATCH 4/5] Fixed comments --- modules/settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/settings.py b/modules/settings.py index 8361ae0..cca04b0 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -122,9 +122,6 @@ class RunwareSettings: "colorPalette": ("RUNWAREIMAGEINFERENCECOLORPALETTE", { "tooltip": "Connect Runware Image Inference Color Palette. When the palette node outputs at least one swatch, it is merged into settings.colorPalette.", }), - "moodboards": ("RUNWAREIMAGEINFERENCEMOODBOARDS", { - "tooltip": "Connect Runware Image Inference Settings Moodboards. When connected with at least one entry, it is merged into settings.moodboards.", - }), "useThinkingLevel": ("BOOLEAN", { "tooltip": "Enable to include thinkingLevel (string) in settings.", "default": False, @@ -205,6 +202,9 @@ class RunwareSettings: "default": "medium", "tooltip": "Creativity level. Only used when 'Use Creativity' is enabled.", }), + "moodboards": ("RUNWAREIMAGEINFERENCEMOODBOARDS", { + "tooltip": "Connect Runware Image Inference Settings Moodboards. When connected with at least one entry, it is merged into settings.moodboards.", + }), } } From ac10015336a237085505e7a859f28ec703eef257 Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Thu, 28 May 2026 12:52:03 +0530 Subject: [PATCH 5/5] Fixed redundant definition --- modules/imageInferenceSettingsMoodboards.py | 56 --------------------- 1 file changed, 56 deletions(-) diff --git a/modules/imageInferenceSettingsMoodboards.py b/modules/imageInferenceSettingsMoodboards.py index 8d1631b..3995198 100644 --- a/modules/imageInferenceSettingsMoodboards.py +++ b/modules/imageInferenceSettingsMoodboards.py @@ -44,62 +44,6 @@ class RunwareImageInferenceSettingsMoodboards: "Outputs one-element array with required id and optional strength." ) - def build_moodboards(self, **kwargs) -> Tuple[List[Dict[str, Any]]]: - moodboard_id = str(kwargs.get("id") or "").strip() - if not moodboard_id: - return ([],) - - entry: Dict[str, Any] = {"id": moodboard_id} - if kwargs.get("useStrength", False): - entry["strength"] = float(kwargs.get("strength", 0.35)) - - return ([entry],) -""" -Runware Image Inference Settings Moodboards -Builds settings.moodboards: list of { "id": "", "strength": }. -""" - -from typing import Any, Dict, List, Tuple - - -class RunwareImageInferenceSettingsMoodboards: - """Build moodboards list for image inference settings.""" - - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "id": ("STRING", { - "default": "", - "tooltip": "Moodboard UUID (settings.moodboards[].id).", - }), - }, - "optional": { - "useStrength": ("BOOLEAN", { - "default": False, - "label_on": "Enabled", - "label_off": "Disabled", - "tooltip": "Include strength in moodboards entry.", - }), - "strength": ("FLOAT", { - "default": 0.35, - "min": -0.5, - "max": 1.5, - "step": 0.01, - "tooltip": "Moodboard strength (-0.5 to 1.5). Only used when 'Use Strength' is enabled.", - }), - }, - } - - RETURN_TYPES = ("RUNWAREIMAGEINFERENCEMOODBOARDS",) - RETURN_NAMES = ("moodboards",) - FUNCTION = "build_moodboards" - CATEGORY = "Runware" - DESCRIPTION = ( - "Build settings.moodboards for image inference settings. " - "Outputs one-element array with required id and optional strength." - ) - def build_moodboards(self, **kwargs) -> Tuple[List[Dict[str, Any]]]: moodboard_id = str(kwargs.get("id") or "").strip() if not moodboard_id: