Finder selected-file transfers
Pinned TortoiseGit: 7338078f8ddd924b8cddee35f512f2286072136d.
The active Explorer drop commands are in TortoiseShell/ContextMenu.cpp:772–797:
Move here, Move and rename here for one eligible source, and Copy and add here
when Move is unavailable. Ordinary Copy/Copy-and-rename/Export drop entries are
commented out in this source. Commands/DropMoveCommand.cpp supplies the rename
question, ordered Git move and error continuation; DropCopyAddCommand.cpp copies
before running Add. Existing native Move/Copy workflows implement those operations.
Direct selection and destination review
Finder's selected-item menu now offers Transfer… with original command artwork. It captures the exact selected file URLs immediately; the later clipboard and Finder selection cannot redirect it. It honors the macOS file-transfer preference, icon preference, existing shell restrictions and cached repository exclusions. Toolbar, container and sidebar entries do not invent an item-source selection. Snapshot eligibility performs no Git work inside Finder.
The source request uses .transferFiles, selected paths and no sources payload.
The containing app owns a native destination-repository picker. Cancellation
performs no Git mutation. Acceptance uses the existing repository/metadata/security
scope adoption path, then opens a native Transfer files review with captured
sources, destination, owner and preferences. The reviewed destination form has one
destination path and explicit source URLs. Neither form conveys sandbox authority.
The source picker requests a destination repository root; the review's folder picker
can select a subfolder of that captured working tree.
The review preserves source choice eligibility: one versioned source in the same working tree offers Move and Move/Rename; multiple eligible sources offer Move; unversioned/external sources offer Copy/Add. Administrative/invalid destinations cannot enable any operation. It revalidates recently used destinations before use, keeps twelve recent paths per repository and stores them in the captured preferences. The destination list does not substitute a permission grant.
Accepted actions capture their ordered sources and folder before closing. The chooser waits for actual native picker/owner-sheet detach and preparation drain before delivering exactly one handoff. Move/Rename preserves separately staged and working contents; Copy/Add retains the source and stages copied destination bytes. Existing collision, rename, Ignore/Abort, source-grant and cancellation workflows remain available. Quit confirmation blocks new operations in all three windows. Retired asynchronous preparation and release receipts remain counted until their workers and native sheets actually finish. Owner closure suppresses late acceptance. Native children inherit appearance and hidden test-owner alpha.
macOS adaptation and explicit remaining scope
This is an explicit selected-item workflow, not an Explorer right-drag interception. Apple's public Finder Sync extension API provides selected-item/container/sidebar/toolbar menus and badges for monitored folders. It does not expose an Explorer-style drag-destination menu callback. Physical Finder drag/drop interception remains absent; the app's existing drop review and explicit source/destination workflows supply related functionality. Availability outside monitored folders follows Finder Sync's platform restrictions.
Source fidelity remains partial: external/nonversioned macOS files are copied and added after explicit destination/source permission checks; no Windows shell drag modifier state is invented. Source-commented Copy/Copy-and-rename/Export commands remain omitted. Full physical Finder/keyboard/VoiceOver gestures, multi-display picker behavior, signed App Group/security-scope delivery and installed App Store acceptance remain open. No whole-dialog/application completion is claimed.
Grouped verification
scripts/test-finder-source-transfers.py compiles one stable cached receiver from
the actual app objects, actual Finder menu source and all five fixtures. The new
FinderSourceTransferVerification uses private repositories, preferences,
pasteboard and action logs, hidden owners/pickers, actual Move/Rename/Copy/Add Git
mutations, cancellation, recent-path revalidation and retained preparation/Quit
checks. Retained drop, Move, Copy and Finder transfer cases preserve their behavioral
assertions; affected drop handoffs now wait for actual asynchronous detach, and
sheet parents remain hidden; the receiver also hides every ordered native window.
Git global/XDG configuration and author/committer environment are isolated per case. Cache inputs include app objects/sources, framework
modules/binaries, receiver sources, architecture, compiler/SDK and flags through
native_receiver; generated fixture paths are stable across reruns.
The batch evidence records the compile name-collision repair, 35 passing Core cases and ten passing native case/engine combinations. All ten receivers were reaped and independently absent. These automated object/menu checks do not certify physical installed Finder delivery or signed deployment.