Persistence overhaul. Stack nodes now round-trip cleanly through save and reload. Layer data, internal mix chain, input sockets, and external links all survive a file close-and-reopen as expected.
Under the hood
CollectionProperty — the single source of truth. The parallel ID-property shadow store and the load_post restore handler that shipped in v1.0.3 have been removed. Net reduction of ~220 lines.use_fake_user = True, preventing Blender from garbage-collecting it during save. This was the root cause of sockets disappearing on reload.Compatibility
Stack v1.0.3 Release Notes
Persistence Redesign
Replaced the JSON serialization layer with native Blender ID properties. Layer state (blend mode, opacity, enabled, collapsed, layer name) is now stored as individual custom properties directly on the node group datablock, which Blender serializes natively to .blend files without any addon intervention.
What changed:
The save_pre handler and all JSON serialization code (json.dumps / json.loads) have been removed entirely. Layer data is now written to ID properties immediately when the user makes a change, there is no deferred sync step and no risk of data loss if Blender crashes before a save.
A lightweight read-only load_post handler remains to restore the transient runtime cache from the persisted ID properties after file load. This handler does not write or serialize any data.
Layer blending node for Blender's Shader Editor.
Stack adds a single node that lets you layer and blend textures with per-layer blend modes, opacity, and masking, similar to layer stacking in Photoshop or composite maps in other 3D tools.
Layer blending node for Blender's Shader Editor.
Stack adds a single node that lets you layer and blend textures with per-layer blend modes, opacity, and masking, similar to layer stacking in Photoshop or composite maps in other 3D tools.
v.1.0.0