github mesamirh/MovieBox-Tui v0.1.26

11 hours ago

Fixed

  • Media Playback & Subtitle Engine:
    • Preserved native Windows \ path separators for --sub-file in VLC (C:\...) and passed --no-one-instance on Windows and Linux so running VLC windows keep subtitle, header, and resume flags.
    • Stripped query strings and fragments before parsing subtitle extensions (.srt, .vtt, .ass, .ssa, .sub) so signed CloudFront and OSS URLs keep their true format and DASH MIME type.
    • Pre-downloaded subtitles locally for mpv with remote URL fallback, parallelized subtitle downloads with StreamRelay sidecar startup, appended an 8-char URL hash to subtitle filenames, and sanitized commas in --script-opts.
    • Mounted xdg-cache/moviebox-tui:ro, xdg-data/moviebox-tui, and /tmp:ro in flatpak run while keeping custom user Flatpak flags so sandboxed mpv and VLC can read subtitles and write watch progress.
    • Served Termux private-storage subtitles over the local StreamRelay /sub/ loopback endpoint when Android shared storage is unavailable, and restricted startup subtitle cleanup to internal cache and temp folders.
    • Parsed player stderr and exit codes to report specific failure reasons (HTTP 403, HTTP 404, HTTP 410, timeout, connection refused), and added deterministic cross-platform contract integration tests (tests/player_contract.rs) asserting VLC Win32/UNC paths, IINA CLI option schemas, and header support across OSes.
    • Unified IINA command construction with standard --mpv-* argument schemas across platforms, and restricted macOS IINA header disqualification to GUI app fallbacks missing command line tools.
    • Standardized player display labels to uppercase acronyms (MPV, IINA, VLC) across player selection popups, settings, and notifications.
  • StreamRelay Proxy & Downloader:
    • Forwarded User-Agent and Referer while isolating stream cookies (Cookie: Edge-Cache-Cookie=...) to same-host requests across StreamRelay, subtitle pre-downloads, and media downloads.
    • Capped .m4s segment chunk fetching in StreamRelay to batches of 16 concurrent Range requests, registered in-flight segment wait futures under lock, and required http:// or https:// schemes on /proxy?url= routes.
    • Increased MovieBox DASH yt-dlp --concurrent-fragments from 8 to 32 (3.77 MiB/s -> 11.13 MiB/s, +195% live CDN throughput) and scaled the direct HTTP multi-segment engine to 4 to 16 workers with Range: bytes=0-0 size discovery, 1 MiB write buffers, and a single end-of-file sync_data flush.
    • Reported specific subtitle and DASH download errors (HTTP status, timeout, missing yt-dlp vs ffmpeg) and matched "at" after "of" in yt-dlp progress lines.
  • Providers & Disk Cache:
    • Removed the broad "notice" substring filter in MovieBox stream adaptation while keeping /notice.mp4 and known deprecation hashes, which restores streams for titles like Red Notice and Burn Notice.
    • Advanced the active MovieBox host index immediately on connection or HTTP retry errors, removed the duplicate /subject-api/resource preflight round-trip in InitStreamPool, and removed the 120ms delay on cached episode switches.
    • Streamed 4KHDHub mirror resolution directly into preflight probes via FuturesUnordered without waiting for slow mirrors, cached fetched detail pages across details and releases in 4KHDHub, Dramachi, and CircleFTP, and bounded CircleFTP HEAD size probes to 1.2 seconds.
    • Required a leading 'S' prefix in 4KHDHub season count parsing so release years after "Score" do not parse as season counts, and cached static HTML selectors in 4KHDHub parsers.
    • Matched Dramachi episode numbers across Unicode boundaries and quality suffixes, parallelized Stremio addon movie/series catalog searches and M3U playlist loads, and inserted /manifest.json before query parameters in addon URLs.
    • Evicted cached poster images only when file age exceeds the 30-day TTL so valid cache files survive minor clock skew.
    • Replaced synchronous fsync barriers on ephemeral cache writes with atomic temp-file renames, cached default directory paths via LazyLock, reused a static HTTP client in probe_url, and shared Arc<[u8]> poster buffers across disk caching and decoding.
    • Centralized Termux platform detection in core configuration and deduplicated base64 manifest policy parsing.
  • TUI Navigation, Themes, Modals & Mouse:
    • Validated Details and stream responses against each item's own provider so cross-provider items opened from Continue Watching, Favorites, /history, or /favorites load without hanging.
    • Aborted in-flight caption and 4KHDHub mirror resolution tasks on Esc or GoBack so stale subtitle popups or players do not launch after leaving Details.
    • Processed active Picker and Subtitle popups before the background loading guard on Enter, cleared queued season downloads when cancelling the download subtitle prompt or on stream failure, and reset TV input focus on overlay dismissal.
    • Enabled /browse for Stremio Addons, reused in-memory addon state during stream resolution, skipped search pagination on active addon catalogs, and clamped initial cursor selection in empty TV and Addon manager modals.
    • Synchronized Home and Details mouse hitboxes with the 3-row download gauge, narrow < 85 col selector panes, compact < 76 col bottom bar buttons, non-Stream footer [Enter] Select actions, and outside-click theme preview revert.
    • Downgraded named themes in Theme::from_kind on 16-color (Basic) and NO_COLOR terminals, improved Latte light-mode contrast on selected badges and modal rows, and added ALACRITTY_SOCKET, KONSOLE_VERSION, TERMUX_VERSION, WT_SESSION, and TERM_PROGRAM graphics/TrueColor detection.
    • Shortened toast notifications to show filenames instead of full paths and removed duplicate status-bar and toast alerts on compact terminals.
    • Pruned conversational filler from terminal size warnings, language selection prompts, and package manager upgrade notices.

Don't miss a new MovieBox-Tui release

NewReleases is sending notifications on new releases.