Skip to content

fix: correct version-accuracy defects across skills and snippets#7

Merged
TMHSDigital merged 1 commit into
mainfrom
fix/version-accuracy-corrections
Jun 18, 2026
Merged

fix: correct version-accuracy defects across skills and snippets#7
TMHSDigital merged 1 commit into
mainfrom
fix/version-accuracy-corrections

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Summary

Corrects four confirmed version-accuracy defects in skills/snippets, found in an audit and re-verified empirically on Blender 4.5.10 LTS and 5.1.1 (a fresh 4.5 LTS install — the prior audit only had 4.4.3) plus the 4.4/4.5/5.0 release notes.

No content added or removed — counts unchanged (12 skills, 6 rules, 2 templates, 17 snippets). All snippets/templates py_compile. The three corrected snippets were re-run on both 4.5.10 and 5.1.1 and behave correctly.

Defects fixed

  1. EEVEE engine id was inverted (CRITICAL). Correct: BLENDER_EEVEE_NEXT on 4.2–4.5, BLENDER_EEVEE on 5.0+ (5.0 RN: "identifier was changed from BLENDER_EEVEE_NEXT to BLENDER_EEVEE"; introspection: 5.1.1 rejects _NEXT, 4.5.10 rejects plain). Fixed version-branch-skeleton.py, headless-batch-scripting (detect snippet, argparse choices, prose), procedural-materials-and-shaders table.
  2. Slotted Actions framing + fabricated 4.5 shim (CRITICAL/MAJOR). Slotted model shipped in 4.4; legacy action.fcurves removed in 5.0; action_ensure_channelbag_for_slot is new in 5.0 and absent on 4.4/4.5 (no shim). Rewrote slotted-actions-animation with a real version-branching helper (ensure-fn on 5.0+, strip.channelbag(slot, ensure=True) on 4.4/4.5), removed the bogus hasattr(action,'slots') "5.x sniff", fixed the compatibility matrix and the snippet header.
  3. save_pre handler signature (MAJOR). Arg0 is the file-path string, not a Scene (4.5 docs + introspection on both versions). Fixed the handler table and worked examples in drivers-and-app-handlers and app-handler-registration.py to reach scenes via bpy.data.
  4. Geometry Nodes version tags (MAJOR). For Each Element (4.3) and Mesh to SDF Grid (4.3) were mis-tagged "5.0+"; corrected labels and changed has_for_each_element() to >= (4,3,0). NodeSocketBundle/has_bundles kept at 5.0 (verified: interface socket works in 5.1, TypeError in 4.5).

Verification

  • python -m py_compile passes on all snippets + templates.
  • Edited snippets re-run on 4.5.10 and 5.1.1: EEVEE id resolves & sets per version; save_pre handler clears cache via bpy.data without crashing; cross-version channelbag keyframing works.
  • Frontmatter intact, standards-version: 1.10.0 unchanged, README counts unchanged.

Out of scope (flagged, not changed here)

  • .cursor-plugin/plugin.json "version": "0.2.3" lags VERSION 0.2.4 — release-doc-sync does not own it, so syncing here would just re-lag after the next bump. Separate meta-repo question.
  • Newly observed: the bundle node bl_idnames GeometryNodeCombineBundle/GeometryNodeSeparateBundle in geometry-nodes-python are undefined in 5.1.1 (RuntimeError) though present in 4.5.10 — a latent defect outside this PR's 4 defects; needs the correct 5.x node names determined before fixing.
  • Efficacy gap (no headless origin-recenter recipe) → v0.3.0 candidate.

🤖 Generated with Claude Code

Re-verified empirically on Blender 4.5.10 LTS and 5.1.1 plus the 4.4/4.5/5.0
release notes. Four confirmed defects corrected:

1. EEVEE engine id was inverted. Correct mapping: 4.2-4.5 use
   'BLENDER_EEVEE_NEXT'; 5.0+ reclaimed 'BLENDER_EEVEE' (5.0 release notes,
   confirmed by introspection: 5.1.1 rejects _NEXT, 4.5.10 rejects plain).
   Fixed version-branch-skeleton.py get_eevee_engine_id(), the
   headless-batch-scripting detect snippet/choices/prose, and the
   procedural-materials version table.

2. Slotted Actions framing and fabricated 4.5 shim. The slotted data model
   shipped in 4.4 (not 5.0); legacy action.fcurves was removed in 5.0;
   action_ensure_channelbag_for_slot is new in 5.0 and absent on 4.4/4.5
   (no auto-detecting shim). Rewrote slotted-actions-animation: real
   version-branching helper (ensure-fn on 5.0+, strip.channelbag(ensure=True)
   on 4.4/4.5), removed the hasattr(action,'slots') "5.x sniff", corrected the
   compatibility matrix and the snippet header comment.

3. save_pre/save handler signature. Arg0 is the file path string, not a Scene
   (4.5 docs + introspection on both versions). Fixed the handler table and
   worked examples in drivers-and-app-handlers and app-handler-registration.py
   so handlers reach scenes via bpy.data, never treating arg0 as a Scene.

4. Geometry Nodes node version tags. For Each Element (4.3) and Mesh to SDF
   Grid (4.3) were mis-tagged "5.0+"; fixed labels and changed
   has_for_each_element() to gate on >= (4,3,0). NodeSocketBundle/has_bundles
   left at 5.0 (confirmed: interface socket works in 5.1, TypeError in 4.5).

No content added or removed; counts unchanged (12/6/2/17). All snippets and
templates py_compile. Corrected snippets verified to run on 4.5.10 and 5.1.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
@TMHSDigital TMHSDigital merged commit c39032d into main Jun 18, 2026
6 checks passed
@TMHSDigital TMHSDigital deleted the fix/version-accuracy-corrections branch June 18, 2026 20:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant