Commit Graph
67 Commits
Author SHA1 Message Date
alisson-anjos 61ce4ea3b3 chore: bump version to 1.12.1 2026-07-17 17:17:56 +00:00
alisson-anjos 4a1db299da fix: reference-CFG function signature triggered legacy 3-arg cfg path
set_model_sampler_cfg_function() detects the old (cond, uncond, cond_scale)
calling convention by counting ALL signature parameters, not just
positional ones -- the previous 3-param version (args + two defaulted
closure vars) tripped that check and got called with three raw tensors
instead of the args dict, crashing with "too many indices for tensor of
dimension 3". Fixed by taking a single `args` param and closing over
noref_to/ref_scale normally.
2026-07-17 17:17:30 +00:00
alisson-anjos c65d8d35d6 chore: bump version to 1.12.0 2026-07-17 17:08:36 +00:00
alisson-anjos 9d6a482f18 feat: add reference-CFG (ST-DRC) to LTX Identity Transfer
Optional reference_guidance_scale input (default 1.0 = off). When >1,
adds a third forward pass per denoising step with the reference tokens
dropped, isolating the reference's own contribution the same way CFG
isolates the text prompt: denoised += (scale-1)*(with_ref - without_ref).
Implemented via model.set_model_sampler_cfg_function(), reusing the
positive conditioning already passed to KSampler for the extra pass.

Mirrors the same reference-CFG mechanism added to ltx-trainer's
validation_runner.py so training-time validation and this node's
inference now share the same guidance formula.
2026-07-17 17:08:35 +00:00
alisson-anjosandClaude Sonnet 5 944c3bdff5 chore: bump version to 1.11.0
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 09:59:19 +00:00
alisson-anjosandClaude Sonnet 5 a434f88e45 feat: add layout dropdown (overlap/st_drc) to LTX Identity Transfer node
New optional input `layout` (default "overlap", the only behavior every
checkpoint so far was trained with -- old workflows keep working
unchanged). "st_drc" shifts the whole reference coordinate block past
the target's own extent on every axis (non-overlapping RoPE region),
mirroring ltx_trainer's training_strategies/tass.py apply_tass_layout
st_drc branch -- kept in sync manually since this node can't import the
trainer package, adapted to ComfyUI's own [B,3,N] single-corner
coordinate shape instead of the trainer's [B,3,N,2] patch-bounds shape
(the min/max-per-axis shift math is equivalent either way, verified
against a synthetic test matching apply_tass_layout's own logic).

Only usable with a checkpoint specifically trained with layout='st_drc'
-- using it against an 'overlap'-trained checkpoint will not work,
the model never learned that coordinate convention.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 09:59:18 +00:00
alisson-anjosandClaude Sonnet 5 a10dd8bd27 chore: bump version to 1.10.14
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 01:16:09 +00:00
alisson-anjosandClaude Sonnet 5 d2a25c7504 feat: ref_preview/crop_overlay outputs + optional crop_anchor for match_target
New IMAGE outputs (appended at the end of RETURN_TYPES, existing wiring
unaffected):
- ref_preview: exactly what gets encoded as the reference, after
  whatever resize/crop/letterbox ref_resize_mode applied -- lets you
  sanity-check the actual input to the model.
- crop_overlay: the ORIGINAL reference with a green rectangle around the
  region that survives match_target's crop (everything outside it gets
  discarded). For match_target_letterbox/native_resolution, which never
  crop, the box just outlines the full frame.

New optional input crop_anchor (center/top/bottom/left/right, default
"center"): controls which part of the reference match_target's crop
keeps, instead of always the exact center -- e.g. set "top" if your
sheet's face closeup sits in the top row so it survives a crop against
a differently-shaped output. Added under "optional", not "required", so
existing saved workflows keep working with zero changes (falls back to
the previous always-center-crop behavior). Verified byte-for-byte
equivalent to the old center-crop path on a smooth test image when left
at the default; the non-default anchors reuse the same crop math with a
different offset.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 01:16:09 +00:00
alisson-anjosandClaude Sonnet 5 2dc36ac48b chore: bump version to 1.10.13
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 00:55:05 +00:00
alisson-anjosandClaude Sonnet 5 0c24f592bd feat: add match_target_letterbox ref_resize_mode (no-crop option)
match_target resizes the reference to the output video's pixel size via
a center-crop (comfy.utils.common_upscale crop="center") then resize --
for aspect-mismatched refs (e.g. a landscape character sheet used with a
portrait output) this silently discards whatever isn't in the middle of
the reference, which can crop out the face closeup panel entirely.

