diff --git a/Cargo.lock b/Cargo.lock index 83edbc3..502dd5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3520,7 +3520,7 @@ checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "pdfs-cli" -version = "3.7.0" +version = "3.8.0" dependencies = [ "anyhow", "clap", @@ -3536,7 +3536,7 @@ dependencies = [ [[package]] name = "pdfs-core" -version = "3.7.0" +version = "3.8.0" dependencies = [ "async-trait", "base64 0.23.1", @@ -3563,7 +3563,7 @@ dependencies = [ [[package]] name = "pdfs-fuse" -version = "3.7.0" +version = "3.8.0" dependencies = [ "async-trait", "base64 0.23.1", @@ -3585,7 +3585,7 @@ dependencies = [ [[package]] name = "pdfs-gui" -version = "3.7.0" +version = "3.8.0" dependencies = [ "anyhow", "async-channel", diff --git a/Cargo.toml b/Cargo.toml index 0bd0dbd..b23645a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["crates/pdfs-core", "crates/pdfs-fuse", "crates/pdfs-cli", "crates/pdfs-gui"] [workspace.package] -version = "3.7.0" +version = "3.8.0" edition = "2024" license = "MIT" authors = ["Nils Pukropp "] diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index fe0030d..a6b1fcc 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -11,15 +11,38 @@ scratch (user data in `staging/` and `recovery/` is never touched by this). ## [Unreleased] -Schema: **45**. Synced folders now distinguish device backups from My files attachments. -Existing folders remain device backups; older builds cannot open the upgraded database. +## [3.8.0] — 2026-11-12 + +Schema: **45**. Synced folders now tell device backups apart from folders attached to My files. +Existing folders stay 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. +- **Sync a local folder with a folder you already have in My files** (#67, #77). + `pdfs sync attach ~/Work --to Work` keeps `~/Work` an ordinary local folder and syncs it both + ways with My files/Work. The first sync uploads files that are only on this computer, downloads + files that are only on Proton Drive, and keeps both versions of a file that differs: the one on + Proton Drive keeps its name, and the local one becomes a conflict copy next to it and is + uploaded too. Attached folders are always kept on this computer, never online only. They are + listed apart from device backups and are not part of the device profile used to restore another + computer. Stopping one keeps both copies, and `--delete-remote` is refused for it. If the folder + on Proton Drive is trashed or moved out of My files, syncing stops with an error and the local + files stay. Attaching a folder is done from a terminal for now. + +### Fixed + +- **My files comes back after the service was killed for hanging** (B279). A killed service left + its folders behind as dead mounts, and every restart then failed with `File exists` and retried + forever without opening anything, until the mounts were cleared by hand. The service now clears + a dead mount before it opens the folder. On a large account a restart that did open My files was + killed again, because loading the account took longer than the 2 minutes the service has to + report in. Startup now gets 10 minutes, and the 2 minutes apply again once the service answers. + +- **Uploading many large photos no longer runs the computer out of memory** (B280). Every image + upload decodes the whole picture to make its thumbnail, and up to 16 did so at once. A batch of + 100-megapixel photos took about 9 GiB, filled the swap, and the service was killed on every + restart. Thumbnails now share 512 MiB between them: phone photos are still made side by side, + and a very large photo waits and is made on its own. ## [3.7.0] — 2026-11-02 diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 3731583..e930c91 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -102,7 +102,7 @@ That URL follows `main`. To stay on releases, pin the input to a release tag ins the tag to update: ```nix -inputs.proton-drive-linux.url = "github:narrrl/proton-drive-linux/v3.7.0"; +inputs.proton-drive-linux.url = "github:narrrl/proton-drive-linux/v3.8.0"; ``` Each release tag is built with Nix before the release is published. diff --git a/packaging/PKGBUILD b/packaging/PKGBUILD index fe35901..df5de37 100644 --- a/packaging/PKGBUILD +++ b/packaging/PKGBUILD @@ -9,7 +9,7 @@ # Build + install: cd packaging && makepkg -fi pkgname=proton-drive-linux -pkgver=3.7.0 +pkgver=3.8.0 pkgrel=1 pkgdesc="Unofficial Proton Drive client for Linux: files-on-demand FUSE mount, CLI, GTK4 app + tray" arch=('x86_64') diff --git a/packaging/proton-drive-linux.spec b/packaging/proton-drive-linux.spec index a4c1005..605fa3f 100644 --- a/packaging/proton-drive-linux.spec +++ b/packaging/proton-drive-linux.spec @@ -10,7 +10,7 @@ # Match Arch PKGBUILD `!lto` — LTO has broken some GTK/Rust links in practice. %global _lto_cflags %{nil} -%{!?version: %global version 3.7.0} +%{!?version: %global version 3.8.0} %global forge https://github.com/narrrl/proton-drive-linux # Files come from the checkout, or from the unpacked tag archive. %global src %{?git_dir}%{!?git_dir:.} diff --git a/po/pdfs.pot b/po/pdfs.pot index ebeac28..750e90f 100644 --- a/po/pdfs.pot +++ b/po/pdfs.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: proton-drive-linux 3.7.0\n" +"Project-Id-Version: proton-drive-linux 3.8.0\n" "Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n" "POT-Creation-Date: 2026-11-01 17:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"