- Deferred output cleanup (_configured flag + queueMicrotask) to prevent
breaking links when other nodes (e.g. Kijai Set/Get) resolve outputs
during graph loading
- file_not_found error handling in refresh to keep existing outputs intact
- Fallback widget sync in onConfigure when widget values are empty but
serialized outputs exist
Applied to both json_dynamic.js and project_dynamic.js.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Types were lost on workflow reload because only key names were stored.
Now both keys and types are saved in hidden widgets and restored by
onConfigure, so colored connector dots persist without needing Refresh.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
API route now returns types alongside keys. JS sets output slot type
accordingly, giving correct colored dots and type-safe connections.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diff new keys against existing outputs instead of remove-all/add-all.
Reuses slot objects for matching key names so links stay connected.
Only disconnects links on keys that were actually removed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Direct array manipulation bypassed LiteGraph's internal slot tracking,
causing output names to show as defaults instead of JSON key names.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dynamic node reads JSON keys and exposes them as outputs automatically
via 32 AnyType slots managed by a JS extension (show/hide/rename).
Includes /json_manager/get_keys API route, bool-safe type handling,
and workflow save/reload support.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>