diff --git a/Cargo.lock b/Cargo.lock index d819bbf..ea75072 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3773,9 +3773,9 @@ dependencies = [ [[package]] name = "proton-drive-rs" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8807e007328fd08cad9fe93c84dd7cdb38dc97469250edf3d6b58c6df0ac0d4f" +checksum = "d6ce113d234474821d34787436ee80e1458e3d8a8f97212219615ed315eb70be" dependencies = [ "async-trait", "base64 0.23.1", @@ -3800,9 +3800,9 @@ dependencies = [ [[package]] name = "proton-sdk" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "085cd6506a49d8892a2b7ed6b5db3909750d9844610178f55979ed330d9fe715" +checksum = "2a33c67df9694f90ce60e5b34984275956244138511b4640ca0d100e1dac8b3d" dependencies = [ "aes-gcm 0.11.1", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 456c846..bf96f41 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,8 +15,8 @@ keywords = ["proton", "drive", "fuse", "sync", "linux"] categories = ["filesystem", "command-line-utilities"] [workspace.dependencies] -proton-sdk = { version = "0.7.1" } -proton-drive-rs = { version = "0.7.1" } +proton-sdk = { version = "0.7.2" } +proton-drive-rs = { version = "0.7.2" } # Internal crates. pdfs-core = { path = "crates/pdfs-core" } diff --git a/docs/BUGS.md b/docs/BUGS.md index 52b5488..770b6fd 100644 --- a/docs/BUGS.md +++ b/docs/BUGS.md @@ -12,6 +12,27 @@ Conventions: --- +## B112 — Folders shared by the same person disappear from Shared with me + +**Status:** Fixed (unverified). +**Found:** 2026-09-30, reported in #25. An account with several accepted shares from one other +account listed only some of them, in both the control listing and the FUSE mount. The journal +showed `skipping undecryptable node ... failed to decrypt: missing key`. Each missing folder +opened on the Proton Drive website and resolved when the SDK was asked for it alone. + +**Where:** `proton-drive-rs` 0.7.1, `enumerate_nodes_detail`, which serves both +`enumerate_nodes` and `enumerate_nodes_light`. The app hit it in `list_shared_with_me` +(`crates/pdfs-fuse/src/sharing.rs`) and in the shared-root listing in +`crates/pdfs-fuse/src/lib.rs`. + +**Cause.** The SDK cached parent keys per batch by the link's parent id. Every share root has +no parent, so all roots on one volume shared the `None` entry, and the roots after the first were +decrypted with the first root's share key (proton-sdk-rs#2). + +**Fix.** Require `proton-drive-rs` 0.7.2, which names each key `Parent(folder)` or `Root(link)`. +No app code changes. The app-side workaround in #25, one SDK call per root, is not needed. +Unverified: no account with several shares from one owner has listed through 0.7.2 yet. + ## B111 — Renaming a file back right after renaming it fails with EIO **Status:** Fixed (unverified). diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index eea6811..be07690 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -11,6 +11,12 @@ scratch (user data in `staging/` and `recovery/` is never touched by this). ## [Unreleased] +### Fixed +- **Folders shared with you no longer go missing when one person shared several.** When + several accepted shares came from the same owner's volume, only the first appeared under + Shared with me, and the rest were skipped with `missing key`. `proton-drive-rs` 0.7.2 resolves + each shared root with its own key (B112, #25). + ## [2.8.1] — 2026-09-30 Schema: **35** (unchanged). Requires `proton-drive-rs` **0.7.1**.