diff --git a/apps/electron-frontend/src/components/templates/data/Batch-image-workflow.json b/apps/electron-frontend/src/components/templates/data/Batch-image-workflow.json
index 1a144cbc..60009d4e 100644
--- a/apps/electron-frontend/src/components/templates/data/Batch-image-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Batch-image-workflow.json
@@ -1 +1 @@
-{"id":"abf9b0f9-6a08-47b9-937b-53173392b74e","title":"Batch image workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7,11],"slot_index":0}],"widgets_values":[369501923869898,"fixed",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[26,474],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["SDXL-v1.0-base.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[473,609],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,4],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[399.27614213197967,85.76040609137053],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[399.24162436548227,335.9319796954315],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LatentFromBatch","properties":{"Node name for S&R":"LatentFromBatch"},"pos":[1210,532],"size":[315,151],"inputs":[{"name":"samples","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[2,1],"order":0,"mode":0},{"id":"11","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1566,535],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":10},{"name":"vae","type":"VAE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[12],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"12","type":"SaveImage","properties":{},"pos":[1823,537],"size":[315,270],"inputs":[{"name":"images","type":"IMAGE","link":12}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"11",0,"LATENT"],["11","3",0,"10",0,"LATENT"],["12","11",0,"12",0,"IMAGE"],["13","4",2,"11",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"abf9b0f9-6a08-47b9-937b-53173392b74e","title":"Batch image workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7,11],"slot_index":0}],"widgets_values":[369501923869898,"fixed",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[26,474],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["SDXL-v1.0-base.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[473,609],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,4],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[399.27614213197967,85.76040609137053],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[399.24162436548227,335.9319796954315],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LatentFromBatch","properties":{"Node name for S&R":"LatentFromBatch"},"pos":[1210,532],"size":[315,151],"inputs":[{"name":"samples","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[2,1],"order":0,"mode":0},{"id":"11","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1566,535],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":10},{"name":"vae","type":"VAE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[12],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"12","type":"SaveImage","properties":{},"pos":[1823,537],"size":[315,270],"inputs":[{"name":"images","type":"IMAGE","link":12}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"11",0,"LATENT"],["11","3",0,"10",0,"LATENT"],["12","11",0,"12",0,"IMAGE"],["13","4",2,"11",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Canny-ControlNet-workflow.json b/apps/electron-frontend/src/components/templates/data/Canny-ControlNet-workflow.json
index 1f06a49a..0a270cdd 100644
--- a/apps/electron-frontend/src/components/templates/data/Canny-ControlNet-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Canny-ControlNet-workflow.json
@@ -1 +1 @@
-{"id":"b6ea4f06-ebb8-4067-84a7-cd021bc38c6c","title":"Canny ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1116.1725888324875,193.46192893401013],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":17},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[636250194499629,"fixed",25,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-173.86802030456852,-154.46192893401025],"size":[340,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[19],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[837.9137055837564,436.3401015228426],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[428.2690355329948,-322.1573604060914],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["a portrait photo of a female elf from Lord of the Rings, (Liv Tyler:1.1), (Cate Blanchett:0.9)\n\nhigh resolution, highly detailed, 4k, cinematic, dramatic lighting"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[689.6446700507614,185.18274111675123],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, horror, rendering, cosplay"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1456.1725888324872,193.46192893401016],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":19}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1677.7157360406093,190],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-42.34517766497464,81.07614213197967],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[13],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_portrait.jpg",null],"order":0,"mode":0},{"id":"13","type":"Canny","properties":{"Node name for S&R":"Canny"},"pos":[206.30964467005066,82.4609137055836],"size":[210,151],"inputs":[{"name":"image","type":"IMAGE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[14,18],"shape":3,"slot_index":0}],"widgets_values":[0.29999999999999993,0.7],"order":0,"mode":0},{"id":"14","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[349.73096446700504,-76.88832487309655],"size":[453,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[15],"shape":3,"slot_index":0}],"widgets_values":["control_v11p_sd15_canny_fp16.safetensors"],"order":0,"mode":0},{"id":"16","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[838.4568527918781,-6.223350253807119],"size":[212,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":16},{"name":"control_net","type":"CONTROL_NET","link":15},{"name":"image","type":"IMAGE","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[17],"shape":3,"slot_index":0}],"widgets_values":[0.8499999999999999],"order":0,"mode":0},{"id":"17","type":"PreviewImage","properties":{"Node name for S&R":"PreviewImage"},"pos":[451.50253807106594,89.73096446700497],"size":[210,246],"inputs":[{"name":"images","type":"IMAGE","link":18}],"outputs":[],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","12",0,"13",0,"IMAGE"],["14","13",0,"16",2,"IMAGE"],["15","14",0,"16",1,"CONTROL_NET"],["16","6",0,"16",0,"CONDITIONING"],["17","16",0,"3",1,"CONDITIONING"],["18","13",0,"17",0,"IMAGE"],["19","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"b6ea4f06-ebb8-4067-84a7-cd021bc38c6c","title":"Canny ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1116.1725888324875,193.46192893401013],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":17},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[636250194499629,"fixed",25,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-173.86802030456852,-154.46192893401025],"size":[340,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[19],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[837.9137055837564,436.3401015228426],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[428.2690355329948,-322.1573604060914],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["a portrait photo of a female elf from Lord of the Rings, (Liv Tyler:1.1), (Cate Blanchett:0.9)\n\nhigh resolution, highly detailed, 4k, cinematic, dramatic lighting"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[689.6446700507614,185.18274111675123],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, horror, rendering, cosplay"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1456.1725888324872,193.46192893401016],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":19}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1677.7157360406093,190],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-42.34517766497464,81.07614213197967],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[13],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_portrait.jpg",null],"order":0,"mode":0},{"id":"13","type":"Canny","properties":{"Node name for S&R":"Canny"},"pos":[206.30964467005066,82.4609137055836],"size":[210,151],"inputs":[{"name":"image","type":"IMAGE","link":13}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[14,18],"shape":3,"slot_index":0}],"widgets_values":[0.29999999999999993,0.7],"order":0,"mode":0},{"id":"14","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[349.73096446700504,-76.88832487309655],"size":[453,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[15],"shape":3,"slot_index":0}],"widgets_values":["control_v11p_sd15_canny_fp16.safetensors"],"order":0,"mode":0},{"id":"16","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[838.4568527918781,-6.223350253807119],"size":[212,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":16},{"name":"control_net","type":"CONTROL_NET","link":15},{"name":"image","type":"IMAGE","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[17],"shape":3,"slot_index":0}],"widgets_values":[0.8499999999999999],"order":0,"mode":0},{"id":"17","type":"PreviewImage","properties":{"Node name for S&R":"PreviewImage"},"pos":[451.50253807106594,89.73096446700497],"size":[210,246],"inputs":[{"name":"images","type":"IMAGE","link":18}],"outputs":[],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","12",0,"13",0,"IMAGE"],["14","13",0,"16",2,"IMAGE"],["15","14",0,"16",1,"CONTROL_NET"],["16","6",0,"16",0,"CONDITIONING"],["17","16",0,"3",1,"CONDITIONING"],["18","13",0,"17",0,"IMAGE"],["19","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Hi-res-fix-latent-upscale-workflow.json b/apps/electron-frontend/src/components/templates/data/Hi-res-fix-latent-upscale-workflow.json
index 12271fbb..35b65b55 100644
--- a/apps/electron-frontend/src/components/templates/data/Hi-res-fix-latent-upscale-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Hi-res-fix-latent-upscale-workflow.json
@@ -1 +1 @@
-{"id":"9ca45931-28ce-4a84-8709-2a84655f544e","title":"Hi-res fix latent upscale workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-42.776773296244784,386.634909596662],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1,14],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["sd_xl_refiner_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[486.0118219749653,571.8233657858136],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[385.2586926286509,61.45827538247568],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4,12],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[381.3998609179415,309.0702364394993],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6,13],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1968,177],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":15},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[2246,178],"size":[240,363],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LatentUpscale","properties":{"Node name for S&R":"LatentUpscale"},"pos":[1223,183.56467315716273],"size":[315,227],"inputs":[{"name":"samples","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[11],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",1024,1024,"disabled"],"order":0,"mode":0},{"id":"11","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1591.1411682892908,186.2941585535466],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":12},{"name":"negative","type":"CONDITIONING","link":13},{"name":"latent_image","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[15],"shape":3,"slot_index":0}],"widgets_values":[0,"randomize",20,8,"dpmpp_2m","karras",0.5],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","3",0,"10",0,"LATENT"],["11","10",0,"11",3,"LATENT"],["12","6",0,"11",1,"CONDITIONING"],["13","7",0,"11",2,"CONDITIONING"],["14","4",0,"11",0,"MODEL"],["15","11",0,"8",0,"LATENT"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"9ca45931-28ce-4a84-8709-2a84655f544e","title":"Hi-res fix latent upscale workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-42.776773296244784,386.634909596662],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1,14],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["sd_xl_refiner_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[486.0118219749653,571.8233657858136],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[385.2586926286509,61.45827538247568],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4,12],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[381.3998609179415,309.0702364394993],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6,13],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1968,177],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":15},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[2246,178],"size":[240,363],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LatentUpscale","properties":{"Node name for S&R":"LatentUpscale"},"pos":[1223,183.56467315716273],"size":[315,227],"inputs":[{"name":"samples","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[11],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",1024,1024,"disabled"],"order":0,"mode":0},{"id":"11","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1591.1411682892908,186.2941585535466],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":12},{"name":"negative","type":"CONDITIONING","link":13},{"name":"latent_image","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[15],"shape":3,"slot_index":0}],"widgets_values":[0,"randomize",20,8,"dpmpp_2m","karras",0.5],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","3",0,"10",0,"LATENT"],["11","10",0,"11",3,"LATENT"],["12","6",0,"11",1,"CONDITIONING"],["13","7",0,"11",2,"CONDITIONING"],["14","4",0,"11",0,"MODEL"],["15","11",0,"8",0,"LATENT"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Inpainting-workflow.json b/apps/electron-frontend/src/components/templates/data/Inpainting-workflow.json
index 0596c095..82aed561 100644
--- a/apps/electron-frontend/src/components/templates/data/Inpainting-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Inpainting-workflow.json
@@ -1 +1 @@
-{"id":"f9ef8d91-db53-4917-ae7e-107678de7a9a","title":"Inpainting workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",0.85],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-27.255076142131998,419.2233502538071],"size":[377,170],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["DreamShaper-v8.0-Inpainting.safetensors"],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[407.39213197969536,129.70177664974617],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["red hair"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[408.4352791878173,372.26269035533],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, horror, distorted, wrong hands"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,113],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"VAEEncodeForInpaint","properties":{"Node name for S&R":"VAEEncodeForInpaint"},"pos":[517.0862944162436,653.2195431472081],"size":[315,161],"inputs":[{"name":"pixels","type":"IMAGE","link":11},{"name":"vae","type":"VAE","link":13},{"name":"mask","type":"MASK","link":12}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[8],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[167.255076142132,655.960659898477],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[11],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[12],"shape":3,"slot_index":1}],"widgets_values":["Rectangle 4135.png",null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"3",3,"LATENT"],["11","11",0,"10",0,"IMAGE"],["12","11",1,"10",2,"MASK"],["13","4",2,"10",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"f9ef8d91-db53-4917-ae7e-107678de7a9a","title":"Inpainting workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",0.85],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-27.255076142131998,419.2233502538071],"size":[377,170],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["DreamShaper-v8.0-Inpainting.safetensors"],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[407.39213197969536,129.70177664974617],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["red hair"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[408.4352791878173,372.26269035533],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, horror, distorted, wrong hands"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,113],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"VAEEncodeForInpaint","properties":{"Node name for S&R":"VAEEncodeForInpaint"},"pos":[517.0862944162436,653.2195431472081],"size":[315,161],"inputs":[{"name":"pixels","type":"IMAGE","link":11},{"name":"vae","type":"VAE","link":13},{"name":"mask","type":"MASK","link":12}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[8],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[167.255076142132,655.960659898477],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[11],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[12],"shape":3,"slot_index":1}],"widgets_values":["Rectangle 4135.png",null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"3",3,"LATENT"],["11","11",0,"10",0,"IMAGE"],["12","11",1,"10",2,"MASK"],["13","4",2,"10",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/LCM-LoRA-workflow.json b/apps/electron-frontend/src/components/templates/data/LCM-LoRA-workflow.json
index 9bb19375..74b634b4 100644
--- a/apps/electron-frontend/src/components/templates/data/LCM-LoRA-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/LCM-LoRA-workflow.json
@@ -1 +1 @@
-{"id":"17ace548-d59c-4fcd-8ac7-6aca20e085b2","title":"LCM LoRA workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":11},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1054042089559169,"randomize",5,1.8,"lcm","sgm_uniform",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-411,202],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[10],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[12],"slot_index":1},{"name":"VAE","type":"VAE","links":[16],"slot_index":2}],"widgets_values":["sd_xl_base_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[494.1897079276773,661.375521557719],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[1024,1024,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[385.6600834492351,135.2806675938804],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[386,395],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":16}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"12","type":"LoraLoader","properties":{"Node name for S&R":"LoraLoader"},"pos":[-26,203],"size":[315,213],"inputs":[{"name":"model","type":"MODEL","link":10},{"name":"clip","type":"CLIP","link":12}],"outputs":[{"name":"MODEL","type":"MODEL","links":[11],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,14],"shape":3,"slot_index":1}],"widgets_values":["lcm/SDXL/pytorch_lora_weights.safetensors",1,1],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","4",0,"12",0,"MODEL"],["11","12",0,"3",0,"MODEL"],["12","4",1,"12",1,"CLIP"],["13","12",1,"6",0,"CLIP"],["14","12",1,"7",0,"CLIP"],["16","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"17ace548-d59c-4fcd-8ac7-6aca20e085b2","title":"LCM LoRA workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":11},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1054042089559169,"randomize",5,1.8,"lcm","sgm_uniform",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-411,202],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[10],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[12],"slot_index":1},{"name":"VAE","type":"VAE","links":[16],"slot_index":2}],"widgets_values":["sd_xl_base_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[494.1897079276773,661.375521557719],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[1024,1024,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[385.6600834492351,135.2806675938804],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[386,395],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":16}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"12","type":"LoraLoader","properties":{"Node name for S&R":"LoraLoader"},"pos":[-26,203],"size":[315,213],"inputs":[{"name":"model","type":"MODEL","link":10},{"name":"clip","type":"CLIP","link":12}],"outputs":[{"name":"MODEL","type":"MODEL","links":[11],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,14],"shape":3,"slot_index":1}],"widgets_values":["lcm/SDXL/pytorch_lora_weights.safetensors",1,1],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","4",0,"12",0,"MODEL"],["11","12",0,"3",0,"MODEL"],["12","4",1,"12",1,"CLIP"],["13","12",1,"6",0,"CLIP"],["14","12",1,"7",0,"CLIP"],["16","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/LoRA-workflow.json b/apps/electron-frontend/src/components/templates/data/LoRA-workflow.json
index 6c7d355a..83b831ea 100644
--- a/apps/electron-frontend/src/components/templates/data/LoRA-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/LoRA-workflow.json
@@ -1 +1 @@
-{"id":"2d009605-c966-4e51-b041-6d6fd8ac147d","title":"LoRA workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":11},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[506015807837182,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-411,202],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[10],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[12],"slot_index":1},{"name":"VAE","type":"VAE","links":[],"slot_index":2}],"widgets_values":["anythingelseV4_v45.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[491.01974965229476,667.715438108484],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[384.0751043115439,95.65618915159942],"size":[423,263],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["masterpiece, best quality, 1girl, solo, long_hair,\nlooking_at_viewer, smile, bangs, skirt, shirt, long_sleeves, hat,\ndress, bow, holding, closed_mouth, flower, frills, hair_flower,\npetals, bouquet, holding_flower, center_frills, bonnet,\nholding_bouquet, flower field, flower field, lineart, monochrome,"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[386,395],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":15}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"12","type":"LoraLoader","properties":{"Node name for S&R":"LoraLoader"},"pos":[-26,203],"size":[315,213],"inputs":[{"name":"model","type":"MODEL","link":10},{"name":"clip","type":"CLIP","link":12}],"outputs":[{"name":"MODEL","type":"MODEL","links":[11],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,14],"shape":3,"slot_index":1}],"widgets_values":["animeoutlineV4_16.safetensors",1,1],"order":0,"mode":0},{"id":"13","type":"VAELoader","properties":{"Node name for S&R":"VAELoader"},"pos":[869.1699582753824,642.8931849791377],"size":[315,113],"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[15],"shape":3,"slot_index":0}],"widgets_values":["orangemix.vae.pt"],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","4",0,"12",0,"MODEL"],["11","12",0,"3",0,"MODEL"],["12","4",1,"12",1,"CLIP"],["13","12",1,"6",0,"CLIP"],["14","12",1,"7",0,"CLIP"],["15","13",0,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"2d009605-c966-4e51-b041-6d6fd8ac147d","title":"LoRA workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":11},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[506015807837182,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-411,202],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[10],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[12],"slot_index":1},{"name":"VAE","type":"VAE","links":[],"slot_index":2}],"widgets_values":["anythingelseV4_v45.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[491.01974965229476,667.715438108484],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[384.0751043115439,95.65618915159942],"size":[423,263],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["masterpiece, best quality, 1girl, solo, long_hair,\nlooking_at_viewer, smile, bangs, skirt, shirt, long_sleeves, hat,\ndress, bow, holding, closed_mouth, flower, frills, hair_flower,\npetals, bouquet, holding_flower, center_frills, bonnet,\nholding_bouquet, flower field, flower field, lineart, monochrome,"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[386,395],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":15}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"12","type":"LoraLoader","properties":{"Node name for S&R":"LoraLoader"},"pos":[-26,203],"size":[315,213],"inputs":[{"name":"model","type":"MODEL","link":10},{"name":"clip","type":"CLIP","link":12}],"outputs":[{"name":"MODEL","type":"MODEL","links":[11],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,14],"shape":3,"slot_index":1}],"widgets_values":["animeoutlineV4_16.safetensors",1,1],"order":0,"mode":0},{"id":"13","type":"VAELoader","properties":{"Node name for S&R":"VAELoader"},"pos":[869.1699582753824,642.8931849791377],"size":[315,113],"inputs":[],"outputs":[{"name":"VAE","type":"VAE","links":[15],"shape":3,"slot_index":0}],"widgets_values":["orangemix.vae.pt"],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","4",0,"12",0,"MODEL"],["11","12",0,"3",0,"MODEL"],["12","4",1,"12",1,"CLIP"],["13","12",1,"6",0,"CLIP"],["14","12",1,"7",0,"CLIP"],["15","13",0,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Outpainting-workflow.json b/apps/electron-frontend/src/components/templates/data/Outpainting-workflow.json
index 5d105d6a..0667db6d 100644
--- a/apps/electron-frontend/src/components/templates/data/Outpainting-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Outpainting-workflow.json
@@ -1 +1 @@
-{"id":"8c3cab96-fb1f-4198-aa1e-b3ec01de835b","title":"Outpainting workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[750333344894128,"randomize",20,8,"dpmpp_2m","karras",0.85],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[8.536802030456869,458.47715736040607],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["DreamShaper-v8.0-Inpainting.safetensors"],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[403.35786802030464,125.84898477157358],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["a fantastic colorful alien landscape with mountains and valleys with galaxy in the sky"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[403.2982233502538,379.2982233502538],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, horror, distorted, wrong hands"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[17],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"10","type":"VAEEncodeForInpaint","properties":{"Node name for S&R":"VAEEncodeForInpaint"},"pos":[511,673],"size":[315,161],"inputs":[{"name":"pixels","type":"IMAGE","link":16},{"name":"vae","type":"VAE","link":13},{"name":"mask","type":"MASK","link":15}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[16],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-305,819],"size":[313,482],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[14],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[],"shape":3,"slot_index":1}],"widgets_values":["ComfyUI_00297_.png",null],"order":0,"mode":0},{"id":"12","type":"ImagePadForOutpaint","properties":{"Node name for S&R":"ImagePadForOutpaint"},"pos":[97,733],"size":[315,289],"inputs":[{"name":"image","type":"IMAGE","link":14}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[16],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[15],"shape":3,"slot_index":1}],"widgets_values":[256,0,0,256,100],"order":0,"mode":0},{"id":"13","type":"SaveImage","properties":{},"pos":[1465,185],"size":[315,113],"inputs":[{"name":"images","type":"IMAGE","link":17}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["10","10",0,"3",3,"LATENT"],["13","4",2,"10",1,"VAE"],["14","11",0,"12",0,"IMAGE"],["15","12",1,"10",2,"MASK"],["16","12",0,"10",0,"IMAGE"],["17","8",0,"13",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"8c3cab96-fb1f-4198-aa1e-b3ec01de835b","title":"Outpainting workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":10}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[750333344894128,"randomize",20,8,"dpmpp_2m","karras",0.85],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[8.536802030456869,458.47715736040607],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,13],"slot_index":2}],"widgets_values":["DreamShaper-v8.0-Inpainting.safetensors"],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[403.35786802030464,125.84898477157358],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["a fantastic colorful alien landscape with mountains and valleys with galaxy in the sky"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[403.2982233502538,379.2982233502538],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, horror, distorted, wrong hands"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[17],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"10","type":"VAEEncodeForInpaint","properties":{"Node name for S&R":"VAEEncodeForInpaint"},"pos":[511,673],"size":[315,161],"inputs":[{"name":"pixels","type":"IMAGE","link":16},{"name":"vae","type":"VAE","link":13},{"name":"mask","type":"MASK","link":15}],"outputs":[{"name":"LATENT","type":"LATENT","links":[10],"shape":3,"slot_index":0}],"widgets_values":[16],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-305,819],"size":[313,482],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[14],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[],"shape":3,"slot_index":1}],"widgets_values":["ComfyUI_00297_.png",null],"order":0,"mode":0},{"id":"12","type":"ImagePadForOutpaint","properties":{"Node name for S&R":"ImagePadForOutpaint"},"pos":[97,733],"size":[315,289],"inputs":[{"name":"image","type":"IMAGE","link":14}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[16],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":[15],"shape":3,"slot_index":1}],"widgets_values":[256,0,0,256,100],"order":0,"mode":0},{"id":"13","type":"SaveImage","properties":{},"pos":[1465,185],"size":[315,113],"inputs":[{"name":"images","type":"IMAGE","link":17}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["10","10",0,"3",3,"LATENT"],["13","4",2,"10",1,"VAE"],["14","11",0,"12",0,"IMAGE"],["15","12",1,"10",2,"MASK"],["16","12",0,"10",0,"IMAGE"],["17","8",0,"13",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Pose-ControlNet-workflow.json b/apps/electron-frontend/src/components/templates/data/Pose-ControlNet-workflow.json
index eaa6f95b..3a099a18 100644
--- a/apps/electron-frontend/src/components/templates/data/Pose-ControlNet-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Pose-ControlNet-workflow.json
@@ -1 +1 @@
-{"id":"986942ff-32de-400d-a5fb-db80ec2f852f","title":"Pose ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1205,174],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":17},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[757125948756855,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-220.43367174280888,-214.979780033841],"size":[340,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[48],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[929,481],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[193.1136209813875,-226.375972927242],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["masterpiece detailed illustration of a sci-fi battle robot dancing on the street of on an alien planet"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[782.8679357021997,233.41522842639594],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, painting, drawing, photography, distorted, horror"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1540,177.79238578680201],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":48}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1773.565736040609,179.6603214890017],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-43.60439932318104,186.30338409475465],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[45],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_dance.jpg",null],"order":0,"mode":0},{"id":"14","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[481.8102368866329,31.265313028764808],"size":[365,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[15],"shape":3,"slot_index":0}],"widgets_values":["SD-v1.5-ControlNet-Openpose-fp16.safetensors"],"order":0,"mode":0},{"id":"16","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[927.2445008460235,39.75490693739425],"size":[212,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":16},{"name":"control_net","type":"CONTROL_NET","link":15},{"name":"image","type":"IMAGE","link":49}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[17],"shape":3,"slot_index":0}],"widgets_values":[0.8999999999999999],"order":0,"mode":0},{"id":"17","type":"PreviewImage","properties":{"Node name for S&R":"PreviewImage"},"pos":[492.81142131979686,181.92681895093062],"size":[204,246],"inputs":[{"name":"images","type":"IMAGE","link":47}],"outputs":[],"widgets_values":[],"order":0,"mode":0},{"id":"24","type":"ImageScale","properties":{"Node name for S&R":"ImageScale"},"pos":[634.79179357022,-228.80786802030468],"size":[210,227],"inputs":[{"name":"image","type":"IMAGE","link":46}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[49],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",512,512,"disabled"],"order":0,"mode":0},{"id":"28","type":"DWPreprocessor","properties":{"Node name for S&R":"DWPreprocessor"},"pos":[198.67876480541457,182.35989847715732],"size":[240,75],"inputs":[{"name":"image","type":"IMAGE","link":45}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[46,47],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["15","14",0,"16",1,"CONTROL_NET"],["16","6",0,"16",0,"CONDITIONING"],["17","16",0,"3",1,"CONDITIONING"],["45","12",0,"28",0,"IMAGE"],["46","28",0,"24",0,"IMAGE"],["47","28",0,"17",0,"IMAGE"],["48","4",2,"8",1,"VAE"],["49","24",0,"16",2,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"986942ff-32de-400d-a5fb-db80ec2f852f","title":"Pose ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1205,174],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":17},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[757125948756855,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-220.43367174280888,-214.979780033841],"size":[340,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[48],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[929,481],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[193.1136209813875,-226.375972927242],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["masterpiece detailed illustration of a sci-fi battle robot dancing on the street of on an alien planet"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[782.8679357021997,233.41522842639594],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, painting, drawing, photography, distorted, horror"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1540,177.79238578680201],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":48}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1773.565736040609,179.6603214890017],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-43.60439932318104,186.30338409475465],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[45],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_dance.jpg",null],"order":0,"mode":0},{"id":"14","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[481.8102368866329,31.265313028764808],"size":[365,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[15],"shape":3,"slot_index":0}],"widgets_values":["SD-v1.5-ControlNet-Openpose-fp16.safetensors"],"order":0,"mode":0},{"id":"16","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[927.2445008460235,39.75490693739425],"size":[212,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":16},{"name":"control_net","type":"CONTROL_NET","link":15},{"name":"image","type":"IMAGE","link":49}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[17],"shape":3,"slot_index":0}],"widgets_values":[0.8999999999999999],"order":0,"mode":0},{"id":"17","type":"PreviewImage","properties":{"Node name for S&R":"PreviewImage"},"pos":[492.81142131979686,181.92681895093062],"size":[204,246],"inputs":[{"name":"images","type":"IMAGE","link":47}],"outputs":[],"widgets_values":[],"order":0,"mode":0},{"id":"24","type":"ImageScale","properties":{"Node name for S&R":"ImageScale"},"pos":[634.79179357022,-228.80786802030468],"size":[210,227],"inputs":[{"name":"image","type":"IMAGE","link":46}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[49],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",512,512,"disabled"],"order":0,"mode":0},{"id":"28","type":"DWPreprocessor","properties":{"Node name for S&R":"DWPreprocessor"},"pos":[198.67876480541457,182.35989847715732],"size":[240,75],"inputs":[{"name":"image","type":"IMAGE","link":45}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[46,47],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["15","14",0,"16",1,"CONTROL_NET"],["16","6",0,"16",0,"CONDITIONING"],["17","16",0,"3",1,"CONDITIONING"],["45","12",0,"28",0,"IMAGE"],["46","28",0,"24",0,"IMAGE"],["47","28",0,"17",0,"IMAGE"],["48","4",2,"8",1,"VAE"],["49","24",0,"16",2,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/SDXL-prompt-styler-workflow.json b/apps/electron-frontend/src/components/templates/data/SDXL-prompt-styler-workflow.json
index 71e81f2f..9f140d87 100644
--- a/apps/electron-frontend/src/components/templates/data/SDXL-prompt-styler-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/SDXL-prompt-styler-workflow.json
@@ -1 +1 @@
-{"id":"197f6593-ca05-48fa-9696-2cdca1f93086","title":"SDXL prompt styler workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[882380300250500,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[18.02715736040608,232.3720812182741],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["AnythingElse-V4.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[435.0478003384095,488.27648054145516],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[434,239],"size":[317,99],"inputs":[{"name":"clip","type":"CLIP","link":3},{"name":"text","type":"STRING","link":13,"widget":{"name":"text"}}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[437,365],"size":[313,99],"inputs":[{"name":"clip","type":"CLIP","link":5},{"name":"text","type":"STRING","link":12,"widget":{"name":"text"}}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"SDXLPromptStyler","properties":{"Node name for S&R":"SDXLPromptStyler"},"pos":[-68.67571912013534,422.2971235194585],"size":[400,510],"inputs":[],"outputs":[{"name":"text_positive","type":"STRING","links":[13],"shape":3,"slot_index":0},{"name":"text_negative","type":"STRING","links":[12],"shape":3,"slot_index":1}],"widgets_values":[null,null,null,null,null,null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["12","10",1,"7",1,"STRING"],["13","10",0,"6",1,"STRING"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"197f6593-ca05-48fa-9696-2cdca1f93086","title":"SDXL prompt styler workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[882380300250500,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[18.02715736040608,232.3720812182741],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["AnythingElse-V4.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[435.0478003384095,488.27648054145516],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[434,239],"size":[317,99],"inputs":[{"name":"clip","type":"CLIP","link":3},{"name":"text","type":"STRING","link":13,"widget":{"name":"text"}}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[437,365],"size":[313,99],"inputs":[{"name":"clip","type":"CLIP","link":5},{"name":"text","type":"STRING","link":12,"widget":{"name":"text"}}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"SDXLPromptStyler","properties":{"Node name for S&R":"SDXLPromptStyler"},"pos":[-68.67571912013534,422.2971235194585],"size":[400,510],"inputs":[],"outputs":[{"name":"text_positive","type":"STRING","links":[13],"shape":3,"slot_index":0},{"name":"text_negative","type":"STRING","links":[12],"shape":3,"slot_index":1}],"widgets_values":[null,null,null,null,null,null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["12","10",1,"7",1,"STRING"],["13","10",0,"6",1,"STRING"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Scribble-ControlNet-workflow.json b/apps/electron-frontend/src/components/templates/data/Scribble-ControlNet-workflow.json
index 54183154..08c092a5 100644
--- a/apps/electron-frontend/src/components/templates/data/Scribble-ControlNet-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Scribble-ControlNet-workflow.json
@@ -1 +1 @@
-{"id":"8d839df7-2a14-478d-934d-d6990d635446","title":"Scribble ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[842,150],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":19},{"name":"positive","type":"CONDITIONING","link":18},{"name":"negative","type":"CONDITIONING","link":16},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1002496614778823,"randomize",16,6,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[464.6294416243654,433.18527918781723],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[-93.25888324873091,-200.39467005076142],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":21}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[10],"slot_index":0}],"widgets_values":["(solo) girl (flat chest:0.9), (fennec ears:1.1) (fox ears:1.1), (blonde hair:1.0), messy hair, sky clouds, standing in a grass field, (chibi), blue eyes"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[357.13578680203045,189.50634517766497],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":20}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["(hands), text, error, cropped, (worst quality:1.2), (low quality:1.2), normal quality, (jpeg artifacts:1.3), signature, watermark, username, blurry, artist name, monochrome, sketch, censorship, censor, (copyright:1.2), extra legs, (forehead mark) (depth of field) (emotionless) (penis)"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1210,250],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":22}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1453,247],"size":[394,449],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[459,8.284263959390863],"size":[317,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":10},{"name":"control_net","type":"CONTROL_NET","link":13},{"name":"image","type":"IMAGE","link":12}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[18],"slot_index":0}],"widgets_values":[0.8999999999999999],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-60.4073604060913,198.40736040609139],"size":[388,466],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[12],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"widgets_values":["input_scribble_example.png",null],"order":0,"mode":0},{"id":"12","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[-92.7157360406091,47.642131979695435],"size":[422,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[13],"slot_index":0}],"widgets_values":["control_scribble.safetensors"],"order":0,"mode":0},{"id":"14","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-448,231],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[19],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[20,21],"slot_index":1},{"name":"VAE","type":"VAE","links":[22],"slot_index":2}],"widgets_values":["AnythingElse-V4.0.safetensors"],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","6",0,"10",0,"CONDITIONING"],["12","11",0,"10",2,"IMAGE"],["13","12",0,"10",1,"CONTROL_NET"],["16","7",0,"3",2,"CONDITIONING"],["18","10",0,"3",1,"CONDITIONING"],["19","14",0,"3",0,"MODEL"],["20","14",1,"7",0,"CLIP"],["21","14",1,"6",0,"CLIP"],["22","14",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"8d839df7-2a14-478d-934d-d6990d635446","title":"Scribble ControlNet workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[842,150],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":19},{"name":"positive","type":"CONDITIONING","link":18},{"name":"negative","type":"CONDITIONING","link":16},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1002496614778823,"randomize",16,6,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[464.6294416243654,433.18527918781723],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[-93.25888324873091,-200.39467005076142],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":21}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[10],"slot_index":0}],"widgets_values":["(solo) girl (flat chest:0.9), (fennec ears:1.1) (fox ears:1.1), (blonde hair:1.0), messy hair, sky clouds, standing in a grass field, (chibi), blue eyes"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[357.13578680203045,189.50634517766497],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":20}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[16],"slot_index":0}],"widgets_values":["(hands), text, error, cropped, (worst quality:1.2), (low quality:1.2), normal quality, (jpeg artifacts:1.3), signature, watermark, username, blurry, artist name, monochrome, sketch, censorship, censor, (copyright:1.2), extra legs, (forehead mark) (depth of field) (emotionless) (penis)"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1210,250],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":22}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1453,247],"size":[394,449],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"ControlNetApply","properties":{"Node name for S&R":"ControlNetApply"},"pos":[459,8.284263959390863],"size":[317,161],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":10},{"name":"control_net","type":"CONTROL_NET","link":13},{"name":"image","type":"IMAGE","link":12}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[18],"slot_index":0}],"widgets_values":[0.8999999999999999],"order":0,"mode":0},{"id":"11","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[-60.4073604060913,198.40736040609139],"size":[388,466],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[12],"slot_index":0},{"name":"MASK","type":"MASK","links":null}],"widgets_values":["input_scribble_example.png",null],"order":0,"mode":0},{"id":"12","type":"ControlNetLoader","properties":{"Node name for S&R":"ControlNetLoader"},"pos":[-92.7157360406091,47.642131979695435],"size":[422,113],"inputs":[],"outputs":[{"name":"CONTROL_NET","type":"CONTROL_NET","links":[13],"slot_index":0}],"widgets_values":["control_scribble.safetensors"],"order":0,"mode":0},{"id":"14","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-448,231],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[19],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[20,21],"slot_index":1},{"name":"VAE","type":"VAE","links":[22],"slot_index":2}],"widgets_values":["AnythingElse-V4.0.safetensors"],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","6",0,"10",0,"CONDITIONING"],["12","11",0,"10",2,"IMAGE"],["13","12",0,"10",1,"CONTROL_NET"],["16","7",0,"3",2,"CONDITIONING"],["18","10",0,"3",1,"CONDITIONING"],["19","14",0,"3",0,"MODEL"],["20","14",1,"7",0,"CLIP"],["21","14",1,"6",0,"CLIP"],["22","14",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Simple-img2img-workflow.json b/apps/electron-frontend/src/components/templates/data/Simple-img2img-workflow.json
index 239ada52..fad55b18 100644
--- a/apps/electron-frontend/src/components/templates/data/Simple-img2img-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Simple-img2img-workflow.json
@@ -1 +1 @@
-{"id":"cea8bc18-4c8f-4e7b-bf15-2a09c002b0d5","title":"Simple img2img workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":13},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[321204507298344,"randomize",30,8,"dpmpp_2m","normal",0.8700000000000001],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[392.39109874826147,108.12489568845619],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["photograph of victorian woman with wings, sky clouds, meadow grass\n"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[395.4152990264256,357.59874826147427],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":15}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["watermark, text\n"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":17}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[214,736],"size":[317,485],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[10],"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["",null],"order":0,"mode":0},{"id":"12","type":"VAEEncode","properties":{"Node name for S&R":"VAEEncode"},"pos":[603.6755090909277,612.2202215703504],"size":[210,99],"inputs":[{"name":"pixels","type":"IMAGE","link":10},{"name":"vae","type":"VAE","link":16}],"outputs":[{"name":"LATENT","type":"LATENT","links":[11],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[8.951599443671768,433],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[13],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[14,15],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":[16,17],"shape":3,"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0}],"links":[["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"12",0,"IMAGE"],["11","12",0,"3",3,"LATENT"],["13","14",0,"3",0,"MODEL"],["14","14",1,"6",0,"CLIP"],["15","14",1,"7",0,"CLIP"],["16","14",2,"12",1,"VAE"],["17","14",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"cea8bc18-4c8f-4e7b-bf15-2a09c002b0d5","title":"Simple img2img workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":13},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":11}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[321204507298344,"randomize",30,8,"dpmpp_2m","normal",0.8700000000000001],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[392.39109874826147,108.12489568845619],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["photograph of victorian woman with wings, sky clouds, meadow grass\n"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[395.4152990264256,357.59874826147427],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":15}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["watermark, text\n"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":17}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"10","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[214,736],"size":[317,485],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[10],"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["",null],"order":0,"mode":0},{"id":"12","type":"VAEEncode","properties":{"Node name for S&R":"VAEEncode"},"pos":[603.6755090909277,612.2202215703504],"size":[210,99],"inputs":[{"name":"pixels","type":"IMAGE","link":10},{"name":"vae","type":"VAE","link":16}],"outputs":[{"name":"LATENT","type":"LATENT","links":[11],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[8.951599443671768,433],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[13],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[14,15],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":[16,17],"shape":3,"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0}],"links":[["4","6",0,"3",1,"CONDITIONING"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["10","10",0,"12",0,"IMAGE"],["11","12",0,"3",3,"LATENT"],["13","14",0,"3",0,"MODEL"],["14","14",1,"6",0,"CLIP"],["15","14",1,"7",0,"CLIP"],["16","14",2,"12",1,"VAE"],["17","14",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Style-model-workflow.json b/apps/electron-frontend/src/components/templates/data/Style-model-workflow.json
index b24bb68c..36a82286 100644
--- a/apps/electron-frontend/src/components/templates/data/Style-model-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Style-model-workflow.json
@@ -1 +1 @@
-{"id":"47cc63e5-e8d9-4851-8324-83cb0def7101","title":"Style model workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[928.0917941585535,-52.23574408901254],"size":[240,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":22},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1003683894614458,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-9.293463143254513,-63.233657858136304],"size":[250,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[25],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[663.5688456189151,198.25938803894306],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[336.7225312934632,-223.72878998609178],"size":[245,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[24],"slot_index":0}],"widgets_values":["girl"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[625.6369958275382,-55.804589707927704],"size":[262,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, text"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1205.3532684283728,-50.86648122392213],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":25}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1430.9541029207232,-46.758692628650905],"size":[408,533],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"StyleModelApply","properties":{"Node name for S&R":"StyleModelApply"},"pos":[623.5688456189151,-203.39360222531297],"size":[262,123],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":24},{"name":"style_model","type":"STYLE_MODEL","link":13},{"name":"clip_vision_output","type":"CLIP_VISION_OUTPUT","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[22],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"13","type":"StyleModelLoader","properties":{"Node name for S&R":"StyleModelLoader"},"pos":[341.66063977746865,19.009735744089006],"size":[240,115],"inputs":[],"outputs":[{"name":"STYLE_MODEL","type":"STYLE_MODEL","links":[13],"shape":3,"slot_index":0}],"widgets_values":["coadapter-style-sd15v1.pth"],"order":0,"mode":0},{"id":"14","type":"CLIPVisionLoader","properties":{"Node name for S&R":"CLIPVisionLoader"},"pos":[-29.541029207232256,163.07371349095968],"size":[309,123],"inputs":[],"outputs":[{"name":"CLIP_VISION","type":"CLIP_VISION","links":[15],"shape":3,"slot_index":0}],"widgets_values":["pytorch_model.bin"],"order":0,"mode":0},{"id":"15","type":"CLIPVisionEncode","properties":{"Node name for S&R":"CLIPVisionEncode"},"pos":[337.26147426981896,160.08762169680114],"size":[248,99],"inputs":[{"name":"clip_vision","type":"CLIP_VISION","link":15},{"name":"image","type":"IMAGE","link":16}],"outputs":[{"name":"CLIP_VISION_OUTPUT","type":"CLIP_VISION_OUTPUT","links":[14],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"16","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[63.56884561891516,327.4290681502086],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[16],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_marble_statue.jpg",null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","13",0,"12",1,"STYLE_MODEL"],["14","15",0,"12",2,"CLIP_VISION_OUTPUT"],["15","14",0,"15",0,"CLIP_VISION"],["16","16",0,"15",1,"IMAGE"],["22","12",0,"3",1,"CONDITIONING"],["24","6",0,"12",0,"CONDITIONING"],["25","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"47cc63e5-e8d9-4851-8324-83cb0def7101","title":"Style model workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[928.0917941585535,-52.23574408901254],"size":[240,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":22},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[1003683894614458,"randomize",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-9.293463143254513,-63.233657858136304],"size":[250,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[25],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[663.5688456189151,198.25938803894306],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[336.7225312934632,-223.72878998609178],"size":[245,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[24],"slot_index":0}],"widgets_values":["girl"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[625.6369958275382,-55.804589707927704],"size":[262,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration, naked, text"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1205.3532684283728,-50.86648122392213],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":25}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1430.9541029207232,-46.758692628650905],"size":[408,533],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"StyleModelApply","properties":{"Node name for S&R":"StyleModelApply"},"pos":[623.5688456189151,-203.39360222531297],"size":[262,123],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":24},{"name":"style_model","type":"STYLE_MODEL","link":13},{"name":"clip_vision_output","type":"CLIP_VISION_OUTPUT","link":14}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[22],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"13","type":"StyleModelLoader","properties":{"Node name for S&R":"StyleModelLoader"},"pos":[341.66063977746865,19.009735744089006],"size":[240,115],"inputs":[],"outputs":[{"name":"STYLE_MODEL","type":"STYLE_MODEL","links":[13],"shape":3,"slot_index":0}],"widgets_values":["coadapter-style-sd15v1.pth"],"order":0,"mode":0},{"id":"14","type":"CLIPVisionLoader","properties":{"Node name for S&R":"CLIPVisionLoader"},"pos":[-29.541029207232256,163.07371349095968],"size":[309,123],"inputs":[],"outputs":[{"name":"CLIP_VISION","type":"CLIP_VISION","links":[15],"shape":3,"slot_index":0}],"widgets_values":["pytorch_model.bin"],"order":0,"mode":0},{"id":"15","type":"CLIPVisionEncode","properties":{"Node name for S&R":"CLIPVisionEncode"},"pos":[337.26147426981896,160.08762169680114],"size":[248,99],"inputs":[{"name":"clip_vision","type":"CLIP_VISION","link":15},{"name":"image","type":"IMAGE","link":16}],"outputs":[{"name":"CLIP_VISION_OUTPUT","type":"CLIP_VISION_OUTPUT","links":[14],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"16","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[63.56884561891516,327.4290681502086],"size":[210,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[16],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_marble_statue.jpg",null],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","13",0,"12",1,"STYLE_MODEL"],["14","15",0,"12",2,"CLIP_VISION_OUTPUT"],["15","14",0,"15",0,"CLIP_VISION"],["16","16",0,"15",1,"IMAGE"],["22","12",0,"3",1,"CONDITIONING"],["24","6",0,"12",0,"CONDITIONING"],["25","4",2,"8",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-and-Hi-res-fix-workflow.json b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-and-Hi-res-fix-workflow.json
index a94af300..061e49c2 100644
--- a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-and-Hi-res-fix-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-and-Hi-res-fix-workflow.json
@@ -1 +1 @@
-{"id":"81cb5889-9a2d-471f-94e3-a778e6837a56","title":"Upscale pixel and hi-res fix latent workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,-9.809510026424984],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[17],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-22.805058230080107,201.18918123524094],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1,14],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,23,24],"slot_index":2}],"widgets_values":["sd_xl_refiner_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[498.95065795530934,376.623653763821],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[387.8697666830857,-165.51345775828102],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4,12],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[384.6901913214806,103.54276249159733],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6,13],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[2846.773212957964,14.101079830342485],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":15},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[3098.883320940998,19.327866872378287],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"11","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[2485.2851265715367,18.159419359843298],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":12},{"name":"negative","type":"CONDITIONING","link":13},{"name":"latent_image","type":"LATENT","link":22}],"outputs":[{"name":"LATENT","type":"LATENT","links":[15],"shape":3,"slot_index":0}],"widgets_values":[0,"randomize",20,8,"dpmpp_2m","karras",0.5],"order":0,"mode":0},{"id":"12","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1335.7797840339317,155.1725615117781],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":17},{"name":"vae","type":"VAE","link":23}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[18],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"13","type":"ImageUpscaleWithModel","properties":{"Node name for S&R":"ImageUpscaleWithModel"},"pos":[1598.3434661010376,3.1010798303424636],"size":[242,99],"inputs":[{"name":"upscale_model","type":"UPSCALE_MODEL","link":19},{"name":"image","type":"IMAGE","link":18}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[20],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"UpscaleModelLoader","properties":{"Node name for S&R":"UpscaleModelLoader"},"pos":[1236.4774013112171,3.1701044350537124],"size":[315,113],"inputs":[],"outputs":[{"name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[19],"shape":3,"slot_index":0}],"widgets_values":["BSRGANx2.pth"],"order":0,"mode":0},{"id":"15","type":"LatentUpscaleBy","properties":{"Node name for S&R":"LatentUpscaleBy"},"pos":[2135.1166790590014,8.176675511021074],"size":[315,151],"inputs":[{"name":"samples","type":"LATENT","link":21}],"outputs":[{"name":"LATENT","type":"LATENT","links":[22],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",1.5],"order":0,"mode":0},{"id":"16","type":"VAEEncode","properties":{"Node name for S&R":"VAEEncode"},"pos":[1890.4190617817162,5.101079830342414],"size":[210,99],"inputs":[{"name":"pixels","type":"IMAGE","link":20},{"name":"vae","type":"VAE","link":24}],"outputs":[{"name":"LATENT","type":"LATENT","links":[21],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["12","6",0,"11",1,"CONDITIONING"],["13","7",0,"11",2,"CONDITIONING"],["14","4",0,"11",0,"MODEL"],["15","11",0,"8",0,"LATENT"],["17","3",0,"12",0,"LATENT"],["18","12",0,"13",1,"IMAGE"],["19","14",0,"13",0,"UPSCALE_MODEL"],["20","13",0,"16",0,"IMAGE"],["21","16",0,"15",0,"LATENT"],["22","15",0,"11",3,"LATENT"],["23","4",2,"12",1,"VAE"],["24","4",2,"16",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"81cb5889-9a2d-471f-94e3-a778e6837a56","title":"Upscale pixel and hi-res fix latent workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,-9.809510026424984],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[17],"slot_index":0}],"widgets_values":[156680208700286,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-22.805058230080107,201.18918123524094],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1,14],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8,23,24],"slot_index":2}],"widgets_values":["sd_xl_refiner_1.0.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[498.95065795530934,376.623653763821],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[387.8697666830857,-165.51345775828102],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4,12],"slot_index":0}],"widgets_values":["Cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[384.6901913214806,103.54276249159733],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6,13],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[2846.773212957964,14.101079830342485],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":15},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[3098.883320940998,19.327866872378287],"size":[210,313],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"11","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[2485.2851265715367,18.159419359843298],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":12},{"name":"negative","type":"CONDITIONING","link":13},{"name":"latent_image","type":"LATENT","link":22}],"outputs":[{"name":"LATENT","type":"LATENT","links":[15],"shape":3,"slot_index":0}],"widgets_values":[0,"randomize",20,8,"dpmpp_2m","karras",0.5],"order":0,"mode":0},{"id":"12","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1335.7797840339317,155.1725615117781],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":17},{"name":"vae","type":"VAE","link":23}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[18],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"13","type":"ImageUpscaleWithModel","properties":{"Node name for S&R":"ImageUpscaleWithModel"},"pos":[1598.3434661010376,3.1010798303424636],"size":[242,99],"inputs":[{"name":"upscale_model","type":"UPSCALE_MODEL","link":19},{"name":"image","type":"IMAGE","link":18}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[20],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"UpscaleModelLoader","properties":{"Node name for S&R":"UpscaleModelLoader"},"pos":[1236.4774013112171,3.1701044350537124],"size":[315,113],"inputs":[],"outputs":[{"name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[19],"shape":3,"slot_index":0}],"widgets_values":["BSRGANx2.pth"],"order":0,"mode":0},{"id":"15","type":"LatentUpscaleBy","properties":{"Node name for S&R":"LatentUpscaleBy"},"pos":[2135.1166790590014,8.176675511021074],"size":[315,151],"inputs":[{"name":"samples","type":"LATENT","link":21}],"outputs":[{"name":"LATENT","type":"LATENT","links":[22],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",1.5],"order":0,"mode":0},{"id":"16","type":"VAEEncode","properties":{"Node name for S&R":"VAEEncode"},"pos":[1890.4190617817162,5.101079830342414],"size":[210,99],"inputs":[{"name":"pixels","type":"IMAGE","link":20},{"name":"vae","type":"VAE","link":24}],"outputs":[{"name":"LATENT","type":"LATENT","links":[21],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"],["12","6",0,"11",1,"CONDITIONING"],["13","7",0,"11",2,"CONDITIONING"],["14","4",0,"11",0,"MODEL"],["15","11",0,"8",0,"LATENT"],["17","3",0,"12",0,"LATENT"],["18","12",0,"13",1,"IMAGE"],["19","14",0,"13",0,"UPSCALE_MODEL"],["20","13",0,"16",0,"IMAGE"],["21","16",0,"15",0,"LATENT"],["22","15",0,"11",3,"LATENT"],["23","4",2,"12",1,"VAE"],["24","4",2,"16",1,"VAE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-algorithm-workflow.json b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-algorithm-workflow.json
index 031083bc..849760ac 100644
--- a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-algorithm-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-algorithm-workflow.json
@@ -1 +1 @@
-{"id":"fb4bdbb5-7712-42b7-badf-5ad0ae97d652","title":"Upscale pixel by algorithm workflow","nodes":[{"id":"1","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[473.39541029207237,174.7307371349096],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["oldphoto2.png",null],"order":0,"mode":0},{"id":"2","type":"ImageScaleBy","properties":{"Node name for S&R":"ImageScaleBy"},"pos":[855.3418636995826,175.2115438108484],"size":[315,151],"inputs":[{"name":"image","type":"IMAGE","link":1}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[2],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",2],"order":0,"mode":0},{"id":"3","type":"SaveImage","properties":{},"pos":[1235.401668984701,175.23504867872046],"size":[321,442],"inputs":[{"name":"images","type":"IMAGE","link":2}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","1",0,"2",0,"IMAGE"],["2","2",0,"3",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"fb4bdbb5-7712-42b7-badf-5ad0ae97d652","title":"Upscale pixel by algorithm workflow","nodes":[{"id":"1","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[473.39541029207237,174.7307371349096],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[1],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["oldphoto2.png",null],"order":0,"mode":0},{"id":"2","type":"ImageScaleBy","properties":{"Node name for S&R":"ImageScaleBy"},"pos":[855.3418636995826,175.2115438108484],"size":[315,151],"inputs":[{"name":"image","type":"IMAGE","link":1}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[2],"shape":3,"slot_index":0}],"widgets_values":["nearest-exact",2],"order":0,"mode":0},{"id":"3","type":"SaveImage","properties":{},"pos":[1235.401668984701,175.23504867872046],"size":[321,442],"inputs":[{"name":"images","type":"IMAGE","link":2}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","1",0,"2",0,"IMAGE"],["2","2",0,"3",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-model-workflow.json b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-model-workflow.json
index 2954870f..fbbb8521 100644
--- a/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-model-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/Upscale-pixel-by-model-workflow.json
@@ -1 +1 @@
-{"id":"f3a52eae-84eb-4bbf-897d-226d59a4e20a","title":"Upscale pixel by model workflow","nodes":[{"id":"1","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[704.9874826147428,245.4214186369958],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[5],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["oldphoto2.png",null],"order":0,"mode":0},{"id":"3","type":"SaveImage","properties":{},"pos":[1407,211],"size":[315,313],"inputs":[{"name":"images","type":"IMAGE","link":4,"slot_index":0}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"4","type":"UpscaleModelLoader","properties":{"Node name for S&R":"UpscaleModelLoader"},"pos":[701,87],"size":[315,113],"inputs":[],"outputs":[{"name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[6],"shape":3,"slot_index":0}],"widgets_values":["BSRGANx2.pth"],"order":0,"mode":0},{"id":"5","type":"ImageUpscaleWithModel","properties":{"Node name for S&R":"ImageUpscaleWithModel"},"pos":[1084,208],"size":[242,99],"inputs":[{"name":"upscale_model","type":"UPSCALE_MODEL","link":6},{"name":"image","type":"IMAGE","link":5}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[4],"shape":3}],"widgets_values":[],"order":0,"mode":0}],"links":[["4","5",0,"3",0,"IMAGE"],["5","1",0,"5",1,"IMAGE"],["6","4",0,"5",0,"UPSCALE_MODEL"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"f3a52eae-84eb-4bbf-897d-226d59a4e20a","title":"Upscale pixel by model workflow","nodes":[{"id":"1","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[704.9874826147428,245.4214186369958],"size":[315,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[5],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["oldphoto2.png",null],"order":0,"mode":0},{"id":"3","type":"SaveImage","properties":{},"pos":[1407,211],"size":[315,313],"inputs":[{"name":"images","type":"IMAGE","link":4,"slot_index":0}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0},{"id":"4","type":"UpscaleModelLoader","properties":{"Node name for S&R":"UpscaleModelLoader"},"pos":[701,87],"size":[315,113],"inputs":[],"outputs":[{"name":"UPSCALE_MODEL","type":"UPSCALE_MODEL","links":[6],"shape":3,"slot_index":0}],"widgets_values":["BSRGANx2.pth"],"order":0,"mode":0},{"id":"5","type":"ImageUpscaleWithModel","properties":{"Node name for S&R":"ImageUpscaleWithModel"},"pos":[1084,208],"size":[242,99],"inputs":[{"name":"upscale_model","type":"UPSCALE_MODEL","link":6},{"name":"image","type":"IMAGE","link":5}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[4],"shape":3}],"widgets_values":[],"order":0,"mode":0}],"links":[["4","5",0,"3",0,"IMAGE"],["5","1",0,"5",1,"IMAGE"],["6","4",0,"5",0,"UPSCALE_MODEL"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/default-workflow.json b/apps/electron-frontend/src/components/templates/data/default-workflow.json
index ef087643..3aad3c89 100644
--- a/apps/electron-frontend/src/components/templates/data/default-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/default-workflow.json
@@ -1 +1 @@
-{"id":"b1e2f57b-a924-4433-8d13-3cf2b2eae0fa","title":"Default Workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[931096203916419,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-7.768776077885974,195.09492350486786],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[505.51808066759395,588.9888734353269],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[398.740959666203,70.93602225312932],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[397.99165507649514,325.2145340751043],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"b1e2f57b-a924-4433-8d13-3cf2b2eae0fa","title":"Default Workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[863,186],"size":[315,413],"inputs":[{"name":"model","type":"MODEL","link":1},{"name":"positive","type":"CONDITIONING","link":4},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[931096203916419,"randomize",20,8,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"4","type":"CheckpointLoaderSimple","properties":{"Node name for S&R":"CheckpointLoaderSimple"},"pos":[-7.768776077885974,195.09492350486786],"size":[315,161],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[1],"slot_index":0},{"name":"CLIP","type":"CLIP","links":[3,5],"slot_index":1},{"name":"VAE","type":"VAE","links":[8],"slot_index":2}],"widgets_values":["v1-5-dream-shaper.safetensors"],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[505.51808066759395,588.9888734353269],"size":[315,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[512,512,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[398.740959666203,70.93602225312932],"size":[423,221],"inputs":[{"name":"clip","type":"CLIP","link":3}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[4],"slot_index":0}],"widgets_values":["cat, standing on the castle"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[397.99165507649514,325.2145340751043],"size":[425,221],"inputs":[{"name":"clip","type":"CLIP","link":5}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["text, watermark"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1209,188],"size":[210,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":8}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1451,189],"size":[210,270],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["ComfyUI"],"order":0,"mode":0}],"links":[["1","4",0,"3",0,"MODEL"],["2","5",0,"3",3,"LATENT"],["3","4",1,"6",0,"CLIP"],["4","6",0,"3",1,"CONDITIONING"],["5","4",1,"7",0,"CLIP"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["8","4",2,"8",1,"VAE"],["9","8",0,"9",0,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-frontend/src/components/templates/data/unCLIP-model-workflow.json b/apps/electron-frontend/src/components/templates/data/unCLIP-model-workflow.json
index c41ca9e2..f96cd719 100644
--- a/apps/electron-frontend/src/components/templates/data/unCLIP-model-workflow.json
+++ b/apps/electron-frontend/src/components/templates/data/unCLIP-model-workflow.json
@@ -1 +1 @@
-{"id":"f27d1766-cb0c-4368-a09b-cb452a22bfc5","title":"unCLIP model workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1108.652294853964,34.92183588317107],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":19},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[2,"randomnized",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[826.1132127955494,432.5687065368567],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[768,768,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[361.41105702364393,-209.5902642559109],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[18],"slot_index":0}],"widgets_values":["a beautiful photograph of an old European city"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[675.8598052851183,164.67253129346315],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":21}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1458.0566063977747,42.75876216968011],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":15}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1697.2129346314325,43.32614742698192],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"unCLIPCheckpointLoader","properties":{"Node name for S&R":"unCLIPCheckpointLoader"},"pos":[47.24123783031993,-207.1441585535466],"size":[250,185],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[14],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,21],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":[15],"shape":3,"slot_index":2},{"name":"CLIP_VISION","type":"CLIP_VISION","links":[16],"shape":3,"slot_index":3}],"widgets_values":["sd21-unclip-h.ckpt"],"order":0,"mode":0},{"id":"13","type":"CLIPVisionEncode","properties":{"Node name for S&R":"CLIPVisionEncode"},"pos":[477.6805980528511,36.45959666203063],"size":[254,99],"inputs":[{"name":"clip_vision","type":"CLIP_VISION","link":16},{"name":"image","type":"IMAGE","link":24}],"outputs":[{"name":"CLIP_VISION_OUTPUT","type":"CLIP_VISION_OUTPUT","links":[17],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"unCLIPConditioning","properties":{"Node name for S&R":"unCLIPConditioning"},"pos":[764.1698191933241,-203.32072322670376],"size":[262,175],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":18},{"name":"clip_vision_output","type":"CLIP_VISION_OUTPUT","link":17}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[19],"shape":3,"slot_index":0}],"widgets_values":[1,0.1],"order":0,"mode":0},{"id":"15","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[198.36926286509038,91.97712100139083],"size":[240,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[24],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_budapest (1).jpg",null],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","12",1,"6",0,"CLIP"],["14","12",0,"3",0,"MODEL"],["15","12",2,"8",1,"VAE"],["16","12",3,"13",0,"CLIP_VISION"],["17","13",0,"14",1,"CLIP_VISION_OUTPUT"],["18","6",0,"14",0,"CONDITIONING"],["19","14",0,"3",1,"CONDITIONING"],["21","12",1,"7",0,"CLIP"],["24","15",0,"13",1,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.1-alpha"}}
\ No newline at end of file
+{"id":"f27d1766-cb0c-4368-a09b-cb452a22bfc5","title":"unCLIP model workflow","nodes":[{"id":"3","type":"KSampler","properties":{"Node name for S&R":"KSampler"},"pos":[1108.652294853964,34.92183588317107],"size":[300,413],"inputs":[{"name":"model","type":"MODEL","link":14},{"name":"positive","type":"CONDITIONING","link":19},{"name":"negative","type":"CONDITIONING","link":6},{"name":"latent_image","type":"LATENT","link":2}],"outputs":[{"name":"LATENT","type":"LATENT","links":[7],"slot_index":0}],"widgets_values":[2,"randomnized",20,7,"dpmpp_2m","karras",1],"order":0,"mode":0},{"id":"5","type":"EmptyLatentImage","properties":{"Node name for S&R":"EmptyLatentImage"},"pos":[826.1132127955494,432.5687065368567],"size":[220,189],"inputs":[],"outputs":[{"name":"LATENT","type":"LATENT","links":[2],"slot_index":0}],"widgets_values":[768,768,1],"order":0,"mode":0},{"id":"6","type":"CLIPTextEncode","title":"CLIP Text Encode (Positive)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[361.41105702364393,-209.5902642559109],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":13}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[18],"slot_index":0}],"widgets_values":["a beautiful photograph of an old European city"],"order":0,"mode":0},{"id":"7","type":"CLIPTextEncode","title":"CLIP Text Encode (Negative)","properties":{"Node name for S&R":"CLIPTextEncode"},"pos":[675.8598052851183,164.67253129346315],"size":[370,221],"inputs":[{"name":"clip","type":"CLIP","link":21}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[6],"slot_index":0}],"widgets_values":["blurry, illustration"],"order":0,"mode":0},{"id":"8","type":"VAEDecode","properties":{"Node name for S&R":"VAEDecode"},"pos":[1458.0566063977747,42.75876216968011],"size":[140,99],"inputs":[{"name":"samples","type":"LATENT","link":7},{"name":"vae","type":"VAE","link":15}],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[9],"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"9","type":"SaveImage","properties":{},"pos":[1697.2129346314325,43.32614742698192],"size":[410,460],"inputs":[{"name":"images","type":"IMAGE","link":9}],"outputs":[],"widgets_values":["Result"],"order":0,"mode":0},{"id":"12","type":"unCLIPCheckpointLoader","properties":{"Node name for S&R":"unCLIPCheckpointLoader"},"pos":[47.24123783031993,-207.1441585535466],"size":[250,185],"inputs":[],"outputs":[{"name":"MODEL","type":"MODEL","links":[14],"shape":3,"slot_index":0},{"name":"CLIP","type":"CLIP","links":[13,21],"shape":3,"slot_index":1},{"name":"VAE","type":"VAE","links":[15],"shape":3,"slot_index":2},{"name":"CLIP_VISION","type":"CLIP_VISION","links":[16],"shape":3,"slot_index":3}],"widgets_values":["sd21-unclip-h.ckpt"],"order":0,"mode":0},{"id":"13","type":"CLIPVisionEncode","properties":{"Node name for S&R":"CLIPVisionEncode"},"pos":[477.6805980528511,36.45959666203063],"size":[254,99],"inputs":[{"name":"clip_vision","type":"CLIP_VISION","link":16},{"name":"image","type":"IMAGE","link":24}],"outputs":[{"name":"CLIP_VISION_OUTPUT","type":"CLIP_VISION_OUTPUT","links":[17],"shape":3,"slot_index":0}],"widgets_values":[],"order":0,"mode":0},{"id":"14","type":"unCLIPConditioning","properties":{"Node name for S&R":"unCLIPConditioning"},"pos":[764.1698191933241,-203.32072322670376],"size":[262,175],"inputs":[{"name":"conditioning","type":"CONDITIONING","link":18},{"name":"clip_vision_output","type":"CLIP_VISION_OUTPUT","link":17}],"outputs":[{"name":"CONDITIONING","type":"CONDITIONING","links":[19],"shape":3,"slot_index":0}],"widgets_values":[1,0.1],"order":0,"mode":0},{"id":"15","type":"LoadImage","properties":{"Node name for S&R":"LoadImage"},"pos":[198.36926286509038,91.97712100139083],"size":[240,345],"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[24],"shape":3,"slot_index":0},{"name":"MASK","type":"MASK","links":null,"shape":3}],"widgets_values":["cwf_budapest (1).jpg",null],"order":0,"mode":0}],"links":[["2","5",0,"3",3,"LATENT"],["6","7",0,"3",2,"CONDITIONING"],["7","3",0,"8",0,"LATENT"],["9","8",0,"9",0,"IMAGE"],["13","12",1,"6",0,"CLIP"],["14","12",0,"3",0,"MODEL"],["15","12",2,"8",1,"VAE"],["16","12",3,"13",0,"CLIP_VISION"],["17","13",0,"14",1,"CLIP_VISION_OUTPUT"],["18","6",0,"14",0,"CONDITIONING"],["19","14",0,"3",1,"CONDITIONING"],["21","12",1,"7",0,"CLIP"],["24","15",0,"13",1,"IMAGE"]],"groups":[],"version":0,"extra":{"comflowy_version":"0.2.2-alpha"}}
\ No newline at end of file
diff --git a/apps/electron-package/package-lock.json b/apps/electron-package/package-lock.json
index 1ef51068..4b68de9e 100644
--- a/apps/electron-package/package-lock.json
+++ b/apps/electron-package/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "comflowy",
- "version": "0.2.1-alpha",
+ "version": "0.2.2-alpha",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "comflowy",
- "version": "0.2.1-alpha",
+ "version": "0.2.2-alpha",
"dependencies": {
"node-pty": "^1.0.0",
"regedit": "^5.1.2"
diff --git a/apps/electron-package/package.json b/apps/electron-package/package.json
index 1c19a5e0..e3104c10 100644
--- a/apps/electron-package/package.json
+++ b/apps/electron-package/package.json
@@ -1,6 +1,6 @@
{
"name": "comflowy",
- "version": "0.2.1-alpha",
+ "version": "0.2.2-alpha",
"private": true,
"main": "layers/main/dist/index.js",
"scripts": {
From 4422e20bdbe3720bcd9ee5b03fed8d692c7af6e9 Mon Sep 17 00:00:00 2001
From: Marc Chen <570171025@qq.com>
Date: Fri, 2 Aug 2024 17:39:09 +0800
Subject: [PATCH 18/23] optimize slot connecting experience
---
...tflow-bottomcenter-panel.style.module.scss | 4 +-
.../reactflow-node-slot-full.tsx | 133 ++++++++++++++
.../reactflow-node/reactflow-node-slot.tsx | 31 +++-
.../reactflow-node.style.module.scss | 173 ++++++++++++++----
.../reactflow-node/reactflow-node.tsx | 55 +++---
.../workflow-editor.style.module.scss | 84 ++++++---
6 files changed, 382 insertions(+), 98 deletions(-)
create mode 100644 apps/electron-frontend/src/components/workflow-editor/reactflow-node/reactflow-node-slot-full.tsx
diff --git a/apps/electron-frontend/src/components/workflow-editor/reactflow-bottomcenter-panel/reactflow-bottomcenter-panel.style.module.scss b/apps/electron-frontend/src/components/workflow-editor/reactflow-bottomcenter-panel/reactflow-bottomcenter-panel.style.module.scss
index 71d5b3ff..28483885 100644
--- a/apps/electron-frontend/src/components/workflow-editor/reactflow-bottomcenter-panel/reactflow-bottomcenter-panel.style.module.scss
+++ b/apps/electron-frontend/src/components/workflow-editor/reactflow-bottomcenter-panel/reactflow-bottomcenter-panel.style.module.scss
@@ -7,11 +7,10 @@
background-color: var(--backgroundColorL1);
:global {
.action {
- background-color: var(--backgroundColorL2);
+ //background-color: var(--backgroundColorL2);
height: 36px;
width: 36px;
border-radius: 8px;
-
}
.action svg {
* {
@@ -29,6 +28,7 @@
color: var(--primaryColor);
}
+
.stop-square {
display: inline-block;
width: 18px;
diff --git a/apps/electron-frontend/src/components/workflow-editor/reactflow-node/reactflow-node-slot-full.tsx b/apps/electron-frontend/src/components/workflow-editor/reactflow-node/reactflow-node-slot-full.tsx
new file mode 100644
index 00000000..15e4be49
--- /dev/null
+++ b/apps/electron-frontend/src/components/workflow-editor/reactflow-node/reactflow-node-slot-full.tsx
@@ -0,0 +1,133 @@
+import { useAppStore } from "@comflowy/common/store";
+import { ComfyUIWorkflowNodeInput, ComfyUIWorkflowNodeOutput } from "@comflowy/common/types";
+import { useCallback, useEffect, useState } from "react";
+import { Connection, type HandleType, OnConnectStartParams } from 'reactflow'
+
+export type ConnectingMeContext = {
+ connectingParams: OnConnectStartParams & {
+ valueType: string;
+ },
+ selectSlot: {
+ type: HandleType,
+ slot: ComfyUIWorkflowNodeInput | ComfyUIWorkflowNodeOutput
+ }
+}
+
+export function useFullNodeConnecting({ widget, node_id, inputs, outputs }: {
+ widget: string,
+ node_id: string
+ inputs: ComfyUIWorkflowNodeInput[],
+ outputs: ComfyUIWorkflowNodeOutput[]
+}) {
+ const isConnecting = useAppStore(st => st.isConnecting);
+ const [tryConnectThisNode, setTryConnectThisNode] = useState(false);
+ const connectingParams = useAppStore(st => st.connectingStartParams);
+ const [hoveringSlot, setHoveringSlot] = useState(false);
+ const [connectContext, setConnectContext] = useState(null);
+ inputs = inputs || [];
+ outputs = outputs || [];
+
+ const onMouseEnter = useCallback(() => {
+ if (isConnecting) {
+ setTryConnectThisNode(true);
+ }
+ }, [isConnecting])
+
+ const onMouseLeave = useCallback(() => {
+ if (tryConnectThisNode) {
+ setTryConnectThisNode(false);
+ }
+ }, [tryConnectThisNode]);
+
+ const onMouseUp = useCallback(() => {
+ if (connectContext && !hoveringSlot) {
+ const newConnection: Connection = {
+ source: connectContext.selectSlot.type === "source" ? node_id : connectContext.connectingParams.nodeId,
+ target: connectContext.selectSlot.type === "target" ? node_id : connectContext.connectingParams.nodeId,
+ sourceHandle: connectContext.selectSlot.type === "source" ? connectContext.selectSlot.slot.name.toUpperCase() : connectContext.connectingParams.handleId,
+ targetHandle: connectContext.selectSlot.type === "target" ? connectContext.selectSlot.slot.name.toUpperCase() : connectContext.connectingParams.handleId,
+ }
+ useAppStore.getState().onConnect(newConnection);
+ }
+ }, [connectContext, hoveringSlot]);
+
+ const onMouseMove = useCallback((ev) => {
+ if (tryConnectThisNode) {
+ if (ev?.target && typeof ev.target.className === "string" && ev.target.className.includes("node-slot-handle")) {
+ setHoveringSlot(true)
+ } else {
+ setHoveringSlot(false)
+ }
+ }
+ }, [tryConnectThisNode]);
+
+ useEffect(() => {
+ if (!tryConnectThisNode) {
+ setConnectContext(undefined)
+ return
+ }
+
+ if (connectingParams) {
+ const connectingType = connectingParams.handleType;
+ const connectingValueType = connectingParams.valueType;
+ if (connectingType === "source") {
+ const targetSlot = inputs.find(input => input.type.toUpperCase() === connectingValueType || connectingValueType === "*");
+ if (targetSlot) {
+ setConnectContext({
+ connectingParams: connectingParams,
+ selectSlot: {
+ type: "target",
+ slot: targetSlot
+ }
+ })
+ return
+ }
+ }
+
+ if (connectingType === "target") {
+ const sourceSlot = outputs.find(output => output.name.toUpperCase() === connectingValueType || connectingValueType === "*");
+ if (sourceSlot) {
+ setConnectContext({
+ connectingParams: connectingParams,
+ selectSlot: {
+ type: "source",
+ slot: sourceSlot
+ }
+ })
+ return
+ }
+ }
+
+ setConnectContext(undefined)
+ }
+ }, [connectingParams, inputs, outputs, tryConnectThisNode])
+
+ const connectingIndicator = hoveringSlot ? undefined : ;
+
+ return {
+ tryConnectThisNode,
+ onMouseEnter,
+ onMouseLeave,
+ onMouseUp,
+ onMouseMove,
+ connectContext,
+ connectingIndicator
+ }
+}
+
+
+function NodeConnectIndicator({ connectContext }: {
+ connectContext: ConnectingMeContext | null
+}): JSX.Element {
+ if (!connectContext) {
+ return null
+ }
+
+ const { connectingParams, selectSlot } = connectContext;
+
+ return (
+
+
Release mouse to connect to {selectSlot.slot.name}