Skip to content

6.0.0

Latest

Choose a tag to compare

@mhdzumair mhdzumair released this 14 Jul 19:58

πŸš€ 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