Added
- MovieBox MPEG-DASH Stream Playback:
- Implemented visitor login authentication with JWT session tracking and atomic disk persistence (
~/.cache/moviebox-tui/moviebox_session.bin). - Added CloudFront DASH manifest resolution (
index.mpd) labeled with[Multi]badge in stream listings for multi-resolution playback (1080p,720p,480p). - Forwarded authentication headers and mobile
User-Agenttompv,IINA, andVLCfor authenticated CloudFront DASH demuxing.
- Implemented visitor login authentication with JWT session tracking and atomic disk persistence (
- Seekable 4KHDHub Stream Resolution:
- Prioritized seekable Cloudflare R2, S3, and FSL stream mirrors (
HTTP 206 Partial Content) over attachment downloads. - Added automatic unwrapping of base64
watch-onlineredirect URLs and expanded HubCloud button selectors. - Concurrently probe resolver mirror candidates in chunks of 3 with a 4-second timeout, filtering expired or broken links.
- Prioritized seekable Cloudflare R2, S3, and FSL stream mirrors (
- Interactive Settings Hub (
/settings):- Added a unified 4-tab modal (
General,Content Modes,Appearance,Maintenance) for media player selection, download directory configuration, live theme palette preview, and provider toggles.
- Added a unified 4-tab modal (
- TUI Layout & Ergonomics:
- Added
/exitslash command (with/quitand/qaliases) to exit and restore the terminal directly from the search prompt. - Added direct watch history resume on
Space/Pfor the recorded season and episode. - In-place provider switching (
Ctrl+P) on the Details screen to re-query titles without returning to the landing screen. - Multi-
Escnavigation: firstEscreturns focus to the search bar; secondEscclears the query and returns to the home landing. - Added fluid 10-frame Unicode Braille loading spinners (
⠋⠙⠹...) with ASCII fallbacks. - Grapheme-cluster-safe text input (
TextInputBuffer) across search, TV playlist, and addon inputs withCtrl+W,Ctrl+U,Delete, andHome/Endsupport. - Added 4-tier responsive stream table layout and dynamic single-column fallback for narrow terminals (<85 cols).
- Added Kitty keyboard protocol support (
DISAMBIGUATE_ESCAPE_CODES,REPORT_EVENT_TYPES) for lower latency input on supported terminals. - Added terminal theme autodetection using OSC 11 background luminance queries, with
NO_COLORoverride support.
- Added
Changed
- Unified Favorite Keybinding: Standardized favorite toggling across all screens exclusively on
f/F. - Search & Landing UX:
- Anchored search bar at row 0 across empty, loading, and zero-results states to eliminate layout shifting.
- Structured zero-results and query error screens with actionable guidance shortcuts (
[Ctrl+P] Switch Provider,[r] Retry,[Esc] Back). - Enclosed landing favorites list in an aligned bordered card.
- Streams Table Display:
- Replaced non-existent stream duration column with source and uploader columns, expanding room for codec and media tags.
- Grouped secondary stream audio/video codec tags (
DV,ATMOS,HEVC) with subtle separator points. - Isolated stream row selection highlight so background styling applies exclusively to the active stream row rather than table headers.
- MovieBox Client Spoofing: Updated client identity headers to APK
v4.0.01to ensure backend compatibility and avoid upgrade notice videos. - Search Prefetching: Bounded initial search prefetching to visible viewport bounds to reduce initial network requests.
Fixed
- Stream Playback & Resolver State:
- Fixed an issue where timed-out or failed stream resolutions left the playback state locked, preventing subsequent playback attempts.
- Fixed empty stream panel click focusing the pane without inadvertently triggering playback of index 0.
- Prevented transient "No stream sources found" flash while metadata or streams are loading.
- Metadata & UI Isolation:
- Guarded search preview metadata and details merging with strict provider and item ID checks, preventing stale metadata leakage when navigating quickly.
- Suppressed Sixel, Kitty, and iTerm2 poster graphics while modal dialogs or search dropdowns are open to prevent graphic bleed-through.
- Fixed poster placeholder widget incorrectly drawing over loaded images on the results screen.
- Fixed text wrapping panic on multibyte / CJK characters during title year extraction.
- Cross-Platform & Installation:
- Windows: Fixed self-update batch script losing staged binary on process exit, preserved leading backslashes on UNC paths, and sanitized NTFS forbidden characters in tracker state filenames.
- Android (Termux): Added fallback directory resolution for config, cache, and data paths, and added architecture guard preventing incompatible glibc Linux ARM64 binaries from overwriting Termux installations.
- DNS: Replaced hardcoded
/etc/resolv.confrequirement with custom resolver querying OS DNS first and falling back to public DNS (Cloudflare, Google, Quad9) on zero-config platforms. - Installers: Hardened path quoting, signal handling, and TLS 1.2 negotiation in
install.shandinstall.ps1.
Performance
- MessagePack Binary Disk Cache (
src/cache.rs): Replaced raw JSON disk caching with binary MessagePack serialization (rmp-serde) with magic signatureMBC1, versioned envelopes, and automatic migration from legacy JSON caches. - Zero-Copy IPTV M3U Parser (
src/providers/tv/parser.rs): Converted playlist attribute parsing to single-pass slice scanning, eliminating bulk heap allocations on large playlists. - Scraper Efficiency (
src/providers/fourkhdhub/): Precompiled static CSS selectors usingLazyLock<Selector>across scraping paths. - Connection Pooling & DNS (
src/net.rs): Shared static DNS resolver cache and tuned HTTP connection pool settings (tcp_nodelay, keepalive, idle timeouts).
Removed
- Removed deprecated JSON conversion adapters and untyped
serde_json::Valueservice endpoints in favor of strongly typed domain structs. - Removed redundant
[o] Open Withand[s] SubtitlesDetails shortcuts in favor of/settingsmedia player selection and automatic subtitle loading. - Removed obsolete
*favorite shortcut in favor off/F.