Blender add-on: geometry node graph actions, modifier inputs, evaluated snapshot #5
Loading…
Reference in a new issue
No description provided.
Delete branch "libby/blender-gn-recreation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds Geometry Nodes graph actions to the Blender add-on (
brokkr.blender.command_intent.v0), based on main: PR #2 (scene actions) and #4 are merged, so this branch merges main in (e21708e) and the diff is the node-graph cut alone. Owner:surfaces/blender/brokkr_bridge/node_actions.py; fields and limits:surfaces/blender/docs/node-actions.md.createNodeGroupgin/gout; interface types Geometry/Float/Int/Bool/VectoraddNode/removeNodeGeometryNode*/FunctionNode*/ShaderNode*only, no importer/exporter/script/bake/group/zone/viewer/image-texture nodes; properties then inputs; max 500 nodes;gin/goutstaylinkSockets/unlinkSocketsaddModifier/removeModifier/setModifierInputgetattr(modifier.properties.inputs, id).value(indexing returns a raw IDPropertyGroup on 5.2.3);setObjectCustomPropertyrefuses a modifier input'sSocket_NidentifierSnapshot: mesh objects with modifiers carry
evaluated(counts, local vertex bounds and positions, world instance bounds and locations, capped at 256). One depsgraph scan per capture, stopped at 100k items (instancesComplete; unreached objects reportinstanceCount: null); above 1M vertices counts only; non-finite values setnonFinite. The daemon advertisement now lists the scene-action and node-graph capabilities.Access rules (for the reviewer): adds write access to node graphs and modifiers on objects of the open Blender file through the same intent queue as existing actions (session token and bind guard from PR #1 apply). No file, network or code-execution path: importer/exporter/script/bake nodes refused; Int values capped at +-4096, floats +-1e9. Residual: a graph can still be expensive to evaluate; removal actions exist to take it out.
Tests: 103 unit tests with a fake
bpy(hand mutants killed for each refusal and restore rule); livetests/live/gn_actions.pyon headless Blender 5.2.3: 166 checks, 0 failed (ring, boundary_step, seeded scatter rebuilt by actions only and matching native trees; refusals leave no residue; 60-node cycle probe; 2000x2000 instanced grid capture 22 s -> 1.3 s).cargo test -p brokkr-daemon: 20 passed. Three Soul passes (68275e3,a318851,23a72b2): findings fixed or recorded in the doc.Not done: zones, item sockets, library groups, group nodes, batches with rollback,
expectedRevision; duplicatedbrokkr_idafter a hand copy acts on the first match; instance bounds are a subset when the scan stops. The add-on's PythonCAPABILITIEShas lackedasset.catalog.readandsync.*since before this branch (main's daemon advertises them).Re-run at head
e21708eafter the main merge:tests/live/gn_actions.pyon headless Blender 5.2.2 LTS: 166 checks, 0 failed; 104 unit tests pass (10 skipped, need bpy).Steward pass, 2026-11-10 (head
5bf849d3, merged with main6f0e700): Soul pass (separate agent) found no bypass of the access rules but found most of them unpinned by tests and three claims off. Fixed: tests now pin the node denylist, idname patterns, and the numeric limits (500, 4096, 1e9, 64, modifiers 8) with literals, the NODES-only modifier checks, rollbacks and the invalid-link removal (a vacuous test fixed); GeometryNodeImageTexture, GeometryNodeInputImage and ShaderNodeTexIES are now refused in code, as the doc said; the doc no longer points at a design file not in this tree (it is PR #3). 119 unit tests pass locally; I reran three hand mutants (MAX_NODES, MAX_INT, Export denial): each fails the suite; Hands reported 38 of 38 killed. Corrections to this body: the committed live result is Blender 5.2.3 LTS (166 checks, 0 failed), not a 5.2.2 rerun; the evaluated-instance timing in the committed JSON is 1.2 s, not 1.3 or 1.4. Not rerun: any live Blender check (Blender is not installed here), the real bpy API. Known and not changed: the daemon advertisement still lists asset.catalog.read and four sync.* capabilities the add-on does not implement (pre-existing); caps bound each value, not graph cost. Brokkr has no CI.🤖 Generated with Claude Code