- Qwen Image Edit upgraded to the 2509 model (qwen_image_edit_2509_fp8_e4m3fn)
with TextEncodeQwenImageEditPlus multi-image conditioning; old 2508/2509
pairs removed.
- New Z-Image base example (z_image_bf16, Example_25 input) using default
LanPaint parameters (NumSteps 5, Lambda 5.0, StepSize 0.2, Friction 15);
old turbo/base pairs removed.
- Renamed the converted examples to the *_EncodeDecode_Inpaint convention
(fresh names force the workflow gallery to reload them) and generated
preview jpgs from the test run outputs; superseded old pairs removed,
Qwen_Image_Outpaint and wan2_2_T2I_Partial kept as distinct use cases.
- Fixed the Qwen Image example mask reference: Example_12's file has no
alpha channel (it is an output example), so it now points at Example_13's
masked input (7).
- Repositioned the ImageEncode/ImageDecode nodes next to the sampler in all
converted workflows (the conversion agents had placed them far off-canvas).
- SD3.5 and HiDream examples removed on request.
- Example_29 now ships the H3 masked input video and the inpainted output
video (InPainted_Drag_Me_to_ComfyUI.mp4).
Mask-in-video (the masks now travel with the video file):
- New videometa module: write/read a JSON payload under the lanpaint-mask
mp4 metadata tag via PyAV (stream copy, movflags=use_metadata_tags), so
exporting produces a NEW file and the source is never modified.
- Two server routes: GET /lanpaint/video_mask_meta (read the payload back)
and POST /lanpaint/export_mask_video (remux into input/<base>_masked.mp4).
- The mask editor exports the painted keyframes (base64 PNGs) + audio
intervals into the video; loading a video with the tag auto-restores the
masks (editor and node preview). A video without the tag clears the
workflow's masks - the video is the source of truth. The export also
offers a native save dialog (showSaveFilePicker) when available.
- The video widget upload now uses video_upload so MP4s are selectable in
the file chooser (was image_upload).
- LanPaint_ImageEncode accepts 5D latents from video VAEs encoding a single
image (e.g. the Hunyuan video VAE) - fixes the Hunyuan example.
Example set conversion (one example per supported model, new files, old
pairs removed after being superseded):
- New *ImageEncode/*EncodeDecode example workflows for SDXL, Flux.1,
Flux.2 Dev, Flux2 Klein, SD3.5, Hunyuan, Ideogram4, Krea2, Qwen Edit,
Qwen Image, Z-Image, Wan 2.2 and MiniMax H3 (AV), all using
LanPaint_ImageEncode/ImageDecode instead of VAEEncode +
SetLatentNoiseMask + VAEDecode + MaskBlend; every example references its
own example folder's masked input (hash-verified); preview jpgs generated
from the test runs; the H3 example ships its output mp4 as a preview.
- HiDream example removed on request; Example_29 added with the H3 masked
input video.
Fixes along the way: normalize node input.link/output.links fields against
the links arrays in all converted workflows (the frontend renders
null-link nodes as disconnected); stale Inpainting_mode widget removed from
the Flux.2 sampler; Lambda defaults 5.0 (first-order scheme); torchaudio
resample test assertion relaxed (edge ringing); the videometa tests updated
to the final export signature.