Add match_target_letterbox: same target pixel size, but fits the WHOLE
reference inside it preserving its own aspect ratio (no crop), padding
the leftover space with white. Trades some wasted canvas space for
never losing reference content -- recommended over match_target when
ref and output aspect ratios differ, and over native_resolution when
native_resolution's landscape-composition bias causes an off-center/
cropped-looking result on the OUTPUT video itself.

Reported by a LoRA user: portrait output + landscape character sheet +
native_resolution produced an off-center-left result (model composing
as landscape then getting cropped to the portrait canvas); switching to
match_target "fixed" centering but lost face detail from the crop.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 00:55:05 +00:00
alisson-anjosandClaude Sonnet 5 22db16fc2b chore: bump version to 1.10.12
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 20:17:48 +00:00
alisson-anjosandClaude Sonnet 5 1f37355676 fix: fit_mode='fit' still underfilled the canvas on one axis
fit_mode='fit' only guaranteed the row-justified block filled canvas
width, never upscaling to also fill height when the natural block was
shorter than the canvas (e.g. 2 refs left a top/bottom bar). Add
fit_mode='cover': same row-justified layout, but when the natural block
underfills the canvas it scales up to fill height and center-crops the
resulting width overflow instead, and when it overfills height it crops
that overflow directly -- either way every pixel of the canvas is
covered, cropping only the minimum shared/symmetric amount.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 20:17:48 +00:00
alisson-anjos 3b7137a8a8 chore: bump version to 1.10.11 2026-07-14 11:35:11 +00:00
alisson-anjos d828823075 fix: fit_mode='fit' was letterboxing each panel independently (wasted space)
Replace per-panel independent letterboxing with a row-justified layout:
every row fills the canvas width exactly (each image scaled uniformly,
no distortion), rows are only shrunk together (never upscaled past
natural fill-width size) if they'd collectively overflow the canvas
height. Net effect: at most one shared pair of side/top-bottom bars
instead of padding scattered inside every individual panel.

Ported the identical algorithm into build_multiref_sheet.py (the
training-side script) so inference-time sheets match training-time
sheets pixel-for-pixel when fit_mode='fit' is used -- verified with a
byte-for-byte comparison test. fit_mode='crop' (default) is unchanged.
2026-07-14 11:35:00 +00:00
alisson-anjos 467cb2e8d3 chore: bump version to 1.10.10 2026-07-14 11:08:02 +00:00
alisson-anjos ca5b4767ba feat: Multi-Ref Sheet Builder — add fit_mode (crop/fit) toggle
crop (default, unchanged): zoom+center-crop to fill each panel, matches
the training data. fit: scale each reference to fit entirely inside its
panel with a single uniform scale factor (no distortion), letterboxed
with background padding for any leftover space -- keeps every pixel
of references with extreme aspect ratios instead of cropping them.
2026-07-14 11:08:02 +00:00
alisson-anjos cc110af228 chore: bump version to 1.10.9 2026-07-14 11:00:04 +00:00
alisson-anjos 2ab178f20c feat: Multi-Ref Sheet Builder — combine 1-5 ref images into the fixed 1536x1024 composite sheet
Same grid convention as the multi-ref LTX-2 LoRA training pipeline
(build_multiref_sheet.py): deterministic layout by ref count (1x1, 2x1,
3x1, 2x2, 3-top+2-bottom), 512x512 panels, centered onto a fixed
1536x1024 canvas regardless of how many refs are plugged in. Panel
order matches the image0/image1/... indexing used in training.
2026-07-14 10:59:34 +00:00
NRDX 2627e1bf7d Update pyproject.toml
Compatibility with IC LORA Guide node.
2026-07-10 13:41:11 +01:00
NRDX bbbf61b972 Merge pull request #7 from Bambushu/fix-icllora-guide-timestep
Fix: prepare_timestep mis-trims per-token timestep when IC-LoRA guides are active
2026-07-10 08:28:50 -03:00
Maikel SlompandClaude Fable 5 9fae36cffa fix: prepare_timestep mis-trims per-token timestep when IC-LoRA guides are active
With a guide node in the graph (LTXAddVideoICLoRAGuide etc.), the per-token
timestep legitimately spans the grid-mask domain (video + guide tokens) and is
indexed later via timestep[:, grid_mask]. The existing oversized heuristic
assumed oversize could only come from audio, trimmed the timestep to
video-only, and the subsequent grid_mask indexing crashed:

  IndexError: The shape of the mask [5616] at index 0 does not match the
  shape of the indexed tensor [2, 3726, 1] at index 1

