Commit Graph
288 Commits
Author SHA1 Message Date
JUNE dc0eecd1de Fix drag-and-drop support for newer ComfyUI frontend
Added compatibility details for drag-and-drop functionality on newer ComfyUI frontend versions, including supported drop actions.
2026-07-21 00:41:50 +09:00
constantine 6910a2b938 Fix: Image drag and drop 2026-07-21 00:17:17 +09:00
filliptm d2453f02a1 Resolve open Fill Nodes issues 2026-06-22 14:38:40 -05:00
filliptm 3078ffa3be Fix Fill Nodes PR follow-up edge cases 2026-06-22 14:23:20 -05:00
Machine Delusions f2ce4bd73c Merge pull request #108 from IrradiatedHaggis/squeeze-repair
Fix: Added safe resizing of masks with unexpected dimension types. Ad…
2026-06-22 12:19:47 -07:00
Machine Delusions 14ecca6442 Merge pull request #110 from Bisnis3d/Bisnis3d-patch-1
Fix FL System Check: render via DOM widget (no output on new frontend)
2026-06-22 12:19:40 -07:00
Esteban Lahoz d0644892b9 Refactor FL_SystemCheck to use DOM widget
Refactor FL_SystemCheck to use DOM widget for rendering system info. Updated runSystemCheck function to handle system info display and error handling.
2026-06-22 17:17:30 +02:00
IrradiatedHaggis 3704938bf0 Fix: Added safe resizing of masks with unexpected dimension types. Adjusted bool to floa to improve compatibility with Pytorch 2.12. 2026-06-21 22:58:17 -07:00
FillipandClaude Opus 4.7 2f0d24e4d8 ksamplers: preflight VAE auto-decode to fix video-model crashes (v2.9.1)
The FL Ksampler nodes (Plus, PlusV2, Basic, Sigma, ContextWindow,
XYZPlot) all run VAEDecode automatically against the sampled LATENT
to populate the IMAGE output socket. That works for SD / SDXL / Flux
where the sampler's latent shape matches what the paired VAE
expects, but it crashed on Wan / LTX-style packed-latent / video
models with an unhelpful low-level "expected 16 channels, got 128"
RuntimeError from the VAE's first conv layer.

