113 Commits
Author SHA1 Message Date
Maxed-Out-99 a5db511a70 Simplify mask preview defaults
Removes the obsolete pass_through input from ImageAndMaskPreviewMXD and resets the default mask_color to black. This aligns the node behavior with its current always-return-composite implementation and updates the schema baseline snapshot.
2026-09-29 19:18:02 -07:00
Maxed-Out-99 58066adbde Add animated live preview panel and LTX fallback
This adds an opt-in sampler preview system that streams animated frames through a docked panel, saves finished previews to output/live_previews, and includes an automatic taeltx fallback for LTX 2.3. It also updates the schema dump for newer ComfyUI cores, wires the shared live preview hooks into startup, and switches the project docs/license metadata to GPL-3.0.
2026-09-29 11:46:04 -07:00
Maxed-Out-99 422eae9e5c Update pyproject.toml 2026-09-19 04:45:41 -07:00
Maxed-Out-99 fe6cb32956 Add Krea2 Edit nodes & improve video/web tooling
Add Krea 2 Edit support (nodes/krea.py, nodes/krea2_edit_core.py) and vendor Apache-2.0 notice (third_party/ComfyUI-Krea2Edit/LICENSE + THIRD_PARTY_LICENSES.md). Harden Power LoRA loader validation and error behavior (loraloader_mxd/power_lora_loader_mxd.py + web power_lora_base UI error styling). Extend WAN 2.2 video features: flexible frame removal, LoadVideoComponents, CreateAndSaveVideo node, and keep backward-compatible LoadVideoMXD (nodes/wan22/video_ops.py). Improve web UX: smarter run_folder loop, robust zip workflow importer (web/nodes/run_folder.js, web/vendor/zip_loader/zip_loader.js, WEB.md). Bump package version and refresh node schema baseline.
2026-09-19 00:39:23 -07:00
Maxed-Out-99andClaude Opus 5 48981e19d3 Make the canvas lora rows work under Nodes 2.0; drop the DOM rewrite
power_lora_dom.js existed because a canvas custom widget could not repaint
itself inside core's WidgetLegacy wrapper, so toggling a lora or nudging a
strength changed the value with no visible feedback. Frontend 1.48.7's
WidgetLegacy.vue now assigns `widget.triggerDraw`, documented in litegraph's
widget types as the compatibility hook for "widgets implementing the draw
method when displayed in non-canvas renderers". That is the missing piece, so
the parallel 528-line DOM implementation is no longer needed.

- mxd_nodes2.js: add redrawWidget()/redrawWidgets(). Optional-call triggerDraw,
  so both are no-ops in classic mode and on frontends that lack it.
- MxdBaseWidget.mouse(): repaint after every pointer event. Also fix its
  "pointer left the widget" test, which compared node-relative bounds against
  row-relative coordinates under Nodes 2.0 and swallowed clicks.
- power_lora_base/loader: repaint on the mutations that happen outside a
  pointer handler — slot menu, toggle-all, async lora info, Show Strengths.
- Delete power_lora_dom.js, mxd_power_lora.css, and the MXD.PowerLora.RowStyle
  setting. None of them were ever published, so no workflow or setting breaks.

No Python touched; harness still reports 65 nodes identical.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 06:51:40 -07:00
Maxed-Out-99andClaude Opus 5 0836bfd573 Keep the three published latent node keys loadable
Load Latent MXD, Load Latent Batch MXD and Save Latent MXD kept their display
names through the VACE/I2V consolidation but changed mapping key
(LoadLatent_WithParams -> LoadLatent_I2V_MXD, and so on). ComfyUI matches saved
workflows by key, so on the next release a workflow built against the published
version would show a red missing-node box despite a node of the same name
shipping in the pack.

Registers the three old keys as thin DEPRECATED subclasses of the current
classes. Deprecated nodes are kept out of the frontend search menu, and the
aliases get no display name, so old workflows load silently without adding
duplicate entries to node search.

