Legacy feature-gap audit
This audit compares the current Blender Development pre-release with the legacy main-legacy implementation. It identifies user-visible capabilities that have not yet been reintroduced while avoiding false gaps where the current plugin already provides the same outcome through newer IntelliJ Platform or PyCharm APIs.
The comparison was completed on July 22, 2026. It covered registered plugin extensions and actions, Kotlin and Python implementations, templates, tests, changelogs, and project documentation. Generated build output and third-party payloads were excluded.
Technical terms with a dotted underline include source evidence. Focus or hover over a term to see its repository-relative path, or follow the link to open that file on Codeberg.
Summary
Section titled “Summary”| Result | Count | Main themes |
|---|---|---|
| High-priority gaps | 3 | Managed Blender installations, isolated launches, and extension packaging workflows |
| Medium-priority gaps | 7 | Project variants, generated configurations, multi-source operation, Run-mode reloading, and manifest options |
| Low-priority gaps | 6 | IDE affordances, optional scaffolding, and consolidated diagnostics |
The current plugin already has the stronger core run/debug architecture. It provides PyCharm debugger attachment, session-aware runtime commands, per-project environment variables, installation discovery, and version-matched Blender API stubs. The largest remaining gaps surround that core workflow: acquiring Blender, isolating its state, packaging extensions, and supporting alternate project layouts.
Capability matrix
Section titled “Capability matrix”| ID | Legacy capability | Current status | Result |
|---|---|---|---|
| FG-01 | Download, verify, extract, cache, and delete managed Blender versions | Settings can download, extract, detect, and delete managed versions; checksum verification remains | Partial |
| FG-02 | Project-local Blender sandbox, optional user-config import, custom splash, and cleanup | No managed sandbox | Gap |
| FG-03 | Build, validate, and arbitrary Blender CLI run-configuration modes | Blender launch configuration only | Gap |
| FG-04 | Classic single-file add-on project generator | Package-oriented src generator only |
Gap |
| FG-05 | Automatic Start, Build, and Validate configuration creation | Configurations are not generated | Gap |
| FG-06 | Multiple extension source folders linked in one project | One configured extension source folder | Partial |
| FG-07 | Automatic extension reload during normal Run sessions | Reload on save is limited to Debug | Partial |
| FG-08 | Optional automatic class-registration scaffold | Explicit registration only | Gap |
| FG-09 | Manifest platform filters and build exclusion patterns in the wizard | Not exposed or generated | Gap |
| FG-10 | Persistent catalog of multiple named custom Blender installations | One project-specific custom path | Partial |
| FG-11 | Connection status-bar widget | No status widget | Gap |
| FG-12 | .blend file and marked source-folder icons |
No Blender-specific icon provider | Gap |
| FG-13 | Blender operator and panel live templates | Full-file templates only | Gap |
| FG-14 | New Blender package action that creates a package and __init__.py |
File templates only | Gap |
| FG-15 | Post-creation project repair and scaffolding commands | Initial wizard generation only | Gap |
| FG-16 | Consolidated offline launch-environment diagnostic snapshot | General and runtime logging only | Partial |
High-priority gaps
Section titled “High-priority gaps”Managed Blender installation lifecycle
Section titled “Managed Blender installation lifecycle”The legacy BlenderDownloadermain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/blender/services/BlenderDownloader.kt could download supported Blender versions, fetch and check Blender’s SHA-256 manifest, extract the archive into managed storage, locate the executable, reuse cached installations, report progress, and delete installed versions.
The current installation workflow can download, extract, detect, and delete managed Blender versions from Settings > Tools > Blender Development. The installation scannermain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/core/BlenderInstallationScanner.kt refreshes the shared installation list after a managed change. Published archive checksum verification is not implemented yet.
User impact: Supported Blender versions can be managed from PyCharm, but this pre-release workflow does not yet verify the downloaded archive against Blender’s published checksum.
Project-local Blender sandbox
Section titled “Project-local Blender sandbox”The legacy BlenderLaunchermain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/blender/services/BlenderLauncher.kt could redirect Blender configuration, scripts, and data into a project-local sandbox. It also supported importing selected user preferences, applying a project splash image, excluding the sandbox from indexing, and clearing the sandbox from the UI.
The current launchermain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/core/BlenderLauncher.kt supports environment variables and additional script directories, but it does not construct an isolated Blender home or configuration area.
User impact: launches can depend on and affect the user’s normal Blender configuration, which reduces isolation and reproducibility.
Extension build, validation, and generic commands
Section titled “Extension build, validation, and generic commands”The legacy run-configuration typemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/run/BlenderRunConfigurationType.kt offered Start Blender, Build Extension, Validate Extension, and arbitrary Blender Command modes. Its profile statemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/run/BlenderRunProfileState.kt supplied Blender’s extension CLI with source and output paths.
The current configuration typemain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/run/BlenderConfigurationType.kt registers one launch factory for Run or Debug and does not expose packaging or validation as first-class IDE workflows.
User impact: extensions cannot currently be built or validated through Blender Development’s run configurations.
Medium-priority gaps
Section titled “Medium-priority gaps”Single-file add-on projects
Section titled “Single-file add-on projects”The legacy plugin registered a single-file project generatormain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/project/BlenderAddonFileProjectGenerator.kt for classic add-ons. It exposed legacy bl_info fields such as location, warning, documentation URL, category, Blender version tuple, and optional example code.
The current generatormain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/wizard/BlenderNewProjectGenerator.kt creates a src/__init__.py project and can optionally add an extension manifest. It does not offer a root-level single-file layout.
Generated run configurations
Section titled “Generated run configurations”Legacy project generators created Start Blender, Build, and Validate configurations with the selected version, source path, module name, and sandbox preference. A project servicemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/project/BlenderProjectService.kt could recreate them later.
The current wizard stores project settings but requires the user to add a Blender configuration through Run > Edit Configurations.
Multiple extension source folders
Section titled “Multiple extension source folders”The legacy project statemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/ui/settings/BlenderSettings.kt could mark several folders as Blender sources, and BlenderLinkermain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/blender/services/BlenderLinker.kt linked each source into Blender’s extension repository. The current project statemain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/state/ProjectConfig.kt has one extension source folder and one add-on or extension name.
The current Script directories list expands Blender’s script search path, but it is not equivalent to independently managing and reloading several extensions.
Reload on save during Run
Section titled “Reload on save during Run”The legacy save listenermain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/listeners/BlenderFileSaveListener.kt could request a reload from ordinary launch workflows. The current reload-on-save listener is installed by BlenderDebugProgramRunnermain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/run/BlenderDebugProgramRunner.kt and is scoped to Debug sessions, where the full runtime command channel is available.
Reload on save during Debug is already supported and is not a gap.
Automatic registration scaffold
Section titled “Automatic registration scaffold”The legacy project template generatormain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/project/BlenderProjectTemplateGenerator.kt could generate an auto_load.py helper that discovered and registered Blender classes automatically. The current example templatemain: src/main/resources/fileTemplates/internal/NewProjectMainScript.ft uses an explicit class tuple and register()/unregister() functions.
Manifest platforms and build exclusions
Section titled “Manifest platforms and build exclusions”The legacy extension wizardmain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/project/BlenderProjectGenerators.kt accepted platform filters and build-path exclusion patterns for blender_manifest.toml. The current wizard statemain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/wizard/BlenderProjectSettings.kt covers extension identity, type, version range, license, website, tags, and permission reasons, but it does not expose these two build/distribution options.
Named custom Blender installations
Section titled “Named custom Blender installations”The legacy settings statemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/ui/settings/BlenderSettings.kt stored multiple custom executable paths as reusable named entries. The current managermain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/ui/toolwindow/BlenderToolWindowContent.kt supports discovered installations or one custom path for the active project.
Low-priority gaps
Section titled “Low-priority gaps”Connection status widget
Section titled “Connection status widget”The legacy status-bar widgetmain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/ui/statusbar/BlenderStatusBarWidget.kt distinguished connected, running but disconnected, error, and not-running states. The current plugin communicates runtime state through action availability, notifications, and logs.
Project-view icons
Section titled “Project-view icons”The legacy icon providermain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/icons/BlenderIconProvider.kt assigned Blender-specific icons to .blend files and marked extension source folders. The current plugin does not register an equivalent provider.
Operator and panel live templates
Section titled “Operator and panel live templates”The legacy plugin included Python live templatesmain-legacy: src/main/resources/liveTemplates/Blender.xml for Blender operators and UI panels. The current Main Script and Component templatesmain: src/main/kotlin/com/sakurasedaia/blenderdevelopment/lib/TemplateGroupDescription.kt create complete files but do not provide in-editor snippet expansion.
Blender package creation
Section titled “Blender package creation”The legacy New Blender Package actionmain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/actions/BlenderCreatePackageAction.kt could create a package directory and render __init__.py in one operation. The current Blender template group creates files but does not create a package structure as one action.
Post-creation scaffolding
Section titled “Post-creation scaffolding”The legacy tool windowmain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/ui/toolwindow/BlenderToolWindowContent.kt could add or repair Git ignore rules, a GPL license, generated run configurations, and an optional local AI-agent guidance pack after project creation. The current wizard generates the main repository files initially but does not offer repair commands.
The legacy agent pack should be reconsidered against current IDE and Codex conventions before any reimplementation.
Consolidated environment diagnostics
Section titled “Consolidated environment diagnostics”The legacy offline telemetry servicemain-legacy: src/main/kotlin/com/sakurasedaia/blenderextensions/telemetry/TelemetryService.kt recorded one diagnostic block containing the operating system, architecture, memory, Java version, sandbox state, Blender and Python versions, API-stub status, and launch options.
The current plugin has more focused scanner, launch, command, and Blender runtime logging, but it does not produce one consolidated environment snapshot.
Capabilities that are not gaps
Section titled “Capabilities that are not gaps”The following legacy outcomes already exist or have been superseded:
| Capability | Current result |
|---|---|
| Cross-platform Blender discovery | Current scanner provides the same outcome with richer diagnostics and cached application-level results |
| Launching and synchronizing project code | Run and Debug both launch Blender and refresh or load the configured project |
| Blender Python debugging | Dedicated Debug runner, session coordination, automatic PyCharm attachment, and Just my code support |
| Reload on save during Debug | Lifecycle-scoped listener is installed for the Debug process |
| Manual add-on reload | Session-aware runtime action resolves extension manifest IDs |
| Run a selected Python script | Available from the Tools menu and Python editor context menu |
| Stop an active Blender process | Available as a runtime command |
| Python environment creation and selection | Delegated to PyCharm’s native Python project workflow |
| Version-matched Blender API stubs | Installed into the selected interpreter and recorded in pyproject.toml |
| Core manifest and repository scaffolding | Current wizard generates metadata, permissions, licensing, README, and Git ignore content |
| Launch customization | Current project settings add arguments, environment variables, log level, repository name, and script directories |
Historical claims of 11-language localization are also not counted as a gap. The audited legacy branch contains only its base message bundle and no locale-specific bundles.
Recommended sequence
Section titled “Recommended sequence”- Decide whether Blender Development should own managed Blender downloads and project-local sandboxes. Both features create long-term security and maintenance responsibilities.
- Add Build and Validate workflows on top of the current run-configuration and project-state architecture.
- Generate the supported configurations from the project wizard.
- If Run-mode hot reload is desired, establish the runtime session in both Run and Debug while keeping debugger attachment conditional.
- Decide whether projects support one extension, several extension roots, classic single-file add-ons, or automatic registration before expanding project state.
- Add platform filters and build exclusions to the extension wizard.
- Treat status indicators, icons, snippets, package creation, diagnostics, and repair commands as independent follow-up improvements.