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.