Skip to content

Releases: alwayszihanx/MixStream

v3.7.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 13:49

[3.7.1] - Latest

📥 Batch Episode Download

  • Multi-select episodes — select episodes straight from the list and download a whole season in one action. Works for both extension-backed items (EpisodeCard) and TMDB/Nuvio shows (MovieSeasonsList).
  • Select all (N) / This page — no more paging through a 300-episode show 20 episodes at a time.
  • Parallel resolution — episodes resolve through a bounded 3-wide worker pool instead of one serial scraper round-trip each, so a 20-episode batch finishes several times faster.
  • Skip already-downloaded — re-running a batch no longer re-downloads episodes you already have.
  • Robust selection keys — selection is keyed by S<season>-E<episode> rather than the episode URL, which is empty for TMDB entries and previously made every episode collide on one key.
  • Stable tracking IDs — stops episodes in a batch clobbering each other's download progress.

🎬 HLS Download & MKV Conversion

  • Real MKV output — every download is remuxed from MP4 into a genuine .mkv by a new pure-Dart remuxer (no FFmpeg dependency). Samples are copied packet-for-packet, so there is no quality loss and A/V sync from the MP4 edit tables is preserved.
  • HLS support — .m3u8 sources are now downloadable. Segments are fetched concurrently, AES-128 encrypted playlists are decrypted, MPEG-TS is demuxed to H.264/AAC, and the result is written as MKV.
  • Live playlists rejected clearly — an on-demand-only error instead of hanging or saving a broken file.
  • Conversion progress — the Downloads row shows a live percentage while converting.
  • Conversion failures surfaced — the original file is always kept and the row reads "Kept as MP4 (MKV conversion failed)" instead of silently reporting success.
  • Gentler on the device — conversions are queued (max 2 at a time), so a batch finishing together no longer spawns a burst of isolates.
  • Faster path lookups — downloaded-file paths are cached instead of re-probing the filesystem on every rebuild.

🏠 Home Screen

  • Regional shelves — 14 new movie & series rows, newest-first so new releases surface automatically: Latest, Hollywood, Bollywood, South Indian, Indonesian, Korean, Turkish, British, French, German, Russian, Chinese, Japanese and Arabic.
  • Real industry filtering — shelves use TMDB origin-country filters, splitting Indian cinema correctly into Bollywood (Hindi) and South Indian (Telugu/Tamil/Malayalam/Kannada).
  • Genuinely "latest" — the Latest shelf uses a rolling 90-day release window instead of sorting all-time by date, which had been surfacing unrated placeholder entries.
  • Per-shelf vote floors — filter out empty entries so the rows stay worth scrolling.
  • Progressive loading — shelves appear as each resolves instead of blocking the whole page.
  • Single Continue Watching — removed the duplicate section that sat above the hero carousel.

📺 Details Screen

  • "3 of 12 downloaded" badge — per-season download progress, read from the download folder in a single pass.
  • Converted files preferred — an MKV is returned in place of the MP4 it replaced.

🎬 Nuvio Scraper Layer

  • Nuvio-aware batch download — Nuvio is not a MixStreamProvider, so the batch path now resolves sources through the Nuvio scrapers using the TMDB id plus season/episode.
  • Scraper sessions now survive to download — cookies collected while scraping are exported and attached to the stream, fixing downloads that failed with 403 while playback worked.
  • Downloadable links are no longer hidden — the download-mode filter and the per-row download button now agree, so torrent rows (with debrid) and protocol-relative //host/file.mp4 links appear correctly.
  • Extension-less links accepted — scraper links without a file extension are probed and accepted on their content type.
  • Fewer repeat scraper runs — scraper code is cached in memory, so a batch reads each script once instead of once per episode.
  • Reliability ranking — sources now sort by how often each scraper has actually delivered, with a small-sample prior so one lucky hit doesn't win.

🛠 Under the Hood

  • Connectivity fix — connectivity_plus returns a list of results now; the offline card was comparing against a single value.
  • untranslated-messages-file is configured in l10n.yaml so CI's translation-coverage gate has the report it expects.

🐛 Fixed

  • Matroska TrackNumber was written as a variable-length integer instead of a plain integer, producing "Invalid track number" and no duration.
  • Converted samples shared one reusable buffer, so every block in a file received the same bytes.
  • Negative timestamps (from AAC priming edit lists) were never shifted, producing a bogus cluster timestamp of 235 ms and non-monotonic audio.
  • MP4 Duration is a float, not an integer, so playback duration was reported as 0.

[3.7.0]