65 registered keys now = 62 real nodes + 3 hidden aliases. Re-baselined.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 05:58:03 -07:00
Maxed-Out-99andClaude Opus 5 08d6c98cfe Move Smart Model Loaders out to their own repo; bump to 3.0.0
Core ComfyUI's memory handling has improved enough that GGUF is no longer a
default need, so the five Smart loader nodes (UNET + CLIP/Dual/Triple/Quad)
move to the standalone Smart-Model-Loaders-MXD pack.

67 -> 62 nodes. Schema re-baselined intentionally.

Side effect worth noting: those nodes carried the pack's only pip dependencies
(gguf, sentencepiece, protobuf), so requirements.txt is deleted. ComfyUI-MaxedOut
now installs with nothing beyond what ComfyUI itself ships.

Version 2.0.0 -> 3.0.0. Major, because this release removes 15 nodes in total
and any workflow using one will show it as missing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 05:53:35 -07:00
Maxed-Out-99andClaude Opus 5 7f47c9a9a8 Split out four sibling packs; drop dead experiments; add MIT license
Trims the pack to its core: 77 nodes -> 67. Schema re-baselined intentionally
(scripts/node_schema_baseline.json committed with this change).

Moved to their own repos (each a working standalone pack):
- Live-Preview-MXD   all live-preview code, incl. the taeltx LTX 2.3 decoder
- Prompt-Library-MXD the 3 prompt-library nodes, storage path unchanged
- Spell-Check-MXD    a standalone copy of the spellchecker
- Dump-MXD           tiled video upscale, FFGO, Krea 2 Sage Attention, and the
                     abandoned LTX2 lora loader

Removed here (10 nodes): Combine 2 Images / Fore + Back FFGO, Krea 2 Sage
Attention, LTX2 Lora Loader, LTX Preview, the 3 Prompt Library nodes, and both
Tiled Wan 2.2 Upscale nodes.

Also removes the `ltx_preview` widget from both LTX samplers. It was the last
widget on each, so saved workflows lose it without shifting any other value,
and Live-Preview-MXD previews every sampler with no widget to set.

Spellcheck deliberately still ships here as well as standalone. Both copies
claim window.__mxdPromptSpellcheckActive, so installing both attaches it once.

Other:
- Add MIT LICENSE. pyproject.toml already referenced a LICENSE file that did
  not exist; pyproject itself is untouched, so this does not trigger a
  registry publish.
- Gitignore CLAUDE.md, AGENTS.md, .claude/ and TODO.txt as local working
  notes. The files stay on disk, they just stop being pushed.
- Delete TODO.txt (both items are resolved by this change).
- Drop the now-dead addDomLtx2StrengthRow helper and its CSS.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 05:28:11 -07:00
Maxed-Out-99andClaude Fable 5 7306278ccd Fix stale path references in comments after the restructure
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 06:47:04 -07:00
Maxed-Out-99andClaude Fable 5 59ea942a80 Add AI-facing docs: CLAUDE.md router, WEB.md, verify skill, docstrings
- CLAUDE.md: routing table (what to read for which node domain), the
  workflow-compatibility contract, harness commands, environment facts,
  and every import-time side effect.
- web/WEB.md: lib/nodes/vendor layer map, lazy CSS injection, power-lora
  base relationship, import-depth conventions.
- AGENTS.md now tracked (was gitignored) and points at CLAUDE.md.
- .claude/skills/verify-nodes: one-shot verification skill for any
  future agent session.
- Module docstrings on the remaining split modules; last emoji comment
  and stale path references cleaned.

Schema 68 identical; web checker clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 06:45:50 -07:00
Maxed-Out-99andClaude Fable 5 4cb19be2e0 Restructure web/ into lib+nodes+vendor; merge power lora loader forks
- web/lib/: the shared rgthree-derived layer (mxd_* utils, dialogs, api,
  runtime) + its CSS, moved as a unit.
- web/nodes/: one extension file per node/feature, _mxd suffix dropped.
- web/vendor/zip_loader/: vendored zip import addon.
- index.js explicitly imports every module; loraloader_mxd_entry.js
  folded into it and deleted.

