Blender3mfFormat icon indicating copy to clipboard operation
Blender3mfFormat copied to clipboard

Modernization Fork Available: Blender 4.2+ Compatibility (Not for Direct Merge)

Open Clonephaze opened this issue 3 months ago • 0 comments

Hello,

This PR is informational only - not intended for direct merging. I wanted to make you and the community aware that a modernized fork is available for users who need Blender 4.2+ support.

Purpose of This PR

  • Alert users searching for Blender 4.x compatibility that a working version exists
  • Provide a reference for the changes needed to support modern Blender
  • Make the fork discoverable for those who need it now
  • Offer the work back to you if/when you return to active development to the add-on

Fork Location

Repository: https://github.com/Clonephaze/Blender3mfFormat
Branch: CriticalFixesFirst
Status: Production-ready, fully tested


📊 What Was Modernized

Core Compatibility

  • Blender 4.2, 4.3, 4.5, 5.0α - Full compatibility verified
  • Python 3.11+ - Updated for modern Python
  • Blender Extensions - Uses new manifest format (blender_manifest.toml)

Critical API Updates

  • Removed deprecated __init__() methods from operators (Blender 4.2+ requirement)
  • Verified PrincipledBSDFWrapper compatibility
  • Verified mesh.loop_triangles API
  • Verified evaluated_depsgraph_get() API

Testing Infrastructure

  • 142 unit tests - All updated and passing (Python 3.11)
  • 16 integration tests - Real Blender functionality tests
  • CI/CD - GitHub Actions running automatically
  • Cross-platform test runners - PowerShell (Windows) + Bash (macOS/Linux)

Code Quality Improvements

  • Complete type hints across all modules (100% coverage)
  • Replaced wildcard imports with explicit imports
  • Modern f-string formatting throughout
  • __all__ exports for clear public API
  • User-visible error/warning messages via self.report()
  • Warning deduplication to prevent UI spam

⚠️ Why Not Merge Directly?

This fork includes changes that are specific to my workflow and may not align with your vision:

Documentation Changes (Fork-Specific)

  • Modified README with fork-specific information
  • Updated CONTRIBUTING.md to reflect to test suite
  • Added my testing documentation

Structural Choices (Debatable)

  • Comprehensive type hints (you may prefer different typing approach)
  • Specific error reporting patterns
  • Code style choices (f-strings, etc.)

Testing Approach (Different Philosophy)

  • My test infrastructure setup
  • Specific mock patterns
  • CI/CD configuration choices

What You Might Want to Cherry-Pick

If you return to development, these changes are universally needed for Blender 4.2+:

Essential (Required for Blender 4.2+)

# OLD (Breaks in Blender 4.2+)
class Export3MF(bpy.types.Operator):
    def __init__(self):
        self.resource_id = 1

# NEW (Required for Blender 4.2+)
class Export3MF(bpy.types.Operator):
    def execute(self, context):
        self.resource_id = 1  # Initialize in execute()

Clonephaze avatar Oct 08 '25 17:10 Clonephaze