Repository navigation
Add Reorganize plug-in with plan preview and apply - #47
Merged
Merged
Conversation
Users need to rehearse a large folder reorganization (for example, moving thousands of inherited project files into a standard layout) before touching the originals. Moves, renames, new folders and conflict choices are staged as a plan, reviewed as a whole, and only then applied. The new reorganize.spl plug-in shows the proposed result as a virtual "reorg:" filesystem beside the real disk panel. F6, rename, F7 and Delete edit the plan, not the disk. Plans are saved as UTF-8 JSON (.reorgplan). The plug-in-independent core (snapshot, overlay, rules, CSV mapping, validation, compiler, journal, reconciliation, revert, reports) has no host dependency, so it is unit-tested in NativeSafetyTests. Applying runs through the host's existing durable operation script instead of a second copy engine, so plan steps keep the same commit, metadata-loss and crash-recovery guarantees as F6. For this, SDK 105 appends ExecuteOperationSteps, EnumApplicationPathReferences and GetApplicationDataDirectory to CSalamanderGeneralAbstract; the vtable is append-only, so existing plug-ins are unaffected. The worker gains plan-step flags that fail instead of prompting, reject unexpected cross-volume moves, verify source identity and remove only empty directories. A plug-in with a running step script cannot be unloaded until Finished is delivered. The base-address slots were agreed with the parallel handoff plug-in branch to keep both branches mergeable. preview-spec.md holds the full specification and remaining task list.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Users need to rehearse a large folder reorganization (for example, moving thousands of inherited project files into a standard layout) before touching the originals. Moves, renames, new folders and conflict choices are staged as a plan, reviewed as a whole, and only then applied.
The new reorganize.spl plug-in shows the proposed result as a virtual "reorg:" filesystem beside the real disk panel. F6, rename, F7 and Delete edit the plan, not the disk. Plans are saved as UTF-8 JSON (.reorgplan). The plug-in-independent core (snapshot, overlay, rules, CSV mapping, validation, compiler, journal, reconciliation, revert, reports) has no host dependency, so it is unit-tested in NativeSafetyTests.
Applying runs through the host's existing durable operation script instead of a second copy engine, so plan steps keep the same commit, metadata-loss and crash-recovery guarantees as F6. For this, SDK 105 appends ExecuteOperationSteps, EnumApplicationPathReferences and GetApplicationDataDirectory to CSalamanderGeneralAbstract; the vtable is append-only, so existing plug-ins are unaffected. The worker gains plan-step flags that fail instead of prompting, reject unexpected cross-volume moves, verify source identity and remove only empty directories. A plug-in with a running step script cannot be unloaded until Finished is delivered.
The base-address slots were agreed with the parallel handoff plug-in branch to keep both branches mergeable. preview-spec.md holds the full specification and remaining task list.