System Explorer v1.5.0
v1.5.0 is the first officially supported and considered safe release of the plugin.
Earlier releases are now obsolete and should not be used for active projects. They remain available only as historical documentation of the plugin’s development.
System Explorer v1.5.0 is a major stability, workflow, and architecture update.
Compared with v1.4.0, this release introduces path-bound folders, configurable shortcuts, keyboard-driven navigation, persistent tree state, recovery after C# assembly reloads, stronger duplicate-entry handling, and substantially safer file and metadata operations. Large parts of the plugin have also been moved into dedicated services and components.
✨ Highlights
- 📁 Bind virtual folders to physical project folders
- ⌨️ Use configurable shortcuts and arrow-key navigation
- 🌲 Preserve tree expansion, selection, and navigation state
- 🔄 Recover editor integration after C# assembly reloads
- 🧩 Improved handling of duplicate script and scene entries
- 🔗 Automatic synchronization of scripts and linked scenes
- 🛡️ Safer file operations, metadata persistence, and rollback
- ⚡ Faster and safer namespace refactoring
- ⏳ Visual feedback during longer batch operations
- 🧱 Major internal architecture refactor
📁 Path-Bound Folders
Virtual folders can now be linked to physical project folders.
A bound folder follows supported scripts and scenes in its linked directory while the rest of the System Explorer hierarchy remains independent of Godot’s FileSystem dock.
Folder bindings are stored separately and synchronized defensively with systems.json. Missing, invalid, or stale bindings are handled without corrupting the main systems data.
⌨️ Shortcuts and Keyboard Navigation
System Explorer shortcuts are registered under:
Editor Settings → Shortcuts → System Explorer
They can be changed or unbound through Godot’s normal shortcut settings.
Default shortcuts include:
Ctrl+B— BeautifyCtrl+S— New ScriptDelete— Remove Selected Item- Physical key before
1— Toggle Tree / Script Editor Focus Ctrl+T— Collapse TreeCtrl+R— RenameCtrl+F— New FolderCtrl+Alt+S— Add ScriptsCtrl+Alt+A— Add ScenesCtrl+N— Refactor Namespace
The displayed symbol for the focus-toggle key varies by keyboard layout.
Most shortcuts require System Explorer to have keyboard control and a compatible tree item to be selected. Beautify and Toggle Tree / Script Editor Focus also work from Godot’s Script Editor.
The focus-toggle command supports a primarily keyboard-driven workflow by moving focus between an opened script and the previous System Explorer tree or input-field context. Its visual indication is currently subtle and will be improved in a future release.
Arrow keys can navigate visible entries, expand or collapse branches, and move between the tree, Filter Items, and System Name.
Shortcut conflicts are detected and presented to the user instead of allowing an ambiguous command to run.
🌲 Persistent Tree State
Version 1.5 improves persistence of:
- expanded and collapsed branches
- the exact selected tree occurrence
- explicit keyboard deselection
- filter-related selection state
- focus transitions between System Explorer and the Script Editor
Tree and selection state are restored more consistently after editor restarts and C# assembly rebuilds.
🔄 C# Assembly Reload Recovery
System Explorer now detects C# assembly reloads and restores its editor integration instead of continuing with stale managed state.
After a rebuild, the plugin can reconnect or rebuild its dock and signal integrations, restore persistent tree data, re-register shortcuts, and reset temporary operation state.
This prevents context-menu actions, namespace refactoring, keyboard input, Script Editor synchronization, and folder-binding updates from silently becoming unavailable. If recovery cannot be completed safely, System Explorer reports the problem instead of continuing in a partially broken state.
🧩 Duplicate Entries and Scene Links
The same script or scene can appear in multiple locations in the System Explorer tree.
Version 1.5 improves synchronization while preserving the exact selected occurrence, virtual folder placement, ordering, lock state, and surrounding expansion state.
Operations are less likely to modify, remove, or collapse an unrelated duplicate entry. Newly added copies of an already linked script can also inherit its existing scene association.
When a scene is renamed through System Explorer, the plugin updates both:
- every direct occurrence of the scene in the tree
- every script entry whose linked-scene metadata points to it
Script rename and duplicate-entry operations likewise preserve linked-scene metadata.
⚡ Namespace Refactoring
Namespace refactoring has been rebuilt around dedicated discovery, validation, planning, and apply stages.
The new workflow handles duplicate entries without repeating physical work, validates open editor buffers, batches pending writes, reduces unnecessary script activation, and restores relevant editor state after completion.
Refactors should now complete faster and report incomplete or failed writes more clearly, particularly when many scripts are involved.
🛡️ Safer File and Metadata Operations
Rename, physical removal, linking, drag and drop, and metadata persistence now perform stronger validation before applying changes.
Improvements include:
- verification of physical source and target paths
- safe handling of case-only renames
- correct handling of scripts and scenes in the project root
- stricter protection of open and unsaved C# buffers
- preservation of selection and expansion state
- staged and verified metadata writes
- coordinated persistence of
systems.jsonandfolder_bindings.json - in-memory snapshots and rollback when possible
- clearer dialogs when an operation cannot be completed safely
- defensive recovery when metadata files are missing or invalid
Operations no longer proceed with physical side effects solely because an in-memory mutation succeeded.
🧾 Validation and Error Presentation
Names for systems, folders, scripts, and related entries are validated more consistently.
Reserved metadata separators are rejected before they can create malformed entries. User-facing failures are presented through consistent dialogs, while optional debug logging remains available for technical details.
Input fields are also reset more consistently when an operation cannot proceed.
🧱 Internal Architecture Refactor
Large parts of the previous partial-class implementation have been moved into dedicated services for:
- namespace refactoring
- script-buffer handling
- script reading and writing
- Beautify and CSharpier execution
- editor and assembly-reload integration
- file-operation validation
- persistence and rollback
- debugging and diagnostics
The main plugin class now acts more clearly as a composition root, providing a cleaner foundation for future development and making existing operations easier to maintain and test.
🔧 Additional Improvements
- Longer batch operations display a busy cursor while System Explorer is working
- More consistent resource-path comparison and normalization
- Self-healing of malformed legacy
res:///...metadata paths - Case-sensitive tree-state tracking for similarly named systems and folders
- Better handling of open, unsaved, duplicated, and stale script resources
- Improved selection recovery after rename and removal
- Safer folder-binding synchronization
- Permanent context-menu icons
- Context-menu actions display configured shortcuts where applicable
- General reliability, cleanup, and defensive validation improvements