Repository navigation
v0.15.0 - Improve Cloud Uploads
What's Changed
Recording upload
- Recordings upload automatically again when you press Stop, for everyone. If you recorded to a local folder (Chrome/Edge), the file also stays there as a backup.
- New opt-in direct-to-cloud upload (DIRECT_CLOUD_UPLOAD=true). Browsers upload straight to your R2/S3/B2 bucket and the server downloads from there, instead of every participant uploading through the server. It's much faster on slow or long-distance links. It needs a CORS rule on the bucket (see the README) and falls back to uploading through the server if the bucket can't be reached. The bucket copy is deleted once the server has processed it.
- Uploads keep going when the PodBooth server is hard to reach. Every upload URL is fetched up front, and requests to the server time out after 30 seconds and retry instead of hanging.
- Fixed "✓ Recordings ready" showing before the server had finished processing. Long takes now show "Upload complete, safe to close this tab" while processing continues.
- Fixed occasional upload errors (spurious 500s) when several chunks uploaded at once.
- Removed the studio's "Upload Local Recording" button. Guests only land on the upload page if their automatic upload failed. The page is still available from the dashboard via ⋯ → Copy Upload Link.
Progress
- Byte-based upload progress showing speed and time remaining.
- A processing meter that shows the server's progress and current step (e.g. "Converting video — Alex"). It never goes backwards, and guests see only their own recording.
Video processing
- Video encoding no longer overwhelms the server. One encode runs at a time by default, using the faster veryfast preset at lower CPU priority. Configurable with MAX_CONCURRENT_VIDEO_ENCODES, VIDEO_ENCODE_PRESET, VIDEO_ENCODE_CRF, FFMPEG_THREADS and FFMPEG_NICE. See .env.example.
- Exports work out video duration by fully decoding the file when the quick duration check fails, fixing problems with some
recordings.
Tooling
- New soak-test script (npm run soak). It simulates 45–60 minute sessions against a running instance.
Dependencies
- Bumped boto3, fastapi, uvicorn and python-dotenv (Dependabot).
Full Changelog: v0.14.1...v0.15.0