- SimpleSet/Get use text input (type any name)
- Preview shows on node after execution
- SimpleGet has trigger input for execution order
- SimpleList shows all variables
- SimpleClear clears all
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Python defines nodes with ANY type so they appear in menus/drag connections
- JS overrides with isVirtualNode for actual graph-redirect behavior
- SimpleSet accepts any input, passes through
- SimpleGet dropdown shows available setter names
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
All nodes in SimpleVariables category:
- SimpleSet: Set a variable by name
- SimpleGet: Get a variable (dropdown shows available names)
- SimpleList: Show all variable names (click Refresh)
- SimpleClear: Clear all variable connections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The 'this' context was wrong inside the values callback.
Now uses 'node' reference like KJNodes does.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Nodes are now isVirtualNode = true (no Python execution)
- GetVariable uses getInputLink() to redirect to SetVariable's input
- Data flows directly through the graph, no execution order issues
- Get Variable has dropdown showing available variable names
- Node titles update to show variable name (Set: foo, Get: foo)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
IS_CHANGED doesn't have access to computed input values yet.
The trigger input is required to ensure execution order.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- SetVariable now stores value during IS_CHANGED (runs before execution)
- This ensures values are available before any GetVariable runs
- Removed trigger input from GetVariable - no longer needed
- Much cleaner workflow without requiring manual connections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- SetVariable and GetVariable now always re-execute
- Prevents ComfyUI from caching old variable values
- Returns time.time() to signal change on every execution
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added AnyType class that bypasses ComfyUI type validation
- This fixes "Return type mismatch" errors with wildcards
- Pattern used by ComfyUI_essentials and other popular nodes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- GetVariable now has optional 'trigger' input
- Connect SetVariable output to GetVariable trigger to ensure Set runs first
- Returns None instead of error when variable not found (graceful handling)
- Shows "NOT SET" in preview when variable missing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added web/simplevariables.js to handle displaying preview text
- Registers extension that hooks into node execution
- Creates a read-only text widget on the node when executed
- Automatically resizes node to fit content
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed return format to use {"ui": {"text": [preview]}, "result": (value,)}
- Preview text now displays on the node itself like Show Text nodes
- Removed separate preview output port - cleaner node design
- Updated README to reflect on-node preview feature
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Main nodes: Set Variable, Get Variable, List Variables
- Works with ALL data types (Image, Mask, Latent, Model, etc.)
- Type-specific nodes moved to deprecated category
- Updated documentation