Skip to content

Releases: Sxela/VibeWarp

v0.6.0 — Gradient guidance, multiscale sampling, U-Net acceleration

Choose a tag to compare

@Sxela Sxela released this 07 Aug 18:18

Gradient guidance is back on the render path, alongside multiscale sampling and two
opt-in U-Net speedups.

Gradient guidance

WarpFusion's guidance now steers sampling toward a temporal target, independently of the
img2img init (which stays the warp + consistency composite):

  • Pixel guidanceinit_scale (try 1000), an LPIPS + MSE loss against the guidance
    target in pixel space.
  • Latent guidanceinit_latent_scale (try 100), an MSE loss in latent space.
  • guidance_mode picks the target: previous warped frame, with or without the
    consistency mask, the raw init, and so on.
  • clamp_grad / clamp_max clamp the gradient by RMS so a large scale does not blow
    the frame out.
  • guidance_add_noise / guidance_use_start_code noise the target to the sampler's
    current sigma, reusing one noise tensor and preserving the notebook's RNG order.

LPIPS moved out of the optional [sched] extra into the core dependencies — core guidance
needs it now. [sched] still exists so nothing breaks, but it is empty.

Multiscale sampling

sampler_scale_schedule maps a sampling step to a percentage of the final latent
resolution. Early steps can evaluate the whole frame cheaply and later steps run at full
resolution. sampler_scale_min_size sets a pixel floor for the longest side, so coarse
passes stay at or above the model's trained resolution (512 for SD1.5).

Below 100% the U-Net sees the whole downscaled frame and tiling is deliberately disabled;
at 100% the normal tiled path takes over. The sampler latent itself is always full
resolution.

U-Net acceleration (opt-in)

unet_cache offers two strategies, both resetting their state every frame:

  • DeepCache — reuses the expensive inner U-Net branch on intermediate denoiser
    evaluations, every unet_cache_interval steps.
  • First Block Cache — reuses a previous output when the first encoder block moves less
    than unet_cache_threshold relative to the last one.

compile_unet separately torch.compiles the unified U-Net, the active ControlNets, and
the VAE encode/decode paths. It is opt-in because every new multiscale/tile/VAE shape may
trigger another graph compile; Inductor artifacts persist under .vibewarp_cache.

Per-part pose detection

OpenPose and DWPose now expose pose_include_body, pose_include_hand, and
pose_include_face, controlling which keypoint sets are detected and drawn.

Fixes

  • SDXL text encoder on newer open_clip builds whose attention modules are
    batch-first — the unconditional NLD→LND permute produced silently wrong conditioning.
  • IP-Adapter composition precise weight type, matching the current ComfyUI
    IPAdapter Plus layer map.
  • The UI launchers (run-ui.bat / run-ui.sh) now reinstall dependencies when an
    existing environment predates a required package, such as torchsde for the DPM++ SDE
    samplers.

As always: parity-validated coverage and what is implemented-but-unverified are tracked in
docs/roadmap.md. The features
in this release are covered by the CPU test suite but have not been through GPU parity
validation against the notebook.

Full changelog: v0.5.0...v0.6.0

v0.5.0 — IP-Adapter catalog & editor

Choose a tag to compare

@Sxela Sxela released this 26 Jul 20:44

Since 0.4.0

IP-Adapter, properly surfaced. A canonical IP-Adapter model catalog
(vibewarp/ipadapter_catalog.py) now drives a dedicated IP-Adapter editor in the UI, on the
SD1.5 / SDXL render path. The correct image encoder — ViT-H or ViT-bigG — is selected from
the adapter itself, and a WarpFusion settings import discovers the clip_vision directory
automatically. See
IP-Adapter setup.

One-command IP-Adapter downloads with resume-on-interrupt:
download-ipadapter-models.sh / .bat (regular and Plus variants). The existing Qwen and
Mage fetchers gained .bat equivalents too, so Windows has parity with Linux/macOS.

History view. Filters for the run list, plus relative-keyframe handling.

Every new module ships with tests. Full diff:
v0.4.0...v0.5.0

v0.4.0 — Qwen Image Edit & Mage-Flow Edit

Choose a tag to compare

@Sxela Sxela released this 26 Jul 12:38

Since 0.3.0

Two more ComfyUI-backed edit models, joining FLUX.2 Klein and HiDream. All four are HTTP
clients to an external ComfyUI — nothing is vendored.

