FL KSampler Sigma: custom sampler with an on-node sigma curve editor.
Draw your own sigma schedule (monotone-cubic/PCHIP interpolation),
with log-Y axis, user-set axis bounds that preserve curve shape on
rescale, and a SIGMAS output for composability.
FL Fal GPT-Image-2 Edit: wraps openai/gpt-image-2/edit on fal.ai with
dynamic reference-image sockets (1-10), custom image sizes, optional
mask input, and exponential-backoff retries.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Race condition: Continue/Cancel button handlers were firing submitBlocking()
without awaiting it, then immediately calling close() which tore down the
modal. If the fetch got delayed or dropped by the DOM teardown, the Python
thread would stay blocked on event.wait() until the full timeout.
Symptoms: "sometimes Continue gets stuck and doesn't advance the workflow."
Fixes:
- PathAnimator: All exit paths (Continue, Cancel, ESC, overlay click, header
close) now await submitBlocking() before close(). On Continue failure,
the modal stays open with buttons re-enabled so user can retry.
- PathAnimator: submitBlocking now checks response.ok and throws on non-2xx,
surfacing 404 "Session not found" errors instead of swallowing them.
- PathAnimator: close() safeguard still uses fire-and-forget but now with
.catch() to log errors (it's a last-resort path after primary handlers).
- ImagePicker: sendSelection now checks response.ok and throws on non-2xx.
- ImagePicker: All callers wrapped in try/catch so failed submits don't
leave the modal in a half-closed state. Confirm failures keep the modal
open with a user-visible alert.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FL Path Animator now supports interactive image-driven workflow:
- New optional IMAGE input — when wired, execution blocks and auto-opens
the path editor with the image as canvas background at native resolution
- New Continue button saves drawn paths and unblocks execution
- Cancel button aborts the workflow via InterruptProcessing
- Countdown timer in footer shows remaining timeout
- Transitions existing edit-mode modal in place if one is already open
(preserves any paths the user already drew)
- ESC, overlay click, and header close all treated as Cancel in blocking mode
- Fully backward compatible: without image, behaves exactly as before
Pattern mirrors FL_ImagePicker (threading.Event, WebSocket dispatch, POST
endpoint). New endpoint: POST /fl_path_animator/submit. New WS event:
fl_path_animator_show.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cloned CoTrackerNode (with trajectory integration inlined) and
CreateShapeImageOnPath (from KJNodes) as self-contained FL nodes.
Includes multi-channel mask fix for CoTracker.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New node that replaces images or masks at a specific index within a batch.
Includes a grid preview with green border highlighting on replaced positions.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add new audio node that calculates max frame count from audio duration and FPS.
Optimize FL_ImageListToImageBatch by replacing O(n²) incremental torch.cat loop
with a single torch.cat call for O(n) performance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add FL_ImageToMask node to convert IMAGE to MASK via luminance/channel extraction
- Fix force_square shadowing target_size parameter, breaking resize modes
- Auto-resize mask and context_mask to match image size instead of raising errors
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Preserve noise_mask from latent dict when passing tiles to common_ksampler
(fixes crash: 'NoneType' object has no attribute 'shape' in symmetric_patchifier)
- Adjust keyframe_idxs pixel coords per tile for correct RoPE positioning
- Adjust guide_attention_entries (pre_filter_count, latent_shape) per tile
- Slice noise_mask spatially alongside latent samples for each tile
- Retrieve VAE scale factors from model for accurate coordinate offsets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Preserve all latent dict keys (including noise_mask) when splitting
batches, instead of only copying the samples tensor. This fixes
inpainting not working when using InpaintModelConditioning upstream.
Fixes#84
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use api.fetchApi() instead of raw fetch() so the request reaches
the correct backend URL in Desktop/Electron environments.
Fixes#88
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wrap the 5 Gemini/Vertex node imports in try-except so a websockets
version conflict (15.x vs 13.x) degrades gracefully instead of
preventing all 100+ nodes from loading.
Fixes#100
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When the inpainted image has a larger batch size than the original (e.g., batch_size=4
from KSampler), the stitch node now duplicates the original image to match and outputs
all variations instead of silently discarding extras.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a type-adapter node that takes a STRING input and outputs it as a
LoRA name connection type, enabling dynamic LoRA name selection via
string inputs from other nodes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add FL_KartelJobInput and FL_KartelJobOutput nodes for connecting
ComfyUI workflows to the Kartel Unified Backend. Input node receives
job metadata and parses standardized params_json with typed outputs
(strings, ints, floats, bools, images from URLs). Output node POSTs
generated images back to the backend webhook as multipart uploads.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FL_KsamplerPlus: Ensure crop region and tile size have at least 1 pixel
in each dimension to prevent F.interpolate crash with ControlNet (#27)
- FL_SDUltimate_Slices: Fix IS_CHANGED to return consistent hash instead
of NaN, enabling proper caching with downstream nodes (#73)
Closes#27Closes#73
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixed incorrect relative import path for widget.js that was causing
ComfyUI to crash with infinite browser refresh on startup.
Closes#99
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>