📺 Enhanced Details Screen

  • Poster zoom overlay — double-tap any poster to zoom with a floating action menu (Play, Bookmark, Download) for quick access without leaving the screen.
  • Scroll-driven hero stretch — the hero poster now stretches and compresses as you scroll, giving a cinematic parallax depth effect on desktop/TV.
  • Error & empty states — replaced raw error text with friendly _DetailsErrorView (with retry button) and _DetailsEmptyView so the screen is never blank when data fails to load.
  • Graceful provider fallback — when no registered extension matches an item, the original payload renders immediately and metadata resolution runs in the background instead of crashing.

🔄 Watched Progress Tracking

  • WatchProgressRepository — per-episode progress tracking stored persistently, with markWatched, markUnwatched, and savePosition methods.
  • EpisodeWatchedActionSheet — bottom sheet to mark individual episodes watched/unwatched with reset progress option.
  • SeasonWatchedActionSheet — bottom sheet to mark all episodes in a season watched/unwatched, with progress count shown.
  • EpisodeWatchRepository — extended to support explicit watched overrides with automatic detection based on playback position (90% threshold).

📡 Connectivity & Offline

  • NetworkOfflineCard — persistent connectivity indicator banner shown at the top of the details screen on both mobile and desktop. Auto-updates in real-time via Connectivity().onConnectivityChanged.

🏠 Enhanced Home Screen

  • Continue Watching Hero Slot — hero-sized continue-watching carousel at the top of the home screen so you can pick up where you left off instantly without scrolling.
  • ContinueWatchingHeroViewportReserve — dedicated layout spacer ensuring smooth scrolling without content overlap.

🎬 Nuvio Integration

  • Improved Nuvio plugin metadata handling and plugin sources sheet.
  • Debrid integration wired into Nuvio sources for premium link resolution.

🛠 Under the Hood

  • Disabled Impeller rendering backend on Android (fell back to Skia) to fix device-specific rendering regressions.
  • Splash pacing rebalanced for a calmer, more cinematic feel.

🎬 Cinematic 7-Stage Splash

  • Brand-new intro sequence: the screen opens on pure black, an ambient green glow blooms from the center, and real genre posters (Horror, Thriller, Action, Sci-Fi, Anime, Drama, Comedy, Documentary) fade and scale in from every direction with subtle rotation.
  • The posters drift toward the center, collapse into the MixStream logo (mixstream.png), which then cross-fades into the full wordmark, followed by a light sweep across the logo and a hold on the "Unlimited Movies & Shows" tagline.
  • The splash now fades to black at the end so it hands off seamlessly into the dark app — no white flash, no jank.

🌑 Dark-Only Mode

  • The app is now dark mode only. The system/light theme options have been removed; ThemeMode.dark is forced app-wide so the experience is consistent everywhere.
  • The native Android splash and the Flutter splash both use the same deep-dark surface for a continuous, unified look.

🟢 Wordmark Branding

  • The home screen AppBar now displays the MixStream wordmark logo (PNG) instead of the plain "MixStream" text.
  • The branding is consistent across the splash (logo formation) and the home screen.

🛠 Under the Hood

  • Disabled the Impeller rendering backend on Android (fell back to Skia) to fix device-specific rendering regressions (opacity-on-image crashes, blur hangs, full-screen opacity washout).
  • Splash pacing rebalanced for a calmer, more cinematic feel (poster emergence and logo hold given more breathing room).

v3.6.9

Choose a tag to compare

@github-actions github-actions released this 23 Aug 07:09

Changelog

All notable changes to MixStream are documented here. The format loosely follows Keep a Changelog.


[3.6.9] - Latest

🎬 Cinematic 7-Stage Splash

  • Brand-new intro sequence: the screen opens on pure black, an ambient green glow blooms from the center, and real genre posters (Horror, Thriller, Action, Sci-Fi, Anime, Drama, Comedy, Documentary) fade and scale in from every direction with subtle rotation.
  • The posters drift toward the center, collapse into the MixStream logo (mixstream.png), which then cross-fades into the full wordmark, followed by a light sweep across the logo and a hold on the "Unlimited Movies & Shows" tagline.
  • The splash now fades to black at the end so it hands off seamlessly into the dark app — no white flash, no jank.

🌑 Dark-Only Mode

  • The app is now dark mode only. The system/light theme options have been removed; ThemeMode.dark is forced app-wide so the experience is consistent everywhere.
  • The native Android splash and the Flutter splash both use the same deep-dark surface for a continuous, unified look.

🟢 Wordmark Branding

  • The home screen AppBar now displays the MixStream wordmark logo (PNG) instead of the plain "MixStream" text.
  • The branding is consistent across the splash (logo formation) and the home screen.

