Skip to content

🚀 v1.5.0

Latest

Choose a tag to compare

@FootClanSoldier FootClanSoldier released this 05 Aug 13:44
· 42 commits to main since this release
eba80c6

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 — Beautify
  • Ctrl+S — New Script
  • Delete — Remove Selected Item
  • Physical key before 1 — Toggle Tree / Script Editor Focus
  • Ctrl+T — Collapse Tree
  • Ctrl+R — Rename
  • Ctrl+F — New Folder
  • Ctrl+Alt+S — Add Scripts
  • Ctrl+Alt+A — Add Scenes
  • Ctrl+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.json and folder_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