mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-09-24 12:34:09 -03:00
IS_CHANGED only receives constant inputs, so a linked text always arrived as None and the node kept serving its cached first expansion. Declare hidden PROMPT/UNIQUE_ID inputs and walk the prompt graph to the upstream node: rerun only when its constants contain dynamic syntax or cannot be statically resolved, keep caching for static linked text. Fixes #1120
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from ..services.wildcard_service import (
|
|
contains_dynamic_syntax,
|
|
get_wildcard_service,
|
|
linked_text_requires_rerun,
|
|
)
|
|
|
|
|
|
class TextLM:
|
|
"""A simple text node with autocomplete support."""
|
|
|
|
NAME = "Text (LoraManager)"
|
|
CATEGORY = "Lora Manager/utils"
|
|
DESCRIPTION = (
|
|
"A simple text input node with autocomplete support for tags, styles, and wildcard expansion."
|
|
)
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"text": (
|
|
"AUTOCOMPLETE_TEXT_PROMPT,STRING",
|
|
{
|
|
"widgetType": "AUTOCOMPLETE_TEXT_PROMPT",
|
|
"placeholder": "Enter text... /character, /artist, /wildcard for quick search",
|
|
"tooltip": "The text output. Wildcard references inserted with /wildcard are expanded at runtime.",
|
|
},
|
|
),
|
|
},
|
|
"optional": {
|
|
"seed": (
|
|
"INT",
|
|
{
|
|
"forceInput": True,
|
|
"tooltip": "Optional seed for wildcard generation. Leave unconnected for non-deterministic wildcard expansion.",
|
|
},
|
|
),
|
|
},
|
|
"hidden": {
|
|
"prompt": "PROMPT",
|
|
"unique_id": "UNIQUE_ID",
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("STRING",)
|
|
OUTPUT_TOOLTIPS = ("The text output.",)
|
|
FUNCTION = "process"
|
|
|
|
@classmethod
|
|
def IS_CHANGED(
|
|
cls,
|
|
text: str,
|
|
seed: int | None = None,
|
|
prompt: dict | None = None,
|
|
unique_id: str | None = None,
|
|
):
|
|
if seed is not None:
|
|
return False
|
|
if contains_dynamic_syntax(text):
|
|
return float("NaN")
|
|
if text is None and linked_text_requires_rerun(prompt, unique_id, "text"):
|
|
return float("NaN")
|
|
return False
|
|
|
|
def process(
|
|
self,
|
|
text: str,
|
|
seed: int | None = None,
|
|
prompt: dict | None = None,
|
|
unique_id: str | None = None,
|
|
):
|
|
del prompt, unique_id
|
|
return (get_wildcard_service().expand_text(text, seed=seed),)
|