mirror of
https://github.com/narrrl/proton-sdk-rs.git
synced 2026-11-03 16:41:26 +01:00
4.8 KiB
4.8 KiB
Changelog
Notable changes to proton-sdk and proton-drive-rs. The format follows
Keep a Changelog; versions follow semver,
and both crates are released together under the workspace version. Upstream
commits a change ports are recorded in UPSTREAM_SYNC.md.
This file starts after 0.9.2; earlier changes are in the git history.
[0.10.1] — 2026-10-31
Fixed
- Address keys whose token is for an inactive account key. An address key's
token was decrypted with the active account keys only. A token encrypted to
an account key since marked inactive never opened, although that key still
opens with the password, so the address failed with "has no primary key".
Tokens are now tried with every account key that opens, active ones first.
Signing still uses active keys only.
AccountClient::key_reportfollows the same chain. - One broken address no longer fails the account.
AccountClient::addressesfailed as a whole when any one address's keys did not open. That address is now left out with a warning, and the others work. It fails only when no address opens.address_private_keysnames the reason for a left-out address, anddefault_addressfails with it when the left-out address is the default, instead of handing out the next address.
Added
AccountClient::address(id): one address by id, failing with the reason when its keys did not open.proton-drive-rsuses it to resolve membership addresses, which before said "membership address not found" for such an address.
[0.10.0] — 2026-10-26
Added
- Server-side copy.
ProtonDriveClient::copy_node(uid, new_parent, name)copies a file, or a folder with everything in it, without downloading and uploading it. The copy may get a new name and may land on another volume; the returned uid is on the target volume. Ported from the TypeScript SDK (copyNode). - Folder size.
ProtonDriveClient::get_folder_size(uid)returns aFolderSizewith the total size and the number of descendants, trashed nodes included. Folders count as descendants, and the size is in encrypted bytes. Ported from the TypeScript SDK (getFolderSize). - Changing a public link.
ProtonDriveClient::update_public_link(uid, role, custom_password, expiration_time)sets the role, the custom password and the expiry of the link on a node. The URL does not change.Noneremoves a custom password or an expiry. A legacy link cannot be updated. Ported from the TypeScript SDK (updateSharedLink). - A public link's custom password.
PublicLink::custom_passwordholds the custom password of a link, recovered from the stored link password, so a caller can keep it whileupdate_public_linkchanges the role or the expiry. - Walking a public link.
ProtonDrivePublicLinkClient::enumerate_subtreeandenumerate_subtree_reportingreturn every node below a shared folder, breadth first, listing several folders of a level at once. - Bookmark names.
list_bookmarksnow decrypts the bookmarked item's name intoBookmark::node_name, and returns the link's custom password in the newBookmark::custom_passwordfield. - Album capabilities from the C# SDK (
a36cc423):ProtonPhotosClient::set_album_cover;ProtonPhotosClient::delete_album_saving_photos, which onAlbumContainsPhotosNotInTimeline(code 200302) saves the photos that are only in the album to the timeline and deletes the album again;add_photos_to_albumadds photos from another volume by copying them in, instead of refusing them;- a photo group the server reports as incomplete is retried once with the missing related photos.
ResponseCode::AlbumContainsPhotosNotInTimeline.ApiHttpClient::post_query, a POST that only reads and may be sent again.
Changed
- A read is sent again when its connection drops. A GET, a block download or
a
post_querythat loses its connection mid-request or while reading the body is retried under the client's retry policy. A write still is not: it may have been applied. Read-only POSTs inproton-drive-rs(link details, thumbnails, photo duplicates,checkAvailableHashes) now usepost_query. DebugforPublicLinkandBookmarkno longer prints the URL or the custom password; it shows<redacted>instead.remove_photos_from_albumrefuses a photo on another volume per photo, in the input order, without sending it.
Fixed
- A bookmark's URL fragment is now only the generated password, as in the URL the web client shows. It used to include the custom password as well.
Breaking
BookmarkandPublicLinkhave a new public field,custom_password. Code that builds either with a struct literal must set it.ResponseCodehas a new variant. An exhaustivematchon it needs an arm.