Commit Graph
5 Commits
Author SHA1 Message Date
DumiFlex ccbf38af99 feat(nodes): add wp_seedlist + split loop config types + wp_ prefix sweep + tooltips
Three coordinated changes to the WP_* node family.

1. New WP_SeedList node
   Emits a list of N derived seeds for a downstream loop (is_output_list).
   Three independent override toggles (override_seed / override_count /
   override_strategy) each mirror the wired Loop's base_seed / count /
   strategy. Connecting loop_config auto-flips override_count +
   override_strategy ON so the natural intent of wiring in a loop gets
   the defaults right; override_seed stays explicit opt-in.
   All emitted seeds are masked to 50 bits via the new MAX_SAFE_SEED
   constant in engine.seed_derive so values sit inside ComfyUI's
   frontend randomize range and copy-paste reproduces identically in a
   standalone sampler.

2. Context Loop type split + downstream Context seed widget lock
   Split WP_CONTEXT_LOOP_CONFIG (wire payload) from a new
   WP_CONTEXT_LOOP_WIDGET (DOM-widget-only TYPE). Loop's own widget
   mounts on the widget type; the wire type has no factory so consumers
   like WP_SeedList render their loop_config socket as a plain input
   instead of being hidden by a fallback-undefined widget.
   New graph walker hasUpstreamLoopOverridingSeed: WP_Context's widget
   glue greys out the local seed stock widget when an upstream Loop has
   override_seed ON, so users read "this value is dead while the Loop
   drives it" without inspecting the Loop config separately.

3. wp_ prefix sweep + tooltips across every WP_* node input
   Custom DOM widget input names now carry the wp_ prefix so canvas
   socket labels read as branded WP widgets: modules -> wp_modules,
   rows -> wp_rows, viewer -> wp_viewer, cleaner -> wp_cleaner,
   context_loop_config -> wp_context_loop_config. Every stock input
   across the node family gets a tooltip describing what it does and
   when to wire it from another node. Tests + comfy_api stub updated.
   CLAUDE.md notes the wp_ convention for future custom widgets.

Bundle size budget bumped 388 -> 395 KB to fit the SeedList Vue chunk
(~4.9 KB net gzip) + override lock UI; entry stays at ~4 KB gzipped.
2026-05-28 12:40:44 +03:00
DumiFlex f587c35b49 fix(context-loop): iteration_internal + total_internal default to true 2026-05-28 00:00:13 +03:00
DumiFlex 35d71445b8 feat(context-loop): iteration var is 1-based in user-facing context
WP_ContextLoop's $iteration / $<name> counter now starts at 1 instead
of 0. Reads naturally in PromptAssembler templates ("iteration 1 of
4") and in the debug viewer's snapshot/picks tabs. Internal
\__wp_loop_index__ stays 0-based because the seed-derivation math
treats loop_index=0 as 'no XOR shift' (effective_chain_seed contract,
seed_derive.derive_loop_seeds indexing).

Static-walker placeholder in graph.ts also bumped to '1' so the
assembler live-preview matches the queue-time value — pre-fix the
preview showed '0' then jumped to '1' when the workflow actually
ran.

Tests updated to assert 1-based emission.
2026-05-26 20:43:57 +03:00
DumiFlex c6c123d4f7 feat(context-loop): iteration vars in assembler dropdown + internal toggle buttons 2026-05-26 19:53:18 +03:00
DumiFlex df2b598bf4 feat(context-loop): wp_context_loop node + _parse_config + execute tests 2026-05-26 17:13:23 +03:00