@@ -54,27 +54,28 @@ def ensure_previews_enabled() -> str:
5454 log .debug ("[c2c.preview] cli_args unavailable: %s" , exc )
5555 return PREVIEW_GUARD_STATUS
5656 try :
57- cur = getattr (args , "preview_method" , None )
58- if cur == LatentPreviewMethod .NoPreviews :
59- # Force TAESD, not Auto. TAESD is the universal method: core samplers
60- # use the taesd decoder (or fall back to Latent2RGB), and — crucially —
61- # Kijai's WanVideoSampler routes TAESD to its OWN video previewer
62- # (taehv / Wan-factor Latent2RGB), so Wan/video previews actually show.
63- # Auto resolves to core Latent2RGB, which is BLANK for Wan latents.
57+ import latent_preview # noqa: F401
58+ # THE PR #11261 GOTCHA: newer ComfyUI resets args.preview_method on EVERY
59+ # prompt (execution.py: set_preview_method(extra_data['preview_method'])).
60+ # When the frontend sends "default"/None, set_preview_method falls back to
61+ # latent_preview.default_preview_method — which is whatever --preview-method
62+ # was (NoPreviews here). So setting args.preview_method alone is WIPED every
63+ # run; we must override default_preview_method itself. TAESD is universal:
64+ # core samplers use the taesd decoder / Latent2RGB, and Kijai's WanVideoSampler
65+ # routes TAESD to its OWN video previewer (Auto/Latent2RGB are blank for Wan).
66+ dflt = getattr (latent_preview , "default_preview_method" , None )
67+ if dflt == LatentPreviewMethod .NoPreviews :
68+ latent_preview .default_preview_method = LatentPreviewMethod .TAESD
69+ # Also set it live for the current run.
70+ if getattr (args , "preview_method" , None ) == LatentPreviewMethod .NoPreviews :
6471 try :
65- import latent_preview # noqa: F401
66- if hasattr (latent_preview , "set_preview_method" ):
67- latent_preview .set_preview_method ("taesd" )
68- else :
69- args .preview_method = LatentPreviewMethod .TAESD
72+ latent_preview .set_preview_method ("taesd" )
7073 except Exception :
7174 args .preview_method = LatentPreviewMethod .TAESD
72- PREVIEW_GUARD_STATUS = "forced_taesd (was none)"
73- log .info ("[c2c.preview] previews were OFF (--preview-method none) -> forced to TAESD "
74- "(works for core AND Kijai/Wan samplers). Set C2C_NO_FORCE_PREVIEW=1 to opt out." )
75- else :
76- PREVIEW_GUARD_STATUS = f"already_on ({ getattr (cur , 'value' , cur )} )"
77- log .debug ("[c2c.preview] previews already enabled: %s" , cur )
75+ PREVIEW_GUARD_STATUS = "forced_taesd (+per-queue default override)"
76+ log .info ("[c2c.preview] forced live preview to TAESD AND overrode the per-queue "
77+ "'default' fallback (PR #11261) so it survives every prompt — works for "
78+ "core AND Kijai/Wan samplers. Set C2C_NO_FORCE_PREVIEW=1 to opt out." )
7879 except Exception as exc :
7980 PREVIEW_GUARD_STATUS = f"error ({ type (exc ).__name__ } )"
8081 log .warning ("[c2c.preview] could not ensure previews: %s" , exc )
@@ -146,14 +147,15 @@ def set_preview_method(method: str) -> dict:
146147 except Exception as exc : # noqa: BLE001
147148 return {"ok" : False , "error" : f"cli_args/latent_preview unavailable: { exc !r} " }
148149 try :
149- if method in ("off" , "none" ):
150- args .preview_method = LatentPreviewMethod .NoPreviews
151- elif hasattr (latent_preview , "set_preview_method" ):
152- # Core's own setter understands "auto"/"latent2rgb"/"taesd".
153- latent_preview .set_preview_method (method )
154- else :
155- args .preview_method = LatentPreviewMethod .Auto
156- log .info ("[c2c.preview] preview method set to %r by user." , method )
150+ # Resolve the target enum (enum values are "none"/"auto"/"latent2rgb"/"taesd").
151+ target = LatentPreviewMethod .NoPreviews if method in ("off" , "none" ) \
152+ else LatentPreviewMethod (method if method in ("auto" , "latent2rgb" , "taesd" ) else "taesd" )
153+ args .preview_method = target
154+ # CRUCIAL: also set default_preview_method — the value the per-queue override
155+ # (PR #11261) RESETS to every prompt. Without this the choice is wiped on the
156+ # next queue and the preview silently stops.
157+ latent_preview .default_preview_method = target
158+ log .info ("[c2c.preview] preview method set to %r (+per-queue default) by user." , method )
157159 return {"ok" : True , "method" : method }
158160 except Exception as exc : # noqa: BLE001
159161 return {"ok" : False , "error" : repr (exc )}
0 commit comments