Release history
PrivyDrop releases
Simple and user-friendly, breakpoint-resumable peer-to-peer text, image, and file transfer tool based on WebRTC.
All releases
6 shown
- Migration guide: replace PM2 start commands with `bash deploy.sh` Docker deployment scripts (e.g., `--mode lan-http` or `--mode full --domain example.com`).
- Consult the updated Docker Deployment Guide (`docs/DEPLOYMENT_docker.md`) for all supported modes.
- No changes to existing environment variables are required for Docker deployments, but review new CORS options in `docker/scripts/generate-config.sh`.
- Removed all bare‑metal/PM2 deployment methods: `build-and-deploy.sh`, `ecosystem.config.js`, `deploy.config.example`, legacy Docker assets in `backend/docker/` directory, and related documentation (`docs/DEPLOYMENT.md` and `docs/DEPLOYMENT.zh-CN.md`).
- PrivyDrop now requires Docker‑based deployment; no other deployment mechanisms are supported.
- 8‑second slow connection hint via new `useConnectionFeedback` hook (multi‑language support).
- 15‑second room‑join timeout with early success detection to avoid false timeouts.
- New hooks (`useOneShotSlowHint`) and utility (`rtcPhase`) for RTC state management.
Full changelog
PrivyDrop v1.2.0 Release Notes
Release Date: March 28, 2026
Commits: 42 commits since v1.1.1
Files Changed: 131 files | +11,728 / -8,198 lines
⚠️ Breaking Changes
Docker-Only Deployment
PrivyDrop now only supports Docker-based deployment. All bare-metal/PM2 deployment methods have been removed.
What Was Removed:
build-and-deploy.sh(PM2-based deployment script)ecosystem.config.js(PM2 configuration)deploy.config.examplebackend/docker/directory (legacy Docker assets)docs/DEPLOYMENT.mdanddocs/DEPLOYMENT.zh-CN.md(bare-metal guides)
Migration Guide:
If you were using PM2 or bare-metal deployment:
# Old method (no longer supported)
pm2 start ecosystem.config.js
# New method (use Docker)
bash deploy.sh --mode lan-http # Local LAN
bash deploy.sh --mode full --domain example.com # Production
See Docker Deployment Guide for all deployment modes.
🚀 New Features
Enhanced Connection Feedback
8-Second Slow Connection Hint
- New
useConnectionFeedbackhook monitors WebRTC connection state - Shows user-friendly hint if P2P connection takes longer than 8 seconds
- Supports all 7 languages (EN, ZH, JA, KO, ES, DE, FR)
Join Room Timeout Fix
- Implemented 15-second timeout for room joining
- Added early success detection (ready/recipient-ready/offer signals)
- Prevents false "Join room timeout" errors during slow networks
New Hooks & Utilities:
useOneShotSlowHint- Reusable one-shot notification hookrtcPhase- Shared RTC phase mapper for consistent status messages
UI Improvements
Copy Button Feedback
- RoomID and URL copy buttons now show check icon (✓) for 2 seconds after copying
- Consistent with existing QR code copy behavior
QR Code Restoration
- Restored QR code display in ShareCard (was accidentally removed in i18n refactor)
- Copy QR code and download QR code now work correctly
🔧 Improvements
i18n Modernization (Major Refactor)
14 commits dedicated to i18n infrastructure:
| Change | Impact |
|--------|--------|
| Migrated to native next-intl hooks | Cleaner code, better tree-shaking |
| Removed TranslationProvider facade | Reduced bundle size |
| Replaced prop drilling with context | Simpler component APIs |
| Normalized translation keys | Consistent naming across 7 languages |
| Added next-intl routing infrastructure | Better i18n routing support |
Affected Components: 38 files modified across all UI components
Paste Button Label
- Changed paste button in SendTabPanel from "粘贴房间ID" to "粘贴" (Paste)
- More accurate: button pastes any clipboard content, not just room IDs
- "粘贴房间ID" remains in RetrieveTabPanel where contextually appropriate
🐛 Bug Fixes
| Issue | Fix |
|-------|-----|
| React Hydration Mismatch | ThemeToggle now renders placeholder until mounted |
| QR Code Not Displaying | Restored QRCodeSVG component rendering |
| WebRTC Timeout False Positive | Added early success signal detection |
| SSR Window/DOM Access | Added guards for server-side rendering |
| Deployment CORS | Fixed same-origin API and www CORS origin |
📚 Documentation
New Documentation
AI Playbook (English)
- Added complete English version of AI playbook
- Code map, collaboration rules, flow documentation
- Split into modular documents for better navigation
Blog Posts
- New "AI Collaboration Playbook" blog post (7 languages)
- Added cover images and improved formatting
- Fixed missing content in some language versions
Updated Documentation
- Docker deployment guide updated with full-mode runtime behavior
- Added low-memory deployment guidance
- Removed all PM2/bare-metal references
- Updated README files to reflect Docker-only support
📦 Dependencies
- Updated
backend/package-lock.json - Added
next-intlrouting infrastructure - Updated frontend dependencies
🔗 Full Changelog
Upgrade Instructions
-
Update your deployment:
# If using git pull git pull origin main git checkout v1.2.0 # Restart with Docker bash deploy.sh --mode <your-mode> -
If using PM2 (deprecated):
- Migrate to Docker deployment immediately
- See Docker Deployment Guide
-
Environment variables:
- No changes required for existing Docker deployments
- Check
docker/scripts/generate-config.shfor new CORS options
Contributors
Thanks to all contributors who made this release possible!
- Cached Room ID flow: auto-join on load without manual typing
- Robust reconnect: auto rejoin after socket reconnect and mobile foreground resume
- Next.js standalone output with pnpm hoisting for leaner deploys, plus a build-and-deploy script
Full changelog
Overview
- This release focuses on seamless reconnects and faster room entry with cached room IDs, introduces a Next.js standalone build and a one-command deploy script, and brings multi-language blog and SEO improvements. It also
adds a theme toggle and navigation persistence that does not interrupt file transfers.
Highlights
- Cached Room ID flow: auto-join on load; no manual typing.
- Robust reconnect: auto rejoin after socket reconnect and on mobile foreground resume.
- Next.js standalone output + pnpm hoisting for leaner deploys.
- i18n blog restructure and SEO boosts (JSON-LD, sitemap tag pages).
- Theme toggle and in-app navigation persistence without transfer interruption.
Features
- feat(ux): cached roomId auto-join + theme toggle.
- feat(frontend): send initiator-online after rejoin with cached/long room ID.
- feat(backend): idempotent create_room for >=8-char IDs to support cached-ID reconnects.
- feat(deploy): add build-and-deploy script; switch frontend to Next.js standalone; docs: incremental update guide.
- feat(blog/blog-i18n): restructure blog by language; localize UI & SEO; add tag pages to sitemap.
Fixes
- fix(reconnect): auto rejoin on socket connect; broaden reconnection triggers for mobile foreground resume.
Build & DevOps
- build(standalone): use pnpm hoisted.
- New script: [build-and-deploy.sh](http://build-and-deploy.sh/) packs frontend/backend into out.zip with deploy info and offers guided server deployment (backup, unzip, PM2 restart).
Docs & Blog
- docs: document in-app navigation persistence (no transfer interruption).
- SEO: add JSON-LD structured data; refine WebApplication alternateName.
- AI Playbook and collaboration docs added and refined.
- New (included from current staged changes):
- blog: add “One‑Click Reconnect, Rock‑Solid: A Deep Dive into Cached‑ID Auto‑Join and Resilient Reconnect in PrivyDrop”.
- asset: add frontend/public/blog-assets/cached-id-reconnect.webp as cover image.
- Minimum Docker 20.10+ and Docker Compose 2.x required
- Private network deployments need no public IP; public mode requires domain registration for LE certificates
- Docker One‑Click Deployment System enables five‑minute automated setup
- Four deployment modes (lan-http, lan-tls, public, full) covering private and production environments
- Built‑in TURN server, SNI multiplexing on port 443, automatic Let's Encrypt HTTPS
Full changelog
🐳 Docker One-Click Deployment - Game Changing Update!
🎉 5-Minute Zero-Configuration Deployment
We're excited to announce PrivyDrop's Docker One-Click Deployment System! Transform your deployment experience from 30 minutes of manual configuration to 5 minutes of complete automation.
⚡ Revolutionary Deployment Breakthrough
| Feature | Traditional | Docker Deployment |
|---------|-------------|-------------------|
| ⏱️ Deployment Time | 60 minutes | 5 minutes |
| 🎯 Technical Barrier | Linux expert | Basic Docker knowledge |
| 🌐 Environment | Public IP required | Private networks supported |
| 📊 Success Rate | ~70% | 95%+ |
| 🔧 Configuration | 10+ manual steps | One-click automation |
🚀 Quick Start Commands
# Private Network (Fastest)
bash ./deploy.sh --mode lan-http
# Public Domain (Production Ready)
bash ./deploy.sh --mode full --domain your-domain.com --with-nginx --with-turn --le-email [email protected]
🏗️ Four Deployment Modes
1. lan-http - Private Network HTTP
bash ./deploy.sh --mode lan-http
✅ Zero configuration startup
✅ Private network P2P transfer
✅ Perfect for personal/testing environments
2. lan-tls - Private Network HTTPS (Self-Signed)
bash ./deploy.sh --mode lan-tls --enable-web-https --with-nginx
✅ Optimized for development/managed environments
✅ Self-signed CA certificates
✅ Secure access on port 8443
3. public - Public Network HTTP
bash ./deploy.sh --mode public --with-turn --with-nginx
✅ Public access without domain
✅ Built-in TURN server
✅ Complex network NAT traversal
4. full - Complete Production Environment
bash ./deploy.sh --mode full --domain your-domain.com --with-nginx --with-turn --le-email [email protected]
✅ Let's Encrypt automatic HTTPS
✅ Nginx reverse proxy
✅ SNI 443 port multiplexing
✅ Zero-downtime certificate renewal
🔧 Docker Integration Features
🎯 Automation Capabilities
- Smart Configuration Detection: Automatic network environment identification
- Dependency Auto-Installation: Docker, certbot and more automatically configured
- Health Monitoring: Real-time service status tracking
- Log Management: Centralized log collection and rotation
🌐 Network Optimization
- TURN Server: Built-in NAT traversal solving connection issues
- SNI Multiplexing: Intelligent 443 port sharing (turn.domain → TURN, others → Web)
- Same-Origin Architecture: Unified frontend/API gateway avoiding CORS issues
- Proxy Support: Build-time HTTP/HTTPS proxy configuration
🔒 Security Enhancements
- Container Isolation: All services run in secure isolated environments
- Minimal Exposure: Only necessary ports exposed
- Automatic HTTPS: Let's Encrypt certificates auto-issue and renewal
- Hot Reload: Zero-downtime certificate updates
📋 System Requirements
Minimum Configuration:
- CPU: 1 core
- Memory: 512MB
- Disk: 2GB
- Network: Any environment (private/public)
Software Dependencies:
- Docker 20.10+
- Docker Compose 2.x
🛠️ Advanced Configuration
# Custom ports
vim .env # Modify FRONTEND_PORT, BACKEND_PORT, HTTP_PORT
# Build proxy support
HTTP_PROXY=http://your-proxy:7890
HTTPS_PROXY=http://your-proxy:7890
NO_PROXY=localhost,127.0.0.1,backend,frontend,redis,coturn
# TURN port range customization
bash ./deploy.sh --mode full --with-turn --turn-port-range 55000-55100
# Feature toggles
bash ./deploy.sh --with-nginx --with-turn --with-sni443
📊 Service Management
# View service status
docker compose ps
# View logs
docker compose logs -f
# Restart services
docker compose restart
# Complete cleanup
bash ./deploy.sh --clean
🔗 Quick Links
📖 Docker Deployment Guide
🌐 Live Demo
🐛 Issue Reporting
🚀 Transform your deployment experience - Try Docker One-Click Deployment today!
- Leaving a room now supports resuming file transfer from the last saved directory
Full changelog
Fix the issue of slow performance on mobile devices;
Fix the issue of data packets being out of order in Firefox;
Fix the issue where Firefox and Alook browsers cannot download and save files;
Leave Room while transferring is also supported. If a save directory is set, exiting the room supports resuming from where it left off next time.
- End-to-End Encrypted Transfers via WebRTC
- Drag-and-drop File and Folder Sharing
- Resumable Transfers after network interruptions
Full changelog
v1.0.0: Initial Public Release
We are excited to announce the first stable release of PrivyDrop!
PrivyDrop is an open-source, peer-to-peer (P2P) file and text sharing tool built on WebRTC. It's designed to provide maximum privacy and an efficient transfer experience. All data is transferred directly between browsers without being stored on any intermediate servers.
✨ Core Features in This Release
- 🔒 End-to-End Encrypted Transfers: Utilizes WebRTC for direct P2P connections, ensuring absolute privacy during data transmission.
- 📁 File and Folder Sharing: Supports drag-and-drop sharing for multiple files or entire folders.
- 📝 Rich Text Clipboard: Allows for online editing and sharing of formatted text content.
- 🔄 Resumable Transfers: Capable of resuming file transfers from where they left off after a network interruption, ensuring the successful delivery of large files.
- 👨👩👧👦 Multi-Peer Support: Enables a single sender to transfer files to multiple recipients in the same room simultaneously.
- 🚀 Real-time Speed and Progress: Clearly displays the real-time transfer rate and overall progress.
Quick Start
- Sender: Open the website, drag and drop files or paste text into the "Send" tab, then create or join a room.
- Receiver: Enter the same room ID in the "Receive" tab.
- Download: Once the receiver sees the file list, they can click "Download" to save the files directly to their local machine.
For Developers
PrivyDrop is built with a modern tech stack, including Next.js, Node.js, TypeScript, WebRTC, and Socket.IO. We have carefully designed the application with a layered architecture to decouple the UI, business logic, and underlying services.
- To get a high-level overview, check out the System Architecture.
- For a deeper dive into the code, see the Frontend Architecture and Backend Architecture.
- To deploy it yourself, follow the Deployment Guide.
What's Next
This is just the beginning. We have many plans for the future of PrivyDrop. Feel free to check out our Roadmap and get involved!