17 Commits
Author SHA1 Message Date
Immac f5f4e050c9 refactor: rename Style Pick \u2192 Pick Style, Style Blend \u2192 Blend Style (verb-first node names) 2026-03-04 23:52:50 -06:00
Immac d30fc50443 refactor: remove StyleCreateNode and StyleModifyNode, replaced by SaveStyleNode 2026-03-04 12:10:00 -06:00
Immac 10170fd427 feat: add SaveStyleNode + unify Create/Update/Save matrix across Save Mix and Save Style 2026-03-04 12:08:44 -06:00
Immac 2f6a697830 feat: Save Mix adds optional example_image + id inputs; Style Mix → Pick Mix with mix_id output 2026-03-04 08:45:39 -06:00
Immac b2941d093e feat: redesign StyleBlend/WeightStyle to use style_id; add SaveMix node
- StyleWeightNode: now takes style_id (not raw string) + weight,
  outputs style_entry JSON {style_id, weight} and a preview weighted_value string
- StyleBlendNode: takes style_entry JSON slots (Autogrow), carries style_id
  references so the blend can be saved as a mix; adds two combos:
    on_duplicate: Skip (keep first|last) / Sum weights / Average weights
    weight_mode:  As-is / Normalize (sum 1.0) / Normalize (max 1.0) / Equal weights
  outputs blend_json (array of {style_id,weight}) + assembled prompt string
- SaveMixNode (new): takes blend_json + name + mode combo (Create /
  Update by name); writes or overwrites a mix in style_mixer_data.json
2026-03-03 10:52:58 -06:00
Immac 7dbf01a3d9 feat: migrate all nodes to V3 API, StyleBlendNode with io.Autogrow growing slots
- Replace NODE_CLASS_MAPPINGS/NODE_DISPLAY_NAME_MAPPINGS with
  ImmacStyleMixerExtension(ComfyExtension) + async comfy_entrypoint()
- Migrate all 6 nodes to io.ComfyNode + define_schema() + execute() classmethod
- Replace IS_CHANGED with fingerprint_inputs()
- Replace OUTPUT_NODE = True with is_output_node=True in Schema
- Replace forceInput with force_input=True on String.Input
- Replace display='slider' with display_mode='slider' on Float.Input
- StyleBlendNode: replace 8 fixed optional STRING slots with
  io.Autogrow.TemplatePrefix(prefix='style', min=1, max=16)
  for dynamically growing input slots (the primary motivation)
2026-03-03 10:30:53 -06:00
Immac 267d8d38f7 feat: add Weight Style and Style Blend nodes (style_value + float weight → mixed prompt) 2026-03-03 09:52:39 -06:00
Immac 7b31574e19 refactor: split Create/Modify Style into separate Create Style and Modify Style nodes 2026-03-02 18:31:27 -06:00
Immac d798263c87 chore: rename Style Create display name to Create/Modify Style 2026-03-02 16:37:27 -06:00
Immac 6852a9e36d feat: Style Pick node with image preview widget 2026-03-02 16:26:20 -06:00
Immac 8deb382822 feat: add StyleCreate node (Create / Create or Skip / Create or Update / Overwrite) 2026-03-02 15:29:30 -06:00
Immac 3ac3b9fadc feat: add StyleMixNode — dropdown selects a mix, outputs assembled prompt STRING 2026-03-01 18:12:09 -06:00
Immac a58db95573 remove all non-Style-Mixer nodes (nodes.py, forwarding_nodes.py, mappings) 2026-03-01 18:01:49 -06:00
Immac 2b59b98626 fix: restore NODE_CLASS_MAPPINGS in __init__.py so nodes appear and Manager picks them up 2026-03-01 18:00:37 -06:00
Immac 19ddf0630c Step 3: add Style Mixer REST API (api.py) with data load/save endpoints 2026-03-01 16:48:18 -06:00
Immac 26a747386c Step 2: rewrite root __init__.py to template pattern (aiohttp, EXTENSION_WEB_DIRS) 2026-03-01 16:39:16 -06:00
Immac 3e39e9bb09 Copied from ImmacTools, 2026-03-01 16:36:11 -06:00