Skip to content

Add Reorganize plug-in with plan preview and apply - #47

Merged
mzagozda merged 1 commit into
mainfrom
feature/handoff-plugin
Oct 3, 2026
Merged

mzagozda merged 1 commit into
mainfrom
feature/handoff-plugin

Conversation

@mzagozda

@mzagozda mzagozda commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

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.

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.
Copilot AI balanced review requested due to automatic review settings October 3, 2026 18:47
@mzagozda
mzagozda merged commit 2efa652 into main Oct 3, 2026
13 of 14 checks passed
@mzagozda
mzagozda deleted the feature/handoff-plugin branch October 3, 2026 18:49
Copilot stopped reviewing on behalf of mzagozda due to an error October 3, 2026 19:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants