diff --git a/prompt_manager.py b/prompt_manager.py index 26f5473..f3432df 100644 --- a/prompt_manager.py +++ b/prompt_manager.py @@ -492,6 +492,19 @@ class PromptManager(ComfyNodeABC): """ self.cleanup_gallery_system() - # NOTE: IS_CHANGED intentionally removed to match CLIPTextEncode behavior - # ComfyUI's default caching (based on input values) should handle cache invalidation - # The previous IS_CHANGED implementation was causing input/cache mismatch issues + @classmethod + def IS_CHANGED(cls, clip, text="", category="", tags="", search_text="", + prepend_text="", append_text="", **kwargs): + """ + ComfyUI method to determine if node needs re-execution. + + Returns a hash of input values that affect the conditioning output. + This enables proper branch execution - only re-execute when inputs change. + """ + import hashlib + + # Combine all text inputs that affect the conditioning output + # Note: search_text doesn't affect output, so it's excluded + combined = f"{text}|{prepend_text}|{append_text}" + + return hashlib.sha256(combined.encode()).hexdigest() diff --git a/prompt_manager_text.py b/prompt_manager_text.py index 48d2945..f4bd6fd 100644 --- a/prompt_manager_text.py +++ b/prompt_manager_text.py @@ -456,6 +456,19 @@ class PromptManagerText(ComfyNodeABC): """ self.cleanup_gallery_system() - # NOTE: IS_CHANGED intentionally removed to match CLIPTextEncode behavior - # ComfyUI's default caching (based on input values) should handle cache invalidation - # The previous IS_CHANGED implementation was causing input/cache mismatch issues + @classmethod + def IS_CHANGED(cls, text="", category="", tags="", search_text="", + prepend_text="", append_text="", **kwargs): + """ + ComfyUI method to determine if node needs re-execution. + + Returns a hash of input values that affect the text output. + This enables proper branch execution - only re-execute when inputs change. + """ + import hashlib + + # Combine all text inputs that affect the output + # Note: search_text doesn't affect output, so it's excluded + combined = f"{text}|{prepend_text}|{append_text}" + + return hashlib.sha256(combined.encode()).hexdigest()