Add a shared safe_vae_decode helper in nodes/ksamplers/_vae_helpers.py
that pre-checks samples.shape[1] against vae.latent_channels (a
public attribute ComfyUI's comfy.sd.VAE already sets per model).
On mismatch we skip the auto-decode entirely, log a single
warning line telling the user to wire an external VAE Decode node,
and return a 1x1 placeholder image so downstream IMAGE consumers
don't break. The LATENT output continues to flow unchanged in all
cases.

Routes all 6 ksampler nodes through the helper.

Bumps version 2.9.0 -> 2.9.1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 16:46:20 -07:00
FillipandClaude Opus 4.7 f86ab93fe9 Cleanup release: v2.9.0
README accuracy pass:
- Add 37 missing node rows across image / utility / ksamplers / ai /
  audio / vfx / prompting / wip tables.
- Add new Kartel category section (FL_KartelJobInput,
  FL_KartelJobOutput) plus a Table of Contents entry.
- Remove stale entries (FL_CodeNode, FL_HunyuanDelight) for nodes
  that no longer exist in the codebase.
- Update FL_SamplerStrings / FL_SchedulerStrings descriptions to
  reflect dynamic population via comfy.samplers.KSampler.SAMPLERS /
  .SCHEDULERS (per PR #105).
- Polish stub-node labelling (FL_BulletHellGame, FL_TetrisGame,
  FL_TimeLine) so they read as deliberate placeholders.
- Fix 15 broken images/nodes/*.png references whose filenames had
  drifted from the README; drop 3 lingering screenshot blocks that
  pointed at images that never existed.

Repo hygiene:
- Add Apache-2.0 LICENSE file and change pyproject.toml to
  license = {file = "LICENSE"} (silences Registry validation
  warning and matches the FL_VLM / FL_VoxCPM packs).
- Append node.zip / *.zip / temp_downloads/ to .gitignore so build
  artifacts stop showing up in git status.
- Demote google-genai import-failure prints to logger.warning /
  logger.info so they no longer spam stdout on every ComfyUI
  startup when google-genai isn't installed.

Bumps version 2.8.0 -> 2.9.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 14:13:14 -07:00
FillipandClaude Opus 4.7 e03a8e9012 Renormalize line endings to LF
Applied via `git add --renormalize .` after adding .gitattributes.
No semantic changes; only line-ending normalization in nodes/sup.py
and nodes/utils.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 14:05:53 -07:00
FillipandClaude Opus 4.7 00bab5ad0a Add .gitattributes for line-ending normalization
Sets * text=auto eol=lf to standardize line endings to LF in the
index, silencing the recurring "LF will be replaced by CRLF" warning
on every commit. Marks binary asset types so git treats them
correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 14:05:35 -07:00
Machine Delusions 21843c71c7 Merge pull request #105 from 11matt556/dynamic-sampler-scheduler-list
Dynamically populate Sampler/Scheduler string node
2026-06-12 12:51:12 -07:00
FillipandClaude Opus 4.7 42297ecf02 Add FL Show Text node and bump to 2.8.0
Displays a connected STRING input on the node via a flex-fill DOM
widget with header, length badge, monospace body, scrollbar styling,
and wheel-to-scroll capture so wheel events scroll the body instead
of zooming the canvas. The same string is passed through to the
output socket.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-12 11:50:40 -07:00
Matthew H. 381fe984b7 Dynamically populate Sampler/Scheduler string node
Updated FL_SamplerStrings.py and FL_SchedulerStrings.py to display all of the schedulers/samplers available to them.

Obviously that list can get quite long, but I just hide the ones I don't care about by wrapping the node in a subgraph.
2026-06-06 00:57:52 -04:00
Fillip d164833f16 Fix region overlay editor inputs 2026-06-04 16:25:47 -07:00
Fillip f7d027070a Bump Fill Nodes version to 2.7.8 2026-06-04 15:24:22 -07:00
Fillip 1d46ed5b48 Add numeric region position controls 2026-06-04 13:19:04 -07:00
Fillip 9e877a41a0 Show region overlay box dimensions 2026-06-02 15:21:51 -07:00
Fillip 3bb0fc56c4 feat: add context window ksampler 2026-05-26 23:47:41 -07:00
Fillip 26efe9c06a fix: make LTXV IC-LoRA guide mask optional 2026-05-18 20:19:45 -07:00
Fillip ca8fa940bb feat: add masked LTXV IC-LoRA guide 2026-05-18 20:03:36 -07:00
Fillip f6123583b8 feat: add Z-Image ControlNet patch loader 2026-05-18 17:08:48 -07:00
Fillip 4ea831d0c0 Fix video crop recompose bounds and channels 2026-05-10 18:11:40 -07:00
Fillip b915dcffea Add region PNG overlay node 2026-05-08 17:52:01 -07:00
FillipandClaude Opus 4.7 5bae402ead feat: add FL KSampler SEG family for segmented diffusion (v2.7.0)
Four-node pipeline that partitions an image or video into uniform-area
Voronoi regions, optionally captions each region via OpenRouter vision
models, encodes per-region prompts through CLIP, and composites
per-region diffusion via cascade-paint:

- FL KSampler SEG Regions: grid-init + Lloyd relaxation Voronoi cells,
  feathered overlapping soft masks for guaranteed coverage, on-node
  preview with overlay or coverage-heatmap modes
- FL KSampler SEG Captioner: per-region vision-LLM captioning via
  OpenRouter (gpt-4o-mini / gemini-flash / claude-haiku), with on-node
  thumbnail grid that fills as captions arrive
- FL KSampler SEG Encoder: caption -> per-region CONDITIONING via CLIP
  with prompt deduplication caching
- FL KSampler SEG: corner-anchored nearest-neighbor cascade-paint
  composite, auto-detects model latent_format.spacial_downscale_ratio
  so video models like LTX-Video (32x) and Hunyuan-Video (16x) work
  out of the box, supports both 4D image and 5D video latents

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 12:04:02 -07:00
FillipandClaude Opus 4.7 2c94c3b675 feat: add FL Depth Blur node (v2.6.0)
Depth-of-field blur driven by a paired depth map. Hyperparameters
expose focal plane, focal range, falloff curve (linear/quadratic/
smooth/exponential), asymmetric near/far blur strength, blur mode
(gaussian/box/disc with bokeh brightness boost), depth remap, and
depth pre-smoothing. Optional protect_mask input keeps masked
regions fully sharp with a feathered edge. Includes the on-node
preview toggle pattern from FL_PasteOnCanvas.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:15:26 -07:00
filliptmandClaude Opus 4.7 8f4d3592ec chore: set Manager icon to GitHub avatar (v2.5.2)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 13:08:27 -07:00
FillipandClaude Opus 4.7 bef991bcc0 feat: add FL KSampler Sigma + FL Fal GPT-Image-2 Edit nodes (v2.5.0)
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>
2026-04-24 19:47:12 -07:00
FillipandClaude Opus 4.6 fa28ec8ec7 fix(path-animator,image-picker): await submit POST before closing modal (v2.4.0)
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>
2026-04-10 17:27:02 -07:00
FillipandClaude Opus 4.6 c05813d7bc chore: bump version to 2.3.9
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 17:20:26 -07:00
FillipandClaude Opus 4.6 1566e1318e feat(path-animator): add image input + blocking UI with Continue/Cancel
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>
2026-04-10 16:46:05 -07:00
FillipandClaude Opus 4.6 3a6598f247 remove FL_CodeNode from node pack (v2.3.8)
Remove the FL Code Node utility node entirely — Python backend,
JS frontend, init registration, and node description entry.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:19:48 -07:00
FillipandClaude Opus 4.6 3d71d2cfc1 feat: add FL CoTracker and FL Create Shape Image On Path nodes (v2.3.7)
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>
2026-04-02 13:15:47 -07:00
FillipandClaude Opus 4.6 290d6c241e feat: add FL_ImageReplace node for batch image/mask replacement (v2.3.6)
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>
2026-04-01 17:52:36 -07:00
FillipandClaude Opus 4.6 f41b1c9c96 feat: add FL_AudioFrameCalculator node, optimize ImageListToImageBatch (v2.3.5)
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>
2026-03-13 15:03:08 -07:00
Machine DelusionsandClaude Opus 4.6 078ed5b9e6 feat: add FL_ImageToMask node, fix InpaintCrop force_square + auto-resize masks (v2.3.4)
- 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>
2026-03-08 00:17:18 -08:00
FillipandClaude Opus 4.6 1fc6ea0b0d feat: FL_KsamplerPlus 5D video latent tiling with LTX2 guide frame support (v2.3.3)
- 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>
2026-03-06 19:27:06 -08:00
FillipandClaude Opus 4.6 49be8e96f9 Fix XYZ KSampler losing noise_mask during inpainting
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>
2026-02-28 22:03:15 -08:00
FillipandClaude Opus 4.6 5f51c8252f Fix SystemCheck button not working in ComfyUI Desktop
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>
2026-02-28 21:54:18 -08:00
FillipandClaude Opus 4.6 0211698ffa Fix google-genai import crash taking down entire node pack
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>
2026-02-28 21:23:58 -08:00
FillipandClaude Opus 4.6 6946cb450d feat: FL_Inpaint_Stitch batch support for inpainted variations (v2.3.2)
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>
2026-02-27 19:33:09 -08:00
FillipandClaude Opus 4.6 f139bc15b4 feat: add FL_StringToLoraName utility node (v2.3.1)
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>
2026-02-27 18:27:08 -08:00
FillipandClaude Opus 4.6 12c5bcded7 feat: add Kartel backend integration nodes (v2.3.0)
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>
2026-02-17 18:58:12 -08:00
Fillip 5f95113fc5 Update the file driven by edit node. 2026-01-26 20:03:22 -08:00
filliptmandClaude Opus 4.5 554cde128f fix: KsamplerPlus ControlNet zero-dimension crash and Slices cache invalidation
- 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 #27
Closes #73

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 04:42:06 -08:00
filliptmandClaude Opus 4.5 ab41048628 fix: correct import path in fl_code_node.js causing infinite refresh loop
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>
2026-01-19 04:26:08 -08:00
Fill 487fded794 version bumpb 2025-12-03 16:13:49 -08:00
Fill 82f6242b7f remove delight node. not needed in my pack 2025-12-03 12:34:53 -08:00
Fill 58326650aa tweaks 2025-12-03 12:11:53 -08:00