Fix: when the incoming per-token timestep length equals grid_mask length,
skip the audio trim, append the reference zeros directly, and let the
existing grid_mask padding keep modulation and tokens in lockstep. The
audio-trim path is unchanged for graphs without guides.

Tested: LTX-2.3 22B distilled, Face-ID LoRA + union-control IC-LoRA pose
guide + frozen audio latent, 97-281 frame renders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 19:03:52 +02:00
alisson-anjos 10c7153e67 chore: bump version to 1.10.7 2026-07-09 08:00:08 +00:00
alisson-anjos 35f67e3d7f fix: LTX Identity Transfer forced ref to output video resolution
ref_px was always resized via common_upscale(..., lat_w*w_sf, lat_h*h_sf)
i.e. the TARGET video's pixel size, regardless of what resolution the
reference was actually trained at. Fine for old single-face-crop recipes
(ref bucket == video bucket), but breaks checkpoints trained with a fixed,
independent ref resolution (e.g. the face+3views composite ref, always
2048x1024 no matter the output video size): the ref latent ends up with a
different token count than training, destroying fine facial detail.

Adds ref_resize_mode: "match_target" (old behavior, default) vs
"native_resolution" (encode the ref at its own size, rounded to 32px).
2026-07-09 08:00:04 +00:00
alisson-anjosandClaude Sonnet 4.6 8c3794a9ef chore: bump version to 1.10.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 20:42:17 +00:00
alisson-anjosandClaude Sonnet 4.6 912b907b33 fix: process_output double-trim when overlap+multiangle patches are chained
Same kwarg collision as prepare_timestep: overlap's process_output was
reading ref_len from kw["_id_ref_len"] (set by multiangle's process_input
to 768) and trimming 768 tokens, then multiangle's process_output trimmed
another 768 — leaving 6912-1536=5376 tokens and causing the einops
unpatchify crash (5376 != 6144).

Fix: use getattr(self, "_id_ref_len", 0) — instance attr only, which is
correctly set to 0 by overlap's own process_input when no single-ref is
active.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 20:42:07 +00:00
alisson-anjosandClaude Sonnet 4.6 d1ed08d0b9 chore: bump version to 1.10.5
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 19:44:09 +00:00
alisson-anjosandClaude Sonnet 4.6 79d96b5fb7 fix: timestep shape crash when overlap+multiangle patches chain after multiple runs
Two root causes fixed:

1. Kwarg collision (primary): overlap's prepare_timestep was reading
   ref_len from kw["_id_ref_len"] which multi-angle's process_input sets
   to 768 via additional_args. When overlap is outer (installed after
   multi-angle), it incorrectly extended the timestep even with no active
   single-ref, causing size mismatches on subsequent multi-angle runs.
   Fix: use getattr(self, "_id_ref_len", 0) — instance attr only, which
   is correctly set to 0 by overlap's own process_input when no ref found.

2. Combined audio+video timestep (secondary): with audio connected,
   LTXAV.process_timestep can produce a per-token v_timestep that covers
   both video and audio tokens (e.g. 24576 = 6144 video + 18432 audio).
   Both patches now trim to the first tgt_len tokens before extending,
   keeping modulation in lockstep with vx (video-only).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 19:18:30 +00:00