🛠 Under the Hood

  • Disabled the Impeller rendering backend on Android (fell back to Skia) to fix device-specific rendering regressions (opacity-on-image crashes, blur hangs, full-screen opacity washout).
  • Splash pacing rebalanced for a calmer, more cinematic feel (poster emergence and logo hold given more breathing room).

v3.6.6

Choose a tag to compare

@github-actions github-actions released this 09 Aug 10:33

Changelogs

All notable changes to MixStream are documented here. The format loosely follows Keep a Changelog.


[3.6.6] - Latest

✨ New Features

  • Custom Loading Indicators – Replaced the stock Material spinner everywhere with a hand-crafted dot-pulse loader: glowing dots travel around a ring in a brightening wave (accent gradient cycle), with a compact .small variant (16–20px) for thumbnails, episode cards, and the switch-account screen.
  • Hero Bookmark Toggle – The hero "Save" placeholder was replaced with a real per-profile Bookmark/Bookmarked button wired to the library. Saved items render a filled, accent-colored bookmark and appear in Library → Bookmarks.

🖥️ Desktop & Window Experience

  • Slimmer Title Bar – Reduced custom title bar height (48→36px), compact 28px window buttons and 14px icons for close, fullscreen/always-on-top, and pin controls.

🎬 Hero Carousel Polish

  • Gradient Titles – Hero titles now use a Disney-style gradient (white → primary → tertiary) via a ShaderMask.
  • Slower Desktop Auto-Advance – Carousel auto-advance is now 12s on desktop (Linux/Windows/macOS) vs 5s on mobile, and pauses when the carousel scrolls off-screen.
  • Layout Fix – Dot indicators repositioned fully below the action buttons with a clear gap; title raised so the action row no longer overlaps the dots.

🏠 Home / Explore

  • Section Accent Bars – Every section title now shows a slim 4px gradient accent bar (primary → tertiary → secondary).

🧩 Icons

  • Icon System Audit – All 143 used icons now resolve to real bundled assets (4500+ SVGs). Fixed mappings for bookmark-border/bookmark-outline → bookmark-02, delete-sweep → delete-01, queue → check-list, and swap-horiz → exchange-01; removed duplicate override keys.

[3.5.0] - Experience & Navigation Overhaul

🏠 Home Screen

  • Netflix-Style Banner – Cinematic hero banner with a three-button action row (Bookmark / Play / Info).
  • Continue Watching – Resume progress cards with improved layout and watch-progress updates.
  • Collapsible Sections – Tap section titles (Continue Watching, Trending, etc.) to collapse/expand with animated chevron rotation.
  • No-Provider Icon Wobble – Items without a provider source play a subtle ±6° wobble to draw attention.
  • Retry Button Spin – Error "Try Again" button spins 360° before retrying.
  • Gradient Dividers & Improved Empty States – Section separators fade from primary color; empty states feature circular icon containers with guidance text.
  • Storage Info Bar – Free-space indicator shown in the library.

📚 Library Screen

  • Queue Tab – New dedicated queue management tab.
  • Grid/List Toggle – Switch between poster grid and compact list layouts.
  • Bookmarks Float Animation – Empty-state icon floats up and down (±4px, 3s cycle).
  • Downloads Slide-to-Delete – Dismissible swipe-to-delete with red accent and confirmation dialog.
  • Downloads Status Borders – Left accent border colored by status: green (completed), orange (in-progress), red (failed).
  • Downloads Pulsing Empty State – Empty-state icon pulses (1.0→1.08).

👤 Profile

  • Profile Avatar & Switch-Account Screen – Per-profile library/bookmarks/history/tracking with a polished account switcher.
  • Version Info – App metadata displayed in About.

🎬 Details Screen

  • Cast Carousel Staggered Entry – Cast avatars fade in and slide right with staggered timing.
  • Trailers Play Icon Pulse – Play overlay pulses (1.0→1.1, 2s repeat).
  • Next Airing Widget Pulse – Calendar icon pulses (1.0→1.15) for upcoming episodes.
  • Recommendations Staggered Entry – "More Like This" cards reveal with cinematic stagger.
  • Press Feedback – Genre chips, provider badges, and Sub/Dub language toggles animate on press; episode sort icon rotates 180° on toggle.
  • Share Buttons – Quick-share to socials from the details header.

🎵 Player Loading Overlay

  • Spinning Ring – Phase indicator uses a rotating ring (1.5s rotation) instead of a static spinner.

🧭 Navigation

  • 40px Nav Tabs – Compact tab bar.
  • Bottom Nav Bounce & Crossfade – Tab icons bounce to 1.2× (easeOutBack) and crossfade on switch.

