Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
732 commits
Select commit Hold shift + click to select a range
bae8f0b
Throw error if node is not found
ProtonDriveTeam Mar 18, 2026
0fe6c48
Expose structured data on upload integrity errors
ProtonDriveTeam Mar 19, 2026
b53133c
Fix telemetry causing deadlock on uploads and downloads
ProtonDriveTeam Mar 19, 2026
d1e58c5
Improve error details for drive errors
ProtonDriveTeam Mar 19, 2026
9f0ba24
Handle missing timestamps in photo upload metadata
ProtonDriveTeam Mar 19, 2026
8e7d74e
Make LatestEventIdProvider.getLatestEventId async to support IndexedDB
ProtonDriveTeam Mar 19, 2026
890ba4e
Try all album inclusions to find the entry point key
ProtonDriveTeam Mar 19, 2026
468a9ed
Update changelog for js/v0.13.1
ProtonDriveTeam Mar 20, 2026
1719cd0
Fail node provision when parent key could not be obtained
ProtonDriveTeam Mar 20, 2026
4bad5b7
Make unknown telemetry volume type explicit
ProtonDriveTeam Mar 20, 2026
425d6ab
Update changelog for cs/v0.9.0
ProtonDriveTeam Mar 20, 2026
b83ae2b
Improve error details for node decryption failures
ProtonDriveTeam Mar 20, 2026
b47646d
Fix wrong link details endpoint being used for Photos
ProtonDriveTeam Mar 20, 2026
753dbea
Allow resuming download to non seekable data stream
ProtonDriveTeam Mar 20, 2026
ba12ce0
Report unmapped HTTP errors as Network errors instead of Unknown
ProtonDriveTeam Mar 20, 2026
cd883d2
Report checksum verification state to back-end and client
ProtonDriveTeam Mar 20, 2026
c3e9f53
Update changelog for cs/v0.9.2
ProtonDriveTeam Mar 20, 2026
c64e0ab
Report checksum verification state to interop
ProtonDriveTeam Mar 23, 2026
02f0936
Mark checksum verified as optional in the api
ProtonDriveTeam Mar 23, 2026
294c70f
Update changelog for cs/v0.9.3
ProtonDriveTeam Mar 23, 2026
b90b7ef
Allow saving photos when deleting albums
ProtonDriveTeam Mar 23, 2026
0057c54
Update changelog for js/v0.14.0
ProtonDriveTeam Mar 23, 2026
91c8f04
Expose structured data on upload integrity errors to Swift binding
ProtonDriveTeam Mar 19, 2026
2ccd399
Fix wrong volume type for photo events
ProtonDriveTeam Mar 23, 2026
0c97752
Update changelog for cs/v0.9.4
ProtonDriveTeam Mar 23, 2026
6709a2c
Upgrade ProtonCore_iOS to 36.0.3
ProtonDriveTeam Mar 23, 2026
a5547b9
Enable resuming of uploads from Swift bindings
ProtonDriveTeam Mar 24, 2026
11ac98f
Surface non-resumable upload and download as typed exceptions
ProtonDriveTeam Mar 24, 2026
a0d0dbb
Update changelog for cs/v0.10.0
ProtonDriveTeam Mar 24, 2026
58d0800
Wrap SDK exception into IO exception for android network library to h…
ProtonDriveTeam Mar 25, 2026
0316135
Update changelog for cs/v0.11.1
ProtonDriveTeam Mar 25, 2026
04dca90
Add experimental getSessionInfo helper
ProtonDriveTeam Mar 25, 2026
83f3a19
Update changelog for js/v0.14.1
ProtonDriveTeam Mar 25, 2026
3f5c267
Update Swift binding to get trash error
ProtonDriveTeam Mar 23, 2026
56536db
Fix regression in disposal of file transfer controllers
ProtonDriveTeam Mar 26, 2026
19c57b0
Stream trash enumeration instead of loading all items at once
ProtonDriveTeam Mar 12, 2026
a27032a
Rename library to fix Xcode26.4 dependency issue
ProtonDriveTeam Mar 27, 2026
680411d
Update changelog for cs/v0.11.2
ProtonDriveTeam Mar 27, 2026
3b463ad
Handle thumbnails in small file upload
ProtonDriveTeam Mar 27, 2026
7e022f0
Update nodes after shared with me updated event
ProtonDriveTeam Mar 27, 2026
ceff6ac
Remove the need to dispose of Photos client
ProtonDriveTeam Mar 27, 2026
6e6450d
Add streaming thumbnails enumeration to Swift bindings
ProtonDriveTeam Mar 30, 2026
2e438e7
i18n(weekly-mr): Upgrade translations from crowdin (6e6450d6).
ProtonDriveTeam Mar 30, 2026
3adeba6
Return all possible items from batch loading
ProtonDriveTeam Mar 27, 2026
59e57fe
Update changelog for js/v0.14.2
ProtonDriveTeam Mar 30, 2026
e1227d5
Log network calls with body size
ProtonDriveTeam Mar 26, 2026
4ce9998
Fix cancellation in download and upload
ProtonDriveTeam Mar 30, 2026
b2ce7d9
Fix thumbnail enumeration to stay within API limits
ProtonDriveTeam Mar 30, 2026
ccc8074
Do not call interop functions if cancelled
ProtonDriveTeam Mar 30, 2026
901b942
Move native weak reference management to kotlin
ProtonDriveTeam Mar 27, 2026
693cc8e
Introduce uids in the kotlin bindings
ProtonDriveTeam Mar 30, 2026
7ae8844
Remove get thumbnails in favor of enumerate thumbnails
ProtonDriveTeam Mar 30, 2026
92bfbd9
Update changelog for cs/v0.12.0
ProtonDriveTeam Mar 31, 2026
b910b5c
Remove casting for parentNodeUid
ProtonDriveTeam Mar 31, 2026
65cce67
Add trash management to Photos
ProtonDriveTeam Mar 23, 2026
6606133
Extract clients interfaces
ProtonDriveTeam Mar 31, 2026
ba92da2
Update changelog for js/v0.14.3
ProtonDriveTeam Apr 1, 2026
568ce17
Fix function to get node from Photos client not using Photos API
ProtonDriveTeam Apr 1, 2026
b1eba15
Enable streaming of results when enumerating folder children and Phot…
ProtonDriveTeam Apr 1, 2026
8b37b89
Fix illegal assignments of null values to Protobuf fields for authors…
ProtonDriveTeam Apr 1, 2026
4ba4400
Keep http request body in kotlin memory for retries
ProtonDriveTeam Apr 2, 2026
37f1866
Get public link of share only for my own nodes
ProtonDriveTeam Apr 2, 2026
bf32f52
Update changelog for cs/v0.13.0
ProtonDriveTeam Apr 2, 2026
991d59e
Update changelog for js/v0.14.4
ProtonDriveTeam Apr 2, 2026
7f65bdc
Fix feature flag parsing in kotlin
ProtonDriveTeam Apr 2, 2026
444fe55
Update logs from kotlin resume api
ProtonDriveTeam Apr 3, 2026
ccd2b98
Change move function to support returning validation error
ProtonDriveTeam Apr 7, 2026
7ec83f5
i18n(weekly-mr): Upgrade translations from crowdin (444fe55f).
ProtonDriveTeam Apr 6, 2026
b93231e
Log network error and retries in kotlin
ProtonDriveTeam Apr 4, 2026
3826968
Resume continuation only when active
ProtonDriveTeam Apr 4, 2026
56305af
Update changelog for cs/v0.13.2
ProtonDriveTeam Apr 7, 2026
6b67409
Avoid crypto key fallback for non-owners
ProtonDriveTeam Apr 8, 2026
a333ceb
Support NonProtonInvitation conversion
ProtonDriveTeam Apr 8, 2026
ba8580f
Fix issue when listing photos of shared album
ProtonDriveTeam Apr 9, 2026
b1e02a5
Correctly catch AbortError in batchLoading
ProtonDriveTeam Apr 9, 2026
40bb992
Update changelog for js/v0.14.6
ProtonDriveTeam Apr 9, 2026
5d1b45e
Fix verifying signature contexts
ProtonDriveTeam Apr 10, 2026
6f854d6
i18n(weekly-mr): Upgrade translations from crowdin (5d1b45eb).
ProtonDriveTeam Apr 13, 2026
3c2c7c4
Switch NPM package license to MIT
ProtonDriveTeam Apr 13, 2026
1601ddb
Fix failure to upload new revision on single file sharing
ProtonDriveTeam Apr 16, 2026
d5f7756
Update changelog for cs/v0.13.3
ProtonDriveTeam Apr 16, 2026
399f8e7
Add experimental iterate by uids for albums and shared with me albums
ProtonDriveTeam Apr 17, 2026
06bdde8
Update changelog for js/v0.14.7
ProtonDriveTeam Apr 17, 2026
b3a11b0
Fix memory leak on SHA1 provision through interop
ProtonDriveTeam Apr 17, 2026
100f9f9
i18n(weekly-mr): Upgrade translations from crowdin (b3a11b09).
ProtonDriveTeam Apr 20, 2026
4df886d
Add get node for Kotlin drive client
ProtonDriveTeam Apr 17, 2026
00bf825
Improve download initialization speed by parallelizing some server ro…
ProtonDriveTeam Apr 20, 2026
5ad96b1
Update changelog for cs/v0.13.4
ProtonDriveTeam Apr 20, 2026
a5b1e91
Ensure expected SHA1 provider is called only once during upload
ProtonDriveTeam Apr 20, 2026
63a464d
Add encrypted credentials and cache
ProtonDriveTeam Apr 21, 2026
9afe194
Add public CLI
ProtonDriveTeam Apr 7, 2026
812977a
Add commands for basic node operations
ProtonDriveTeam Apr 9, 2026
3660cb0
Add thumbnail error handling from API response
ProtonDriveTeam Apr 22, 2026
6f6a388
Prevent encrypted block buffers from leaking via onProgress closure
ProtonDriveTeam Apr 22, 2026
09ddba1
Report checksum verification
ProtonDriveTeam Mar 20, 2026
85fc1aa
Upgrade protoncore_ios to 37.0.1
ProtonDriveTeam Apr 22, 2026
079b970
Update changelog for cs/v0.13.5
ProtonDriveTeam Apr 22, 2026
090f893
Handle too many children exception when creating a new draft
ProtonDriveTeam Apr 22, 2026
f9de4fc
Update changelog for cs/v0.13.6
ProtonDriveTeam Apr 22, 2026
9dbcf98
Update album metadata cache after albums api request
ProtonDriveTeam Apr 23, 2026
1046ce0
Log error when volume type is unknown
ProtonDriveTeam Apr 22, 2026
1d7bc1c
Update changelog for js/v0.14.8
ProtonDriveTeam Apr 23, 2026
e553406
Remove unnecessary too many children exception
ProtonDriveTeam Apr 23, 2026
92cfd80
Update changelog for cs/v0.13.7
ProtonDriveTeam Apr 23, 2026
12903df
Improve exception type names in error reports
ProtonDriveTeam Apr 23, 2026
9d0e5c7
Reduce log in controllers
ProtonDriveTeam Apr 24, 2026
6277d1c
Add extension to aborted exception
ProtonDriveTeam Apr 24, 2026
a4bc9dd
Fix nullable data in name conflict error
ProtonDriveTeam Apr 21, 2026
9c3c90c
Expose savePhotosToTimeline
ProtonDriveTeam Apr 27, 2026
c4d259a
Update changelog for js/v0.14.9
ProtonDriveTeam Apr 27, 2026
7add8cc
Update changelog for cs/v0.13.8
ProtonDriveTeam Apr 27, 2026
4d53a2c
Fix download queuing not blocking on full queue
ProtonDriveTeam Apr 27, 2026
9785a3d
Update cached album photo count after adding or removing photo
ProtonDriveTeam Apr 27, 2026
21dd1ff
Update changelog for js/v0.14.10
ProtonDriveTeam Apr 27, 2026
8ad8190
Upgrade to .NET 10
ProtonDriveTeam Apr 27, 2026
2d9d7fb
Evict non-deserializable entries from cache
ProtonDriveTeam Apr 8, 2026
31754b1
Reduce log level for draft deletion failure from error to warning
ProtonDriveTeam Apr 28, 2026
718c629
Fix name conflict handling regression
ProtonDriveTeam Apr 28, 2026
315175f
Implement upgrade hints
ProtonDriveTeam Apr 28, 2026
702e372
Update changelog for cs/v0.14.0
ProtonDriveTeam Apr 28, 2026
cfed74e
Add upload and download commands
ProtonDriveTeam Apr 28, 2026
eb3dcef
Generate both thumbnails in CLI as WebP
ProtonDriveTeam Apr 28, 2026
9fb215d
Pull crypto dependency from Maven
ProtonDriveTeam Apr 29, 2026
c54573f
Integrate @protontech/crypto
ProtonDriveTeam Apr 29, 2026
c7ff4bb
Fix TypeError not being recognized as NetworkError
ProtonDriveTeam Apr 29, 2026
a3bf9ed
Include error details in decryption telemetry events
ProtonDriveTeam Apr 30, 2026
3baaa10
Persist crypto cache
ProtonDriveTeam Apr 29, 2026
05320cd
Add events subscriptions for CLI
ProtonDriveTeam Apr 30, 2026
f2b8a15
Persist client UID
ProtonDriveTeam Apr 30, 2026
429c71e
Add download verifier for CLI
ProtonDriveTeam Apr 28, 2026
efc6d45
Add error for verification error event
ProtonDriveTeam Apr 30, 2026
f92ae44
BatchSize for remove_multiple on photos should be 10
ProtonDriveTeam Apr 30, 2026
c1c4ada
Refactor Proton API exception to consolidate constructor initialization
ProtonDriveTeam May 1, 2026
50accf8
Update changelog for cs/v0.14.1
ProtonDriveTeam May 1, 2026
da73e9b
Handle loading drafts
ProtonDriveTeam Apr 22, 2026
4b938e9
Sanitize output in CLI
ProtonDriveTeam May 4, 2026
ef482b9
Optional AccountClientProtocol + interop nil handling
ProtonDriveTeam May 4, 2026
9dd40ce
Make cryptography time monotonic
ProtonDriveTeam May 4, 2026
94ffb88
CLI build jobs
ProtonDriveTeam Apr 29, 2026
09902d7
Fix starting without session
ProtonDriveTeam May 5, 2026
b9e1fab
Add sharing commands
ProtonDriveTeam May 5, 2026
048920a
Fix detecting photo drafts
ProtonDriveTeam May 5, 2026
823b724
Improve auth UX
ProtonDriveTeam May 6, 2026
ceb652d
Use standard directories for caches, app data and logs
ProtonDriveTeam May 6, 2026
51250a9
Update changelog for cs/v0.14.2
ProtonDriveTeam May 6, 2026
9278908
Update changelog for js/v0.15.0
ProtonDriveTeam May 6, 2026
86c8fbd
Remove verbose param from help for each command
ProtonDriveTeam May 6, 2026
e9d8f19
Drop leftover crypto dependencies
ProtonDriveTeam May 7, 2026
24a1895
Fix using correct client ID for authentication
ProtonDriveTeam May 7, 2026
674d97f
Fix listing and processing invitations
ProtonDriveTeam May 7, 2026
3ac30d7
Remove slash validation name after decryption
ProtonDriveTeam May 7, 2026
e97fa9d
Fix handling of mismatch between uploaded and intended sizes
ProtonDriveTeam May 7, 2026
1a37b9f
Fix awaiting for command completion
ProtonDriveTeam May 7, 2026
425bf23
Fix upload failing to resume when blocks were uploaded out of order
ProtonDriveTeam May 7, 2026
6c38a5d
Add info log for uploader and downloader
ProtonDriveTeam May 6, 2026
289d329
i18n(weekly-mr): Upgrade translations from crowdin (a87f8802).
ProtonDriveTeam May 11, 2026
eeb3732
Flatten messages of decryption errors reported to telemetry
ProtonDriveTeam May 11, 2026
c753eca
Add keychain requirement in the README
ProtonDriveTeam May 11, 2026
ddf2b1b
Classify HTTP response code 499 as server error
ProtonDriveTeam May 11, 2026
b6aeeed
Handle degraded folder secrets in upload and node operations
ProtonDriveTeam May 5, 2026
19ae1db
Update changelog for cs/v0.14.3
ProtonDriveTeam May 11, 2026
97e9f54
Allow all address keys to be used for decryption when listing invitat…
ProtonDriveTeam May 11, 2026
535f44f
Enfroce POSIX remote paths
ProtonDriveTeam May 12, 2026
43511ff
Update changelog for js/v0.15.1
ProtonDriveTeam May 12, 2026
3a7d05f
Fix incorrect reporting of decryption errors
ProtonDriveTeam May 13, 2026
f9fdaf1
Improve help for CLI
ProtonDriveTeam May 14, 2026
fd3303e
Retry network errors more times and with bigger delay
ProtonDriveTeam May 12, 2026
52ba81c
Update changelog for cs/v0.14.4
ProtonDriveTeam May 14, 2026
43ad416
Fix error mapping for decryption
ProtonDriveTeam May 14, 2026
6f733bd
Allow client to pass core events from external subscription
ProtonDriveTeam May 14, 2026
c6a305e
Update cached node after revision restore
ProtonDriveTeam May 14, 2026
13695a7
Fix SDK version for upgrade hints
ProtonDriveTeam May 14, 2026
479003a
Clarify README
ProtonDriveTeam May 15, 2026
0a5dea3
Support blob paths in interactive shell
ProtonDriveTeam May 15, 2026
77d0e41
i18n(weekly-mr): Upgrade translations from crowdin (0a5dea35).
ProtonDriveTeam May 18, 2026
451c1bf
Avoid content key packet verification fallback on publicly shared nodes
ProtonDriveTeam May 13, 2026
4c91d44
Add Sentry to CLI builds
ProtonDriveTeam May 18, 2026
e784189
Fix missing disposal of reader in Sqlite cache repository
ProtonDriveTeam May 18, 2026
a8f8342
Update changelog for cs/v0.14.5
ProtonDriveTeam May 18, 2026
4a34103
Support copy on save for not owned album
ProtonDriveTeam May 19, 2026
c970b96
Update changelog for js/v0.15.2
ProtonDriveTeam May 19, 2026
135434c
Export CoreEventInput type to prevent casting on client
ProtonDriveTeam May 20, 2026
b6c737e
Show what was actually in the JSON when extended attributes cannot be…
ProtonDriveTeam May 21, 2026
dd6df50
Make last modification time optional for file uploads
ProtonDriveTeam May 22, 2026
f56a7c2
Wrap node not found into a dedicated exception
ProtonDriveTeam May 22, 2026
59bb38b
Retry block encryption and report metric
ProtonDriveTeam May 22, 2026
f84f7d5
Update docs
ProtonDriveTeam May 25, 2026
27d4412
Prefer iterate over UIDs over nodes
ProtonDriveTeam May 26, 2026
861148a
Sanitize node names before download
ProtonDriveTeam May 26, 2026
36d765b
Add method to return node hierarchy
ProtonDriveTeam May 26, 2026
245eebb
Use single type hierarchy for nodes
ProtonDriveTeam May 27, 2026
488d0ae
Fix interop account client requesting empty address instead of defaul…
ProtonDriveTeam May 27, 2026
515b84e
Do not close the input stream in Swift's StreamForUpload
ProtonDriveTeam May 26, 2026
6b43975
Publish Swift SDK to separate GitHub repository
ProtonDriveTeam May 27, 2026
4081fc2
Add method to iterate events
ProtonDriveTeam May 27, 2026
155b295
Fix cache not evicting incompatible entries
ProtonDriveTeam May 27, 2026
4368aa1
Report extended attributes size for download progress instead of revi…
ProtonDriveTeam May 27, 2026
a79fe8f
Update changelog for cs/v0.15.0
ProtonDriveTeam May 27, 2026
a9cf145
Verify added by email fields
ProtonDriveTeam May 28, 2026
07481fe
Merge result error message with first error message
ProtonDriveTeam May 28, 2026
a6e85fd
Use photos API when fetching album and photo node details
ProtonDriveTeam May 28, 2026
608edf0
Fix node secrets not being read from cache
ProtonDriveTeam May 28, 2026
de994b3
Support more modification time formats and report invalid ones as nod…
ProtonDriveTeam May 28, 2026
5acfd8b
Update changelog for cs/v0.15.1
ProtonDriveTeam May 28, 2026
063972b
Drop rounding for crypto performance telemetry
ProtonDriveTeam May 29, 2026
9f93213
Add validation_error category for upload & download telemetry events
ProtonDriveTeam May 29, 2026
8071f98
Process automatically events converting external invitations
ProtonDriveTeam May 29, 2026
ed329cd
Update changelog for js/v0.16.0
ProtonDriveTeam May 29, 2026
0931f6b
Update changelog for cs/v0.16.0
ProtonDriveTeam May 29, 2026
4d1a8d3
Use Bun's native image library for thumbnail generation
ProtonDriveTeam May 29, 2026
99e5a15
Add metrics handler
ProtonDriveTeam May 21, 2026
106247b
Use error object instead of string in all NodeResults
ProtonDriveTeam May 26, 2026
5e8380b
Add CLI deploy jobs
ProtonDriveTeam Jun 1, 2026
ba9ad32
Update metric schemas
ProtonDriveTeam Jun 1, 2026
aaa47b3
Handle EOF (Ctrl+D) signal
ProtonDriveTeam May 27, 2026
0d84fcb
Update changelog for cli/v0.0.1
ProtonDriveTeam Jun 2, 2026
3e2fbaf
Add method to enumerate events
ProtonDriveTeam Jun 2, 2026
90cf4d2
Remove node ID from exception messages to fix Sentry grouping
ProtonDriveTeam Jun 2, 2026
40e0d8e
Log the interop error with exception
ProtonDriveTeam Jun 3, 2026
e8793e7
Output CLI binaries always as proton-drive
ProtonDriveTeam Jun 3, 2026
8d85d62
Upgrade to latest cryptographic package interface
ProtonDriveTeam Jun 4, 2026
6bb8305
Fix crypto package causing linking issues for apps relying on custom …
ProtonDriveTeam Jun 4, 2026
8c58ba5
Fix core events subscriptions
ProtonDriveTeam Jun 4, 2026
14893f4
Support command history in interactive shell
ProtonDriveTeam Jun 5, 2026
4f8c18e
Support escaping slash in node names
ProtonDriveTeam Jun 5, 2026
40f61eb
Gracefully handle HTTP error responses with no body
ProtonDriveTeam Jun 4, 2026
616b561
Update changelog for cli/v0.0.2
ProtonDriveTeam Jun 5, 2026
8dfe94a
Fix flaky tests of FIFO semaphore
ProtonDriveTeam Jun 4, 2026
b5d9ed9
Implement SHA1 verifier metrics
ProtonDriveTeam Jun 3, 2026
169597e
Update changelog for cli/v0.0.3
ProtonDriveTeam Jun 5, 2026
1e3edca
Merge node entities
ProtonDriveTeam Jun 5, 2026
6a38b9d
i18n(weekly-mr): Upgrade translations from crowdin (1e3edca6).
ProtonDriveTeam Jun 8, 2026
af5ad74
SDK method to prepare crypto material for Easy Switch import
ProtonDriveTeam Jun 8, 2026
386c83a
Avoid using arrayBuffer method
ProtonDriveTeam Jun 8, 2026
1603bb4
Remove unneeded hash digest field on block listing
ProtonDriveTeam Jun 8, 2026
63999d3
Upgrade crypto package to fix linking issues (again) and optimize des…
ProtonDriveTeam Jun 8, 2026
10e9668
Set up GitHub mirror for CLI
ProtonDriveTeam Jun 8, 2026
61a70d4
Update changelog for cli/v0.4.2
ProtonDriveTeam Jun 9, 2026
8bf8997
Do not log response data
ProtonDriveTeam Jun 10, 2026
9661283
Add owned by in Kotlin bindings
ProtonDriveTeam Jun 10, 2026
dab2ac0
Fix false "Thumbnail not found" errors for large thumbnail batches
ProtonDriveTeam Jun 10, 2026
401aa82
Implement no waiting in Kotlin bindings
ProtonDriveTeam Jun 3, 2026
44e23f7
Fix download to existing folder on Windows
ProtonDriveTeam Jun 11, 2026
169a123
Update changelog for js/v0.17.0
ProtonDriveTeam Jun 11, 2026
86d4a0b
Add transfer summary
ProtonDriveTeam Jun 11, 2026
846c250
Add extra help to each command
ProtonDriveTeam Jun 12, 2026
74fce6f
Update changelog for cli/v0.4.4
ProtonDriveTeam Jun 12, 2026
381bb4c
Upgrade cryptography package
ProtonDriveTeam Jun 12, 2026
7210539
add --no-compile flag and build:bundle script
ralphptorres Jun 12, 2026
1ce0d15
docs: document build:bundle in readme
ralphptorres Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 15 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
.DS_Store

