Repository navigation
Releases: FuzzyMistborn/podbooth
Releases · FuzzyMistborn/podbooth
Release list
v0.15.2 - Recover interrupted cloud pulls
What's Changed
- Recover interrupted cloud pulls; fix delete cleanup of raw uploads by @FuzzyMistborn in #59
- Add a bonus / post-show upload spot to the editor portal by @FuzzyMistborn in #60
Full Changelog: v0.15.1...v0.15.2
v0.15.1 - Restore local upload recording button
What's Changed
- Restore the studio's Upload Local Recording button by @FuzzyMistborn in #57
- Allow multiple WhisperX instances with fallback by @FuzzyMistborn in #58
Full Changelog: v0.15.0...v0.15.1
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
v0.14.1 - Clean up auto upload issues
Full Changelog: v0.14.0...v0.14.1
v0.14.0 - Remove Auto Upload
What's Changed
- Removed the auto upload functionality (both during recording and at the end). Couldn't get it to work reliably.
- Bump pydantic from 2.13.4 to 2.13.5 by @dependabot[bot] in #39
- Bump boto3 from 1.43.75 to 1.43.87 by @dependabot[bot] in #38
- Bump livekit-api from 1.2.0 to 1.2.1 by @dependabot[bot] in #37
Full Changelog: v0.13.0...v0.14.0
v0.13.0
New Features
- Video uploads from editors. Editors can now send finished video files back to the show, not just audio
- Opt out of background cloud upload. New prejoin checkbox (next to local backup) lets each participant choose whether their recording uploads in the background while recording, or all at once after they stop
- Session-listing API. New X-API-Key–gated endpoint to list all sessions for automation outside the dashboard.
Improvements
- Grouped Discord upload alerts. When production files start coming in, Discord gets a single heads-up linking to where the files live, instead of a separate ping per file.
- Auto-updating editor links. Editor share links now pick up newly uploaded recordings on their own a couple hours after upload no need to regenerate the link.
- "Cancel upload" responds immediately, even when the upload is mid-retry after a network hiccup.
- Dependency bumps: boto3 1.43.59→1.43.75, uvicorn 0.52.0→0.52.4, pydantic-settings 2.14.2→2.15.0, python-dotenv 1.2.2→1.2.3.
- Added tests: cloudsync video/Discord grouping, S3 editor-link refresh, session lifecycle + API listing, upload cancel backoff.
Bugs
- Exports no longer hang forever. Grid-video and transcription-audio exports time out and fail cleanly if ffmpeg gets stuck on a bad input, instead of blocking everything behind them.
- Upload chunking fix in the Cloudflare upload path.
v0.12.1 - Dependencies and minor fixes
Fixes
- A recording video could fail to assemble without any visible error — the failure was logged server-side but never surfaced, leaving the take silently missing.
- Crash-recovered takes from an interrupted session could be misnamed, making them harder to match up with the rest of that session's recordings.
- Downloaded zip archives could silently omit a file that failed to load, with no indication anything was missing.
- A momentary audio glitch during recording could cause audio to drift out of sync with video over a long session.
- The upload progress indicator could show inaccurate progress (occasionally over 100%) when resuming an interrupted cloud upload.
- Cloud uploads could get permanently stuck if the final download-back step failed after the upload itself had already completed - recovering required no further action from the user, but the recording could previously be lost.
Dependencies
- Bumped fastapi, uvicorn, boto3, and actions/setup-python.
v0.12.0 - Recording Upload Improvements and Security Patches
Lots of focus on resolving some security issues and resolving issues surrounding recording uploads.
New Features
- Direct-to-cloud upload for local recordings. Video recorded to a guest's local disk now streams straight to cloud storage in the background
throughout the session, instead of waiting until the recording stops and uploading everything at once. Cuts down the post-recording wait
significantly for large sessions. - "Upload while recording" toggle in the studio header (on by default) to disable the above behavior if preferred.
- Falls back automatically to the previous end-of-session upload behavior when cloud storage isn't configured, or if a direct-to-cloud upload
attempt fails partway through.
Improvements
- Session data now saves without blocking the app.
- A corrupted session save file gets moved aside instead of silently wiping out every session on restart.
- Stuck video-processing (ffmpeg) jobs now time out (configurable, default 4 hours) instead of hanging a slot forever.
- Added an aggregate per-participant upload cap (configurable, default 100GB) to bound a runaway or malicious uploader.
- Host/moderator tokens no longer leak into server logs.
- Some unbounded internal bookkeeping lists are now cleaned up over time instead of growing forever.
- /pending-guests now accepts the host token as a header instead of only a query param, keeping it out of access logs.
Bug Fixes
- Security: guests could previously bypass the host's approval step and upload recordings directly without ever being admitted to the session —
closed. Also fixed: uploads continuing well after a session ends, storage limits being skippable, and cloud-upload endpoints not verifying a
request actually belonged to the session it claimed. - Fixed a race where opening the same session in two tabs could interfere with an in-progress upload.
- Fixed a rare logging error that could leave a finished upload stuck without ever being processed.
- An interrupted-then-resumed direct-to-cloud upload now finishes with the correct audio/video settings instead of falling back to defaults.
- Cancelling a direct-to-cloud upload now properly cleans up the partial object in cloud storage instead of leaving it stranded.
- Recording a second screen share in one session no longer risks failing to save properly.
- Background upload no longer competes with the recording itself for memory.
- Fixed a bug that could corrupt exported video when screen sharing was restarted mid-recording.
- Fixed a crash-recovery marker getting stuck permanently when a recording crashed before writing its first chunk.
- Fixed a crash affecting nearly every recording/upload action, caused by a leftover debug-logging call.
- Fixed several data-loss/corruption bugs around quick retakes, screen-share restarts, mic issues, and network interruptions during recording.
- Fixed cloud uploads getting stuck when one destination (of several) was unreachable.
- Fixed grid exports occasionally being marked "ready" when the export had actually failed.
Other
- Added CI (automated test runs on push/PR to main).
v0.11.0 - Add API
Added
- Session API — new POST /api/session / DELETE /api/session/{id} endpoints for scripting session creation/deletion, gated by an API_KEY env var.
- Upload speed readout — live KB/s or MB/s display in the upload banner.
- Cancel upload button — lets users abort an in-progress upload (chunked or whole-file).
Fixed
- Recordings could be silently corrupted if the first upload chunk was lost (missing container header); now detected and assembly is skipped instead.
- Session titles longer than 100 chars could break the sanitized directory name; now truncated. Also fixed the dashboard delete button's title-escaping and tightened session-directory-delete error handling.
v0.10.2 - Code Cleanup
Remove some dead/unneeded code and leftover debug code, and improve the timer popout window.