Power Lora Loader merge: new web/nodes/power_lora_base.js holds the
shared node machinery, header row, and single-strength lora row widget.
power_lora_loader.js (dual model/clip strengths) and
ltx2_power_lora_loader.js (per-layer strength rows) are now thin
subclasses (~450 duplicated lines removed). Serialization formats,
widget names, extension names, and node targets unchanged.

better_combos.js scoped to MXD latent loaders only: removed the
pysssss CheckpointLoader/LoraLoader patching (already disabled behind
ENABLE_PYSSSS_NODE_ENHANCEMENTS=false, so provably inert), the dead
' MXD' alias config entries, and the no-op refreshComboInNodes wrapper.

scripts/check_web.py clean; node schema unchanged (68 identical).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 06:41:35 -07:00
Maxed-Out-99andClaude Fable 5 0447eb3172 Prune dead code and dedupe shared helpers into nodes/shared/
- nodes/shared/{paths,metadata,routes}.py: single copies of
  _sort_paths_newest_first, _strip_counter, _safe_json_loads, plus a
  guarded register_get_route helper.
- wan22/latent_io.py: lift triplicated _coerce_enum, duplicated
  _strip_counter and the two ~120-line _extract_sd3_shift methods to
  module level (~180 duplicated lines removed).
- All five /mxd/* routes now register through the guarded helper, so a
  missing PromptServer can no longer break node registration
  (wan22 previously accessed PromptServer.instance.routes unguarded at
  module scope).
- loraloader_mxd/server/utils_server.py: drop the never-called rgthree
  /rgthree/ static-page routes and is_param_truthy; keep get_param /
  is_param_falsy which routes_model_info.py imports.
- Delete inert web/addons/zip_loader/__init__.py.

Schema harness: 68 nodes identical to baseline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 01:07:31 -07:00
Maxed-Out-99andClaude Fable 5 2df2c8fd79 Restructure Python into domain packages (move-only, schema-verified)
Split the three monoliths into nodes/ domain modules:
- maxedoutnodes.py -> nodes/{latents,resolution,prompts,masks,media_io}.py
- wan22nodes.py    -> nodes/wan22/{buckets,latent_io,i2v,video_ops}.py
- ltxnodes.py      -> nodes/ltx/{latents,samplers,preview}.py
  (LTX_Image_Scaler_MXD moved from the Wan file to nodes/ltx/latents.py)
- mediacomparers.py -> nodes/comparers.py
- checkpoint_loader_mxd.py + save_checkpoint_mxd.py -> nodes/checkpoints.py
- combine_materials_ffgo_mxd.py -> nodes/ffgo.py
- video_preview_mxd.py -> system/live_preview.py
- model_paths_autoregister_mxd.py -> system/model_paths.py
  (model_storage_config.json still resolved at repo root)

All node mapping keys, display names, categories, inputs, routes, and
events unchanged: scripts/dump_node_schema.py --compare reports 68 nodes
identical to the pre-refactor baseline.

Provably-dead code dropped during the move (verified unreachable):
- _add_mxd_aliases() no-op alias pass (every key already contains MXD)
- unreachable code after return in WAN22_I2V_Image_Scaler_MXD.scale and
  Frames_Select_StartEnd_MXD.main, plus the orphaned _pick_bucket method
- unused BUCKETS_480/BUCKETS_720 module constants
- mediacomparers' unused WEB_DIRECTORY/__all__ declarations

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 01:01:30 -07:00
Maxed-Out-99andClaude Fable 5 064c29c465 Add refactor-safety harness: node schema snapshot + web static checker
scripts/dump_node_schema.py imports the pack against the installed core
and dumps all 68 node schemas; --compare diffs two dumps (dynamic
file/folder combos normalized to presence-only for determinism).
scripts/check_web.py statically verifies JS imports, node-name
references, and CSS paths. Baseline captured pre-restructure.

Also removes a stale 'VideoComparerMXD' entry from image_comparer.js
(real key is 'Video Comparer MXD'; the entry never matched).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 00:45:30 -07:00
Maxed-Out-99andClaude Fable 5 9cd58baf89 Checkpoint: full working state before repo overhaul
Snapshot of ~1 year of accumulated work prior to restructuring:
smart loaders merge, checkpoint loader/saver, live preview, model
storage auto-registration, LTX2 power lora loader, and misc web UI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 23:05:13 -07:00
Maxed-Out-99 514e7a72ac Update pyproject.toml 2026-06-24 14:06:54 -07:00
Maxed-Out-99 ac82ed7bea Add LTX nodes, VACE 2.2 support & UI tweaks
Add a new ltxnodes module implementing LTX video latent nodes, samplers, and a taeltx-based video previewer (auto-download/load). Update package init to expose ltxnodes and adjust loraloader model list sorting for loras. Extend maxedoutnodes with a BBOX detector batch node and an Image+Mask preview node plus color parsing/helpers. Add VACE 2.2 latent save/load support and related helpers in wan22nodes (trim_latent sidecar, loaders), and enhance WAN 2.2 scaler logic to support 1024×1024 square buckets, aspect_mode options, and auto-square behavior. Add/modify several web UI assets and minor project housekeeping (.gitignore local_notes).
2026-06-24 14:04:07 -07:00
Maxed-Out-99 b0842cfdd7 Add MXD utilities: LoRA, latents, LTX scaler
Multiple MXD improvements and additions:

- loraloader_mxd/power_lora_loader_mxd.py: import comfy modules; add robust bool/float coercion helpers; safer parsing of LORA_* inputs; apply LoRA without CLIP when needed; better error reporting.

- maxedoutnodes.py: Add embed_workflow optional flag to SaveImage_MXD and filter extra PNG info when workflow embedding is disabled; add new Extract Workflow From Image MXD node to extract/save workflow JSON from image metadata; register/display name updates.

- pyproject.toml: bump package version 1.9.0 -> 1.9.1.

- wan22nodes.py: many improvements around latent file handling and prompt metadata:
  - sort latent files newest-first and list latent subfolders by latest mtime.
  - accept a hidden unique_id and attach source KSampler metadata to saved latents.
  - introduce robust graph parsing utilities to find KSampler nodes, collect upstream links and extract params reliably (with meta fallbacks).
  - use the new utilities across latent loading/saving nodes.
  - add LTX Image Scaler MXD node for LTX Video workflow (32-aligned resizing/cropping and tier selection).
  - remove wan_svi_first_last_mxd.py (deleted file).

- web/js/betterCombos.js: add MXD alias constants and node configs for new/updated latent nodes.

- web/js/image_comparer.js: change extension hooking to patch nodeType.prototype directly (avoids boundClass naming issue), add comparer_mode combo and ensure stored nodes keep correct title.

Overall: improves robustness of LoRA application, latent file discovery/metadata, prompt graph parsing for reproducible sampler params, adds an LTX scaler node and workflow extraction helper, and updates frontend wiring for these MXD features.
2026-05-04 13:20:06 -07:00
Maxed-Out-99 e35ec29f4f Add CharacterPrompts nodes and web UI
Introduce a new CharacterPrompts extension: adds node implementations (Character Create, Character Edit/Delete, Character Prompt Encode) with storage, resolver, and README. Adds persistent character library storage (default/ComfyUI-CharacterPrompts-MXD/characters.json), server route (/mxd/characters/list), and a web UI integration (mxd_character_prompts.js + import) to refresh/pick characters in the graph. Update root __init__ to register the new module. Also remove the Grow Blur Mask MXD node from maxedoutnodes, and bump package version to 1.9.0 in pyproject.toml.
2026-02-27 08:42:22 -08:00
Maxed-Out-99 f7c8bbcc75 Update readme 2026-02-26 16:26:13 -08:00
Maxed-Out-99 2b4b1a92f2 Add workflow images and bump version to 1.8.8
Add free workflow assets and update README to link and showcase them. Embedded SDXL and Flux free workflow links and images (assets/sdxlfree.png, assets/fluxfree.png) in README.md. Bump package version in pyproject.toml from 1.8.7 to 1.8.8.
2026-02-26 16:22:13 -08:00
Maxed-Out-99 05a32c251d Update README and bump version to 1.8.7
Revise README to clarify project mission and add an Overview section, ComfyUI Manager install instructions, and refined node descriptions (Lora Loader, Image/Video Comparer, Video Comparer, empty-latent presets, WAN 2.2 helpers). Rework Credits/acknowledgements and other wording for clarity. Also bump package version in pyproject.toml from 1.8.6 to 1.8.7.
2026-02-26 15:32:02 -08:00
Maxed-Out-99 2f426024a1 Update pyproject.toml 2026-02-26 15:08:53 -08:00
Maxed-Out-99 2162606f65 Support structured LoRa info; add WAN22 tools & UI
Multiple updates across the project:

- .gitignore: ignore AGENTS.md
- README: refreshed project README with badges, install instructions and node highlights
- loraloader_mxd/server/utils_info.py: add structured local LoRA storage (more_info/<model>/lora-info.json) with README creation, legacy .rgthree-info.json fallback, and updated get/delete/save helpers to support LoRA-specific layout while preserving backward compatibility
- maxedoutnodes.py: add SmartCropByMaskMXD node (square crop centered on mask), register it in NODE_CLASS_MAPPINGS and display name mappings
- wan22nodes.py: add validation and resize helpers (_validate_image_batch_4d, _resize_to_explicit_resolution), FPS resampling (_resample_video_frames_to_fps), WAN22 match-resolution node (WAN22_I2V_Match_Resolution_MXD), expose fps_mode/target_fps in video prep nodes, keep legacy "Safe Auto" behavior while simplifying UI tier options
- web/js/betterCombos.js: small UI/identifier changes (rename extension id/name to mxd, add alias for LoadLatent, disable legacy pysssss enhancements behind flag, tweak folder arrow glyphs)
- web/mxd_utils_menu.js: replace LoRA chooser with a stylistic tree-style chooser (folder grouping, toggle behavior, styles injection, callback normalization)

These changes introduce structured local LoRA metadata handling, new image/video utilities and nodes for WAN 2.2 workflows, and front-end improvements for LoRA choosing and loader UI.
2026-02-26 15:08:28 -08:00
Maxed-Out-99 07d4c7fa90 Isolate comparer node classes to avoid overwrite
Bump package version to 1.8.5 and ensure each image comparer node gets its own override class. Added NODE_OVERRIDE_CLASSES map and changed MxdImageComparer.setUp to create/cache a per-node class (by nodeData.name), assign nodeData to it, and register that bound class—preventing static nodeData from being overwritten when multiple comparer nodes are registered.
2026-02-23 16:10:18 -08:00
Maxed-Out-99 3ca3859588 Remove BOMs and bump version to 1.8.3
Strip stray BOM/hidden characters from multiple Python and web source files to normalize file encoding and avoid lint/parse issues. Also bump package version from 1.8.2 to 1.8.3 in pyproject.toml. No functional code changes were made.
2026-02-22 09:11:58 -08:00
Maxed-Out-99 5e18e8d7f7 Update pyproject.toml 2026-02-22 08:27:07 -08:00
Maxed-Out-99 7fb6cec7ea Add video support and WAN22 video prep + SVI node
Add video handling and prep utilities across nodes and UI.

- mediacomparers.py: add MxdVideoComparer (saves previews, shows A/B videos) and import folder_paths/os/time; register the new node and display name.
- wan22nodes.py: refactor WAN 2.2 scaling with _wan22_pick_bucket and _wan22_scale_image_core, add _select_frames_start_end, expose faster passthrough for scale(), add video prep nodes (WAN22_I2V_Video_Prep_MXD and advanced variant) that scale videos and return start/end/selected frames, improve CombineVideos_MXD audio handling to support multiple audio payload shapes and batching, and mark PreviewVideoMXD as an output node; register new nodes and display names.
- Add new node file wan_svi_first_last_mxd.py: WAN 2.2 First/Last I2V SVI node that prepares SVI conditioning (anchors, padding, masks) and returns latent samples.
- __init__.py: include wan_svi_first_last_mxd in dynamic imports so new node is discovered.
- web/js/image_comparer.js: extend UI to support video/media (playback, sizing, URL builder, mixed image/video lists) and update widget rendering logic for media types.
- pyproject.toml: bump package version to 1.8.1.

These changes add end-to-end video support (preview, compare, prep for WAN 2.2 workflows), improve robustness of audio concatenation, and introduce an SVI-first/last conditioning node for WAN pipelines.
2026-02-22 08:22:25 -08:00
Maxed-Out-99 a9fd90d608 Integrate Lora Loader MXD into MaxedOut
Add integrated Lora Loader MXD support and frontend. Introduces a new loraloader_mxd package (constants, logging, power node, prompt utils, server API routes, model info utils, server helpers, general utils, and userdata migration/IO). Adds many web frontend files for the MXD UI and registers the node in the top-level __init__.py. Updates README with merge/migration notes and adds userdata/ to .gitignore. Also includes minor comment/tuning change in maxedoutnodes.py and small updates to existing web/index.js and project metadata.
2026-02-21 18:21:54 -08:00
Maxed-Out-99 c5847f70d3 Update pyproject.toml 2026-02-11 18:07:32 -08:00
Maxed-Out-99 4016e1e159 Update pyproject.toml 2026-02-11 18:04:43 -08:00
Maxed-Out-99 5fa9958b9c Update pyproject.toml 2026-02-11 18:00:18 -08:00
Maxed-Out-99 da491e4572 Update pyproject.toml 2026-02-11 17:50:44 -08:00
Maxed-Out-99 76a48f4751 Update pyproject.toml 2026-02-08 08:52:14 -08:00
Maxed-Out-99 181e818f66 Make comfy_api optional & guard node registration
Wrap direct comfy_api imports in try/except and introduce HAVE_COMFY_API flags so the package can load without comfy_api present. Update __init__.py to dynamically and safely import node modules and merge NODE_CLASS_MAPPINGS / NODE_DISPLAY_NAME_MAPPINGS. Conditionally define and register nodes that depend on comfy_api (Qwen image-edit nodes, WAN 2.2 video nodes, Combine/Load/Save/Preview video nodes) so they are only available when comfy_api is present. Add helper to auto-add " MXD" aliases for node names and to merge display mappings. Bump package version to 1.6.9 and add diagnostic prints when comfy_api imports fail.
2026-02-07 19:55:19 -08:00
Maxed-Out-99 dc3130bd21 Add Grow Blur Mask MXD node and bump version
Introduce a new Grow Blur Mask MXD node that expands/contracts a mask and blurs only the expanded ring while keeping the core solid. The node normalizes mask inputs (supports HxW or BxHxW), handles positive grow_blur by dilating and blurring the ring (Gaussian blur via PIL.ImageFilter) and negative values by eroding. Implementation uses torch.nn.functional for morphological ops and processes blur on CPU per-batch item, clamping outputs to [0,1]. Also update NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS to register the new node, and bump package metadata in pyproject.toml (name capitalized to "MaxedOut" and version -> 1.6.8). Files changed: maxedoutnodes.py, pyproject.toml.
2026-02-06 03:46:42 -08:00
Maxed-Out-99 7e46538129 Update resolution presets and bump version
Replace portrait resolution presets with standard 3:2 landscape variants in maxedoutnodes.py (add 1536x1024 and 1216x832; remove corresponding portrait entries). Bump package version in pyproject.toml from 1.6.6 to 1.6.7.
2026-01-30 21:09:14 -08:00
Maxed-Out-99 109dfdb556 Add DummyNodeMXD and zip_loader web addon
Introduced DummyNodeMXD for workflow missing-node testing in maxedoutnodes.py. Added a new web addon 'zip_loader' with JSZip and loader scripts to support zip file handling in the web interface. Bumped project version to 1.6.6 in pyproject.toml.
2026-01-28 18:09:18 -08:00
Maxed-Out-99 ad91727749 Prevent persisting preview image paths in workflow JSON
Updated image_comparer.js to avoid saving preview image paths when serializing the workflow, ensuring that no unnecessary image data is stored. Bumped project version to 1.6.4 in pyproject.toml.
2026-01-26 21:04:46 -08:00
Maxed-Out-99 5230d74024 Add GetLatentSizeMXD node to extract latent image size
Introduced the GetLatentSizeMXD node to retrieve image width and height from a latent input. Updated NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS to register the new node. Bumped version to 1.6.3 in pyproject.toml.
2026-01-22 17:18:48 -08:00
Maxed-Out-99 79571f5ca5 Update pyproject.toml 2026-01-22 16:52:13 -08:00
Maxed-Out-99 f158e57f16 Add Flux2EmptyLatentImage node for Flux 2 compatibility
Introduces the Flux2EmptyLatentImage class to generate empty latent batches compatible with Flux 2, supporting selectable resolutions and batch sizes. Updates NODE_CLASS_MAPPINGS and NODE_DISPLAY_NAME_MAPPINGS to register the new node.
2026-01-22 16:51:56 -08:00
Maxed-Out-99 159ae79e69 Remove optional test node imports from __init__.py
Eliminates the conditional import and mapping updates for test nodes in __init__.py, simplifying the initialization logic. Bumps package version to 1.6.1 in pyproject.toml.
2026-01-20 18:49:14 -08:00
Maxed-Out-99 704b3a3927 Update pyproject.toml 2026-01-17 16:05:58 -08:00
Maxed-Out-99 5d586bc253 Handle missing testnodes module gracefully
Wrap import of testnodes in a try-except block to avoid errors when the testing package is not present. This allows non-development installs to function without optional test nodes.
2026-01-16 21:56:40 -08:00
Maxed-Out-99 43b3cd8076 Add Qwen image edit nodes and update outputs
Introduces QwenImageEditSingleMXD and QwenImageEditTripleMXD nodes with support for outputting both conditioning and latent tensors. Removes the ControlNetPreprocessorSelector node. Updates display names and output schemas for Qwen nodes, and ensures image previews are shown in the UI for MxdImageComparerSave. Adds a 'testing/' directory to .gitignore and integrates test node mappings in __init__.py.
2026-01-16 21:41:58 -08:00
Maxed-Out-99 8672eed53b Fix import paths in image_comparer.js
Updated relative import paths for app, api, and ComfyWidgets modules to correct directory structure.
2026-01-15 14:10:33 -08:00
Maxed-Out-99 e8ef3e338a Add Qwen Image Edit Single MXD node
Introduces the QwenImageEditSingleMXD node for single-image editing with prompt and optional image input, supporting reference latents and VAE encoding. Updates node mappings and display names accordingly. Bumps project version to 1.5.1.
2026-01-15 14:02:04 -08:00
Maxed-Out-99 3641c2ab57 Add media comparer node and concise descriptions
Introduces mediacomparers.py with an Image Comparer + Save MXD node, updates __init__.py to register new node mappings, and adds a frontend widget (image_comparer.js) for image comparison. Refactors and shortens DESCRIPTION strings for clarity across maxedoutnodes.py and wan22nodes.py, adds a ControlNet Preprocessor Selector node, and updates web/index.js to include the new comparer widget.
2026-01-15 13:01:04 -08:00
Maxed-Out-99 bfc42f7620 Add 'Save Only' mode to SaveImage_MXD node
Introduces a new 'Save Only' mode to the SaveImage_MXD node, allowing images to be saved without displaying previews in the UI. Updates the mode selection tooltip for clarity. Bumps project version to 1.4.0.
2025-12-18 16:52:07 -08:00