alisson-anjosandClaude Fable 5 880555c0c7 fix: compatibility with guide nodes (IC-LoRA Guide / Director Guide) — extend grid_mask for ref tokens
Guide nodes inject a grid_mask that filters x tokens in _process_input and indexes the
timestep in _prepare_timestep (timestep[:, grid_mask]). Our identity ref tokens are
appended AFTER that filter, so the mask (sized without them) crashed with
'shape of the mask [N] does not match the indexed tensor [B, N+ref, 1]'. Both nodes now
extend grid_mask with True for the appended ref tokens, keeping the AdaLN modulation in
lockstep with the token sequence. Reported by vlady (LTX Identity Transfer + Add Video
IC-LoRA Guide Advanced / LTX Director Guide).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 18:13:51 +00:00
alisson-anjosandClaude Fable 5 8c9614446c fix(multiangle): order/shape-robust timestep extension + nested transformer_options
The AdaLN modulation crashed on other ComfyUI builds (tensor 6912 vs 7680): timestep and
ref-token extension went out of lockstep because kwarg flattening / timestep granularity
differ across versions. Now: (1) measure-based timestep padding — detect per-token,
per-FRAME or already-extended from the actual length and pad by exactly what
process_input appended this forward; (2) read ref latents from flat kwargs OR nested
transformer_options; (3) unique _idma_* state reset every forward (no stale leakage, no
collision with the single-ref node); (4) _dbg tracing in every hook (debug_log=true).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 17:25:56 +00:00
alisson-anjosandClaude Fable 5 74590b3169 feat: LTX Identity Transfer (Multiple Angles) — multi-view refs with per-view source_id
Copy of LTX Identity Transfer generalized to N reference blocks: reference_face_front
(required, sid 2, drives ArcFace projector) + optional reference_back_head (sid 3),
reference_body_front (sid 4), reference_side_profile (sid 5). Empty optional inputs are
omitted, matching the multi-view training's view-dropout. Distinct patch flags so it
never collides with the single-ref node.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 16:55:32 +00:00
alisson-anjosandClaude Opus 4.8 2987893262 1.10.4: remove CAN/AdaLN from the nodes — it degrades the video
Empirically the AdaLN (CAN) modulation destroys the generation; the identity gain came from the
overlap + projector + LoRA, not the CAN. Reverted the Identity Transfer node to overlap + projector,
unregistered the standalone CAN node (file kept).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 00:31:01 +00:00
alisson-anjosandClaude Opus 4.8 40aa735e00 1.10.3: fix CAN device mismatch (move CAN + ArcFace to the model device before delta)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 00:18:02 +00:00
alisson-anjosandClaude Opus 4.8 55206e9361 1.10.2: explicit can_face_mode dropdown (auto_adjust/as_is) for the CAN reference
The CAN needs its own visible face-detection control; before it was implicit. Now a can_face_mode
dropdown, independent of the projector's arcface_mode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:48:49 +00:00
alisson-anjosandClaude Opus 4.8 5e4ece1470 1.10.1: CAN always detects face (auto_adjust), ignoring projector's 'disable' mode
arcface_mode=disable was meant to turn OFF the weak projector, but it also skipped the CAN — and
the CAN REQUIRES the reference ArcFace (that's the identity it injects into the AdaLN). Now the CAN
forces auto_adjust when the projector mode is 'disable', so it still gets the face.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:22:59 +00:00
alisson-anjosandClaude Opus 4.8 78b0cf8be6 Bump to 1.10.0 (LTX Identity CAN / AdaLN node + integration into Identity Transfer)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:14:55 +00:00
alisson-anjosandClaude Opus 4.8 d3b6c071b6 CAN node: integrate into Identity Transfer node + use add_object_patch (no forward patch)
- The block-forward patch failed on LTXAV (v_context/ax kwargs). Instead add the CAN delta directly
  into scale_shift_table (row 0 shift_msa, row 2 gate_msa) via ComfyUI's reversible add_object_patch
  — mathematically identical ((sst+delta)+timestep), works on any LTX/LTXAV version, no forward
  rewrite. Confirmed AV row order: slice(0,2)=shift/scale_msa, slice(2,3)=gate_msa.
- Integrated CAN into LTX Identity Transfer (overlap) node: new can_weights + can_strength inputs,
  applied to the same model+reference (so one node does overlap + CAN). Standalone CAN node kept too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 23:13:58 +00:00
alisson-anjosandClaude Opus 4.8 5ce4840242 Add LTX Identity CAN node: apply trained AdaLN identity modulation at inference
The ArcFace projector (appended text tokens) has ~0 impact (cross-attn can ignore them). CAN
injects identity into the self-attn AdaLN (shift+gate) of even blocks — a channel the model can't
ignore. Trained on top of the reference LoRA it lifts identity a lot (humo 0.52 -> 0.69) with no
first-frame leak. Node rebuilds CANModulation per even block from identity_adapters_*.safetensors
(can.<i>.*), extracts the reference ArcFace, and patches each even block's native forward with
shift_msa += dshift; gate_msa += tanh(dgate) — the exact training formula. Lazy imports; defensive
__init__. Weight-load + CAN forward validated headless; block patch untested in ComfyUI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 22:31:46 +00:00
alisson-anjosandClaude Opus 4.8 6e7193c3ac Gemma-Vision node: use the CLIP's native multimodal tokenize (no gemma_path/AutoProcessor)
ComfyUI's native LTX Gemma-3 tokenizer already accepts image= (inserts <image_soft_token> +
carries pixels) and encode_from_tokens runs the multimodal Gemma + projection + connector. So the
node is just clip.tokenize(prompt, image=ref) -> encode_from_tokens_scheduled -> CONDITIONING.
Everything from the already-loaded CLIP; no separate Gemma path, no AutoProcessor, no _get_encoder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:00:20 +00:00
alisson-anjosandClaude Opus 4.8 0e71b5d7b6 Bump to 1.9.0 + add transformers dep (Gemma-Vision node uses AutoProcessor)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:03:10 +00:00
alisson-anjosandClaude Opus 4.8 521c28a970 Add LTX Identity Gemma-Vision node (Caminho2): native-space identity conditioning
Feeds the reference image through the ALREADY-LOADED ComfyUI CLIP (LTX's own multimodal Gemma 3
vision) -> feature_extractor -> connector -> CONDITIONING. Identity is in Gemma's native space
(the reason foreign CLIP/DINO/ArcFace adapters fail on LTX); no reference latent (no copy-paste/
mask), no DiT surgery. Reuses the loaded CLIP (only loads a lightweight AutoProcessor for the
multimodal chat template). Mirrors ComfyUI-LTXVideo LTXVGemmaTextEncoderModel, run multimodally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:59:23 +00:00
alisson-anjosandClaude Opus 4.8 96df648a6c LTX Identity Transfer: load projectors of any depth (4 or 16 tokens)
_load_projector now rebuilds the projector MLP from the state_dict (proj.N Linears),
so it accepts both the original 4-token/2-layer projector and the enhanced
16-token/3-layer one. Bump 1.8.0 -> 1.8.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 14:54:59 +00:00
alisson-anjosandClaude Opus 4.8 ef64f26dfd Add LTX Identity Transfer node (IPT2V: overlap ref + source-phase RoPE)
- av_model model-patch: ref tokens at overlap positions + source_phase RoPE, sliced from output (not I2V)
- optional ArcFace projector (dropdown from loras, 'None' = overlap only), debug_log toggle, arcface auto-adjust
- bump 1.7.0 -> 1.8.0; deps: opencv-python, insightface==0.7.3, onnxruntime

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 17:08:14 +00:00
alisson-anjosandClaude Opus 4.8 13e663101e Add AMV Guide Builder node + bump to 1.7.0
BFSAmvGuideBuilder builds the keyframes+blank guide for the AMV av2av LoRA:
auto_scene / manual_indices / external_images, with audio-beat placement
(librosa beat_track, RMS-onset fallback) to sync cuts to the music. Adds
librosa to requirements.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 07:25:29 +00:00
alisson-anjosandClaude Opus 4.8 0273d3ad24 Bump version to 1.6.0 (Anime2Real Bernini node)
Triggers the Comfy registry publish workflow (paths: pyproject.toml).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 11:50:38 +00:00
alisson-anjosandClaude Opus 4.8 fe278c7bf9 Add BFSAnime2RealBerniniConditioning node
Pure v2v anime->real conditioning for the Bernini-R anime2real LoRA
(trained without reference). Mirrors training: guide -> source_id 1 on
both positive and negative, empty latent -> source_id 0, no source_id 2
and no amplify_reference (no reference to amplify; text-only CFG).

