198 Commits
Author SHA1 Message Date
PozzettiAndrea 5c9e180685 Drop four unused CUDA wheels; stop SageAttention degrading the mesh
[cuda] packages was ["detectron2", "torch-scatter", "torch-sparse",
"torch-cluster", "flash-attn", "sageattention"]. Four of those six are not
used by this pack in any way:

  - No .py file references them, by module name or by API (scatter_add,
    segment_csr, knn_graph, SparseTensor, spmm, coalesce all return zero).
  - None of the pack's eight declared PyPI dependencies requires them
    (checked against live PyPI metadata).
  - Upstream facebookresearch/sam-3d-body needs detectron2 only for
    tools/build_detector.py, its ViTDet person detector -- a stage this port
    replaces with mask inputs from the graph, which is why the workflows are
    named multiple_masks*. torch-scatter/-sparse/-cluster appear nowhere in
    upstream's INSTALL.md at all: there are no sparse convolutions in SAM 3D
    Body outside the JIT'd MHR module, which runs fp32 regardless.

Confirmed by ablation rather than by grep: uninstalled from the isolated env,
the metadata scan still imports every node module (real scan, cache deleted --
a cached scan had made an earlier attempt look green), all 15 nodes register
through the worker, and comfy-test passes syntax/install/registration/
javascript/instantiation plus every CUDA workflow.

SageAttention is removed for a different reason. comfy-env's worker
auto-enables it on mere importability (_persistent_worker.py:1457-1474,
no opt-out), and it is INT8-quantised attention: measured at this model's
real shapes it is 1.34e-2 rel-L2 vs 3.51e-3 for SDPA and flash -- which also
erases the entire fp16 advantage, since its floor is quantisation, not dtype.
Propagated through the 6D->SO(3) head that decodes joint rotations, that is
7.06 deg of max joint error against 2.96 deg, and it compounds down the
kinematic chain. This is a coordinate-regression network, not a diffusion
model; it has no denoising steps to absorb the error.

flash-attn stays: measured bit-identical to PyTorch SDPA at every shape and
both dtypes, so removing it would cost speed and buy nothing.

attention.py passes low_precision_attention=False as belt-and-braces, so the
fix holds even if sageattention reaches the env by another route. Verified
end-to-end with sageattention still installed AND auto-enabled: the worker
logged "Auto-enabled sage attention" and the workflows passed anyway. Every
attention backend takes **kwargs, so the flag is safe on all of them; only
attention_sage reads it. This is the same flag ComfyUI core sets for its own
geometry models (ldm/sam3/sam.py, ldm/triposplat/model.py,
ldm/hunyuan3dv2_1/hunyuandit.py).
2026-08-24 20:51:38 +02:00
PozzettiAndrea b4f4c52683 no torch scatter needed apparently 2026-08-24 20:15:17 +02:00
PozzettiAndrea f110ce2ab3 comfy-env-root.toml: [node_reqs] is now [node_packs]
The section never held nodes -- every entry is a whole pack repo. Read
literally, `[node_reqs]` says "the requirements of my node", which is pip
packages, and that section genuinely exists one file over as [dependencies]
in comfy-env.toml. `[node_packs]` names the unit and sits parallel to the
existing [cuda_packages].

Requires comfy-env >= 0.4.27, which renames the key with no shim: the root
file has a closed schema, so an old comfy-env rejects [node_packs] by name
and a new one rejects [node_reqs] by name. Neither fails silently.
2026-08-24 15:48:51 +02:00
PozzettiAndrea 1bf4ad49b7 Drop the dead WEB_DIRECTORY: pyproject is the single web declaration
The frontend directory is declared once, in pyproject.toml as
`[tool.comfy] web = "javascript"`. This `WEB_DIRECTORY = "./web"` pointed at
a directory that no longer exists -- it was left behind when the JS moved to
javascript/ -- so it is dead today. It is also a trap.

ComfyUI registers the web folder in TWO independent code paths, and they key
the same dict differently (nodes.py):

    pyproject [tool.comfy] web  ->  EXTENSION_WEB_DIRS[project.name]   (:2280)
    WEB_DIRECTORY               ->  EXTENSION_WEB_DIRS[module_name]    (:2289)

They are separate `if` blocks guarded by os.path.isdir(), not a fallback
chain, and project.name is rarely the directory name. So the moment a `web/`
directory exists again -- a revert, a merge, a stray file -- BOTH paths
register the same folder under two different keys. GET /extensions then lists
every file twice, the browser imports each twice, and app.registerExtension
runs twice with the same name: the collision the javascript test level exists
to catch, and invisible to it, because the duplication is in registration
rather than in source.

Removing the stale declaration makes that unreachable instead of dormant.
2026-08-24 15:31:59 +02:00
PozzettiAndrea 2dc812d043 Vendor viewer JS, drop comfy-3d-viewers
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.

Restrict FBX_PREVIEW_NODES to this pack's own preview node. The shared upstream
copy of mesh_preview_fbx.js listed every sibling pack's node too, so installing
two of them registered the same extension names twice and double-attached the
widget. Guard the message listener on event.source.
2026-08-22 19:44:03 +02:00
PozzettiAndrea a7f2048b32 add comfy-kitchen dep 2026-07-31 16:40:13 +02:00
PozzettiAndrea 2c90453b3a bump 2026-05-19 17:52:00 +02:00
PozzettiAndrea 9e0474f8d2 stop pinning transformers 2026-05-17 09:55:03 +02:00
PozzettiAndrea a402f6e16c docs: warn about experimental comfy-env install in README + pyproject 2026-05-16 21:38:34 +02:00
PozzettiAndrea 22f61f95e9 comfy-env 0.3.89 2026-05-15 08:54:35 +02:00
PozzettiAndrea 05fc28b5eb comfy-env 0.3.88 2026-05-15 07:16:54 +02:00
PozzettiAndrea 3a2d5c8fdd bump 2026-05-14 14:26:20 +02:00
PozzettiAndrea a3ad482107 bump 2026-05-13 12:57:58 +02:00
PozzettiAndrea 6d1b0073bd add transformers dep 2026-05-13 10:57:02 +02:00
PozzettiAndrea de7e964e72 comfy-env 0.3.87 2026-05-13 09:47:06 +02:00
PozzettiAndrea 1a90db67a6 bump comfy-env to 0.3.84 2026-05-11 12:07:34 +02:00
PozzettiAndrea 6e985eae2e icon 2026-05-11 11:15:11 +02:00
PozzettiAndrea 416f90b0c9 bump 2026-05-11 01:58:27 +02:00
PozzettiAndrea 2c1da4bc87 stop pinning numpy 2026-05-10 23:45:42 +02:00
PozzettiAndrea 5a1da1b063 bump 2026-05-10 23:35:40 +02:00
PozzettiAndrea 57d55e8077 bump 2026-05-10 23:03:58 +02:00
PozzettiAndrea d39a128efc bump 2026-05-10 22:26:22 +02:00
PozzettiAndrea 33ec827d68 move deps from root to isolated env 2026-05-10 22:20:23 +02:00
PozzettiAndrea 69929832a1 bump 2026-05-10 21:55:58 +02:00
PozzettiAndrea aefe23b2b2 ping 2026-05-10 15:12:25 +02:00
PozzettiAndrea e0c9592920 bump version 2026-05-10 03:26:19 +02:00
PozzettiAndrea 7b1ab71a19 bump version 2026-05-09 18:08:28 +02:00
PozzettiAndrea ff4132469b bump comfy env 2026-05-09 15:21:48 +02:00
PozzettiAndrea f523787e87 bump comfy env 2026-05-09 13:19:23 +02:00
PozzettiAndrea b05e0ae23b bump comfy env 2026-05-09 11:43:27 +02:00
comfy-gpu-ci 23ba55f29d Use pozzettiandrea conda channel for bpy, drop python pin 2026-05-08 15:43:48 +02:00
comfy-gpu-ci b988043ace Show download progress in ComfyUI UI
Add _comfy_tqdm() bridge so hf_hub_download/snapshot_download
progress shows in ComfyUI's progress bar instead of only in
the terminal.
2026-05-08 15:36:26 +02:00
PozzettiAndrea 6277a6eeeb update install instructions 2026-05-08 14:07:34 +02:00
PozzettiAndrea 8a63063c51 bump version and comfy env 2026-05-08 12:44:02 +02:00
PozzettiAndrea 4377d6c6fd bump version 2026-05-08 05:30:05 +02:00
PozzettiAndrea d3bbda618e bump comfy env 2026-05-08 05:25:54 +02:00
PozzettiAndrea 759894dbc4 bump version 2026-05-08 03:19:29 +02:00
PozzettiAndrea e185e54009 bump comfy env 2026-05-08 02:48:17 +02:00
PozzettiAndrea e9841a9750 bump comfy env 2026-05-07 22:15:36 +02:00
PozzettiAndrea 0f17d3c789 add desktop platforms to comfy-test 2026-05-07 22:05:59 +02:00
PozzettiAndrea ee7a28f1fa bump comfy-3d-viewers 2026-05-07 19:29:54 +02:00
PozzettiAndrea 35749d0125 bump comfy env 2026-05-07 17:37:01 +02:00
PozzettiAndrea 737307c6b2 bump version 2026-05-07 16:49:24 +02:00
PozzettiAndrea 57d3d181c9 bump comfy env 2026-05-07 12:55:26 +02:00
PozzettiAndrea 6b3f68032b bump comfy env 2026-05-07 11:20:24 +02:00
PozzettiAndrea f931721757 bump comfy env 2026-05-07 10:34:57 +02:00
PozzettiAndrea 106ece0b6b bump 2026-05-05 22:32:24 +02:00
PozzettiAndrea ef531c29dc bump 2026-05-05 21:52:44 +02:00
PozzettiAndrea d580d59b76 bump 2026-05-05 21:35:08 +02:00
PozzettiAndrea 7d3546192c bump 2026-05-05 21:15:13 +02:00