mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-19 22:09:37 +00:00
## Summary Prune stale proxyWidgets entries that reference grandchild nodes no longer present in the outer subgraph after nested packing. ## Changes - **What**: Filter out proxyWidgets entries during hydration when the source node doesn't exist in the subgraph. Also skip missing-node entries in `_pruneStaleAliasFallbackEntries` as defense-in-depth. Write back cleaned entries so stale data doesn't persist. ## Review Focus The fix touches two codepaths in `SubgraphNode.ts`: 1. **Hydration** (`_internalConfigureAfterSlots`): Added `getNodeById` guard before accepting a proxyWidget entry, and broadened the write-back condition from legacy-only to any filtered entries. 2. **Runtime pruning** (`_pruneStaleAliasFallbackEntries`): Added early-exit for entries whose source node no longer exists — previously these survived because failed resolution returned `undefined` which bypassed the concrete-key comparison. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-10390-fix-prune-stale-proxyWidgets-referencing-nodes-removed-by-nested-subgraph-packing-32b6d73d365081e69eedcb2b67d7043d) by [Unito](https://www.unito.io) --------- Co-authored-by: Amp <amp@ampcode.com>
556 lines
14 KiB
JSON
556 lines
14 KiB
JSON
{
|
|
"id": "b04d981f-6857-48cc-ac6e-429ab2f6bc8d",
|
|
"revision": 0,
|
|
"last_node_id": 11,
|
|
"last_link_id": 16,
|
|
"nodes": [
|
|
{
|
|
"id": 9,
|
|
"type": "SaveImage",
|
|
"pos": [1451.0058559453123, 189.0019842294924],
|
|
"size": [400, 200],
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "images",
|
|
"type": "IMAGE",
|
|
"link": 13
|
|
}
|
|
],
|
|
"outputs": [],
|
|
"properties": {},
|
|
"widgets_values": ["ComfyUI"]
|
|
},
|
|
{
|
|
"id": 4,
|
|
"type": "CheckpointLoaderSimple",
|
|
"pos": [25.988896564209426, 473.9973077158204],
|
|
"size": [400, 200],
|
|
"flags": {},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"name": "MODEL",
|
|
"type": "MODEL",
|
|
"slot_index": 0,
|
|
"links": [11]
|
|
},
|
|
{
|
|
"name": "CLIP",
|
|
"type": "CLIP",
|
|
"slot_index": 1,
|
|
"links": [10]
|
|
},
|
|
{
|
|
"name": "VAE",
|
|
"type": "VAE",
|
|
"slot_index": 2,
|
|
"links": [12]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "CheckpointLoaderSimple"
|
|
},
|
|
"widgets_values": ["v1-5-pruned-emaonly-fp16.safetensors"]
|
|
},
|
|
{
|
|
"id": 10,
|
|
"type": "d14ff4cf-e5cb-4c84-941f-7c2457476424",
|
|
"pos": [711.776576770508, 420.55569028417983],
|
|
"size": [400, 293],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"link": 10
|
|
},
|
|
{
|
|
"name": "model",
|
|
"type": "MODEL",
|
|
"link": 11
|
|
},
|
|
{
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"link": 12
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"links": [13]
|
|
}
|
|
],
|
|
"properties": {
|
|
"proxyWidgets": [
|
|
["7", "text"],
|
|
["6", "text"],
|
|
["3", "seed"]
|
|
]
|
|
},
|
|
"widgets_values": []
|
|
}
|
|
],
|
|
"links": [
|
|
[10, 4, 1, 10, 0, "CLIP"],
|
|
[11, 4, 0, 10, 1, "MODEL"],
|
|
[12, 4, 2, 10, 2, "VAE"],
|
|
[13, 10, 0, 9, 0, "IMAGE"]
|
|
],
|
|
"groups": [],
|
|
"definitions": {
|
|
"subgraphs": [
|
|
{
|
|
"id": "d14ff4cf-e5cb-4c84-941f-7c2457476424",
|
|
"version": 1,
|
|
"state": {
|
|
"lastGroupId": 0,
|
|
"lastNodeId": 11,
|
|
"lastLinkId": 16,
|
|
"lastRerouteId": 0
|
|
},
|
|
"revision": 0,
|
|
"config": {},
|
|
"name": "New Subgraph",
|
|
"inputNode": {
|
|
"id": -10,
|
|
"bounding": [233, 404.5, 120, 100]
|
|
},
|
|
"outputNode": {
|
|
"id": -20,
|
|
"bounding": [1494, 424.5, 120, 60]
|
|
},
|
|
"inputs": [
|
|
{
|
|
"id": "85b7a46b-f14c-4297-8b86-3fc73a41da2b",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"linkIds": [14],
|
|
"localized_name": "clip",
|
|
"pos": [333, 424.5]
|
|
},
|
|
{
|
|
"id": "b4040cb7-0457-416e-ad6e-14890b871dd2",
|
|
"name": "model",
|
|
"type": "MODEL",
|
|
"linkIds": [1],
|
|
"localized_name": "model",
|
|
"pos": [333, 444.5]
|
|
},
|
|
{
|
|
"id": "e61199fa-9113-4532-a3d9-879095969171",
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"linkIds": [8],
|
|
"localized_name": "vae",
|
|
"pos": [333, 464.5]
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"id": "a4705fa5-a5e6-4c4e-83c2-dfb875861466",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"linkIds": [9],
|
|
"localized_name": "IMAGE",
|
|
"pos": [1514, 444.5]
|
|
}
|
|
],
|
|
"widgets": [],
|
|
"nodes": [
|
|
{
|
|
"id": 5,
|
|
"type": "EmptyLatentImage",
|
|
"pos": [473.007643669922, 609.0214689174805],
|
|
"size": [400, 200],
|
|
"flags": {},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"inputs": [],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "LATENT",
|
|
"name": "LATENT",
|
|
"type": "LATENT",
|
|
"slot_index": 0,
|
|
"links": [2]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "EmptyLatentImage"
|
|
},
|
|
"widgets_values": [512, 512, 1]
|
|
},
|
|
{
|
|
"id": 3,
|
|
"type": "KSampler",
|
|
"pos": [862.990643669922, 185.9853293300783],
|
|
"size": [400, 317],
|
|
"flags": {},
|
|
"order": 2,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "model",
|
|
"name": "model",
|
|
"type": "MODEL",
|
|
"link": 1
|
|
},
|
|
{
|
|
"localized_name": "positive",
|
|
"name": "positive",
|
|
"type": "CONDITIONING",
|
|
"link": 16
|
|
},
|
|
{
|
|
"localized_name": "negative",
|
|
"name": "negative",
|
|
"type": "CONDITIONING",
|
|
"link": 15
|
|
},
|
|
{
|
|
"localized_name": "latent_image",
|
|
"name": "latent_image",
|
|
"type": "LATENT",
|
|
"link": 2
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "LATENT",
|
|
"name": "LATENT",
|
|
"type": "LATENT",
|
|
"slot_index": 0,
|
|
"links": [7]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "KSampler"
|
|
},
|
|
"widgets_values": [
|
|
156680208700286,
|
|
"randomize",
|
|
20,
|
|
8,
|
|
"euler",
|
|
"normal",
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"id": 8,
|
|
"type": "VAEDecode",
|
|
"pos": [1209.0062878349609, 188.00400724755877],
|
|
"size": [400, 200],
|
|
"flags": {},
|
|
"order": 3,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "samples",
|
|
"name": "samples",
|
|
"type": "LATENT",
|
|
"link": 7
|
|
},
|
|
{
|
|
"localized_name": "vae",
|
|
"name": "vae",
|
|
"type": "VAE",
|
|
"link": 8
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "IMAGE",
|
|
"name": "IMAGE",
|
|
"type": "IMAGE",
|
|
"slot_index": 0,
|
|
"links": [9]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "VAEDecode"
|
|
},
|
|
"widgets_values": []
|
|
},
|
|
{
|
|
"id": 11,
|
|
"type": "3b9b7fb9-a8f6-4b4e-ac13-b68156afe8f6",
|
|
"pos": [485.5190761650391, 283.9247189174806],
|
|
"size": [400, 237],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "clip",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"link": 14
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "CONDITIONING",
|
|
"name": "CONDITIONING",
|
|
"type": "CONDITIONING",
|
|
"links": [15]
|
|
},
|
|
{
|
|
"localized_name": "CONDITIONING_1",
|
|
"name": "CONDITIONING_1",
|
|
"type": "CONDITIONING",
|
|
"links": [16]
|
|
}
|
|
],
|
|
"properties": {
|
|
"proxyWidgets": [
|
|
["7", "text"],
|
|
["6", "text"]
|
|
]
|
|
},
|
|
"widgets_values": []
|
|
}
|
|
],
|
|
"groups": [],
|
|
"links": [
|
|
{
|
|
"id": 2,
|
|
"origin_id": 5,
|
|
"origin_slot": 0,
|
|
"target_id": 3,
|
|
"target_slot": 3,
|
|
"type": "LATENT"
|
|
},
|
|
{
|
|
"id": 7,
|
|
"origin_id": 3,
|
|
"origin_slot": 0,
|
|
"target_id": 8,
|
|
"target_slot": 0,
|
|
"type": "LATENT"
|
|
},
|
|
{
|
|
"id": 1,
|
|
"origin_id": -10,
|
|
"origin_slot": 1,
|
|
"target_id": 3,
|
|
"target_slot": 0,
|
|
"type": "MODEL"
|
|
},
|
|
{
|
|
"id": 8,
|
|
"origin_id": -10,
|
|
"origin_slot": 2,
|
|
"target_id": 8,
|
|
"target_slot": 1,
|
|
"type": "VAE"
|
|
},
|
|
{
|
|
"id": 9,
|
|
"origin_id": 8,
|
|
"origin_slot": 0,
|
|
"target_id": -20,
|
|
"target_slot": 0,
|
|
"type": "IMAGE"
|
|
},
|
|
{
|
|
"id": 14,
|
|
"origin_id": -10,
|
|
"origin_slot": 0,
|
|
"target_id": 11,
|
|
"target_slot": 0,
|
|
"type": "CLIP"
|
|
},
|
|
{
|
|
"id": 15,
|
|
"origin_id": 11,
|
|
"origin_slot": 0,
|
|
"target_id": 3,
|
|
"target_slot": 2,
|
|
"type": "CONDITIONING"
|
|
},
|
|
{
|
|
"id": 16,
|
|
"origin_id": 11,
|
|
"origin_slot": 1,
|
|
"target_id": 3,
|
|
"target_slot": 1,
|
|
"type": "CONDITIONING"
|
|
}
|
|
],
|
|
"extra": {}
|
|
},
|
|
{
|
|
"id": "3b9b7fb9-a8f6-4b4e-ac13-b68156afe8f6",
|
|
"version": 1,
|
|
"state": {
|
|
"lastGroupId": 0,
|
|
"lastNodeId": 11,
|
|
"lastLinkId": 16,
|
|
"lastRerouteId": 0
|
|
},
|
|
"revision": 0,
|
|
"config": {},
|
|
"name": "New Subgraph",
|
|
"inputNode": {
|
|
"id": -10,
|
|
"bounding": [233.01228575000005, 332.7902770140076, 120, 60]
|
|
},
|
|
"outputNode": {
|
|
"id": -20,
|
|
"bounding": [
|
|
898.2956109453125, 322.7902770140076, 138.31666564941406, 80
|
|
]
|
|
},
|
|
"inputs": [
|
|
{
|
|
"id": "e5074a9c-3b33-4998-b569-0638817e81e7",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"linkIds": [5, 3],
|
|
"localized_name": "clip",
|
|
"pos": [55, 20]
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"id": "5fd778da-7ff1-4a0b-9282-d11a2e332e15",
|
|
"name": "CONDITIONING",
|
|
"type": "CONDITIONING",
|
|
"linkIds": [6],
|
|
"localized_name": "CONDITIONING",
|
|
"pos": [20, 20]
|
|
},
|
|
{
|
|
"id": "1e02089f-6491-45fa-aa0a-24458100f8ae",
|
|
"name": "CONDITIONING_1",
|
|
"type": "CONDITIONING",
|
|
"linkIds": [4],
|
|
"localized_name": "CONDITIONING_1",
|
|
"pos": [20, 40]
|
|
}
|
|
],
|
|
"widgets": [],
|
|
"nodes": [
|
|
{
|
|
"id": 7,
|
|
"type": "CLIPTextEncode",
|
|
"pos": [413.01228575000005, 388.98593823266606],
|
|
"size": [425, 200],
|
|
"flags": {},
|
|
"order": 1,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "clip",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"link": 5
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "CONDITIONING",
|
|
"name": "CONDITIONING",
|
|
"type": "CONDITIONING",
|
|
"slot_index": 0,
|
|
"links": [6]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "CLIPTextEncode"
|
|
},
|
|
"widgets_values": ["text, watermark"]
|
|
},
|
|
{
|
|
"id": 6,
|
|
"type": "CLIPTextEncode",
|
|
"pos": [414.99053247091683, 185.9946096918335],
|
|
"size": [423, 200],
|
|
"flags": {},
|
|
"order": 0,
|
|
"mode": 0,
|
|
"inputs": [
|
|
{
|
|
"localized_name": "clip",
|
|
"name": "clip",
|
|
"type": "CLIP",
|
|
"link": 3
|
|
}
|
|
],
|
|
"outputs": [
|
|
{
|
|
"localized_name": "CONDITIONING",
|
|
"name": "CONDITIONING",
|
|
"type": "CONDITIONING",
|
|
"slot_index": 0,
|
|
"links": [4]
|
|
}
|
|
],
|
|
"properties": {
|
|
"Node name for S&R": "CLIPTextEncode"
|
|
},
|
|
"widgets_values": [
|
|
"beautiful scenery nature glass bottle landscape, , purple galaxy bottle,"
|
|
]
|
|
}
|
|
],
|
|
"groups": [],
|
|
"links": [
|
|
{
|
|
"id": 5,
|
|
"origin_id": -10,
|
|
"origin_slot": 0,
|
|
"target_id": 7,
|
|
"target_slot": 0,
|
|
"type": "CLIP"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"origin_id": -10,
|
|
"origin_slot": 0,
|
|
"target_id": 6,
|
|
"target_slot": 0,
|
|
"type": "CLIP"
|
|
},
|
|
{
|
|
"id": 6,
|
|
"origin_id": 7,
|
|
"origin_slot": 0,
|
|
"target_id": -20,
|
|
"target_slot": 0,
|
|
"type": "CONDITIONING"
|
|
},
|
|
{
|
|
"id": 4,
|
|
"origin_id": 6,
|
|
"origin_slot": 0,
|
|
"target_id": -20,
|
|
"target_slot": 1,
|
|
"type": "CONDITIONING"
|
|
}
|
|
],
|
|
"extra": {}
|
|
}
|
|
]
|
|
},
|
|
"config": {},
|
|
"extra": {
|
|
"ds": {
|
|
"scale": 0.6830134553650709,
|
|
"offset": [-203.70966200000038, 259.92420099999975]
|
|
},
|
|
"frontendVersion": "1.43.2"
|
|
},
|
|
"version": 0.4
|
|
}
|