Known issues and limitations
Tracked here so future work and issue reports reference the same facts.
Latent / by-design
supports_headersis compatibility policy, not just a parser guard. Sources that carry authentication headers (e.g. MovieBox CloudFront signed cookies) exercise it for Android intent and VLC playback. Android intent and VLC players support unauthenticated streams (CircleFTP, DhakaFlix, IPTV, direct streams) as well as streams with standardreferer/user-agentheaders (4KHDHub). Streams requiring custom cookies or auth tokens trip the compatibility gate and guide the user to mpv. Keepplayer.rs::supports_headersin sync with VLC and Android opener capabilities.- BDIX clients use nested
if let Okpyramids in search handling; they work and are logged, but are harder to read. Flattening is deferred (behavior-neutral refactor with moderate churn). - MovieBox request signing hardcodes an API secret and spoofs a device identity in
crypto.rs. This is inherent to the scraper; treat the module as one unit. - Android intent playback forwards
User-Agent,Referer, and subtitles (subtitles_location/subs) when usingamortermux-am. Chooser-based launches viatermux-openopen the raw video URL directly.
Environment-dependent
- 4KHDHub mirrors rotate and can be expired on upstream hosts. Direct streams are resolved concurrently across all available release mirrors using prioritized scoring (Cloudflare R2 / S3 / Seekable Streams → Storage → PixelDrain API → Google UserContent / Direct Attachments) and bounded concurrency (
select_okin chunks of 3). When all upstream mirrors for an older release are dead/expired (e.g. 404 or expired tokens), the resolver fails fast (<4.5s) and guides the user to select another release. - Termux playback needs the device confirmed on each release:
termux-open/amavailability and the Android chooser behavior. The historicalrustls-platform-verifierinitialization panic reported for v0.1.12 is not in the v0.1.13 dependency graph, but the upstream report remains open until a real Termux launch is observed.
Verification
- Automated testing is enforced via
cargo test --all-features --lockedcovering 346+ unit and integration tests across 21 test suites (seedocs/testing.md). The count is updated when tests change; it does not replace real-player and real-device verification. - Static correctness is enforced by strict compiler type checking, the lint gate (
cargo clippy --all-targets --all-features --locked -- -D warnings), formatting (cargo fmt --check), dependency vulnerability scanning (cargo audit), and packaging verification (cargo package --locked). - Runtime and platform-specific behavior (terminal resize, focus handling, external player launch, and Termux chooser) are verified through the release checklist in
release-checklist.md.