Merge branch 'main' into chore/sdk-0.11.0

This commit is contained in:
nvrl authored and GitHub committed 2026-11-09 14:36:49 +01:00
commit a0ab243be6
22 files changed
+1027 -48

No files matched your search

+9
View File
@@ -17,6 +17,15 @@ scratch (user data in `staging/` and `recovery/` is never touched by this).
Convert epoch timestamps at the SDK boundary and explicitly preserve photo modification
times now that they are independent of capture times. See [the SDK review](SDK-0.11.0.md)
for features and breaking changes.
Schema: **45**. Synced folders now distinguish device backups from My files attachments.
Existing folders remain device backups; older builds cannot open the upgraded database.
### Added
- `pdfs sync attach PATH --to REMOTE` connects an existing local directory to an existing
My files folder. The first sync preserves one-sided files and differing versions (#67).
Attachments stay in mirror mode, are excluded from device profiles, and cannot delete
the remote root when syncing is stopped.
## [3.7.0] — 2026-11-02
+1
View File
@@ -80,6 +80,7 @@ commands are for scripts and for cases where the mount is not available.
| Command | Description |
|---|---|
| `pdfs sync add PATH` | Back up a local folder under this computer and keep it in sync. |
| `pdfs sync attach PATH --to REMOTE` | Merge a real local folder with an existing My files folder, keeping both versions on initial conflicts. |
| `pdfs sync list` | List synced folders with their IDs and state. |
| `pdfs sync rm ID [--delete-remote]` | Stop syncing. Local files stay; `--delete-remote` also removes the copy on Proton Drive. |
| `pdfs sync mode ID mirror\|ondemand` | Switch between a full local copy (`mirror`) and online only (`ondemand`). |
+28 -1
View File
@@ -5,6 +5,7 @@ up to Proton Drive and kept in step with it. This page covers adding one, what t
that should not be backed up, changes that are still waiting to upload, conflicts, and pausing.
- [Add a folder](#add-a-folder)
- [Attach an existing My files folder](#attach-an-existing-my-files-folder)
- [Synced or online only](#synced-or-online-only)
- [Move files between synced folders and My files](#move-files-between-synced-folders-and-my-files)
- [Stop syncing a folder](#stop-syncing-a-folder)
@@ -74,7 +75,8 @@ again when they move into a synced one.
**Stop Syncing** in the app, or `pdfs sync rm ID`, keeps both the local files and the copy on
Proton Drive. To delete the copy on Proton Drive as well, tick **Also delete from Proton Drive**,
or add `--delete-remote`.
or add `--delete-remote`. Attached My files folders always keep the cloud copy;
`--delete-remote` is refused for them.
## Sync a folder from scratch
@@ -169,3 +171,28 @@ The version you do not keep goes to the Trash, so a wrong choice can be undone.
`pdfs sync resume` continues at once.
- **Limit bandwidth** under **Preferences → General → Network**, or with
`pdfs sync limit --up 2M --down 10M`. `0` removes a limit.
## Attach an existing My files folder
Run `pdfs sync attach /path/to/local --to Work` to merge a real local directory
with the existing `Work` folder in My files. `--to` also accepts an absolute path
inside the My files mount. Both folders must already exist.
The local directory stays a normal mirrored directory. The first pass copies files
found on only one side, adopts identical files, and keeps a conflict copy when
versions differ; it does not propagate deletions. Later passes use ordinary
bidirectional sync, including deletions and the existing wipe guards.
The My files root, shared folders, overlapping sync roots, and local paths inside
or containing the cloud mount are refused. Use `pdfs sync list` to find the new
folder's ID and monitor its state. `pdfs sync rm ID` stops syncing and keeps both
copies. `--delete-remote` is refused for attached folders.
Attached folders support **mirror** mode only. Use the main My files mount for online-only
access. They are listed separately from device backups and are not included in the device
profile used to restore another computer.
On the first sync, the remote version keeps the original name when both versions differ.
The local version is preserved as a conflict copy next to it and is uploaded too. If the
remote root is trashed or moved outside My files, syncing stops with an error and local
files are kept.