Reuses bernini_patches; registered in __init__.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:58:29 +00:00
alisson-anjosandClaude Opus 4.8 67ee2e7e01 Head-Swap node: amplify_reference toggle (CFG reference guidance)
Adds an `amplify_reference` option (default on): the head reference is attached to
the positive conditioning only while the guide stays on both, so ComfyUI's CFG
amplifies the identity (approximates Bernini's omega_img guidance). Use CFG ~3-5
and disable LightX2V. Bump to 1.5.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:40:23 +00:00
alisson-anjosandClaude Opus 4.8 acec6fa8f1 Bump version to 1.4.0 (Head-Swap Bernini nodes)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:37:14 +00:00
alisson-anjosandClaude Opus 4.8 7e457ddc93 Add Head-Swap Bernini Conditioning + LoRA Debug nodes
Standalone head-swap nodes for the Bernini-R LoRA (Wan2.2-A14B):
- HeadSwapBerniniConditioning: guide video -> source_id 1, head image ->
  source_id 2; output follows the guide's native size, head keeps its own.
- HeadSwapLoRADebug: reports applied LoRA patch count on a MODEL.

Bundles the WanModel context_latents patch (vendored from ComfyUI-RH-Bernini,
GPL-3.0) so no external Bernini node package is required.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:08:13 +00:00
Alisson Anjos 9ae12285e2 Add Looping Sampling 2026-05-17 19:21:35 +01:00
Alisson Anjos 80ef98e164 Make Edit Anything module optional 2026-05-17 19:21:35 +01:00