Qwen Image Edit 2511. INT8 ConvRot diffusion model + Qwen 2.5 VL encoder + Qwen image
VAE + the default LightX2V 8-step Lightning LoRA (model_version="qwen_image_edit_2511"),
plus a lower-VRAM Q5_K_M GGUF variant (qwen_image_edit_2511_gguf, via ComfyUI-GGUF).

Mage-Flow Edit (Microsoft, 4B). INT8 ConvRot transformer + Qwen3-VL 4B encoder + Mage
VAE, in a 30-step RL-aligned variant (mage_flow_edit) and a 4-step distilled one
(mage_flow_edit_turbo).

Unified Reference Images editor. FLUX.2, HiDream, Qwen and Mage now share one ordered
reference-image control: the first image is always present; later images can be raw or
temporal frames, or an uploaded style reference via a drag-and-drop picker.

One-command model fetchers with resume-on-interrupt: download-qwen-image-edit.sh,
download-qwen-convrot.sh, download-mage-flow.sh.

Setup and exact Hugging Face downloads for each backend are in the README and
docs/settings.md. Every
backend ships with tests.

Full diff: v0.3.0...v0.4.0

v0.3.0 — Edit models (FLUX.2 Klein, HiDream)

Choose a tag to compare

@Sxela Sxela released this 22 Jul 20:56

Since 0.2.0

Edit models — FLUX.2 Klein Edit and HiDream. An instruction-edit render path alongside
the diffusion pipeline, driven by an external ComfyUI backend over HTTP (nothing
vendored). Live progress is relayed back from ComfyUI, and edit references (raw and
unwarped style references) are handled for instruction-style edits.

History & Comparison. Compare settings across runs, seek far faster through a run's
frames, and resume cancelled runs — a partial render is still assembled into a video.

Progress & cancellation. Progress is reported relative to the selected frame range, and
cancellation gives clearer feedback.

UI. Model-compatibility hints and a settings-diff view.

Every new module ships with tests (flux, flux_comfy, hidream, comfy_progress, settings-diff,
model-compatibility). 50 files changed.

Full diff: v0.2.0...v0.3.0

v0.2.0 — Consistency parity, video probing

Choose a tag to compare

@Sxela Sxela released this 22 Jul 20:56

Since 0.1.0

Consistency-mask / optical-flow parity fix. Corrections to the consistency and flow
handling from the cc-parity work, with tests. The processed consistency mask is now a
selectable layer in the History & Comparison view.

Video probing on input. Selecting an input video reads it on the spot (ffprobe, with an
OpenCV fallback) and shows the source metadata, a first-non-black-frame thumbnail, and — the
point — the exact render size and frame count the run will produce, rather than an
estimate. The frame range is clamped to what the clip actually contains.

Patreon + supporters. A Sponsor button (.github/FUNDING.yml) and a supporters credit
in the render monitor, shown only until the first frame of a session renders.

26 files changed. Full diff: v0.1.0...v0.2.0

v0.1.0 — Initial public release

Choose a tag to compare

@Sxela Sxela released this 22 Jul 20:56

First public release of VibeWarp — the WarpFusion v0.37 notebook consolidated into an
installable Python package with a Svelte web UI, dependencies vendored rather than
git-cloned at runtime.

Verified against the notebook

Correctness is measured by rendering both sides — VibeWarp and the notebook, in the
notebook's own environment — and comparing frame by frame (mean absolute error per pixel;
0 is byte-identical). These cases are confirmed at parity:

Case MAE
SD1.5, no ControlNet 0.0125 pass
SD1.5 + softedge 0.0116 pass
SD1.5 + tile 0.017
SD1.5 + ip2p 0.018
SD1.5, full 5-net ControlNet stack 0.054
SD1.5 + inpaint 0.066
Reconstructed-noise mode (± ControlNet) 0.044 / 0.075
AnimateDiff SD1.5, sliding context (notebook default 32/8/16/10) 0.0147
AnimateDiff SD1.5, seams + reinject_stylized 0.005–0.013 tighter than the SD1.5 base

Also implemented (not yet notebook-verified)

SDXL and SDXL ControlNets, AnimateDiff SDXL/HotshotXL, LORA, IP-Adapter, FreeU, background
masking, captions, content-aware scheduling, softcap, tiled VAE, colormatch, tiled sampler.
These run and produce plausible output; they have no parity test yet. See
docs/roadmap.md for the
honest state and the open work.

Interface

A local web UI (Svelte + FastAPI) and a full CLI that consumes WarpFusion settings files
as-is. Flow-based settings tabs, keyframe editors, and a History & Comparison view for
inspecting past runs layer by layer.

Licensed GPL-3.0; vendored components and their lineage are in
THIRD_PARTY_LICENSES.md.