github mhdzumair/MediaFusion 6.0.0

4 hours ago

🚀 MediaFusion 6.0.0 Released

A complete Rust rewrite bringing major performance, reliability, and feature improvements.

🌟 Major Highlights

  • Full Rust rewrite — The entire backend is now a native Rust/Axum application replacing the legacy Python/FastAPI server for dramatically improved performance and stability.
  • Embedded React frontend — The React SPA is now compiled directly into the server binary; no separate Node.js build or frontend server required.
  • PostgreSQL-native types — All 14 Postgres enums now use native Rust enum types with compile-time SQL validation via sqlx macros, eliminating runtime type mismatches.
  • Admin genre management — New admin-managed genre system with per-type hide/show toggles, replacing the hardcoded adult genre filter with a flexible seeded database.
  • NSFW content filtering — ONNX-based NSFW classifier for poster scanning, stream keyword blocking with word-boundary matching, and admin review dashboard.
  • Keyword blocklist system — Admin-managed keyword filter and whitelist with runtime reload, version-tagged cache invalidation, and a precomputed is_keyword_blocked column for fast queries.
  • M3U/IPTV import — Full M3U and Xtream playlist import with live channel classification, catalog linking, placeholder poster generation, and m3u_url re-sync support.
  • Database Manager — Complete admin database UI with row counts, filters, bulk edit/delete, orphan cleanup, maintenance (VACUUM/ANALYZE), export (CSV/JSON/SQL), and import.
  • Task Manager & Scheduler — Admin-controlled IMDb import settings, cron job management with live status, and scheduler panel for cron control.
  • Torrin debrid provider — New Torrin file-based debrid service added alongside existing Real-Debrid, TorBox, Seedr, and others.
  • Usenet playback support — Usenet stream playback with nzb_guid support and provider-aware playback URLs.
  • DMM hashlist ingestion — Full DMM hashlist worker with strict metadata matching and local IMDB FTS search.
  • Real-time SSE updates — Server-Sent Events for live task and scheduler updates, replacing frontend polling.
  • My Streams revamp — Contributors now have direct controls over their streams with deep links and provider-aware stream ID pinning.
  • Episode link clearing — Per-file episode metadata clearing for torrent files, with clear variant syntax in the frontend.
  • Browser-based scraper bypass — Cloudflare challenge solving via browserless v2 JS evaluation for sport-video.org.ua and ext_to.
  • Contribution bot (Telegram) — Full Telegram contribution bot with multi-step wizard, webhook dispatcher, and per-user channel support.
  • Metadata search & relinking — New metadata match search API, stream relink UI, and file-level episode annotation dialogs.
  • MediaFlow proxy routing — All debrid/usenet API calls now optionally route through MediaFlow proxy with IP forwarding.
  • Egress watchdog — TCP keepalive and egress watchdog for k8s/gost tunnel staleness prevention with configurable fail thresholds.

🐛 Bug Fixes

  • 🔧 Fixed MDBList catalog config sync and stale cache keys
  • 🔧 Fixed series stream_media_link gap causing total_streams = 0 and hidden series in catalogs
  • 🔧 Fixed all metadata suggestion fields (poster, genres, cast, crew, catalogs) applying correctly on approval
  • 🔧 Fixed media deletion cascade to clean up dependent streams and invalidate caches
  • 🔧 Fixed adult genre blocking by propagating adult flag from genre link via new trigger
  • 🔧 Fixed TVDB JWT auth flow — no longer logs users out on upstream 401
  • 🔧 Fixed keyword-blocked recompute running unconditionally on every restart
  • 🔧 Fixed advisory-lock leak in migrations that blocked restarts
  • 🔧 Fixed AIOStreams header-based config being ignored on public stream routes
  • 🔧 Fixed M3U analyze/import response contract mismatch causing false errors
  • 🔧 Fixed web UI logout triggered by non-auth 401 responses from content endpoints
  • 🔧 Fixed placeholder poster generation when upstream poster URL fetch fails
  • 🔧 Fixed scheduler never enqueueing cron jobs when last_enqueued_at is NULL
  • 🔧 Fixed stream validation rejecting valid torrents, usenet, and telegram streams
  • 🔧 Fixed HDR multi-select format handling in the stream edit UI
  • 🔧 Fixed DMM hashlist test keyword mapped to wrong field
  • 🔧 Fixed RealDebrid filename block patterns breaking legitimate content
  • 🔧 Fixed IMDb import COPY transaction lacking proper rollback handling
  • 🔧 Fixed series episode metadata not persisting for user-created series
  • 🔧 Fixed catalog search cache key missing search parameter
  • 🔧 Fixed TorBox DIFF_ISSUE race condition causing silent failures
  • 🔧 Fixed seedr cache check using wrong endpoint and form encoding

⚡ Performance

  • 🚀 jemalloc allocator — Replaced glibc malloc with tikv-jemallocator to eliminate RSS memory growth
  • 🚀 Database optimizations — HOT-update fixes, lower(title,type) functional index, partial FK indexes, and fillfactor=85 for stream/media tables
  • 🚀 Catalog genre query — Replaced expensive 3-table JOIN with EXISTS subquery over small genre table
  • 🚀 Live search cooldown — Stream cache lock now persists 5 minutes instead of clearing on every successful response (25× faster warm queries: ~2000ms → ~75ms)
  • 🚀 Rate limiter cache — Replaced unbounded HashMap with moka cache (1024 entries, 1-hour TTL) to prevent memory growth
  • 🚀 Connection pool hardening — Configurable pool settings with after_connect hooks for statement_timeout and idle transaction cleanup
  • 🚀 Keyword filtering — Precomputed is_keyword_blocked boolean column with partial index replaces O(N_rows × N_keywords) per-query scans

📚 Documentation

  • 📖 Complete MkDocs documentation site (28 pages) auto-deployed to GitHub Pages
  • 📖 Comprehensive environment reference covering 180+ configuration variables in 18 groups
  • 📖 Database ERD with Mermaid diagrams reflecting the v6 schema
  • 📖 Updated architecture docs reflecting the Rust/Axum/Tokio stack
  • 📖 New Telegram integration guide covering bot setup and channel scraping
  • 📖 Stream formatting documentation with full template variable reference

🤝 Contributors

@IbbyLabs, @funkypenguin, @constantindjonkam, @luigibarretta, @vctrez, @karunthomas and @mhdzumair

📄 Full Changelog

5.5.2...6.0.0

Don't miss a new MediaFusion release

NewReleases is sending notifications on new releases.