feat(fuse,core,cli,gui): move between locations without transferring content

A move request with two absolute paths is resolved against every
location (My files, on-demand and mirror synced folders) and made as a
server-side move_node. The local side is levelled afterwards: mounts
forget and re-list, a mirror folder renames its copy and baseline along
or drops the copy once Drive holds it.

Anything only this disk holds is refused up front: queued ops, open
writes, unsynced or ignored mirror files and symlinks. The GUI Move
dialog gains a top-level list of locations.
This commit is contained in:
nvrl committed 2026-09-29 00:26:56 +02:00
1 parent 3fb7b9be6b
commit 5f9d07aff1
23 files changed
+3853 -2673

No files matched your search

+8 -2
View File
@@ -291,10 +291,16 @@ enum Command {
new_name: String,
},
/// Move a file or folder into another folder via the running daemon.
///
/// The two paths may be in different locations: My files and any synced
/// folder, on-demand or mirrored. The move happens on Proton Drive, so
/// nothing is downloaded or uploaded again, unlike `mv` between two
/// locations.
Move {
/// File/folder path, inside the mountpoint or relative to it.
/// File/folder path: inside a location, or relative to the mountpoint.
path: PathBuf,
/// Destination folder path, inside the mountpoint or relative to it.
/// Destination folder path: inside a location, or relative to the
/// mountpoint.
new_parent: PathBuf,
},
/// Trash a file or folder via the running daemon.