# Docs
public
__pycache__
docs/build
/public
js/public

# JS
node_modules
Expand All @@ -11,17 +14,24 @@ tsconfig.tsbuildinfo
dist

# JS CLI
js/cli/proton-drive
js/cli/release
auth.txt
auth-session.json
cache*.sqlite
events.json
events.lock
clientUid.json
*.log
*.bun-build
config.json
*.map

# VS Code
# IDEs
.vs
.vscode
.idea
*.swp

# Tests
tests/storage

# Test reporter
tests/test-results
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License

Copyright (c) 2025 Proton AG
Copyright (c) 2025-2026 Proton AG

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
101 changes: 96 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,102 @@
# Proton Drive SDK

Copyright (c) 2025 Proton AG
The Proton Drive SDK provides a high-level interface for interacting with Proton Drive. It is available in the following languages:

This repository contains the Proton Drive SDK for JavaScript and C# (coming soon).
- **TypeScript** — native SDK in [`js/sdk/`](./js/sdk/), available on npm as [`@protontech/drive-sdk`](https://www.npmjs.com/package/@protontech/drive-sdk). See [changelog](./js/CHANGELOG.md) for changes.
- **C#** — native SDK in [`cs/sdk/`](./cs/sdk/). See [changelog](./cs/CHANGELOG.md) for changes.
- **Kotlin** — bindings that wrap the C# SDK in [`kt/`](./kt/). See [changelog](./cs/CHANGELOG.md) for changes to the C# SDK.
- **Swift** - bindings that wrap the C# SDK in [`swift/ProtonDriveSDK/`](./swift/ProtonDriveSDK/), available on github as [`sdk-swift`](https://github.com/ProtonDriveApps/sdk-swift). See [changelog](./cs/CHANGELOG.md) for changes to the C# SDK.

At this point, the SDK is not ready for use. It is a work in progress.
### Who this is for

## Contributions
| Audience | Expectations |
| --- | --- |
| **Proton first-party clients** | Primary focus today: this codebase is built for and validated alongside official Proton Drive apps. |
| **Personal, non-commercial projects** | Allowed under [Guidelines](#usage-guidelines-for-personal-projects) below. Expect interface changes and the upcoming cryptographic migration until general availability. |
| **Commercial or production third-party apps** | The SDK is not yet ready for third-party production use. |

Contributions are not accepted at the moment.
Using the SDK directly is still recommended over raw Drive API calls for any experimentation, so correctness, safety and rate-limit expectations stay aligned with first-party behavior. The SDK handles encryption and metadata processing, protecting uploaded data from corruption due to incorrect encryption or invalid metadata.

## Current Status

The SDK is actively being integrated into official Proton Drive clients. During this phase, the architecture and public interface may still change.

**Upcoming cryptographic model change**:

- **What changes:** Proton Drive will move to a new cryptographic model that improves performance, simplifies the architecture, and strengthens security.
- **When:** Currently targeted for the **end of 2026/early 2027**. This window is an estimate and may shift; final timing and migration steps will be documented in this README and in the changelogs when they are finalized.
- **What breaks:** Once the service uses the new model, any client that only implements the previous cryptography including older SDK releases will **not** interoperate until upgraded to a release that implements the new model.
- **How to stay informed:** Watch this repository and read changelogs and README for migration notes and definitive dates.

Once these changes are complete and the integration is stable, the SDK will be officially released for third-party use.

Despite not being officially supported for third-party use at present, Proton strongly recommends integrating through this SDK rather than calling the Drive API directly. It is the same implementation used in Proton's first-party clients and is maintained to the same quality standards, even while the public interface continues to evolve. If you integrate without the SDK, you must still follow those guidelines; non-compliant clients may be rate-limited or blocked to protect Proton Drive and other users.

## Usage Guidelines for Personal Projects

The SDK may be used for personal, non-commercial projects. If you choose to build an application using Proton Drive, you **must** adhere to the requirements below.

### Operational requirements

These rules protect service availability and honest identification of clients. Rate limits are per session and user, thus third-party applications use the **same rate-limiting policy** as Proton first-party Drive clients.

| Requirement | Description |
| --- | --- |
| **Use the SDK** | You are strongly encouraged to interact with Proton Drive through the SDK. If you make direct API calls, your application **must** implement the same correctness and safety guarantees as the SDK. Failing to use appropriate caching, event-based sync, parallelism limits, and exponential backoff may cause your application to be rate-limited to protect service availability. |
| **Use official endpoints** | All HTTP requests must go to the official Proton Drive domain. Do not modify or proxy API endpoints to different domains. |
| **Identify your application** | Set the `x-pm-appversion` HTTP header so it identifies your build honestly. Use the shape described below (for example, `external-drive-myapp@1.2.3-stable`). The value must accurately represent your application. Do not spoof or falsify this header. Third-party clients that seek to masquerade as official Proton first-party clients are forbidden and may stop working at any time. Customer support and development use the reported app version to troubleshoot requests; a **specific version may be blocked** if it is known to ship a serious bug. |
| **Use event-based sync** | Synchronize data using Drive events. Do not poll the API or perform frequent recursive traversals of the file tree. Excessive polling or recursion may cause your application and your account to be rate-limited to protect service availability. |

Use this pattern for `x-pm-appversion`:

`external-drive-{name}@{semver}-{channel}+{suffix}` with optional SemVer build metadata `+{suffix}` (for example a short commit hash).

- **`{name}`** — your project identifier using lowercase letters and underscores (e.g. `my_app`).
- **`{semver}`** — `major.minor.patch` (e.g. `1.2.3`).
- (optional) **`{channel}`** — one of `stable`, `beta`, or `alpha`.
- (optional) **`+{suffix}`** — build metadata, for example a short commit hash (e.g. `+abc123f`).

Examples:

- `external-drive-myapp@1.2.3-stable`
- `external-drive-my_app@2.0.0-beta`
- `external-drive-photo_backup@1.0.0-alpha+abc123f`

### Product and legal requirements

These rules keep third-party apps distinguishable from official Proton products and transparent to users.

| Requirement | Description |
| --- | --- |
| **No Proton branding** | Your application must not use Proton logos, trademarks, or design elements. It must be clearly distinguishable as an unofficial, third-party product. |
| **Credential handling disclosure** | When you prompt a user for account details (including but not limited to username and password) your application must clearly state that it is a third-party application not officially supported by Proton. Suggested text: _This is a third-party application not officially supported by Proton._ |

To protect the availability of Proton Drive and to properly safeguard the Proton customer experience, failure to comply with these requirements may result in your third-party application being limited or blocked from accessing Proton services. If you believe your third-party application has been improperly limited and/or blocked, please contact customer support on [proton.me/support/contact](https://proton.me/support/contact).

## Scope and Limitations

The SDK provides functionality for Proton Drive business logic only. It does **not** include:

- Authentication or login flows
- Session management
- User address provider

**Where to look first:** Official Proton Drive clients wire these pieces into the SDK; treat them as the living reference until this repository publishes standalone sample apps. Standalone integration support will be documented once the SDK reaches general availability.

## Documentation

We are preparing the documentation for the SDK. It will be available in the future.

Until then, you can generate the code reference for the TypeScript SDK using the following command:

```bash
cd js/sdk && OUTPUT_PATH=./doc npm run generate-doc:interface
```

## License

This project is licensed under the MIT License. See [LICENSE.md](./LICENSE.md) for details.

> **Using Proton’s hosted services:** The MIT license governs **use of the source code in this repository** only. Access to **Proton’s hosted services** (including Proton Drive) remains subject to separate terms of service and operational policies. Integration rules and enforcement described in this README apply regardless of the OSS license.

Copyright (c) 2026 Proton AG
6 changes: 5 additions & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Security

TBD
If you discover a security vulnerability in the Proton Drive SDK, please report it through our official bug bounty program:

**[Proton Bug Bounty Program](https://proton.me/security/bug-bounty)**

For general security inquiries, you can reach us at [security@proton.me](mailto:security@proton.me).
3 changes: 2 additions & 1 deletion cs/.editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ indent_style = space
tab_width = 4

# New line preferences
end_of_line = crlf
insert_final_newline = true

#### .NET Coding Conventions ####
Expand Down Expand Up @@ -130,6 +129,8 @@ csharp_new_line_before_members_in_object_initializers = false
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true

roslynator_max_line_length = 160

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
Expand Down
5 changes: 5 additions & 0 deletions cs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,11 @@ vcpkg_installed/
build/output
.vscode

# DocFX
docfx/api/
docfx/_site/
.tools/

# macOS
*.DS_Store
.AppleDouble
Expand Down
123 changes: 60 additions & 63 deletions cs/.globalconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,49 @@ is_global = true
stylecop.layout.allowConsecutiveUsings = true
stylecop.layout.allowDoWhileOnClosingBrace = true

# IDE0001: Simplify Names
dotnet_diagnostic.IDE0001.severity = warning

# IDE0002: Simplify Member Access
dotnet_diagnostic.IDE0002.severity = warning

# IDE0003: Remove qualification
dotnet_diagnostic.IDE0003.severity = warning

# IDE0004: Remove Unnecessary Cast
dotnet_diagnostic.IDE0004.severity = warning

# IDE0005: Using directive is unnecessary.
dotnet_diagnostic.IDE0005.severity = warning

# IDE0007: Use var instead of explicit type
dotnet_diagnostic.IDE0007.severity = warning

# IDE0028: Use collection initializers or expressions
dotnet_diagnostic.IDE0028.severity = warning

# IDE0047: Remove unnecessary parentheses
dotnet_diagnostic.IDE0047.severity = warning

# CA1032: Implement standard exception constructors
dotnet_diagnostic.CA1032.severity = warning
dotnet_diagnostic.CA1711.severity = suggestion

# CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = none

# CA1711: Identifiers should not have incorrect suffix
dotnet_diagnostic.CA1711.severity = warning

# CA1849: Call async methods when in an async method
dotnet_diagnostic.CA1849.severity = warning

# CA2000: Dispose objects before losing scope
dotnet_diagnostic.CA2000.severity = suggestion
dotnet_diagnostic.CA2201.severity = suggestion

# CA2201: Do not raise reserved exception types
dotnet_diagnostic.CA2201.severity = warning

# CA2215: Dispose methods should call base class dispose
dotnet_diagnostic.CA2215.severity = warning

# StyleCop - Special
Expand All @@ -23,13 +62,13 @@ dotnet_diagnostic.SA1009.severity = suggestion
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/ReadabilityRules.md

dotnet_diagnostic.SA1101.severity = none
dotnet_diagnostic.SA1200.severity = none
dotnet_diagnostic.SA1216.severity = none
dotnet_diagnostic.SA1217.severity = none
dotnet_diagnostic.SA1413.severity = none
dotnet_diagnostic.SA1502.severity = none
dotnet_diagnostic.SA1516.severity = none

# StyleCop - Naming
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/NamingRules.md

dotnet_diagnostic.SA1309.severity = none

# StyleCop - Documentation
# https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/DocumentationRules.md

Expand Down Expand Up @@ -77,70 +116,28 @@ dotnet_diagnostic.SA1648.severity = none

dotnet_diagnostic.SX1101.severity = warning
dotnet_diagnostic.SX1309.severity = warning
dotnet_diagnostic.SA1309.severity = none

# Roslynator
dotnet_diagnostic.RCS1037.severity = none # Redundant with SA1028
dotnet_diagnostic.RCS1194.severity = none # Redundant with CA1032

# To discuss, remove to enable:

# IDE0058: Expression value is never used
dotnet_diagnostic.IDE0058.severity = none

# CA1806: Do not ignore method results
dotnet_diagnostic.CA1806.severity = none

# SA1005: Single line comments should begin with single space
dotnet_diagnostic.SA1005.severity = suggestion

# SA1108: Block statements should not contain embedded comments
dotnet_diagnostic.SA1108.severity = suggestion

# SA1111: Closing parenthesis should be on line of last parameter
dotnet_diagnostic.SA1111.severity = suggestion

# SA1122: Use string.Empty for empty strings
dotnet_diagnostic.SA1122.severity = suggestion

# SA1127: Generic type constraints should be on their own line
dotnet_diagnostic.SA1127.severity = suggestion
# RCS0056: A line is too long
dotnet_diagnostic.RCS0056.severity = warning

# SA1128: Put constructor initializers on their own line
dotnet_diagnostic.SA1128.severity = suggestion

# SA1201: Elements should appear in the correct order
dotnet_diagnostic.SA1201.severity = suggestion

# SA1202: Elements should be ordered by access
dotnet_diagnostic.SA1202.severity = suggestion

# SA1204: Static elements should appear before instance elements
dotnet_diagnostic.SA1204.severity = suggestion

# SA1214: Readonly fields should appear before non-readonly fields
dotnet_diagnostic.SA1214.severity = suggestion

# SA1408: Conditional expressions should declare precedence
dotnet_diagnostic.SA1408.severity = suggestion

# SA1503: Braces should not be omitted
dotnet_diagnostic.SA1503.severity = suggestion
# RCS1037: Remove trailing white-space
dotnet_diagnostic.RCS1037.severity = none # Redundant with SA1028

# SA1512: Single-line comments should not be followed by blank line
dotnet_diagnostic.SA1512.severity = suggestion
# RCS1047: Non-asynchronous method name should not end with 'Async'
dotnet_diagnostic.RCS1047.severity = warning

# SA1515: Single-line comment should be preceded by blank line
dotnet_diagnostic.SA1515.severity = suggestion
# RCS1118: Mark local variable as const
dotnet_diagnostic.RCS1118.severity = warning

# SA1519: Braces should not be omitted from multi-line child statement
dotnet_diagnostic.SA1519.severity = suggestion
# RCS1090: Add parameter to exception constructor
dotnet_diagnostic.RCS1194.severity = none # Redundant with CA1032

# RCS1139: Add summary element to documentation comment.
dotnet_diagnostic.RCS1139.severity = suggestion
# Sonar

# RCS1181: Convert comment to documentation comment.
dotnet_diagnostic.RCS1181.severity = none
# S1134: Track uses of "FIXME" tags
dotnet_diagnostic.S1134.severity = suggestion

# S1135: Complete the task associated to this 'TODO' comment
dotnet_diagnostic.S1135.severity = suggestion
dotnet_diagnostic.S1135.severity = suggestion
Loading