Features ======== The Blender Development for PyCharm plugin offers a rich set of features designed to make extension development as smooth as possible. Automated Environment Management -------------------------------- See :doc:`../usage/environment-management` for more details. - **One-Click Downloads**: Automatically download and manage multiple Blender versions (4.2, 4.3, 4.4, 4.5, 5.0, and 5.1) directly from the IDE. - **Improved Scanner**: Scanning for Blender installations is now faster due to version metadata caching. Improved macOS and Linux detection using the ``which`` command and better custom path labeling. - **Automatic Python Interpreter Setup**: When a managed Blender version is downloaded, the plugin automatically locates and configures the bundled Python interpreter for stubs and linting. Streamlined environment configuration for new projects. - **System Version Detection**: Automatically scans your system for existing Blender installations (e.g., in ``Program Files`` or ``/Applications``) and lets you use them instantly. Refined cross-platform path handling using Kotlin NIO.2. - **Add Other System Installs for Blender**: Gives you the ability to add a Blender Install not detected by the IDE (I.E if an install is in ``~/Apps``) - **Version Switching**: Easily switch between managed, system-wide, or custom Blender versions for testing and validation. - **Inline Download Buttons**: The Run Configuration editor features a "Download" button next to the Blender version dropdown if the selected version is missing. - **Global Management**: A dedicated tool window on the right sidebar allows you to see what's installed, delete managed versions, or view discovered system versions. - **UI Improvements**: Optimized Tool Window layout with scrollable tables and dedicated action buttons for easier Blender version management. - **Connection Status**: The Blender Management tool window displays a "Status" label indicating whether PyCharm is actively connected to a running Blender instance. Sandboxed Development --------------------- See :doc:`../usage/development-testing` for more details on sandboxing and isolation. - **Isolation**: Launch Blender in a project-local environment (``.venv/blender_sandbox``) to prevent conflicts with your main Blender installation. - **Multiple Source Folders**: The "Addon source directory" field supports multiple, comma-separated paths. The plugin creates separate symlinks/junctions for each folder. - **Project-Specific Config**: Each project can have its own user preferences and startup files. - **Custom Splash Screen**: Personalize your development sessions with a project-specific ``splash.png``. - **User Config Import**: Optionally import your system Blender's user preferences, startup files, and bookmarks into the sandbox. Real-time Hot-Reloading ----------------------- See :doc:`../usage/hot-reloading` for detailed instructions on the hot-reloading workflow. - **Auto-Reload**: Automatically trigger a reload in Blender whenever you save a file in PyCharm. - **Manual Reload**: Use ``Ctrl+Alt+R`` (or the Blender menu) to trigger a reload at any time. - **Robust Cache Purging**: The plugin uses a deep purging logic to ensure that Python's ``sys.modules`` cache is cleared, making sure your changes are always reflected. - **Blender Status Indicator**: A real-time status bar widget allows you to monitor Blender connection states (Connected, Disconnected, Not Running) at a glance. - **Bidirectional Heartbeat**: Implemented a more robust TCP client with bidirectional heartbeat and automatic retry logic for connection stability. Smart Project Templates ----------------------- See :doc:`../usage/project-lifecycle` for a complete guide on the project creation process. - **New Project Wizard**: Quickly bootstrap new extensions with a structure that mirrors PyCharm's Pure Python setup. Improved validation and error reporting. - **Specialized Project Type**: A dedicated "Blender Development" project type is available in the New Project dialog. - **Manifest Configuration**: Configure your ``blender_manifest.toml`` (metadata, permissions, compatibility) directly during project creation. Switched Manifest IDs from kebab-case to snake_case to comply with Blender's requirements. - **Simple Add-on & Module Templates**: Quickly create a single-script Blender add-on (legacy ``bl_info`` support) or a boilerplate Blender module with standard imports from the **New** menu. - **Auto-load Support**: Optionally include an ``auto_load.py`` helper to handle complex module structures automatically. - **Automatic Run Configs**: Gets you up and running immediately with pre-configured Testing, Build, and Validate profiles. - **Source Folder Marking**: Automatically sets the ``src`` folder as the Addon Source root Integrated CLI Tools -------------------- See :doc:`../usage/cli-tools` for more information on command-line integration. - **Build**: One-click building of your extension into a ZIP distribution. - **Validate**: Ensure your extension meets Blender's manifest requirements. - **Custom Commands**: Run any ``blender --command`` directly from the IDE. - **Sandbox Management**: New tool window for clearing and managing Blender sandboxed environments. Integrated Testing & Diagnostics -------------------------------- See :doc:`../usage/development-testing` for more information on testing and telemetry. - **Unit & Integration Testing**: A comprehensive test suite, including headless integration tests for TCP heartbeat and reload logic. - **Offline Telemetry**: Local-only telemetry for debugging and error reporting. - **Logging**: Added log rotation for better disk usage management and expanded debug output for connection handshakes. Smart UI Integration -------------------- - **Blender File Icons**: ``.blend`` and ``.blend1`` files are automatically marked with a custom Blender color icon. - **Integrated Logging**: A dedicated ``blender_plugin.log`` in your project root tracks all operations for easy troubleshooting. See :doc:`../usage/troubleshooting` for details.