Skip to content

v1.6.0

Choose a tag to compare

@chila254 chila254 released this 01 Sep 08:36
· 190 commits to main since this release

1.6.0+8

Note

This release modernizes mobile Search with Top Searched / Most Watched and voice search, makes Recommendations live after any watch (including TV), adds official Website/GitHub links, and polishes the native TV player (subtitles, focus, watchlist) while hardening stability on both platforms.

What's New

  • Mobile Search redesign — idle state shows Top Searched (trending) and Most Watched (popular) carousels (Top Searched/Most Watched fetched in parallel with safe fallbacks); unified results screen for All / Movies / TV Shows / Actors with All aggregating all media types and separate grids for each tab
  • Voice search — integrated speech_to_text 6.6.0 with RECORD_AUDIO permission, single-pill search bar (no left icon, mic integrated), 30s listen / 5s pause, ListenMode.search, filler stripping (search for/find/show me) and 650 ms partial-result debounce that auto-searches while speaking
  • Mobile Recommendations liveBecause You Watched now tracks history.first (latest movie/episode/season/series) instead of old isWatched, clears 30-min cache and refreshes on CloudSync.historyRevision + WatchHistory.localHistoryRevision + app resume, pulls TV watches before computing so TV binges appear on mobile
  • Actor filmography correctly groupedmovie_credits / tv_credits are authoritative; tv credits now open MaxStreamSeriesScreen and enforce media_type, fixing movies reading as series and vice versa
  • About screen — Website & GitHub — new Website section (https://maxstreamweb.vercel.app) with Icons.language and GitHub Repository section (https://github.com/chila254/maxstream) with Icons.code in maxstream_about_screen.dart
  • TV subtitles upgraded — manual overlay for VixSrc (header-signed fetch), English auto-select, selection popups with cue count / failed to load, and 200 ms lift above playback controls when visible (PlayerScreen.kt)
  • TV Home & Details polish — series/movie release status badges (Returning/Ended/Cancelled / Released/Post Production/To be released), watchlist counts, and focused Continue Watching caption S{season} E{episode} · {name}

Features

  • Mobile
    • Modern pill search bar — 1E1E1E232323 gradient, 0.09 border, dual shadows, integrated mic (red when listening, Listening… hint) and clear affordance; tabs hidden until searching and replaced by modern pill ChoiceChips (All/Movies/TV Shows/Actors with animated red pill)
    • Top Searched / Most Watched use Coming-Soon style cards (300×220 backdrop + 56×82 poster, gradient, TV/MOVIE badge, pill rating, year + 2-line overview) in 152px horizontal carousels with 12dp radius/shadow; grid cards enlarged to 0.62 aspect, 10px spacing, star pill
    • Reusable AppShimmer (lib/widgets/app_shimmer.dart) — narrow bright glint band (0.42/0.5/0.58 stops lerped toward white) sweeping at 800 ms replaces soft 1500 ms Shimmer.fromColors on all 8 loading screens
    • Recommendation rows and series list now show instant cached content while refreshing in background (no full-screen shimmer on every tab return)
    • WatchHistoryService.localHistoryRevision (ValueNotifier) bumped on every save for immediate offline refresh
  • TV (native Kotlin/Compose)
    • Player OK flow: first OK reveals controls and focuses Play/Pause (no pause), second OK pauses; single activator via onPreviewKeyEvent + focusable() eliminates pause/resume flicker (PlayerScreen.kt:1419,1788)
    • Content rows use RowDesc + RowNavState with focusFirstRow/onCardKey, hero debounced at 400 ms, and 18-attempt focus seeding for sidebar→content
    • Continue Watching card emphasizes S/E · episodeName in red/bold when focused, and syncs every 30 s + on historyRevision
    • Unreleased episodes show To be released on {date} badge, are skipped by D-pad, and block playNext/selectMenuOption
    • CloudSyncRepository.getJson returns null on non-2xx to avoid wiping local watchlist/history on error; TvShell logout now uses shellNavController

Full Changelog: v1.5.0...v1.6.0