Fixed
- Media Playback & Subtitle Engine:
- Preserved native Windows
\path separators for--sub-filein VLC (C:\...) and passed--no-one-instanceon 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
mpvwith remote URL fallback, parallelized subtitle downloads withStreamRelaysidecar 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:roinflatpak runwhile keeping custom user Flatpak flags so sandboxedmpvandVLCcan 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
stderrand 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.
- Preserved native Windows
- StreamRelay Proxy & Downloader:
- Forwarded
User-AgentandRefererwhile isolating stream cookies (Cookie: Edge-Cache-Cookie=...) to same-host requests acrossStreamRelay, subtitle pre-downloads, and media downloads. - Capped
.m4ssegment chunk fetching inStreamRelayto batches of 16 concurrentRangerequests, registered in-flight segment wait futures under lock, and requiredhttp://orhttps://schemes on/proxy?url=routes. - Increased MovieBox DASH
yt-dlp--concurrent-fragmentsfrom8to32(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 withRange: bytes=0-0size discovery, 1 MiB write buffers, and a single end-of-filesync_dataflush. - Reported specific subtitle and DASH download errors (HTTP status, timeout, missing
yt-dlpvsffmpeg) and matched"at"after"of"inyt-dlpprogress lines.
- Forwarded
- Providers & Disk Cache:
- Removed the broad
"notice"substring filter in MovieBox stream adaptation while keeping/notice.mp4and 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/resourcepreflight round-trip inInitStreamPool, and removed the 120ms delay on cached episode switches. - Streamed 4KHDHub mirror resolution directly into preflight probes via
FuturesUnorderedwithout waiting for slow mirrors, cached fetched detail pages acrossdetailsandreleasesin 4KHDHub, Dramachi, and CircleFTP, and bounded CircleFTPHEADsize 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.jsonbefore 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
fsyncbarriers on ephemeral cache writes with atomic temp-file renames, cached default directory paths viaLazyLock, reused a static HTTP client inprobe_url, and sharedArc<[u8]>poster buffers across disk caching and decoding. - Centralized Termux platform detection in core configuration and deduplicated base64 manifest policy parsing.
- Removed the broad
- TUI Navigation, Themes, Modals & Mouse:
- Validated
Detailsand stream responses against each item's own provider so cross-provider items opened from Continue Watching, Favorites,/history, or/favoritesload without hanging. - Aborted in-flight caption and 4KHDHub mirror resolution tasks on
EscorGoBackso stale subtitle popups or players do not launch after leavingDetails. - 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
/browsefor 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
HomeandDetailsmouse hitboxes with the 3-row download gauge, narrow< 85col selector panes, compact< 76col bottom bar buttons, non-Stream footer[Enter] Selectactions, and outside-click theme preview revert. - Downgraded named themes in
Theme::from_kindon 16-color (Basic) andNO_COLORterminals, improvedLattelight-mode contrast on selected badges and modal rows, and addedALACRITTY_SOCKET,KONSOLE_VERSION,TERMUX_VERSION,WT_SESSION, andTERM_PROGRAMgraphics/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.
- Validated