Repository navigation
Releases: co-te/streamerREC
Release list
native Bigo recorder
2.3 Recordings Library, Security Hardening
What's New
Web UI
- Full UI redesign — new look, faster, lighter (single HTML file, no external requests, no build step)
- New Recordings library view: browse, preview, download, favorite, archive, and delete finished recordings
- Real-time log viewer now works during and after recordings (fixed empty logs caused by yt-dlp silencing)
- Fixed avatar initials rendering on top of channel avatars
- Added GitHub Issues link in Settings → System for bug reports
- Dark/light theme, mobile layout improvements, guest account prompt shows only once
Security
- Optional password protection: once an account is created, the entire API requires login (PBKDF2-hashed, session cookies, same-origin CSRF protection)
- Account management endpoints no longer reachable without authentication
- SSRF guards on channel URLs, webhook URLs, and DNS resolution (non-blocking)
- Blocked dangerous yt-dlp flags in user-supplied extra args (
--exec,--postprocessor-args, downloader overrides, etc.) - Channel credentials are never exported in config backups
Reliability
- No more duplicate/zombie recordings — startup sweep kills recorder processes left behind by a crashed or hard-stopped instance
- Stop/kill/delete operations now wait for the process tree to fully die before releasing the recording slot
- Graceful shutdown drains active recordings before writing final state
- Fixed a race where force-killing a recording could let the monitor start a second one on the same channel
- DST-safe recording filenames (UTC timestamps prevent overwrite collisions)
Fixes & Improvements
- Live recording logs fixed — yt-dlp's
--printflag was silencing all output; ffmpeg progress is now visible --fixupscoped to output format (force only for MP4, warn for MKV/TS)- Malformed HTTP Range headers no longer crash preview; tail ranges (
bytes=-N) handled correctly - Login rate limiting no longer blocks the event loop; returns 429 with Retry-After
- Blocking DNS lookups moved off the event loop
record_on_addsetting is now functional (global auto-record master switch)- Cookies manager UI works end-to-end (upload, list, delete, assign globally)
- Bumped
python-multipartto 0.0.18 (security advisory)
Docker
- WireProxy VPN sidecar is now optional — start with
docker compose --profile vpn up -d(no wg0.conf required for normal use)
Modern UI Redesign & Stream Stability Update
🚀 What's New in v2.2
🎨 Brand New UI
- Refocused Two-View Dashboard: Streamlined the interface to focus purely on Channels and Settings (removed legacy clutter).
- Modern Dark Aesthetic: Added backdrop blurs, accent glow cards, live badges, and smooth controls.
- Real-Time Stream Stats: Monitor active recording duration, download bitrate/speed, and file size on disk directly from channel cards.
- Categorized Settings Center: Settings are now organized into 6 dedicated panes:
- 📁 General & Storage
- 🎬 Recording & Quality
- 🌐 Network & Engine
- 🔔 Notifications & Webhook testing
- 🍪 Cookies & Auth
- ⚙️ System & Backup
🛠️ Stability & Recording Engine Fixes
- Twitch Live Capture Fix: Fixed Twitch live recording failure caused by unsupported rewind arguments (
--no-live-from-start). - Live Webhook Testing: Added a one-click "Test Webhook" action in the settings to verify Discord/Slack alerts.
- Clean Process Management: Improved background process termination to ensure
ffmpegandyt-dlpchild processes close cleanly without file locking. - Docker Permission Updates: Resolved container permission issues for
/usr/local/bin/yt-dlpupdates. - Updated Documentation: Fully refreshed
README.mdreflecting the new UI and architecture.
2.1 update
fixed bugs:
- activeRecLogId variable declaration
- Pandalive platform detection
- /api/health pi_mode field
- FFmpeg semaphore concurrency control (2 locations)
- Missing welcome overlay modal
- Missing account settings overlay modal
New feature:
- yt-dlp auto-update from Settings page with version display
Full Changelog: 2.0...2.1
2.0
v1.1.0 — Major UI Overhaul + New Features
What's New
UI Redesign
Complete layout overhaul: sidebar replaced with a horizontal top navigation bar
Channel cards switched from grid thumbnails to a compact list/row layout with inline status, stats, and actions
New indigo/violet accent color scheme with deeper dark theme
Modals now open as side drawers instead of centered popups
Account avatar moved into the top nav bar
New Features
Webhook notifications — POST JSON to any URL (Discord, Slack, ntfy, etc.) on stream_live and recording_complete events
Max recording duration — per-channel and global time limit; recordings auto-stop gracefully
Recording retention — auto-delete recordings older than N days (0 = keep forever)
Stalled recording detection — warns or auto-stops when a stream stops sending data silently
Archive & Restore — move completed recordings to an archive folder and restore later
Per-channel notes — add private notes to any channel
Stream title tracking — see the current stream title on the channel card
Channel sorting — sort by name, platform, recently added, last checked, or live-first
Recordings filter & sort — filter by status (completed/recording/error/archived), sort by date/size/name
Bulk edit quality/format — multi-select channels and change quality or format in bulk (/api/channels/bulk-edit)
Keyboard shortcuts — N to add channel, 1-4 to navigate pages, R/S/Del for bulk actions
Concurrent slot indicator — shows recording slots in use (e.g. 2/6) on channels page
Recording log from recordings page — view yt-dlp output for active recordings directly
Reliability
Per-channel recording lock — prevents double-recording from concurrent API calls
Chaturbate live check now properly uses the process semaphore
Improved graceful shutdown handling for recordings without a PID
Delete recording now force-stops active processes before removing
Search now matches stream title and notes
Added pydantic>=2.0 to requirements
API Changes
POST /api/channels/bulk-edit — bulk update quality/format
POST /api/recordings/{id}/archive — archive a recording
POST /api/recordings/{id}/restore — restore an archived recording
GET /api/health now returns active (recording count) and uptime
New settings: retention_days, max_duration, webhook_url, auto_stop_stalled
Channel model: new fields max_duration, notes, stream_title
What's Changed
- Add comprehensive README.md with features, screenshots, and documentation by @Copilot in #1
- [WIP] Add About page to StreamRec web UI by @Copilot in #2
- Add per-channel "Record from beginning" toggle by @Copilot in #3
- Improve README, add logging, modernize FastAPI lifecycle, harden inputs by @Copilot in #4
- Optimize for potato PCs / Raspberry Pi, fix video playback lag, add settings toggle by @Copilot in #5
- Fix cam platform recording failure: conflicting ffmpeg codec copy + audio filter args by @Copilot in #6
New Contributors
- @Copilot made their first contribution in #1
Full Changelog: https://github.com/orhogi/streamerREC/commits/v1.1.0