PrivyDrop v1.3.0 is a stability-focused release centered on a major WebRTC lifecycle refactor. It makes reconnect, resume, room re-entry, and mixed peer state handling much more reliable, while adding broad automated regression coverage for real-world transfer flows.
This release also improves operational readiness by tightening the production Docker deployment path for privydrop.app, including better domain coverage for privydrop.app, www.privydrop.app, and turn.privydrop.app.
Highlights
1. Major WebRTC lifecycle refactor
- Added explicit lifecycle states for sender and receiver flows
- Introduced clearer lifecycle/state machines for connection and send behavior
- Moved domain-store writes behind a coordinator layer
- Split UI-oriented state from transfer-domain state
- Unified sender and receiver shutdown/reset handling
Impact:
- More predictable connection state transitions
- Less state leakage across reconnects, leaves, and resets
- Cleaner boundaries for future maintenance
2. Stronger reconnect and resume behavior
- Improved same-room re-entry handling
- Deferred reconnect joins until socket recovery is actually ready
- Restored transfer state after peer reconnection
- Hardened chunk ordering and resumed send behavior
- Isolated peer reconnection handling in multi-peer sessions
- Improved interrupt handling during reconnect and resume flows
Impact:
- Better recovery after temporary disconnects
- More reliable resume behavior for ongoing transfers
- Fewer mixed-state failures in multi-peer sessions
3. Better transfer stability across real-world scenarios
- Improved single-file, multi-file, and folder transfer stability
- Better file metadata resync and text resync behavior
- Improved receiver disconnect cleanup
- Better folder status and upload/transfer status formatting
- More robust handling for empty payload resync edge cases
Impact:
- Fewer inconsistent transfer states
- Clearer behavior after sender/receiver interruptions
- More reliable folder and large-file workflows
4. Clearer connection feedback and room entry flows
- Improved lifecycle-driven connection feedback
- Better receiver entry and room-id priority handling
- Expanded cached room ID and save-mode regression coverage
- Improved room check feedback and timeout coverage
Impact:
- Better user feedback during reconnecting states
- Fewer confusing room-entry edge cases
- More stable cached-ID based retrieval flows
5. Structured logging and stronger architectural guardrails
- Added a structured runtime logger
- Normalized hot-path WebRTC logging
- Added guardrails around lifecycle, shutdown, progress, message handling, and coordinator boundaries
Impact:
- Easier debugging in production and development
- Lower risk of future regressions crossing architectural boundaries
6. Large regression test expansion
This release greatly expands automated coverage with both unit tests and Playwright regression flows, including:
- single-file transfer
- multi-file transfer
- folder transfer
- folder save-directory flow
- large file progress
- reconnect and resume flows
- offline and visibility reconnect
- peer disconnect state
- join timeout flows
- cached ID entry flows
- room validation and room check edge cases
- multi-peer mixed-state and refresh-resume scenarios
Impact:
- Much stronger confidence in lifecycle-heavy behavior
- Better protection against regressions in future iterations
7. Production Docker deployment hardening
- Improved Let's Encrypt domain coverage for:
privydrop.appwww.privydrop.appturn.privydrop.app
- Improved generated
nginxserver_namecoverage for apex andwww - Documented the production cutover from host-level
caddyto Dockernginx + coturn
Impact:
- Cleaner production rollout path
- Fewer certificate and routing mismatches during deployment
Testing and Validation
This branch adds broad regression coverage across:
- Vitest unit tests for lifecycle, shutdown, transfer, logging, and coordinator boundaries
- Playwright end-to-end regression flows for transfer, reconnect, cached room entry, room validation, and multi-peer scenarios