7 Commits
Author SHA1 Message Date
IsulionandClaude Opus 5.5 96553dee1c feat: v6.1.0 — Censored Part & Prompt Vault nodes, selector RNG, hardening
New nodes:
- Isulion Censored Part: blur/pixelate/black bar/noise over a mask and/or
  a percent rectangle; accepts 2D/3D/4D masks and fails closed (blacks the
  item out) instead of passing an uncensored image through
- Prompt Vault Save/Load: named prompt library stored in ComfyUI's user
  directory (outside the checkout, so updates never conflict), seeded from
  prompt_vault.example.json; Load re-runs when the vault changes

Refactor:
- SimpleSelectorNode base: ~20 selector nodes use an instance RNG instead
  of reseeding the global random module (same seed => same output)
- Theme handlers declare DISPLAY_NAME; theme package auto-discovers modules
- __init__ imports node classes directly

Fixes:
- net_utils: re-validate every redirect hop, unwrap IPv4-mapped IPv6,
  block NAT64 and all non-global addresses (SSRF)
- Multiple Prompt Generator: no duplicate prompts for themes listed in two
  categories; 6 themes missing from every category are now reachable
- Shutdown node: parameter renamed to match its "any" input (TypeError)
- ConfigManager: deterministic (sorted) merge order, warns on key
  collisions; drop stale space_colony copy from tropical_paradise_config
- Mega Prompt V3: seed honored again with randomize=disable

Breaking: Civitai api_key widget removed (use CIVITAI_API_TOKEN), absolute
paths refused by Load Images, Negative Prompt pools de-duplicated (shorter
"strict" output), Dynamic Random theme order is now alphabetical.

Tooling: pytest suite (51 tests), GitHub CI (compileall, pytest, ruff),
ruff config, uv.lock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:35:56 +02:00
Isulion c11c86dc20 fix(collage): port react-IsuCollage layout algorithm with native image sizes
- IsuCollageNode: faithful port of ImageProcessor.calculateLayout
  (float rects, per-row scaling factor) validated bit-exact against the
  TypeScript original over 63 cases; optional 'width' widget (default 1024)
- load_images_node: stop padding images to a uniform size (that destroyed
  aspect ratios and leaked black bands into tiles); output is now an
  OUTPUT_IS_LIST of native-size tensors, matching the React app behavior
- IsuCollageNode: INPUT_IS_LIST to receive the full list in one call;
  unwrap scalar widgets that ComfyUI also wraps in lists (seed/width)
- Rasterization snaps float rects via cumulative rounding so the <=1px
  error spreads across all tiles instead of the last one; rows always
  fill the canvas width exactly
2026-08-22 16:25:42 +02:00
Isulion fc903d4acf refactor!: v6.0.0 — seeding, sandbox FS, decorator registry, security
Breaking changes:
- Same seeds now yield different prompts than 5.x (reproducibility fixed)
- Civitai Trending: removed broken 'model' filter widget
- Shutdown node is a no-op unless ISULION_ENABLE_SHUTDOWN=1

Highlights:
- Seeding: all 109 theme handlers share the seeded ConfigManager PRNG
  (284 global random.* call sites migrated); same seed => same prompt
- Theme registry rewritten with @register_theme decorators; removed
  HANDLER_CLASS_NAMES_MAP, star-imports and globals() lookups
- Shared ThemeRegistry singleton: INPUT_TYPES no longer re-reads ~100
  JSON files per call (2.6ms -> 0.003ms cached)
- load_images_node: paths sandboxed to ComfyUI input dir, deterministic
  sha1 IS_CHANGED, PIL context managers, no bare excepts
- Overlay node: full batch support, base channel count preserved
  (RGB in -> RGB out), pass-through on internal errors
- QR node: vectorized module drawing (np.kron), logging instead of prints
- New net_utils.safe_download: http(s)-only scheme + 20MB cap for URL
  fetching nodes (SSRF/decompression-bomb hardening)
- Removed unused soft_empty_cache() calls, dead code (culinary_handler,
  IsulionCategorySelector, orphan Core_Nodes/config dir, dead js ext),
  invalid WEB_DIRECTORY; fixed display-name mappings
- s300 handler: fixed call to non-existent config method (latent crash)
- Added MIT LICENSE and requirements.txt (requests)
2026-08-22 15:16:55 +02:00
Isulion 0fd506b15f Fix Multiple Prompt Generator + Factorisations 2026-07-30 23:39:45 +02:00
Isulion 0685a94a65 Fix Multiple Prompt Generator 2026-07-29 20:21:57 +02:00
Isulion b4fdbeb66f Fix Multiple Prompt Generator 2026-07-29 20:10:42 +02:00
Isulion 38b88178a1 fix directory structure 2024-12-12 12:32:48 +01:00