Commit Graph
24 Commits
Author SHA1 Message Date
MichaelandClaude Opus 5 8d74bbb320 feat: XMLTV EPG fallback, Warm Cinema theme, background release
Align the Android app with xtremflow on three fronts.

EPG: add XmltvService, a streaming XMLTV parser (gunzip-aware, indexed to a
-3h/+18h window, JSON disk cache with a 6h TTL). XtreamServiceMobile now falls
back through the provider's xmltv.php, a user-supplied URL, then a community
guide whenever get_short_epg returns nothing. Channels are matched on
epg_channel_id first, then on a normalized name (accents, HD/FHD/4K suffixes,
"FR:" and "|FR|" prefixes). A streamId -> Channel index populated by
getLiveChannels supplies those keys, so no getShortEPG call site changed.
EPG requests are also funnelled through a 3-slot semaphore, as in xtremflow:
a 30-tile grid used to fire 30 parallel player_api.php calls, which rate-limited
panels answered with errors, emptying the guide for the whole screen.

Theme: port the Warm Cinema charter (ember/charcoal/cream, Fraunces + Karla)
into app_colors, app_theme and app_decorations. The 21 Apple TV colour names
already in use are kept as compatibility aliases. mobile_theme now derives from
AppTheme instead of duplicating its 390 lines.

Playback lifecycle: stop reacting to AppLifecycleState.inactive, which fires on
transient Android interruptions such as pulling down the notification shade and
was killing playback. Both engines now release on paused/hidden/detached via
_releasePlayback(): stream stopped, decoder released, timers cancelled, wakelock
dropped. An _isReleased latch keeps the watchdog and reconnect paths from
restarting a stream from the background.

Long-run stability: cancel the six player stream subscriptions on dispose, cap
demuxer-max-back-bytes at 8MB (mpv defaults to 50MiB, which combined with the
150MB readahead pushed the native heap toward an Android memory kill after a few
hours), rebuild on position only while the controls are visible, and dispose the
Lite player's focus nodes.

Startup: prewarmHost() pre-resolves DNS and opens then closes a bare TCP/TLS
socket before playback. No HTTP request is issued, so no provider connection
slot is consumed. Capped at 1.5s.

Verified: flutter analyze clean on all touched files; 19/19 tests, including a
run over a real 46MB/69802-programme dump (517 channels indexed in 1.1s, 5/5
name probes matched); flutter build apk --release succeeds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 19:25:33 +02: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 Copilot 1293a159ee Phase 1: Android-Only Cleanup - Code and configuration cleanup
- Clean web-specific comments from hive_service.dart
- Update platform_utils.dart documentation
- Remove web-specific imports from mobile_xtream_providers.dart
- All platform-specific code removed
- Ready for Flutter build validation
2026-03-25 21:53:53 +01:00
Michael aaa0e9624d feat: Add mobile playlist screen for managing IPTV configurations, including creation, editing, and auto-login. 2025-12-27 10:37:25 +01:00
Michael d79d130126 feat: Add native video player screen using media_kit for IPTV playback with extensive performance and audio optimizations. 2025-12-21 18:05:29 +01:00
Michael 3d88463c65 feat: Implement a mobile-optimized IPTV settings tab including video playback, content filters, and cache management. 2025-12-21 09:46:55 +01:00
Michael 4e00cc7dc7 feat: add build log file 2025-12-18 00:06:00 +01:00
Michael f1bc6a4957 feat: add XtremFlow app icon for Android 2025-12-16 21:47:48 +01:00
Michael 43921abd2e feat: add wakelock_plus dependency and update task list to focus on Fire Stick fixes. 2025-12-11 19:48:44 +01:00
Michael 2406b9b100 feat: introduce XtreamServiceMobile for IPTV API interactions and DnsFallbackInterceptor for network robustness. 2025-12-10 22:16:51 +01:00
Michael 3888a21990 UI: Clean up player controls (remove duplicate arrows, move LIVE badge) 2025-12-09 20:34:44 +01:00
Michael 51f73d102d debug 2025-12-09 18:12:48 +01:00
Michael 2325431631 docs: add Docker build failure investigation task and pause audio investigation. 2025-12-08 17:19:10 +01:00
Michael 96367bb8be refactor: remove media_kit and media_kit_video dependencies 2025-12-08 13:09:41 +01:00
Michael 1a46f0ad63 feat: add IPTV player screen supporting live, VOD, and series streams via HTML iframe, and update dependencies. 2025-12-07 10:15:08 +01:00
Michael 29b070b964 chore: update project dependencies to their latest versions. 2025-12-07 00:04:52 +01:00
Michael 85471b5312 feat: implement core server with API (auth, playlists), static assets, Xtream proxy, media streaming, and icons 2025-12-06 13:10:58 +01:00
Michael 872531d2aa deps: update video_player_web_hls to ^1.3.0 2025-12-06 10:33:15 +01:00
Michael a3fe3bf7e9 feat: Implement initial web application structure and HLS video playback support. 2025-12-06 10:24:26 +01:00
Michael c78012dbdd feat: implement Hive service for local data persistence, user management, and playlist configuration. 2025-12-06 01:11:43 +01:00
Michael 5943cd9587 chore: Stop explicitly copying pubspec.lock as flutter pub get generates it. 2025-12-05 18:44:45 +01:00
Michael 163b1632bf feat: Add video_player_web dependency for web platform and enable verbose logging for web builds. 2025-12-05 11:14:41 +01:00
Michael 0ca2835cba chore: Update dependencies, switch Flutter web renderer to HTML, replace media_kit with video_player/chewie, and remove Hive volume from Docker setup. 2025-12-05 09:52:40 +01:00
Michael 2a28eb44d8 feat: Initialize XtremFlow project with core structure, IPTV features, authentication, and video player. 2025-12-05 09:17:11 +01:00