The actual fix was setting slot.label alongside slot.name. The
info.outputs approach was wrong (it always contains Python defaults).
Widget values were being restored correctly all along.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Read output names from info.outputs (serialized node data) instead of
hidden widget values, which ComfyUI may not persist across reloads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Defer removal of the 32 default Python outputs from onNodeCreated using
queueMicrotask so they remain available during graph loading. ComfyUI
creates all nodes before configuring them, and nodes like Kijai's SetNode
resolve links during their configure step — if outputs were already
removed, the resolution failed with "node input undefined". The deferred
cleanup only runs for new nodes; loaded workflows set _configured=true
in onConfigure first. Also adds a fallback to sync widget values from
serialized outputs when widget restoration fails.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move FastAbsoluteSaver node from ComfyUI-Sharp-Selector into this pack
- Add save_metadata_png toggle: embeds workflow in a sidecar PNG for webp/video exports,
or in the first file for PNG sequences
- Batch GPU->CPU tensor transfer (single sync instead of per-image)
- Remove dead webp exif code and unused variables/imports
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When the file at json_path didn't exist, clicking Refresh Outputs
returned empty keys causing all outputs and links to be removed.
Now the API returns an error flag and the frontend bails out early,
preserving existing outputs.
Bump version to 1.2.1.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When a MASK is connected, it gets embedded as the alpha channel of the
saved PNG. LoadImage then automatically extracts it as its mask output.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previews an image (like PreviewImage) and saves a copy to input/ so a
LoadImage node can reference it. JS extension adds a target-node-ID
widget and "Send to Load Image" button that updates the target's combo.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Four new nodes that collapse common multi-node chains for path construction,
string templating, substring extraction, and boolean selection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GitHub strips inline SVGs from Markdown for security. Moved the 3
diagrams (banner, node diagram, segment lookup) to assets/ and
reference them with <img> tags instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Explains flat vs batch JSON, segment lookup logic (match by
sequence_number field, fallback to index, clamping), and per-segment
key differences.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add pyproject.toml with registry metadata (publisher: ethanfel)
- Add .github/workflows/publish.yml for auto-publish on version bump
- Update README with GitHub clone URL and ComfyUI Manager install
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auto-discovers JSON keys and exposes them as typed output slots.
Includes JS frontend for refresh, connection-safe updates, and
workflow persistence of keys and types.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>