• v1.2.4 6d39c512d7

    v1.2.4
    Build and Push Docker Image / build (push) Successful in 15s
    Stable

    Stardream released this 2026-05-31 01:18:51 +10:00 | 2 commits to main since this release

    What's New

    🔗 Upstream Cookie Support

    • Added an "Upstream Cookie" field to the source editor for streams requiring cookie-based CDN authentication (e.g. CloudFront signed cookies for
      SPWN)
    • Full-proxy mode forwards the configured cookie on every manifest and segment request; direct and manifest-only modes display a warning when a
      cookie is set, since those modes cannot forward cookies to the CDN
    • Stream liveness probe forwards the cookie so admin-panel detection works correctly for cookie-protected sources

    📣 Telegram Notifications

    • Per-link start notifications: each source going live now fires its own notification instead of only triggering on the first detected link
    • 30-second merge window: sources that come online within the window are merged into a single message with link names joined by & (configurable
      via TG_START_MERGE_SECS)
    • Reconnect grace period: brief RTMP disconnects within 60 seconds no longer generate spurious stop/start notification pairs (configurable via
      TG_RECONNECT_GRACE_SECS)

    HLS Proxy Performance

    • Upstream HTTP connections are now pooled per host (up to 4 connections), eliminating per-request TCP+TLS handshake overhead for external stream
      proxying
    • Manifest fetch timeout is now separate from the stream probe timeout; new HLS_PROXY_TIMEOUT env var (default 15 s) prevents live-edge manifest
      delays from triggering premature 502 errors

    ⚙️ Configuration

    Variable Default Description
    TG_RECONNECT_GRACE_SECS 60 Seconds before sending a stop notification; absorbs brief RTMP reconnects
    TG_START_MERGE_SECS 30 Window in seconds for merging simultaneous link-online events into one message
    HLS_PROXY_TIMEOUT 15 Timeout in seconds for upstream HLS manifest and segment proxy requests

    🔄 What's Changed

    Full Changelog: v1.2.3...v1.2.4

    Downloads
  • v1.2.3 8e1ed10ba5

    v1.2.3
    Build and Push Docker Image / build (push) Successful in 10s
    Stable

    Stardream released this 2026-05-25 18:27:29 +10:00 | 3 commits to main since this release

    🔒 Security

    • HLS proxy routes now reject private, loopback, link-local, multicast, and reserved network targets

    What's New

    • Added per-source HLS proxy modes: Auto, Direct, Full proxy, and Manifest only
    • Added manifest-only HLS proxying to reduce StreamHall bandwidth usage while still hiding the initial playlist
      URL
    • Source editor now has clearer per-field labels and a proxy mode selector for each playback source
    • Mobile source editing is improved with compact ordering controls for long view-angle forms

    🐛 Bug Fixes

    • Improved mobile drag handling for stream rows and source rows
    • Fixed source editor layout alignment issues around ClearKey and delete controls
    • Removed the old source format hint after replacing it with field-level labels

    🔄 What's Changed

    Full Changelog: v1.2.2...v1.2.3

    Downloads
  • v1.2.2 8f63f20fdf

    v1.2.2
    Build and Push Docker Image / build (push) Successful in 13s
    Stable

    Stardream released this 2026-05-25 02:28:07 +10:00 | 4 commits to main since this release

    🔒 Security

    • DRM manifest auto-discovery now rejects private, loopback, link-local, multicast, reserved, and redirected private targets

    What's New

    🎬 DRM Playback

    • Added native FairPlay HLS playback for iOS/Safari
    • Added same-origin FairPlay and Widevine license proxy support
    • Added DRM-specific playback URLs, allowing one source to use MPD for Widevine and HLS for FairPlay
    • Added admin DRM auto-discovery for DASH Widevine and HLS FairPlay manifests
    • Added per-DRM playback URL/type fields in the stream source editor

    🐛 Bug Fixes

    • Fixed Widevine license CORS failures by routing license requests through StreamHall
    • Fixed FairPlay playback on iOS/Safari with native WebKit handling
    • Fixed DRM license requests targeting the wrong source after source reordering
    • Fixed duplicate Shaka quality entries caused by audio variants
    • Fixed DRM-specific stream probing so it checks the active DRM playback URL
    • Fixed Android Telegram WebView Widevine handling by probing browser DRM capability before blocking playback
    • Fixed hidden DRM form fields being saved after switching DRM method
    • Fixed DRM auto-discovery silently swallowing per-row failures

    🔄 What's Changed

    Full Changelog: v1.2.1...v1.2.2

    Downloads
  • v1.2.1 2b0aaf3a5d

    v1.2.1
    Build and Push Docker Image / build (push) Successful in 12s
    Stable

    Stardream released this 2026-05-24 01:49:20 +10:00 | 5 commits to main since this release

    🔒 Security

    • HLS proxy now signs the full target URL instead of hostname only; a token cannot be reused across different paths on the same host
    • viewer_start now requires a short-lived HMAC token issued at player load, preventing unauthenticated session injection and password-gated stream bypass
    • Warning is printed at startup when SECRET_KEY is a known weak placeholder (REPLACE_ME etc.)
    • API key authentication now only accepts the Authorization: Bearer header; the ?api_key= query string fallback has been removed to prevent token leakage into logs and browser history

    What's New

    📊 Analytics

    • CSV export now filters by time range - choose today, 7d, 30d (default), or all from an integrated dropdown button; previously the export was unbounded

    🐛 Bug Fixes

    • Fixed HLS DRM detection missing on streams served via a master playlist - the probe now fetches the first variant URL before checking for DRM markers
    • Fixed DASH streams not being detected as DRM-protected - added Widevine UUID check on the manifest response
    • Fixed Android WebView detection casting too wide a net; detection is now restricted to the Telegram UA string only, avoiding false positives on regular Android browsers
    • Removed a misleading comment on the IP hash function that implied raw IPs were not stored (they are)

    ⚙️ Configuration

    • docker-compose.yml placeholder defaults changed to REPLACE_ME / REPLACE_DB_PASSWORD to make unset secrets more obvious

    🔄 What's Changed

    Full Changelog: v1.2.0...v1.2.1

    Downloads
  • v1.2.0 601eb0247f

    v1.2.0
    Build and Push Docker Image / build (push) Successful in 14s
    Stable

    Stardream released this 2026-05-24 00:27:22 +10:00 | 6 commits to main since this release

    What's New

    📱 Mobile Responsive Layout

    • Admin sidebar collapses to a toggle on narrow screens (≤900px)
    • Push directory sidebar collapses on mobile with a dedicated toggle
    • File browser rows wrap on narrow screens (≤600px): filename on top, buttons below
    • Fixed file browser cards overflowing the viewport on mobile

    🔐 DRM Playback

    • Integrated Shaka Player with Widevine (desktop / Android) and FairPlay (Safari / iOS) support
    • Each playback source supports multiple DRM configs simultaneously (e.g. Widevine + FairPlay on the same URL)
    • Per-entry license request headers configurable in the admin DRM editor
    • Android Telegram in-app WebView now shows a friendly "open in system browser" prompt
    • Stream probing detects DRM markers in HLS manifests and warns on missing DRM config

    🐛 Bug Fixes

    • Fixed "load more" button animation not syncing with card list on tab switch

    🔄 What's Changed

    Full Changelog: v1.1.1...v1.2.0

    Downloads
  • v1.1.1 b39533c5b6

    v1.1.1
    Build and Push Docker Image / build (push) Successful in 15s
    Stable

    Stardream released this 2026-05-22 23:07:54 +10:00 | 9 commits to main since this release

    🐛 Bug Fixes

    • Fixed push jobs being deleted from the database during a full stack restart (docker compose down && up) - jobs now survive unexpected ffmpeg exits (SRS going down, connection dropped) and are automatically resumed on next container start; a job record is only removed when the user explicitly stops it or the file finishes playing normally

    🔄 What's Changed

    Full Changelog: v1.1.0...v1.1.1

    Downloads
  • v1.1.0 5991f39c4f

    v1.1.0
    Build and Push Docker Image / build (push) Successful in 11s
    Stable

    Stardream released this 2026-05-22 22:07:55 +10:00 | 10 commits to main since this release

    What's New

    📁 Local Push & File Browser

    • Introduced a file browser in the admin panel for managing and pushing local video files
    • Per-file RTMP push modal with random stream key generator and responsive sizing
    • Folder multi-file push: assign independent stream keys per file, batch start/stop, inline live status with
      real-time duration counter
    • Push status is now shown inline on each file row; replaced the top push-jobs area with a dedicated job detail
      modal (copy address, stop, add to stream)
    • Publish-archive button on file and folder rows — opens the stream editor prefilled with signed playback URLs
    • File browser supports breadcrumb navigation, search, directory memory across view switches, .. parent row, and
      automatic filtering of hidden/system folders
    • "Add to existing stream" dropdown available at file rows, folder push modal, and job detail modal

    🎬 VOD / Video Serving

    • New /video/ endpoint with HMAC-signed URLs and HTTP Range support (seek-capable playback without login)
    • Folder publish-archive recursively includes all subfolders via directory walk

    🎨 Admin UX

    • Replaced all native alert() calls with themed Toast notifications (success / error / info / warn,
      auto-dismiss, dark mode aware)
    • Replaced all native confirm() calls with a custom modal dialog
    • Custom overlay scrollbar for admin and index pages: no layout shift, theme-colored, auto-hides after 1.5s,
      draggable
    • Fixed background diagonal stripe drifting between pages with background-attachment: fixed
    • Added drag handle for viewport config rows in the stream editor
    • Added pagination and real-time search to the hidden push address mapping table
    • Added pagination to the stream analytics detail table; SSE live refresh no longer resets the current page
    • View URL hash renamed: #push#local, #obs#remote

    🌐 Public Index Page

    • Stream list now loads in viewport-sized batches; initial count is calculated from actual layout dimensions
    • "Load more" button in ghost outline style consistent with existing tab buttons
    • New cards animate in with a staggered fade + slide on each load-more click

    ⚙️ Infrastructure

    • Dockerfile: added ffmpeg, optimized layer caching by separating requirements.txt copy
    • docker-compose.yml: added RTMP_HOST, VIDEOS_DIRS env vars and videos volume mount
    • CI: build and push now runs against the internal registry to avoid Cloudflare upload size limits

    🐛 Bug Fixes

    • Fixed 500 error on stream creation caused by psycopg3 dict_row not supporting integer subscripts
    • Fixed language toggle button title / aria-label not updating on language switch
    • Fixed API Keys list not re-rendering after language switch
    • Fixed admin stream count per tab showing the combined LIVE + ARCHIVE total instead of per-tab count
    • Replaced em dash in token hint text with a hyphen

    🔄 What's Changed

    Full Changelog: v1.0.0...v1.1.0

    Downloads
  • v1.0.0 326101958a

    v1.0.0
    Build and Push Docker Image / build (push) Successful in 32s
    Stable

    Stardream released this 2026-05-20 15:26:05 +10:00 | 13 commits to main since this release

    Initial release

    Downloads