🔍 Search & Explore

  • Staggered Fade-In – Explore sections and search results fade in with staggered timing.
  • 12dp Card Radius – Softer, modern card corners across grids and lists.

[3.4.6] - Themes, Player & Infrastructure

🎨 Theme System Overhaul

  • 23 curated themes – Nature (Ocean default, Forest, Sunset, Arctic, Volcanic), Seasonal (Spring, Autumn, Winter), Brand (Spotify, Discord, Telegram), Palettes (Neon, Deep, Monochrome, Sepia, Pastel), Time-Based (Dawn, Golden Hour, Midnight), Cultural (Wabi-Sabi, Indian Vibrant, Moroccan), Pure (AMOLED Black).
  • Removed 30 legacy themes in favor of the curated collection.

📺 Media Player & Subtitles

  • Subtitle Styling – Appearance settings, custom shadows, and text scaling.
  • Custom Player Seek Bar – Refactored progress bar with 30-second seek step.
  • Netflix-Style Scrim – Subtle overlay scrim on TV/Desktop for control readability.
  • Dub Status Filtering – Filter episodes by sub/dub in the side panel, with visual dub badges.

🔗 Integrations & Tracking

  • AniList Sync & Metadata – Full AniList tracking plus TMDB metadata enrichment.
  • Multi-tracker support – Trakt, Simkl, MAL, AniList.

⚙️ Settings

  • Collapsible Groups – Settings groups collapse/expand with animated chevrons and section descriptions.
  • Theme Selector Grid – Responsive swatch grid with border highlight on selection.
  • About Info Cards – Version, package, and SDK metadata in organized cards.

🛠️ Infrastructure & CI/CD

  • Multi-platform release pipeline – GitHub Actions with per-platform build jobs: Android (split + universal APK), Windows (EXE/Inno Setup), Linux (deb/rpm/tar.xz), macOS (DMG), iOS (IPA + xcarchive).
  • MixPlug Plugin System – Inline plugin install via installer.sh (fetches repo.json → plugins.json, extracts .mix zips with meta.json); one-command mixstream install + clean uninstaller.
  • Preview Workflow – Auto-generates a release keystore if the signing secret is missing.
  • Single Author History & Dual Remote Push – Rewritten to alwayszihan, force-pushed to GitHub and Codeberg.

🐞 Bug Fixes

  • Fixed vertical scroll jitter on recommendations and search screen scroll bugs.
  • Fixed AniList logo assets, player padding, and Anilist enrichment failures.
  • Resolved Cloudflare cookie bypass and proxy header injection.
  • Fixed all 81 static-analysis lint issues (now 0) and the _InfoEntry private-type-in-public-API warning.

Roadmap

  • Android TV deep-layout support and focused navigation.
  • iOS / macOS builds.
  • CloudStream plugin compatibility investigation (own JS plugins are the priority).
  • Release signing for distribution builds.

👤 Contributors

  • alwayszihan

v3.4.6

Choose a tag to compare

@github-actions github-actions released this 03 Aug 12:29
393d502

Changelogs - v3.4.6

✨ New Features

📺 Media Player & Subtitles

  • Subtitle Styling & Customization – Added subtitle appearance settings, custom shadows, and text scaling support.
  • Custom Player Seek Bar – Refactored the player progress bar into a custom seek bar component and tuned the seek step to 30 seconds.
  • Netflix-Style Scrim – Implemented a subtle player overlay scrim on TV/Desktop to improve readability of player controls and metadata.
  • Dub Status Filtering – Filter episodes by sub/dub status in the side panel, and added a visual dub badge to the episode rows.

🔗 Integrations & Tracking

  • AniList Sync & Metadata – Full integration for AniList tracking and TMDB metadata enrichment.
  • Improved Continuing Watch – Better watch progress updates and layout improvements for Continue Watching cards.

🖥️ Desktop & Window Experience

  • Desktop Window Optimization – Configurable default window startup size and improved sidebar contrasts.
  • Custom Titlebar & Always on Top – Initial support for custom titlebars, always-on-top toggle, and OS window styling.

🐞 Bug Fixes

  • 🛠️ Fixed vertical scroll jitter on recommendations carousel and resolved search screen scroll bugs.
  • 🛠️ Fixed AniList logo asset links, player padding issues, and Anilist enrichment failures.
  • 🛠️ Resolved Cloudflare cookie bypass and proxy header injection headers.

👤 Contributors

MixStream v2.6.0

Choose a tag to compare

@alwayszihanx alwayszihanx released this 27 Jul 13:14
27ae9b5

First release with prebuilt binaries:

  • Android APK
  • Linux x64 bundle