diff --git a/Rayko_Intermediate_Spline_Mask.py b/Rayko_Intermediate_Spline_Mask.py index d2bcdf7..e7880bc 100644 --- a/Rayko_Intermediate_Spline_Mask.py +++ b/Rayko_Intermediate_Spline_Mask.py @@ -27,7 +27,7 @@ try: SERVER_AVAILABLE = True except ImportError: SERVER_AVAILABLE = False - print("\033[91m[InSPLINE 🦊] Warning: Server modules not available.\033[0m") + print("\033[91m[InSPLINE ] Warning: Server modules not available.\033[0m") PENDING_DECISIONS = {} @@ -49,6 +49,14 @@ class RaykoIntermediateSplineMask: } return inputs + # 🔹 ДОБАВЛЕНО: Принудительный запуск ноды при каждом Queue + # ComfyUI кэширует выводы, если входы не меняются. + # Для интерактивных нод с паузой это ломает логику. + # Возврат time.time() гарантирует, что кэш всегда будет считаться "устаревшим". + @classmethod + def IS_CHANGED(cls, **kwargs): + return time.time() + RETURN_TYPES = ("IMAGE", "MASK") RETURN_NAMES = ("image", "mask") FUNCTION = "create_mask" @@ -144,7 +152,7 @@ class RaykoIntermediateSplineMask: else: print(f"[InSPLINE 🦊] Less than 3 points - empty mask") except Exception as e: - print(f"[InSPLINE 🦊] Error parsing coordinates: {e}") + print(f"[InSPLINE ] Error parsing coordinates: {e}") mask_tensor = torch.from_numpy(mask_np).unsqueeze(0) return (image, mask_tensor) diff --git a/__init__.py b/__init__.py index bfbc001..fe10c33 100644 --- a/__init__.py +++ b/__init__.py @@ -29,7 +29,7 @@ IGNORED_MODULES: Set[str] = {'__init__.py'} REQUIRED_MODULES: Set[str] = set() PACKAGE_DISPLAY_NAME = "ComfyUI_RaykoStudio" -__version__ = "0.20.0" +__version__ = "0.20.1" def load_modules(): print(f"🦊 {PACKAGE_DISPLAY_NAME}: Version: {__version__}") diff --git a/package.json b/package.json index 08854e5..5e6bd3e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ComfyUI_RaykoStudio", - "version": "0.20.0", + "version": "0.20.1", "description": "Set of custom nodes for ComfyUI providing additional image processing capabilities", "author": "Raykosan", "license": "Apache License 2.0", diff --git a/pyproject.toml b/pyproject.toml index 1b0823a..3be882f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "ComfyUI_RaykoStudio" description = "Set of custom nodes for ComfyUI providing additional image processing capabilities" -version = "0.20.0" +version = "0.20.1" license = { file = "LICENSE" } dependencies = ["torch>=1.7.0", "numpy>=1.19.0", "Pillow>=8.0.0", "freetype-py>=2.5.1"] diff --git a/web/intermediate_spline_mask.js b/web/intermediate_spline_mask.js index e28ddbc..035c043 100644 --- a/web/intermediate_spline_mask.js +++ b/web/intermediate_spline_mask.js @@ -1,4 +1,4 @@ -console.log("[InSPLINE 🦊] intermediate_spline_mask.js LOADED!"); +console.log("[InSPLINE ] intermediate_spline_mask.js LOADED!"); import { app } from "../../scripts/app.js"; import { api } from "../../scripts/api.js"; @@ -159,8 +159,9 @@ app.registerExtension({ const createOverlayCanvas = () => { if (_overlayCanvas) return; _overlayCanvas = document.createElement("canvas"); + _overlayCanvas.className = "rayko-inspline-overlay"; // <-- Добавлен класс для надёжного поиска _overlayCanvas.style.cssText = ` - position: fixed !important; z-index: 1000 !important; + position: fixed !important; z-index: 900 !important; // <-- Изменено на 900 pointer-events: auto !important; cursor: crosshair !important; background: transparent !important; touch-action: none; border: 1px dashed #00FF00 !important; box-sizing: border-box !important; @@ -398,7 +399,7 @@ app.registerExtension({ }; node.onRemoved = function() { - console.log(`[InSPLINE 🦊] Node ${this.id} removed, sending cleanup signal...`); + console.log(`[InSPLINE ] Node ${this.id} removed, sending cleanup signal...`); _syncRunning = false; if (_overlayCanvas) { @@ -429,7 +430,7 @@ app.registerExtension({ }; } catch (error) { - console.error("[InSPLINE 🦊] Critical Error:", error); + console.error("[InSPLINE ] Critical Error:", error); } }; }, @@ -442,7 +443,8 @@ app.registerExtension({ node.image.src = image_url + "&t=" + Date.now(); node.image.onload = () => { node.imageReady = true; - const overlay = document.querySelector(`canvas[style*="z-index: 1000"]`); + // ИСПРАВЛЕНО: поиск по классу вместо жёсткой привязки к z-index + const overlay = document.querySelector('.rayko-inspline-overlay'); if (overlay) { overlay.style.display = "block"; } diff --git a/web/rs_crop.js b/web/rs_crop.js index 22f0e9a..f3ffe84 100644 --- a/web/rs_crop.js +++ b/web/rs_crop.js @@ -181,7 +181,7 @@ app.registerExtension({ if (node._overlayCanvas) return; node._overlayCanvas = document.createElement("canvas"); node._overlayCanvas.style.cssText = ` - position: fixed !important; z-index: 1000 !important; + position: fixed !important; z-index: 900 !important; pointer-events: auto !important; cursor: crosshair !important; background: transparent !important; touch-action: none; border: 1px dashed #00FF00 !important; box-sizing: border-box !important; diff --git a/web/spline_mask.js b/web/spline_mask.js index 25938f2..a7c54b0 100644 --- a/web/spline_mask.js +++ b/web/spline_mask.js @@ -392,7 +392,7 @@ app.registerExtension({ _overlayCanvas = document.createElement("canvas"); _overlayCanvas.style.cssText = ` position: fixed !important; - z-index: 1001 !important; + z-index: 900 !important; pointer-events: auto !important; cursor: crosshair !important; background: transparent !important;