Commit Graph
10 Commits
Author SHA1 Message Date
Michael 4a884af972 feat: implement NativePlayerScreen using media_kit with optimized playback and decoding configurations 2026-03-29 19:47:39 +02:00
MichaelandClaude Sonnet 4.6 6bb0d73f38 fix: restore EPG display in live TV player and channel cards
- Fix EPG not showing in NativePlayerScreen by reusing the shared
  mobileXtreamServiceProvider (cache already populated by channel cards)
  instead of creating a fresh service instance per player session
- Add periodic EPG refresh timer (every 5 min) matching LitePlayerScreen
- Fix empty-title fallback in _buildEPGBox
- Force dark theme, invert default live TV player (NativePlayer default),
  remove next-program display from OSD
- Fix back button exit dialog firing from wrong tab (add tab index guards)
- Halve card grid count for Movies/Series (6 categories, 8 items)
- Revamp Movies/Series search bars to match Live TV aesthetic
- Fix first channel row clipping when entering a category (scroll-to-top)
- Fix playlist edit dialog TV remote navigation
- Fix empty playlist screen button readability
- Remove theme switcher from settings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 10:04:47 +02:00
Michael f07a6e91f9 feat: add MobilePosterCard widget and MobileLiveTVTab for IPTV live TV functionality. 2026-03-27 15:24:10 +01:00
Michael a1b1363bc8 feat: add mobile Xtream service, data providers, and UI widgets for Live TV and Movies. 2026-03-27 15:15:44 +01:00
Michael e1a0802a0c feat: Add mobile-specific Riverpod providers for Xtream service, live TV, movies, series, and EPG data, along with UI state management. 2026-03-27 13:34:06 +01:00
Michael f85f43e42f feat: Implement MobileMoviesTab for displaying IPTV movies with category browsing and search functionality. 2026-03-27 12:10:23 +01:00
Michael ef97c6dc90 feat: Add generated Hive TypeAdapters for AppUser and PlaylistConfig models, and new build/doctor log files. 2026-03-27 11:08:04 +01:00
GitHub CopilotandClaude Haiku 4.5 f9ab247ff5 perf(high): P1-2 - Optimize image cache sizes
Limit image cache to display size instead of full resolution:
- Channel icons: 40x40 display → 50x50 cache (vs 1000px full-res)
- Poster thumbnails: 100x150 display → 120x180 cache
- Hero carousel: 500x300 display → 600x360 cache
- Series cover: 400x600 display → 480x720 cache

Implementation:
- Create ImageCacheConfig utility with presets
- Set memCacheWidth/Height for all CachedNetworkImage
- Configure DefaultCacheManager (200MB limit, 7-day TTL)
- Add standardized cache configuration across app

Expected impact:
- -60% image cache disk usage
- -40% memory footprint from cached images
- Faster image loading (smaller files to decode)
- Better performance on low-storage devices

Files modified:
- lib/core/utils/image_cache_config.dart (new)
- lib/mobile/widgets/mobile_poster_card.dart
- lib/core/widgets/components/hero_carousel.dart
- lib/features/iptv/widgets/mobile_live_tv_tab.dart
- lib/features/iptv/screens/mobile_series_detail_screen.dart

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-25 22:36:14 +01:00
GitHub CopilotandClaude Haiku 4.5 93b8e5b337 perf(critical): Implement P0 optimization fixes - TiviMate parity
CRITICAL FIXES:
- P0-1: Fix EPG N+1 query storm with batch loading
  * Implement XtreamServiceMobile with getBatchEPG() method
  * Batch load EPG data instead of per-channel requests
  * Reduce 50-200 concurrent requests to 1 request per category
  * Add EPG cache with 1-hour TTL to prevent redundant calls

- P0-2: Remove destructive cache clearing on startup
  * Implement TTL-based cache invalidation
  * Preserve cache between app launches (6h channels, 1h EPG, 30m search)
  * Add HiveService.invalidateExpiredCache() method
  * Expected: -80% startup time on cold launches

- P0-3: Preserve tab state with IndexedStack
  * Replace switch statement with IndexedStack
  * Keep all tabs alive in widget tree
  * Preserve scroll position, search state, filters across tab switches
  * Expected: instant tab switching (<100ms)

HIGH PRIORITY FIXES:
- P1-1: Debounce search input (500ms)
  * Prevent per-keystroke full rebuilds
  * Add search debounce timer

- P1-3: Fix double FocusNode disposal crash
  * Remove duplicate focus node disposal in native_player_screen.dart
  * Prevents StateError on player exit

Expected impact: -75-80% perceived latency, instant tab switching, no OOM on startup.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-25 22:31:36 +01:00
GitHub CopilotandClaude Haiku 4.5 cb1788be8a Phase 3: Architecture refactor - consolidate folders and extract patterns
- Consolidate lib/mobile/features/iptv → lib/features/iptv
  * Move all IPTV screens, models, services, widgets to unified location
  * Update imports in main.dart and affected files
  * Remove old mobile/features/iptv directory

- Create lib/core/patterns/ for reusable implementations
  * HiveServiceBase: Template for Hive-based persistent storage
  * VideoPlayerWrapper: Abstraction for video player selection
  * StreamResolverPattern: IPTV stream resolution and validation

- Router already simplified (no kIsWeb checks, Android-only)

All changes maintain Android-only architecture and improve maintainability.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-25 22:21:49 +01:00