From f972dcda49627159847892f28be660c5ebfbbf77 Mon Sep 17 00:00:00 2001 From: PozzettiAndrea Date: Sat, 22 Aug 2026 19:44:03 +0200 Subject: [PATCH] Drop comfy-3d-viewers, modernise comfy-test.toml Vendor the viewer JavaScript into javascript/ and drop the comfy-3d-viewers dependency. The viewers were previously copied into web/ at every startup by prestartup_script.py, which made the served frontend depend on a second package resolving at runtime. Bundles are vendored as .mjs so ComfyUI's **/*.js auto-import glob skips them: they are iframe-only and must never enter the shared main browser realm. Only the widget entry points stay .js. Also replace comfy_env.copy_files with a local helper. Its two extra features (frame-derived source dir, silent no-op on a missing source) were unused here, and the asset seeding now resolves the input directory through folder_paths.get_input_directory() so it follows ComfyUI Desktop and --input-directory instead of writing into the code tree. comfy-test.toml moves to the current schema: [test.workflows] cuda (there is no "gpu" key -- the accelerator is named by backend, and the old spelling parsed to an empty list, so CUDA runners silently ran the full unfiltered set), an explicit [test.platforms] platforms allowlist (per-platform booleans are no longer supported), and the javascript level. --- comfy-test.toml | 15 +++------------ prestartup_script.py | 41 ++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 1 + requirements.txt | 3 +-- 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/comfy-test.toml b/comfy-test.toml index 71977b3..80a7ee1 100644 --- a/comfy-test.toml +++ b/comfy-test.toml @@ -1,18 +1,9 @@ [test] -levels = ["syntax", "install", "registration", "instantiation", "execution"] +levels = ["syntax", "javascript", "install", "registration", "instantiation", "execution"] [test.workflows] cpu = ["!pano"] -gpu = "all" +cuda = "all" [test.platforms] -linux = true -macos = true -windows = true -windows_portable = true -linux_gpu = true -windows_gpu = true -windows_portable_gpu = true -macos_desktop = true -windows_desktop = true -windows_desktop_gpu = true +platforms = ["linux", "macos", "windows", "windows_portable", "macos_desktop", "windows_desktop", "linux_cuda", "windows_cuda", "windows_portable_cuda", "windows_desktop_cuda"] diff --git a/prestartup_script.py b/prestartup_script.py index 1b4f8db..82b7773 100644 --- a/prestartup_script.py +++ b/prestartup_script.py @@ -1,12 +1,47 @@ """ComfyUI-Sharp Prestartup Script.""" +import logging +import shutil from pathlib import Path -from comfy_env import setup_env, copy_files +import folder_paths +from comfy_env import setup_env + +log = logging.getLogger("sharp") setup_env() +# The CONFIGURED input directory, never the code-tree one. ComfyUI Desktop +# (--base-directory) and --input-directory both relocate it, and the load +# nodes only ever scan folder_paths.get_input_directory(). main.py runs +# apply_custom_paths() before prestartup scripts, so this is already resolved. +INPUT = Path(folder_paths.get_input_directory()) + + +def copy_files(src: Path, dst: Path, pattern: str = "*") -> int: + """Copy bundled assets into a directory. Returns files written. + + Seeds rather than syncs: an existing file is left alone, so a user's + edited demo asset survives every relaunch. Raises if `src` is missing -- + a typo'd asset directory is a packaging bug, and silence is how it stays + one. + """ + src, dst = Path(src), Path(dst) + if not src.is_dir(): + raise FileNotFoundError(f"asset directory not found: {src}") + written = 0 + for f in src.glob(pattern): + if not f.is_file(): + continue + target = dst / f.relative_to(src) + if target.exists(): + continue + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(f, target) + written += 1 + return written + + SCRIPT_DIR = Path(__file__).resolve().parent -COMFYUI_DIR = SCRIPT_DIR.parent.parent # Copy assets -copy_files(SCRIPT_DIR / "assets", COMFYUI_DIR / "input") +copy_files(SCRIPT_DIR / "assets", INPUT) diff --git a/pyproject.toml b/pyproject.toml index 154464b..1133cfa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,4 +11,5 @@ Repository = "https://github.com/PozzettiAndrea/ComfyUI-Sharp" [tool.comfy] PublisherId = "pznodes" DisplayName = "Sharp" +web = "javascript" Icon = "https://raw.githubusercontent.com/PozzettiAndrea/ComfyUI-Sharp/main/assets/icon.png" diff --git a/requirements.txt b/requirements.txt index 7cd753f..085622c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ comfy-env==0.3.89 -comfy-3d-viewers==0.2.44 -trimesh \ No newline at end of file +trimesh