joeygambino commited on
Commit
a4b567d
·
verified ·
1 Parent(s): e8eee0b

v1.4: multiline lora_path box; operator's node layout; widget repair

Browse files
nodes.py CHANGED
@@ -308,6 +308,7 @@ class JoyEcho_ModelLoader:
308
  }),
309
  "lora_path": ("STRING", {
310
  "default": "",
 
311
  "tooltip": "One or MORE LoRAs, separated by commas or newlines. Each "
312
  "entry is a path, optionally with its own strength: "
313
  "'a.safetensors@0.7, b.safetensors@0.5'. Entries without a "
 
308
  }),
309
  "lora_path": ("STRING", {
310
  "default": "",
311
+ "multiline": True,
312
  "tooltip": "One or MORE LoRAs, separated by commas or newlines. Each "
313
  "entry is a path, optionally with its own strength: "
314
  "'a.safetensors@0.7, b.safetensors@0.5'. Entries without a "
workflow/JoyEcho_Multishot_Workflow_PUBLIC.json CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "id": "dabc6ca9-5fa6-414e-9cdd-33077930aa75",
3
  "revision": 0,
4
- "last_node_id": 63,
5
- "last_link_id": 117,
6
  "nodes": [
7
  {
8
  "id": 2,
@@ -16,14 +16,14 @@
16
  1115.7615213997844
17
  ],
18
  "flags": {},
19
- "order": 7,
20
  "mode": 0,
21
  "inputs": [
22
  {
23
  "localized_name": "model",
24
  "name": "model",
25
  "type": "JOYECHO_MODEL",
26
- "link": 1
27
  },
28
  {
29
  "localized_name": "prompts",
@@ -137,7 +137,7 @@
137
  1025.6802482016337
138
  ],
139
  "flags": {},
140
- "order": 12,
141
  "mode": 0,
142
  "inputs": [
143
  {
@@ -210,7 +210,7 @@
210
  1076
211
  ],
212
  "flags": {},
213
- "order": 8,
214
  "mode": 0,
215
  "inputs": [
216
  {
@@ -275,7 +275,7 @@
275
  102
276
  ],
277
  "flags": {},
278
- "order": 11,
279
  "mode": 0,
280
  "inputs": [
281
  {
@@ -338,138 +338,6 @@
338
  8
339
  ]
340
  },
341
- {
342
- "id": 55,
343
- "type": "JoyEcho_RefPicker",
344
- "pos": [
345
- 2820,
346
- 460
347
- ],
348
- "size": [
349
- 403.8873046875,
350
- 242
351
- ],
352
- "flags": {},
353
- "order": 6,
354
- "mode": 0,
355
- "inputs": [
356
- {
357
- "localized_name": "prompt_text",
358
- "name": "prompt_text",
359
- "shape": 7,
360
- "type": "STRING",
361
- "link": 96
362
- },
363
- {
364
- "localized_name": "fallback_image",
365
- "name": "fallback_image",
366
- "shape": 7,
367
- "type": "IMAGE",
368
- "link": null
369
- },
370
- {
371
- "localized_name": "pick",
372
- "name": "pick",
373
- "type": "COMBO",
374
- "widget": {
375
- "name": "pick"
376
- },
377
- "link": null
378
- },
379
- {
380
- "localized_name": "seed",
381
- "name": "seed",
382
- "type": "INT",
383
- "widget": {
384
- "name": "seed"
385
- },
386
- "link": null
387
- },
388
- {
389
- "localized_name": "refs_root",
390
- "name": "refs_root",
391
- "shape": 7,
392
- "type": "STRING",
393
- "widget": {
394
- "name": "refs_root"
395
- },
396
- "link": null
397
- },
398
- {
399
- "localized_name": "on_no_match",
400
- "name": "on_no_match",
401
- "shape": 7,
402
- "type": "COMBO",
403
- "widget": {
404
- "name": "on_no_match"
405
- },
406
- "link": null
407
- },
408
- {
409
- "localized_name": "character",
410
- "name": "character",
411
- "shape": 7,
412
- "type": "STRING",
413
- "widget": {
414
- "name": "character"
415
- },
416
- "link": 100
417
- },
418
- {
419
- "localized_name": "character_pick",
420
- "name": "character_pick",
421
- "shape": 7,
422
- "type": "COMBO",
423
- "widget": {
424
- "name": "character_pick"
425
- },
426
- "link": null
427
- }
428
- ],
429
- "outputs": [
430
- {
431
- "localized_name": "reference_image",
432
- "name": "reference_image",
433
- "type": "IMAGE",
434
- "links": [
435
- 106
436
- ]
437
- },
438
- {
439
- "localized_name": "picked_path",
440
- "name": "picked_path",
441
- "type": "STRING",
442
- "links": null
443
- },
444
- {
445
- "localized_name": "ref_shots",
446
- "name": "ref_shots",
447
- "type": "STRING",
448
- "links": [
449
- 107
450
- ]
451
- }
452
- ],
453
- "properties": {
454
- "aux_id": "RealRebelAI/ComfyUI_JoyAI_Echo_GGUF_Nodes",
455
- "ver": "0d9e32fcd2d255a16604368fcaa1875c380c7f3b",
456
- "Node name for S&R": "JoyEcho_RefPicker",
457
- "ue_properties": {
458
- "widget_ue_connectable": {},
459
- "input_ue_unconnectable": {},
460
- "version": "7.8"
461
- }
462
- },
463
- "widgets_values": [
464
- "by_seed",
465
- 1841453523,
466
- "randomize",
467
- "joyecho_refs",
468
- "no_reference",
469
- "(from character input / prompt scan)",
470
- "(from character input / prompt scan)"
471
- ]
472
- },
473
  {
474
  "id": 60,
475
  "type": "Note",
@@ -540,7 +408,7 @@
540
  178
541
  ],
542
  "flags": {},
543
- "order": 10,
544
  "mode": 0,
545
  "inputs": [
546
  {
@@ -635,237 +503,76 @@
635
  ]
636
  },
637
  {
638
- "id": 1,
639
- "type": "JoyEcho_ModelLoader",
640
  "pos": [
641
- 2820,
642
- 100
643
  ],
644
  "size": [
645
- 959.6457021586295,
646
- 298
647
  ],
648
  "flags": {},
649
- "order": 2,
650
  "mode": 0,
651
  "inputs": [
652
  {
653
- "localized_name": "model_file",
654
- "name": "model_file",
655
- "shape": 7,
656
  "type": "COMBO",
657
  "widget": {
658
- "name": "model_file"
659
  },
660
  "link": null
661
  },
662
  {
663
- "localized_name": "checkpoint_path",
664
- "name": "checkpoint_path",
665
  "shape": 7,
666
- "type": "STRING",
667
  "widget": {
668
- "name": "checkpoint_path"
669
  },
670
  "link": null
671
  },
672
  {
673
- "localized_name": "gemma_file",
674
- "name": "gemma_file",
675
  "shape": 7,
676
- "type": "COMBO",
677
  "widget": {
678
- "name": "gemma_file"
679
  },
680
- "link": null
681
  },
682
  {
683
- "localized_name": "gemma_path",
684
- "name": "gemma_path",
685
  "shape": 7,
686
  "type": "STRING",
687
  "widget": {
688
- "name": "gemma_path"
689
- },
690
- "link": null
691
- },
692
- {
693
- "localized_name": "lora_file",
694
- "name": "lora_file",
695
- "shape": 7,
696
- "type": "COMBO",
697
- "widget": {
698
- "name": "lora_file"
699
  },
700
  "link": null
701
  },
702
  {
703
- "localized_name": "lora_path",
704
- "name": "lora_path",
705
  "shape": 7,
706
  "type": "STRING",
707
  "widget": {
708
- "name": "lora_path"
709
- },
710
- "link": null
711
- },
712
- {
713
- "localized_name": "lora_strength",
714
- "name": "lora_strength",
715
- "shape": 7,
716
- "type": "FLOAT",
717
- "widget": {
718
- "name": "lora_strength"
719
- },
720
- "link": null
721
- },
722
- {
723
- "localized_name": "fp8_transformer",
724
- "name": "fp8_transformer",
725
- "shape": 7,
726
- "type": "BOOLEAN",
727
- "widget": {
728
- "name": "fp8_transformer"
729
- },
730
- "link": null
731
- },
732
- {
733
- "localized_name": "fp8_scaled_mm",
734
- "name": "fp8_scaled_mm",
735
- "shape": 7,
736
- "type": "BOOLEAN",
737
- "widget": {
738
- "name": "fp8_scaled_mm"
739
- },
740
- "link": null
741
- },
742
- {
743
- "localized_name": "encoder_fp8",
744
- "name": "encoder_fp8",
745
- "shape": 7,
746
- "type": "BOOLEAN",
747
- "widget": {
748
- "name": "encoder_fp8"
749
- },
750
- "link": null
751
- },
752
- {
753
- "localized_name": "low_vram",
754
- "name": "low_vram",
755
- "shape": 7,
756
- "type": "BOOLEAN",
757
- "widget": {
758
- "name": "low_vram"
759
  },
760
  "link": null
761
  }
762
  ],
763
  "outputs": [
764
  {
765
- "localized_name": "model",
766
- "name": "model",
767
- "type": "JOYECHO_MODEL",
768
- "slot_index": 0,
769
- "links": [
770
- 1
771
- ]
772
- }
773
- ],
774
- "properties": {
775
- "aux_id": "RealRebelAI/ComfyUI_JoyAI_Echo_GGUF_Nodes",
776
- "ver": "0d9e32fcd2d255a16604368fcaa1875c380c7f3b",
777
- "Node name for S&R": "JoyEcho_ModelLoader",
778
- "ue_properties": {
779
- "widget_ue_connectable": {},
780
- "version": "7.8",
781
- "input_ue_unconnectable": {}
782
- }
783
- },
784
- "widgets_values": [
785
- "diffusion_models: ltx23_echoVid-ltxAud_surgical_bf16.safetensors",
786
- "",
787
- "text_encoders: gemma_3_12B_it.safetensors",
788
- "",
789
- "(use lora_path / none)",
790
- "",
791
- 0,
792
- false,
793
- true,
794
- false,
795
- true
796
- ]
797
- },
798
- {
799
- "id": 52,
800
- "type": "JoyEcho_PromptSource",
801
- "pos": [
802
- 0,
803
- 286
804
- ],
805
- "size": [
806
- 724.5169729521541,
807
- 201.68048280657888
808
- ],
809
- "flags": {},
810
- "order": 4,
811
- "mode": 0,
812
- "inputs": [
813
- {
814
- "localized_name": "source_file",
815
- "name": "source_file",
816
- "type": "COMBO",
817
- "widget": {
818
- "name": "source_file"
819
- },
820
- "link": null
821
- },
822
- {
823
- "localized_name": "load_cap",
824
- "name": "load_cap",
825
- "shape": 7,
826
- "type": "INT",
827
- "widget": {
828
- "name": "load_cap"
829
- },
830
- "link": null
831
- },
832
- {
833
- "localized_name": "start_index",
834
- "name": "start_index",
835
- "shape": 7,
836
- "type": "INT",
837
- "widget": {
838
- "name": "start_index"
839
- },
840
- "link": 117
841
- },
842
- {
843
- "localized_name": "character_override",
844
- "name": "character_override",
845
- "shape": 7,
846
- "type": "STRING",
847
- "widget": {
848
- "name": "character_override"
849
- },
850
- "link": null
851
- },
852
- {
853
- "localized_name": "manual_path",
854
- "name": "manual_path",
855
- "shape": 7,
856
- "type": "STRING",
857
- "widget": {
858
- "name": "manual_path"
859
- },
860
- "link": null
861
- }
862
- ],
863
- "outputs": [
864
- {
865
- "localized_name": "story_idea",
866
- "name": "story_idea",
867
- "shape": 6,
868
- "type": "STRING",
869
  "links": [
870
  96,
871
  114
@@ -917,7 +624,7 @@
917
  736.9512031915835
918
  ],
919
  "flags": {},
920
- "order": 5,
921
  "mode": 0,
922
  "inputs": [
923
  {
@@ -1063,7 +770,7 @@
1063
  106
1064
  ],
1065
  "flags": {},
1066
- "order": 3,
1067
  "mode": 0,
1068
  "inputs": [
1069
  {
@@ -1114,7 +821,7 @@
1114
  646
1115
  ],
1116
  "flags": {},
1117
- "order": 9,
1118
  "mode": 0,
1119
  "inputs": [
1120
  {
@@ -1418,73 +1125,390 @@
1418
  "id": 62,
1419
  "type": "LoadImage",
1420
  "pos": [
1421
- 3540,
1422
- 720
1423
  ],
1424
  "size": [
1425
  315,
1426
- 314
1427
  ],
1428
  "flags": {},
1429
- "order": 0,
1430
  "mode": 0,
1431
- "inputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1432
  "outputs": [
1433
  {
 
1434
  "name": "IMAGE",
1435
  "type": "IMAGE",
1436
- "links": null,
1437
- "slot_index": 0
1438
  },
1439
  {
 
1440
  "name": "MASK",
1441
  "type": "MASK",
1442
- "links": null,
1443
- "slot_index": 1
1444
  }
1445
  ],
1446
  "title": "Reference Image (OPTIONAL)",
1447
  "properties": {
1448
- "Node name for S&R": "LoadImage"
 
 
 
 
 
 
 
1449
  },
1450
  "widgets_values": [
1451
  "example.png",
1452
  "image"
1453
  ]
1454
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1455
  {
1456
  "id": 63,
1457
  "type": "Note",
1458
  "pos": [
1459
- 3540,
1460
- 1060
1461
  ],
1462
  "size": [
1463
- 315,
1464
- 240
1465
  ],
1466
  "flags": {},
1467
- "order": 0,
1468
  "mode": 0,
1469
  "inputs": [],
1470
  "outputs": [],
1471
- "properties": {},
 
 
 
 
 
 
1472
  "widgets_values": [
1473
  "OPTIONAL IDENTITY REFERENCE\n----------------------------\nTo lock your character's face across every shot: load a portrait\nimage here, then drag its IMAGE output to the reference_image input\non the left edge of the Generate node.\n\nIt is deliberately NOT connected by default - text alone holds\nidentity via the repeated character sentence. Unconnected, this node\nnever runs, so it is safe to ignore.\n\nreference_zoom on Generate: 1.2 (default) = inherit the identity\nonly. 1.0 = shot 1 opens ON your image, classic i2v style."
1474
  ],
1475
  "color": "#432",
1476
  "bgcolor": "#653"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1477
  }
1478
  ],
1479
  "links": [
1480
- [
1481
- 1,
1482
- 1,
1483
- 0,
1484
- 2,
1485
- 0,
1486
- "JOYECHO_MODEL"
1487
- ],
1488
  [
1489
  10,
1490
  6,
@@ -1596,6 +1620,14 @@
1596
  52,
1597
  2,
1598
  "INT"
 
 
 
 
 
 
 
 
1599
  ]
1600
  ],
1601
  "groups": [
@@ -1663,10 +1695,10 @@
1663
  "config": {},
1664
  "extra": {
1665
  "ds": {
1666
- "scale": 0.8784600000000947,
1667
  "offset": [
1668
- -3041.8438404038843,
1669
- -44.66521064018207
1670
  ]
1671
  },
1672
  "frontendVersion": "1.45.15",
 
1
  {
2
  "id": "dabc6ca9-5fa6-414e-9cdd-33077930aa75",
3
  "revision": 0,
4
+ "last_node_id": 64,
5
+ "last_link_id": 118,
6
  "nodes": [
7
  {
8
  "id": 2,
 
16
  1115.7615213997844
17
  ],
18
  "flags": {},
19
+ "order": 9,
20
  "mode": 0,
21
  "inputs": [
22
  {
23
  "localized_name": "model",
24
  "name": "model",
25
  "type": "JOYECHO_MODEL",
26
+ "link": 118
27
  },
28
  {
29
  "localized_name": "prompts",
 
137
  1025.6802482016337
138
  ],
139
  "flags": {},
140
+ "order": 14,
141
  "mode": 0,
142
  "inputs": [
143
  {
 
210
  1076
211
  ],
212
  "flags": {},
213
+ "order": 10,
214
  "mode": 0,
215
  "inputs": [
216
  {
 
275
  102
276
  ],
277
  "flags": {},
278
+ "order": 13,
279
  "mode": 0,
280
  "inputs": [
281
  {
 
338
  8
339
  ]
340
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
341
  {
342
  "id": 60,
343
  "type": "Note",
 
408
  178
409
  ],
410
  "flags": {},
411
+ "order": 12,
412
  "mode": 0,
413
  "inputs": [
414
  {
 
503
  ]
504
  },
505
  {
506
+ "id": 52,
507
+ "type": "JoyEcho_PromptSource",
508
  "pos": [
509
+ 0,
510
+ 286
511
  ],
512
  "size": [
513
+ 724.5169729521541,
514
+ 201.68048280657888
515
  ],
516
  "flags": {},
517
+ "order": 6,
518
  "mode": 0,
519
  "inputs": [
520
  {
521
+ "localized_name": "source_file",
522
+ "name": "source_file",
 
523
  "type": "COMBO",
524
  "widget": {
525
+ "name": "source_file"
526
  },
527
  "link": null
528
  },
529
  {
530
+ "localized_name": "load_cap",
531
+ "name": "load_cap",
532
  "shape": 7,
533
+ "type": "INT",
534
  "widget": {
535
+ "name": "load_cap"
536
  },
537
  "link": null
538
  },
539
  {
540
+ "localized_name": "start_index",
541
+ "name": "start_index",
542
  "shape": 7,
543
+ "type": "INT",
544
  "widget": {
545
+ "name": "start_index"
546
  },
547
+ "link": 117
548
  },
549
  {
550
+ "localized_name": "character_override",
551
+ "name": "character_override",
552
  "shape": 7,
553
  "type": "STRING",
554
  "widget": {
555
+ "name": "character_override"
 
 
 
 
 
 
 
 
 
 
556
  },
557
  "link": null
558
  },
559
  {
560
+ "localized_name": "manual_path",
561
+ "name": "manual_path",
562
  "shape": 7,
563
  "type": "STRING",
564
  "widget": {
565
+ "name": "manual_path"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  },
567
  "link": null
568
  }
569
  ],
570
  "outputs": [
571
  {
572
+ "localized_name": "story_idea",
573
+ "name": "story_idea",
574
+ "shape": 6,
575
+ "type": "STRING",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
  "links": [
577
  96,
578
  114
 
624
  736.9512031915835
625
  ],
626
  "flags": {},
627
+ "order": 7,
628
  "mode": 0,
629
  "inputs": [
630
  {
 
770
  106
771
  ],
772
  "flags": {},
773
+ "order": 2,
774
  "mode": 0,
775
  "inputs": [
776
  {
 
821
  646
822
  ],
823
  "flags": {},
824
+ "order": 11,
825
  "mode": 0,
826
  "inputs": [
827
  {
 
1125
  "id": 62,
1126
  "type": "LoadImage",
1127
  "pos": [
1128
+ 3503.085399449038,
1129
+ 417.93388429755385
1130
  ],
1131
  "size": [
1132
  315,
1133
+ 314.00000000000006
1134
  ],
1135
  "flags": {},
1136
+ "order": 3,
1137
  "mode": 0,
1138
+ "inputs": [
1139
+ {
1140
+ "localized_name": "image",
1141
+ "name": "image",
1142
+ "type": "COMBO",
1143
+ "widget": {
1144
+ "name": "image"
1145
+ },
1146
+ "link": null
1147
+ },
1148
+ {
1149
+ "localized_name": "choose file to upload",
1150
+ "name": "upload",
1151
+ "type": "IMAGEUPLOAD",
1152
+ "widget": {
1153
+ "name": "upload"
1154
+ },
1155
+ "link": null
1156
+ }
1157
+ ],
1158
  "outputs": [
1159
  {
1160
+ "localized_name": "IMAGE",
1161
  "name": "IMAGE",
1162
  "type": "IMAGE",
1163
+ "slot_index": 0,
1164
+ "links": null
1165
  },
1166
  {
1167
+ "localized_name": "MASK",
1168
  "name": "MASK",
1169
  "type": "MASK",
1170
+ "slot_index": 1,
1171
+ "links": null
1172
  }
1173
  ],
1174
  "title": "Reference Image (OPTIONAL)",
1175
  "properties": {
1176
+ "cnr_id": "comfy-core",
1177
+ "ver": "0.26.2",
1178
+ "Node name for S&R": "LoadImage",
1179
+ "ue_properties": {
1180
+ "widget_ue_connectable": {},
1181
+ "version": "7.8",
1182
+ "input_ue_unconnectable": {}
1183
+ }
1184
  },
1185
  "widgets_values": [
1186
  "example.png",
1187
  "image"
1188
  ]
1189
  },
1190
+ {
1191
+ "id": 55,
1192
+ "type": "JoyEcho_RefPicker",
1193
+ "pos": [
1194
+ 3084.4628099173265,
1195
+ 453.11294765840296
1196
+ ],
1197
+ "size": [
1198
+ 388.7357895359863,
1199
+ 242
1200
+ ],
1201
+ "flags": {},
1202
+ "order": 8,
1203
+ "mode": 0,
1204
+ "inputs": [
1205
+ {
1206
+ "localized_name": "prompt_text",
1207
+ "name": "prompt_text",
1208
+ "shape": 7,
1209
+ "type": "STRING",
1210
+ "link": 96
1211
+ },
1212
+ {
1213
+ "localized_name": "fallback_image",
1214
+ "name": "fallback_image",
1215
+ "shape": 7,
1216
+ "type": "IMAGE",
1217
+ "link": null
1218
+ },
1219
+ {
1220
+ "localized_name": "pick",
1221
+ "name": "pick",
1222
+ "type": "COMBO",
1223
+ "widget": {
1224
+ "name": "pick"
1225
+ },
1226
+ "link": null
1227
+ },
1228
+ {
1229
+ "localized_name": "seed",
1230
+ "name": "seed",
1231
+ "type": "INT",
1232
+ "widget": {
1233
+ "name": "seed"
1234
+ },
1235
+ "link": null
1236
+ },
1237
+ {
1238
+ "localized_name": "refs_root",
1239
+ "name": "refs_root",
1240
+ "shape": 7,
1241
+ "type": "STRING",
1242
+ "widget": {
1243
+ "name": "refs_root"
1244
+ },
1245
+ "link": null
1246
+ },
1247
+ {
1248
+ "localized_name": "on_no_match",
1249
+ "name": "on_no_match",
1250
+ "shape": 7,
1251
+ "type": "COMBO",
1252
+ "widget": {
1253
+ "name": "on_no_match"
1254
+ },
1255
+ "link": null
1256
+ },
1257
+ {
1258
+ "localized_name": "character",
1259
+ "name": "character",
1260
+ "shape": 7,
1261
+ "type": "STRING",
1262
+ "widget": {
1263
+ "name": "character"
1264
+ },
1265
+ "link": 100
1266
+ },
1267
+ {
1268
+ "localized_name": "character_pick",
1269
+ "name": "character_pick",
1270
+ "shape": 7,
1271
+ "type": "COMBO",
1272
+ "widget": {
1273
+ "name": "character_pick"
1274
+ },
1275
+ "link": null
1276
+ }
1277
+ ],
1278
+ "outputs": [
1279
+ {
1280
+ "localized_name": "reference_image",
1281
+ "name": "reference_image",
1282
+ "type": "IMAGE",
1283
+ "links": [
1284
+ 106
1285
+ ]
1286
+ },
1287
+ {
1288
+ "localized_name": "picked_path",
1289
+ "name": "picked_path",
1290
+ "type": "STRING",
1291
+ "links": null
1292
+ },
1293
+ {
1294
+ "localized_name": "ref_shots",
1295
+ "name": "ref_shots",
1296
+ "type": "STRING",
1297
+ "links": [
1298
+ 107
1299
+ ]
1300
+ }
1301
+ ],
1302
+ "properties": {
1303
+ "aux_id": "RealRebelAI/ComfyUI_JoyAI_Echo_GGUF_Nodes",
1304
+ "ver": "0d9e32fcd2d255a16604368fcaa1875c380c7f3b",
1305
+ "Node name for S&R": "JoyEcho_RefPicker",
1306
+ "ue_properties": {
1307
+ "widget_ue_connectable": {},
1308
+ "input_ue_unconnectable": {},
1309
+ "version": "7.8"
1310
+ }
1311
+ },
1312
+ "widgets_values": [
1313
+ "by_seed",
1314
+ 1841453523,
1315
+ "randomize",
1316
+ "joyecho_refs",
1317
+ "no_reference",
1318
+ "(from character input / prompt scan)",
1319
+ "(from character input / prompt scan)"
1320
+ ]
1321
+ },
1322
  {
1323
  "id": 63,
1324
  "type": "Note",
1325
  "pos": [
1326
+ 2792.5276088155074,
1327
+ 435.2500702480023
1328
  ],
1329
  "size": [
1330
+ 273.677685950418,
1331
+ 282.6997245179018
1332
  ],
1333
  "flags": {},
1334
+ "order": 4,
1335
  "mode": 0,
1336
  "inputs": [],
1337
  "outputs": [],
1338
+ "properties": {
1339
+ "ue_properties": {
1340
+ "widget_ue_connectable": {},
1341
+ "version": "7.8",
1342
+ "input_ue_unconnectable": {}
1343
+ }
1344
+ },
1345
  "widgets_values": [
1346
  "OPTIONAL IDENTITY REFERENCE\n----------------------------\nTo lock your character's face across every shot: load a portrait\nimage here, then drag its IMAGE output to the reference_image input\non the left edge of the Generate node.\n\nIt is deliberately NOT connected by default - text alone holds\nidentity via the repeated character sentence. Unconnected, this node\nnever runs, so it is safe to ignore.\n\nreference_zoom on Generate: 1.2 (default) = inherit the identity\nonly. 1.0 = shot 1 opens ON your image, classic i2v style."
1347
  ],
1348
  "color": "#432",
1349
  "bgcolor": "#653"
1350
+ },
1351
+ {
1352
+ "id": 64,
1353
+ "type": "JoyEcho_ModelLoader",
1354
+ "pos": [
1355
+ 2810.3581267217646,
1356
+ 66.94214876033413
1357
+ ],
1358
+ "size": [
1359
+ 959.6457021586295,
1360
+ 298
1361
+ ],
1362
+ "flags": {},
1363
+ "order": 5,
1364
+ "mode": 0,
1365
+ "inputs": [
1366
+ {
1367
+ "localized_name": "model_file",
1368
+ "name": "model_file",
1369
+ "shape": 7,
1370
+ "type": "COMBO",
1371
+ "widget": {
1372
+ "name": "model_file"
1373
+ },
1374
+ "link": null
1375
+ },
1376
+ {
1377
+ "localized_name": "checkpoint_path",
1378
+ "name": "checkpoint_path",
1379
+ "shape": 7,
1380
+ "type": "STRING",
1381
+ "widget": {
1382
+ "name": "checkpoint_path"
1383
+ },
1384
+ "link": null
1385
+ },
1386
+ {
1387
+ "localized_name": "gemma_file",
1388
+ "name": "gemma_file",
1389
+ "shape": 7,
1390
+ "type": "COMBO",
1391
+ "widget": {
1392
+ "name": "gemma_file"
1393
+ },
1394
+ "link": null
1395
+ },
1396
+ {
1397
+ "localized_name": "gemma_path",
1398
+ "name": "gemma_path",
1399
+ "shape": 7,
1400
+ "type": "STRING",
1401
+ "widget": {
1402
+ "name": "gemma_path"
1403
+ },
1404
+ "link": null
1405
+ },
1406
+ {
1407
+ "localized_name": "lora_file",
1408
+ "name": "lora_file",
1409
+ "shape": 7,
1410
+ "type": "COMBO",
1411
+ "widget": {
1412
+ "name": "lora_file"
1413
+ },
1414
+ "link": null
1415
+ },
1416
+ {
1417
+ "localized_name": "lora_path",
1418
+ "name": "lora_path",
1419
+ "shape": 7,
1420
+ "type": "STRING",
1421
+ "widget": {
1422
+ "name": "lora_path"
1423
+ },
1424
+ "link": null
1425
+ },
1426
+ {
1427
+ "localized_name": "lora_strength",
1428
+ "name": "lora_strength",
1429
+ "shape": 7,
1430
+ "type": "FLOAT",
1431
+ "widget": {
1432
+ "name": "lora_strength"
1433
+ },
1434
+ "link": null
1435
+ },
1436
+ {
1437
+ "localized_name": "fp8_transformer",
1438
+ "name": "fp8_transformer",
1439
+ "shape": 7,
1440
+ "type": "BOOLEAN",
1441
+ "widget": {
1442
+ "name": "fp8_transformer"
1443
+ },
1444
+ "link": null
1445
+ },
1446
+ {
1447
+ "localized_name": "fp8_scaled_mm",
1448
+ "name": "fp8_scaled_mm",
1449
+ "shape": 7,
1450
+ "type": "BOOLEAN",
1451
+ "widget": {
1452
+ "name": "fp8_scaled_mm"
1453
+ },
1454
+ "link": null
1455
+ },
1456
+ {
1457
+ "localized_name": "encoder_fp8",
1458
+ "name": "encoder_fp8",
1459
+ "shape": 7,
1460
+ "type": "BOOLEAN",
1461
+ "widget": {
1462
+ "name": "encoder_fp8"
1463
+ },
1464
+ "link": null
1465
+ },
1466
+ {
1467
+ "localized_name": "low_vram",
1468
+ "name": "low_vram",
1469
+ "shape": 7,
1470
+ "type": "BOOLEAN",
1471
+ "widget": {
1472
+ "name": "low_vram"
1473
+ },
1474
+ "link": null
1475
+ }
1476
+ ],
1477
+ "outputs": [
1478
+ {
1479
+ "localized_name": "model",
1480
+ "name": "model",
1481
+ "type": "JOYECHO_MODEL",
1482
+ "links": [
1483
+ 118
1484
+ ]
1485
+ }
1486
+ ],
1487
+ "properties": {
1488
+ "ue_properties": {
1489
+ "widget_ue_connectable": {},
1490
+ "input_ue_unconnectable": {}
1491
+ },
1492
+ "aux_id": "RealRebelAI/ComfyUI_JoyAI_Echo_GGUF_Nodes",
1493
+ "ver": "0d9e32fcd2d255a16604368fcaa1875c380c7f3b",
1494
+ "Node name for S&R": "JoyEcho_ModelLoader"
1495
+ },
1496
+ "widgets_values": [
1497
+ "diffusion_models: ltx23_echoVid-ltxAud_surgical_bf16.safetensors",
1498
+ "",
1499
+ "(use gemma_path field)",
1500
+ "",
1501
+ "(use lora_path / none)",
1502
+ "",
1503
+ 1,
1504
+ false,
1505
+ false,
1506
+ false,
1507
+ false
1508
+ ]
1509
  }
1510
  ],
1511
  "links": [
 
 
 
 
 
 
 
 
1512
  [
1513
  10,
1514
  6,
 
1620
  52,
1621
  2,
1622
  "INT"
1623
+ ],
1624
+ [
1625
+ 118,
1626
+ 64,
1627
+ 0,
1628
+ 2,
1629
+ 0,
1630
+ "JOYECHO_MODEL"
1631
  ]
1632
  ],
1633
  "groups": [
 
1695
  "config": {},
1696
  "extra": {
1697
  "ds": {
1698
+ "scale": 0.7986000000000875,
1699
  "offset": [
1700
+ -2373.7357668703285,
1701
+ 278.64736571532205
1702
  ]
1703
  },
1704
  "frontendVersion": "1.45.15",