• 5.2.3.1 0129c11bf6

    5.2.3.1 (Blender 5.2 LTS and 5.1)
    All checks were successful
    Blender Tests / blender (https://download.blender.org/release/Blender5.1/, 5.1) (push) Successful in 2m9s
    Blender Tests / blender (https://download.blender.org/release/Blender5.2/, 5.2) (push) Successful in 2m12s
    Package Add-on / package (push) Successful in 16s
    Static Tests / static (push) Successful in 22s
    Blender Tests / blender (true, alpha, 5.3) (push) Successful in 2m5s
    Blender Tests / blender (https://download.blender.org/release/Blender5.2/, 5.2) (pull_request) Successful in 1m58s
    Blender Tests / blender (https://download.blender.org/release/Blender5.1/, 5.1) (pull_request) Successful in 2m15s
    Static Tests / static (pull_request) Successful in 23s
    Blender Tests / blender (true, alpha, 5.3) (pull_request) Successful in 2m1s
    Stable

    Yusarina released this 2026-08-04 14:06:47 +00:00 | 3 commits to main since this release

    CATS Blender Plugin 5.2.3.1

    This is primarily a maintenance release focused on bug fixes, reliability improvements, regression testing, and internal cleanup. It resolves several long-standing issues affecting armature tools, MMD bone morphs, shape keys, rigidbody removal, and Fix Model progress reporting.

    Our new wiki is now live:

    https://git.neoneko.org/Yusarina/Cats-Blender-Plugin/wiki

    ⚠️ Deprecation Warnings

    Material Combiner and Atlas Generation will be removed in CATS Blender Plugin 5.2.4.0.

    The current external Material Combiner plugin will be replaced by a new built-in CATS material tool.

    Immersive Scaler will be removed in CATS Blender Plugin 5.2.5.0.

    The current external Immersive Scaler plugin will be replaced by a new built-in CATS scaling tool.

    These plugins are no longer maintained by the original authors.

    Deprecation warnings are now shown directly inside the relevant CATS panels.

    Fixed

    • Fixed Remove Rigidbodies and Joints failing to detect some objects because its name check was case-sensitive and incorrectly grouped.
    • Fixed Remove Rigidbodies and Joints crashing on nested matching objects.
      • Children are now only scanned when their parent is not already marked for removal, preventing the same subtree from being deleted twice.
    • Fixed Merge Armatures crashing when removing nested rigidbody objects.
      • Matching children are no longer queued separately when their parent is already being removed.
    • Fixed Connect Bones collapsing branching bones such as shoulders, legs, fingers, and other limbs towards the spine.
      • It no longer enables use_connect on every parented bone.
      • Bone connections now use fix_bone_orientations, matching the behaviour of Fix Model's Connect Bones option.
    • Fixed right-side bones being incorrectly renamed as left-side bones by Convert Bones to Valve.
      • Removed right-side aliases such as rshoulder, rarm, relbow, rwrist, rleg, rknee, and rankle from the left-side alias lists.
    • Fixed Generate Twist Bones incorrectly reporting the Remove Constraints success message.
      • It now reports the number of twist bones generated.
    • Fixed Merge Armatures reading attach_to_bone directly instead of using the safe enum getter.
      • Prevents dynamic enum indices from being treated as bone names.
      • Empty enum placeholders are now ignored instead of being accepted as valid parent bones.
    • Fixed SavedData not always restoring the armature's original pose_position after a mode change.
    • Fixed clean_shapekeys crashing after all shape keys had been removed and the shape_keys datablock became empty.
    • Fixed Repair Broken Shapekeys selecting the wrong replacement point.
      • The majority vote is now based on coordinates rather than separate ShapeKeyPoint objects.
    • Fixed Repair Broken Shapekeys failing on meshes that only contain a Basis shape key.
    • Fixed Repair Broken Shapekeys spamming standard output with per-vertex debug messages.
    • Fixed MMD bone morphs only being baked into the first mesh.
      • Bone morphs are now baked into every mesh on models with separate body, face, hair, clothing, or accessory meshes.
      • Each morph uses one pose and depsgraph evaluation across all relevant meshes.
    • Fixed the Fix Model progress bar exceeding its total on models containing multiple meshes.
      • Progress calculations now account for the number of meshes being processed.

    Changed

    • Changed the Remove Rigidbodies and Joints operator ID from my_plugin.* to cats_manual.*.
    • Updated Connect Bones to use the shared fix_bone_orientations logic used by Fix Model.
    • Moved Scene.pose_to_shapekey_name from the class body into register().
    • Added a report_lines() test helper for reading Blender operator reports through redirected standard output.

    Tests

    • Added regression tests for the repaired armature operators.
    • Added static validation for the bone alias tables, including:
      • Alias collisions
      • Duplicate aliases
      • Left and right side markers
      • Left and right mirroring
    • Added Blender regression tests for:
      • Convert Bones to Valve
      • Connect Bones
      • Remove Rigidbodies and Joints
      • Repair Broken Shapekeys
      • Generate Twist Bones
      • Merge Armatures attachment handling
    • Added tests for safe attach_to_bone enum handling and empty enum placeholders.

    Internal Cleanup

    • Removed an unreachable bone-collection block from Fix Model.
      • The block could never run because all bone collections had already been removed.
    • Removed the unused bone_collections_backup logic from Fix Model.
    • Removed the unnecessary Edit Mode round trip that only existed to populate the unused bone-collection backup.
    • Kept the required Object Mode switch and bone-collection removal behaviour.
    • Removed the unused TransformValidator validation scaffolding.
    • Removed duplicate implementations of is_transform_clean and validate_merge_armature_transforms.
    • Removed attach_mesh_to_armature, which duplicated the behaviour of AttachMesh.execute.
    • Removed the unused detect_bones_to_merge and mix_vertex_groups functions.
    • Removed the always-false mesh_only parameter and the unread mesh_name parameters.
    • Removed the unused POSITION_TOLERANCE constant.
    • Removed a redundant per-mesh loop around a scene-global operation.
    • Removed outdated Blender 2.8-era Object.layers checks.
    • Removed three duplicate Edit Mode switches.
    Downloads