Skip to content

Test every preset against ComfyUI 0.44, and stop Health hiding working presets - #170

Merged
MehranMarxian merged 2 commits into
mainfrom
feat/object-info-snapshot
Nov 4, 2026
Merged

MehranMarxian merged 2 commits into
mainfrom
feat/object-info-snapshot

Conversation

@MehranMarxian

@MehranMarxian MehranMarxian commented Nov 4, 2026 •

Copy link
Copy Markdown
Owner

What changed and why

Beta gate G1: runs on a current ComfyUI. Every preset had only been checked against ComfyUI 0.37.0. Your shared ComfyUI is now 0.44.0. The PR has two commits, each revertable on its own.

1. A recorded object_info and a test against it (roadmap U2)

  • npm run object-info (scripts/object-info-snapshot.mjs) records tests/fixtures/comfyui-object-info.json from a live ComfyUI. It keeps only the 80 node classes OpenLayer uses, taken from the bundled workflows, the registry's requiredNodes, and the class types the code builds itself. For each input it records:
    • the type;
    • fixed choices such as samplers and schedulers, but never model file lists, which differ per machine;
    • the names that nested inputs allow. These are ComfyUI's dynamic-combo and autogrow inputs, written parent.child in a workflow, for example resize_type.multiplier and images.image_1.
  • npm run object-info -- --check diffs a live ComfyUI against the recording without writing anything. It fails only on something a preset uses, and counts unused removed choices as harmless. It makes two read-only GETs: /object_info and /system_stats.
  • tests/comfy/objectInfoSnapshot.test.ts checks every node, input, nested input and fixed choice in all 39 bundled workflows, plus every requiredNodes entry, against the snapshot.

Result on ComfyUI 0.44.0: everything matches. No node or input that OpenLayer uses was renamed or removed between 0.37 and 0.44.

Proof the test catches drift: I removed KSampler.denoise and the euler choice from a copy of the snapshot. Three tests then failed and named every affected preset. Restored, it passes 5 of 5.

2. A real bug the 0.44 run found: Workflow Health hid working presets

Running Check Workflow Health in Photoshop against 0.44 showed 14 "Missing setup". Thirteen of them were false, and every input those cards named is there:

  • every crop-and-stitch Inpaint preset (InpaintCropImproved.mask)
  • both Remove object presets (LaMaInpaint.lama_model)
  • Select by Text (SAM3_Detect.conditioning)
  • the Klein and Qwen edit presets (ReferenceLatent.latent and others)
  • Layer Maps (resolution and others)
  • Camera Angle, Unflatten and Multi-Reference

Cause: ComfyUI lists those inputs as optional, and the node list Health and Setup read kept only required inputs. Generate was never affected, because validatePresetSetup already reads both.

Fix: getWorkflowNodeAvailability, used by Health and Setup, now records every declared input. The custom workflow check keeps required-only on purpose, because it asks a different question: whether a pasted graph supplies every input ComfyUI requires. The type and both methods document the difference.

Result in Photoshop: "38 of 39 workflow presets are available" (28 Ready, 10 Experimental, 1 Missing setup), down from 21 / 4 / 14. The one left is real: flux1-dev-fp8.safetensors sits in diffusion_models/ and text_encoders/ on your machine, but the preset reads checkpoints/. Health says so.

Other changes

  • docs/beta-gate.md: G1 marked done, with these results.
  • CLAUDE.md: the new npm run object-info command is added to the command list.
  • --check against your fresh Comfy Desktop 0.38.1 (CPU, 8189): it lists only the custom node packs that instance doesn't have installed (controlnet_aux, Florence2, IPAdapter, inpaint-cropandstitch, art-venture, GGUF and others). No core node OpenLayer uses is missing there either.

Verified

npm run typecheck   exit 0
npm run lint        exit 0
npm test            Test Files 140 passed (140), Tests 1380 passed (1380)
npm run build       "Copied UXP assets to dist."
npm run object-info -- --check   "Nothing OpenLayer uses is missing." (ComfyUI 0.44.0, 8188)

tests/comfy/nodeAvailability.test.ts fails 1 of 3 on the old comfyClient.ts and passes 3 of 3 with the fix.

Checked in Photoshop 2025 by Claude, after a plugin reload, against 8188 (0.44.0): Check Workflow Health read 28 / 10 / 1 / 0 with the summary "38 of 39 workflow presets are available".

Could NOT be verified

  • No preset was actually generated on 0.44. The check is the schema match plus Workflow Health. The G4 smoke run on the release build will generate with each tool family.
  • The snapshot is one recording, from your machine. Someone with fewer node packs gets "Missing node" for the packs they lack, which is correct.

What Mehran should check in Photoshop

Smoke checklist blocks (docs/uxp-smoke-checklist.md):

  • Block 0 (the panel starts)

  • 1. Settings › Check Workflow Health against your 0.44 on 8188. See: 28 Ready, 10 Experimental, 1 Missing setup (Flux1-dev fp8, wrong folder).

  • 2. Setup screen: the Inpaint, Select by Text and Remove object presets no longer show a missing node.

  • 3. Optional: in a terminal, npm run object-info -- --check prints "Nothing OpenLayer uses is missing."

🤖 Generated with Claude Code

MehranMarxian and others added 2 commits November 4, 2026 23:59
Beta gate G1 (roadmap U2). Every preset had only been checked against
ComfyUI 0.37.0; the newest ComfyUI is 0.44.0, and node or input renames
were found only when an artist's Workflow Health went red.

npm run object-info records tests/fixtures/comfyui-object-info.json from
a live ComfyUI: only the 80 node classes OpenLayer uses, each input's
type, fixed choices such as samplers (never model file lists, which
differ per machine) and the names nested inputs allow (ComfyUI's dynamic
combo and autogrow inputs, written "parent.child" in a workflow).
npm run object-info -- --check diffs a live ComfyUI against it without
writing, and fails only on something a preset uses.

objectInfoSnapshot.test.ts checks every node, input, nested input and
fixed choice in all 39 bundled workflows, and every requiredNodes entry,
against the snapshot. Recorded from ComfyUI 0.44.0: everything matches.
Removing KSampler.denoise and the "euler" choice from the snapshot makes
it name every preset that uses them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run against ComfyUI 0.44, Workflow Health marked 13 working presets
"Missing ComfyUI node": every crop-and-stitch Inpaint preset
(InpaintCropImproved's mask), both Remove object presets (LaMaInpaint's
lama_model), Select by Text (SAM3_Detect's conditioning), the Klein and
Qwen edit presets (ReferenceLatent's latent and others), Layer Maps, Camera
Angle, Unflatten and Multi-Reference. Each input it named is there; ComfyUI
lists it as optional, and the node list Health and Setup read kept only
required inputs. Generate itself was never affected: validatePresetSetup
already reads both.

getWorkflowNodeAvailability, which Health and Setup use, now records every
declared input. The custom workflow check keeps required-only, because it
asks the other question: whether a pasted graph supplies every input
ComfyUI requires.

On the test machine Health now reads 28 ready, 10 experimental and one
model in the wrong folder, instead of 21, 4 and 14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MehranMarxian
MehranMarxian merged commit fd679fc into main Nov 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant