Immac
|
9c89ea1137
|
chore: update immac_tools.json and pyproject.toml metadata for Style Mixer
|
2026-03-04 08:31:59 -06:00 |
|
Immac
|
a2f97b44c3
|
docs: rewrite README, update PLAN, fix LICENSE year (2026)
|
2026-03-04 08:30:50 -06:00 |
|
Immac
|
fdedf7fc04
|
chore: remove diagnostic logs, simplify to single setDirtyCanvas (no rAF retry needed)
|
2026-03-04 08:25:37 -06:00 |
|
Immac
|
830c19ea3a
|
fix: import app directly from /scripts/app.js instead of polling window.app (root cause of timeout)
|
2026-03-04 08:14:58 -06:00 |
|
Immac
|
809e6dad48
|
fix: import app directly from /scripts/app.js instead of polling window.app (root cause of timeout)
|
2026-03-04 08:13:16 -06:00 |
|
Immac
|
9f3787dafe
|
fix: import app directly from /scripts/app.js instead of polling window.app (timeout root cause)
|
2026-03-04 08:12:42 -06:00 |
|
Immac
|
acc25c5717
|
debug: add diagnostic logs for preview blank-on-reload
|
2026-03-04 08:05:50 -06:00 |
|
Immac
|
44fed83de9
|
fix: dual-path dirty + rAF retry after image load to guarantee canvas redraw
|
2026-03-04 08:01:34 -06:00 |
|
Immac
|
7214bdcb49
|
fix: use getMinHeight/getHeight callbacks + node.onResize for DOM widget sizing
|
2026-03-04 07:53:56 -06:00 |
|
Immac
|
435c9d7724
|
debug: revert onAfterGraphConfigured, add console.log to trace reload failure
|
2026-03-04 07:47:18 -06:00 |
|
Immac
|
c490b11205
|
fix: use onAfterGraphConfigured for preview restore (fires after all widget values applied)
|
2026-03-04 07:42:22 -06:00 |
|
Immac
|
b9e8b274ce
|
fix: align node preview with ComfyUI pattern (rAF + node.graph.setDirtyCanvas)
|
2026-03-04 07:38:40 -06:00 |
|
Immac
|
8436718ca6
|
fix: replace broken waitForCanvasReady with scheduleCanvasDirty (10 rAF frames)
|
2026-03-04 07:32:57 -06:00 |
|
Immac
|
c2475566db
|
fix: replace 500ms timeout with rAF-based waitForCanvasReady (LiteGraph frame counter)
|
2026-03-04 07:23:55 -06:00 |
|
Immac
|
9c3cbf2351
|
fix: delay node preview 500ms on reload so canvas loop is ready, double setDirtyCanvas
|
2026-03-04 07:19:26 -06:00 |
|
Immac
|
c828b6195a
|
fix: node previews blank on page reload (stale closure + race condition)
|
2026-03-04 07:12:35 -06:00 |
|
Immac
|
003811cd87
|
feat: object-fit contain (padded) for all card and mix thumbnails
|
2026-03-03 11:30:04 -06:00 |
|
Immac
|
bac0580877
|
fix: only refresh node combos on mix/style create or delete, never on weight changes
|
2026-03-03 11:18:48 -06:00 |
|
Immac
|
2cde2b2e2d
|
fix: drag clamped 0-1, text input allows -10 to 10 (separate dragMin/dragMax)
|
2026-03-03 11:06:38 -06:00 |
|
Immac
|
daf2aec27b
|
fix: align weight range -10/10/0.01 across BarInput defaults, MixCard and StyleMixerPanel
|
2026-03-03 11:04:07 -06:00 |
|
Immac
|
0d72f37ac3
|
feat: weight range -10 to 10 (allow negative weights)
|
2026-03-03 11:02:43 -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
|
f5d00a29d2
|
chore: remove __pycache__ from tracking (already in .gitignore)
|
2026-03-03 10:43:29 -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
|
3ca72a6a00
|
fix: skip refreshComboInNodes when adding/removing styles from a mix
|
2026-03-03 09:27:54 -06:00 |
|
Immac
|
9293233e4f
|
fix: use elementFromPoint to skip node creation when dropped on panel (not canvas)
|
2026-03-02 23:40:03 -06:00 |
|
Immac
|
c71aa4ddd2
|
fix: move style card drag to dedicated handle (⠿ icon) so card content is interactive
|
2026-03-02 22:23:21 -06:00 |
|
Immac
|
d12bba871b
|
fix: move mix card drag to dedicated handle (⠿ icon) so weights can be dragged freely
|
2026-03-02 22:22:07 -06:00 |
|
Immac
|
2fde80ee8d
|
fix: stop mousedown propagation in BarInput to prevent card drag
|
2026-03-02 22:19:52 -06:00 |
|
Immac
|
fbc9d7ea42
|
fix: prevent card drag when interacting with BarInput weight slider
|
2026-03-02 22:17:13 -06:00 |
|
Immac
|
afe9973d1b
|
fix: horizontal scroll on Current Mix (not Mixes); Mixes wraps
|
2026-03-02 22:13:01 -06:00 |
|
Immac
|
b661da0201
|
fix: silent weight/enabled changes skip refreshComboInNodes
|
2026-03-02 22:10:33 -06:00 |
|
Immac
|
27664a7b5a
|
fix: enabled/disabled toggle in current mix also silent
|
2026-03-02 22:10:13 -06:00 |
|
Immac
|
59b3801c48
|
fix: weight changes do not trigger pending-refresh badge
|
2026-03-02 22:08:25 -06:00 |
|
Immac
|
2d3d317ece
|
fix: weight changes do not trigger pending-refresh badge
|
2026-03-02 22:04:27 -06:00 |
|
Immac
|
5fc9d5d56f
|
feat: mixes section scrolls horizontally when cards overflow
|
2026-03-02 21:55:46 -06:00 |
|
Immac
|
3b8f7bcbd9
|
fix: restore visible drag ghost for style and mix cards
|
2026-03-02 21:44:15 -06:00 |
|
Immac
|
dc83cd73b3
|
fix: use onDragEnd pattern for style-to-canvas drop (ComfyUI intercepts drop event)
|
2026-03-02 21:36:55 -06:00 |
|
Immac
|
2ccf5d6ca8
|
fix: attach canvas drop listener to document (avoids setup timing issue)
|
2026-03-02 21:32:34 -06:00 |
|
Immac
|
3cd2a6c2e0
|
feat: drag style card onto canvas creates a StylePickImmacStyleMixer node
|
2026-03-02 21:28:46 -06:00 |
|
Immac
|
39fa99a9de
|
fix: style refresh badge, empty→first update, image_updated_at cache-bust, loadedGraphNode placeholder upgrade
|
2026-03-02 20:16:16 -06:00 |
|
Immac
|
cdaf2a2040
|
fix: show real server error on ZIP restore failure (not JSON parse error)
|
2026-03-02 19:52:27 -06:00 |
|
Immac
|
944ce29f26
|
feat: unified restore auto-detects JSON vs ZIP, ZIP restore extracts images server-side
|
2026-03-02 19:48:52 -06:00 |
|
Immac
|
08781c0260
|
feat: download ZIP with images via server-side endpoint
|
2026-03-02 19:45:41 -06:00 |
|
Immac
|
0789a8683a
|
fix: register backup/restore via settings[] in registerExtension (not deprecated addSetting)
|
2026-03-02 19:41:47 -06:00 |
|
Immac
|
213d82b365
|
feat: move backup/restore to ComfyUI Settings panel
|
2026-03-02 19:13:42 -06:00 |
|
Immac
|
4be8a73ca6
|
feat: backup/restore toolbar — download and upload JSON snapshot of styles+mixes
|
2026-03-02 19:07:33 -06:00 |
|
Immac
|
32a12197df
|
fix: use loadedGraphNode hook to restore correct preview on workflow reload
|
2026-03-02 18:34:13 -06:00 |
|
Immac
|
6338025dd0
|
refactor: migrate style_pick_node to use shared _style_utils
|
2026-03-02 18:31:58 -06:00 |
|