Skip to content

Commit dbd3304

Browse files
authored
feat(preview): add per-queue live preview method override (#11261)
- Add set_preview_method() to override live preview method per queue item - Read extra_data.preview_method from /prompt request - Support values: taesd, latent2rgb, none, auto, default - "default" or unset uses server's CLI --preview-method setting - Add 44 tests (37 unit + 7 E2E)
1 parent 33c7f11 commit dbd3304

File tree

5 files changed

+730
-0
lines changed

5 files changed

+730
-0
lines changed

comfy/cli_args.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ class LatentPreviewMethod(enum.Enum):
9797
Latent2RGB = "latent2rgb"
9898
TAESD = "taesd"
9999

100+
@classmethod
101+
def from_string(cls, value: str):
102+
for member in cls:
103+
if member.value == value:
104+
return member
105+
return None
106+
100107
parser.add_argument("--preview-method", type=LatentPreviewMethod, default=LatentPreviewMethod.NoPreviews, help="Default preview method for sampler nodes.", action=EnumAction)
101108

102109
parser.add_argument("--preview-size", type=int, default=512, help="Sets the maximum preview size for sampler nodes.")

execution.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import torch
1414

1515
import comfy.model_management
16+
from latent_preview import set_preview_method
1617
import nodes
1718
from comfy_execution.caching import (
1819
BasicCache,
@@ -669,6 +670,8 @@ def execute(self, prompt, prompt_id, extra_data={}, execute_outputs=[]):
669670
asyncio.run(self.execute_async(prompt, prompt_id, extra_data, execute_outputs))
670671

671672
async def execute_async(self, prompt, prompt_id, extra_data={}, execute_outputs=[]):
673+
set_preview_method(extra_data.get("preview_method"))
674+
672675
nodes.interrupt_processing(False)
673676

674677
if "client_id" in extra_data:

latent_preview.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import comfy.utils
99
import logging
1010

11+
default_preview_method = args.preview_method
12+
1113
MAX_PREVIEW_RESOLUTION = args.preview_size
1214
VIDEO_TAES = ["taehv", "lighttaew2_2", "lighttaew2_1", "lighttaehy1_5"]
1315

@@ -125,3 +127,11 @@ def callback(step, x0, x, total_steps):
125127
pbar.update_absolute(step + 1, total_steps, preview_bytes)
126128
return callback
127129

130+
def set_preview_method(override: str = None):
131+
if override and override != "default":
132+
method = LatentPreviewMethod.from_string(override)
133+
if method is not None:
134+
args.preview_method = method
135+
return
136+
args.preview_method = default_preview_method
137+

0 commit comments

Comments
 (0)