Commit Graph
46 Commits
Author SHA1 Message Date
MichaelandClaude Fable 5 969d40dec5 fix(ci): exclude bin/ from root analyzer and clean remaining warnings
The frontend CI job ran `flutter analyze` from the repo root, which also
analyzed the bin/ server package without its dependencies resolved
(shelf_router, sqlite3, bcrypt, test), producing hundreds of
uri_does_not_exist errors. bin/ is a standalone package covered by the
backend job, so it is now excluded from root analysis.

Also:
- Remove all unused fields/variables flagged as analyzer warnings
  (api_client, cache_service, player_screen, subtitle_service,
  live_tv_tab, mobile screens)
- Run `flutter analyze --no-fatal-infos` in CI: pre-existing deprecation
  infos (withOpacity, dart:html) stay non-fatal while errors and warnings
  still fail the build

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:17:40 +02:00
MichaelandClaude Fable 5 60d3f42901 feat: security hardening, streaming overhaul, design polish, tests
Security:
- Replace unsalted SHA-256 password hashing with bcrypt (lazy rehash on login)
- Add authenticated /api/xtream-api gateway: Xtream credentials are injected
  server-side and never sent to the frontend; /api/playlists no longer
  returns passwords
- Redact credentials from all logs (login body, proxy/FFmpeg/scheduler URLs)
- Add auth to recordings, EPG, season-passes and streaming routes
  (HttpOnly session cookie for hls.js; loopback bypass for local FFmpeg)
- Lock player postMessage to same-origin in both directions
- Vendor and pin hls.js 1.6.7 / mpegts.js 1.7.3 (drop CDN @latest)
- Fix rate limiter (client IP was never resolved), add login rate limit,
  restrict CORS, add CSP Report-Only, block private-IP SSRF targets,
  fix path traversal in recording log retrieval, chmod 777 -> 770
- Remove dead HiveService (seeded admin/admin into IndexedDB with SHA-256)
- Fix authMiddleware not populating 'user' context (getPlaylist ignored the
  logged-in user; admin purge always returned 403)

Streaming:
- New FfmpegSessionManager: process registry, idle reaper (4 min live /
  15 min VOD), orphan cleanup at startup, clean SIGTERM shutdown,
  fast-fail with stderr instead of 30 s timeout
- Quality selection (source/high/medium/low) for live and VOD; source mode
  streams with -c:v copy (zero transcoding); selector wired into the player
- Concurrent recordings (MAX_CONCURRENT_RECORDINGS, default 2); conflicts
  retry on the next tick instead of silently failing
- Lower live latency (HLS window 20 -> 10 segments, liveSync 10 -> 3)
- Fix recording log lookup (.mp4 vs .mkv mismatch)

Design:
- Replace hardcoded colors with AppColors tokens (12 files)
- web/theme.css syncs HTML players with the Flutter palette
- DPAD/keyboard navigation (arrow-key focus, player shortcuts)
- Tooltips on player icon buttons, Semantics on content cards
- Remove 7 dead widgets broken since the Stitch merge

Quality:
- bin/test/: 21 unit tests (bcrypt, redaction, traversal, SSRF, recording
  conflicts) plus a quality-selector widget test
- GitHub Actions CI (analyze + test + build web)
- Archive stale status docs into docs/archive/

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:07:18 +02:00
MichaelandClaude Opus 4.7 b985f11704 fix: resolve all compile errors from Stitch theme merge
- Add missing AppTheme animation constants (durationSm/Md/Lg/Xl, curveSmooth)
  to satisfy remote widget references.
- Replace deprecated GlassContainer(opacity:) with .glass()/.floating()/.base()
  in login_screen, live_tv_tab, mobile_live_tv_tab, player_screen,
  dashboard_screen.
- Fix const-eval errors by removing const from BorderSide/Text/BoxDecoration
  using AppColors.focusColor and AppColors.border (runtime getters).
- Fix subtitle_service.dart: padEnd → padRight (Dart String API).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 07:37:37 +02:00
Michael 6a4a642611 feat: implement IPTV player screen with iframe-based stream support and recordings tab widget 2026-04-01 20:19:40 +02:00
Michael fa6ae90d8d feat: add mobile-optimized IPTV player with HLS and MpegTS support 2026-03-29 10:19:36 +02:00
GitHub Copilot ee97e29f72 fix(cache): remove unused dio_cache_interceptor_hive_store import and simplify caching setup 2026-03-26 10:48:56 +01:00
GitHub Copilot 91eb1ce5a0 Add download and subtitle services, enhance UI with continue watching and quality selector widgets
- Implemented DownloadService for managing download tasks, including start, pause, resume, and cancel functionalities.
- Created SubtitleService for handling subtitle tracks, parsing SRT and WebVTT formats, and downloading subtitles.
- Added ContinueWatchingWidget to display user's watch history with progress indicators.
- Developed QualitySelectorWidget for selecting video quality during playback, including auto quality adjustment.
- Introduced TrendingWidget and RecentlyAddedWidget to showcase trending and recently added content.
2026-03-26 10:34:18 +01:00
Michael b8682eafe0 fix: resolve compilation error in XtreamService by restoring missing streams variable 2026-03-10 19:50:21 +01:00
Michael bb8978efaa perf: accelerate metadata loading with parallel fetching and local storage caching
- Implement parallel fetching for categories and streams in Live, VOD, and Series
- Add persistent local storage caching for instant UI population
- Optimize JSON parsing logic for large datasets
- Implement failover to local cache when network is unavailable
2026-03-10 18:59:39 +01:00
Michael df4bcfd07f fix: stabilize IPTV playback and implement request throttling
- Add playback lock to XtreamService to delay EPG during stream init
- Increase MPEG-TS stash buffer to 512KB for better stability
- Enable liveBufferLatencyChasing to prevent stream drift
- Tune HLS parameters for balanced speed and reliability
2026-03-10 18:54:44 +01:00
Michael 0ca6f96710 feat: implement Turbo-Start stream acceleration
- Add direct MPEG-TS support and optimized HLS tuning
- Implement low-latency sync and instant bitrate selection
- Achieve TiviMate-like zapping speed by reducing initial buffers
2026-03-10 18:41:46 +01:00
Michael 736ab0f51c chore: optimize IPTV performance and fix navigation Loop
- Revert aggressive caching in XtreamService (use forceCache + 1h stale)
- Adjust HLS.js buffers (60s-120s) for stream stability
- Fix desktop navigation loop in PlaylistSelectionScreen
- Fix receive timeouts (revert to 30s/60s)
2026-03-10 18:28:10 +01:00
Michael 8c65e48bbe feat: Implement Xtream IPTV API service, including data fetching, caching, and proxy integration. 2026-03-10 16:48:28 +01:00
Michael 36a74d9e97 fix: increase default timeouts and ensure they are applied to XtreamService 2026-03-10 15:44:04 +01:00
Michael 36a4de2140 fix(compilation): resolved undefined 'options' variable and optimized Docker build 2026-03-10 13:06:40 +01:00
Michael e707bda597 feat: implement Xtream Codes API service for authentication, live channels, VOD, and series, including caching and URL proxying. 2026-03-10 12:14:47 +01:00
Michael 129bcadd37 feat: Add Xtream API service for IPTV features and precache web artifacts in Dockerfile. 2026-03-10 12:00:43 +01:00
Michael 4f6b5fe14e feat: Implement Xtream Codes API service for IPTV content and streamline the Dockerfile web build process. 2026-03-10 11:19:15 +01:00
Michael 33d0e0a80d fix(streaming): optimize quality, audio sync, and content update refresh
- Increased FFmpeg video quality to 8Mbps and audio to 192kbps.
- Added audio resync filters and better presets.
- Optimized HLS buffer settings for mobile players to reduce interruptions.
- Reduced API cache duration to 15m and added refresh support for faster content updates.
2026-03-10 10:26:24 +01:00
Michael 39f4205d68 fix(mobile): fix XtreamService cache/URL logic and add tab error handling 2026-03-09 18:18:20 +01:00
Michael c57273be2c feat: Implement GPU-accelerated live HLS streaming with FFmpeg, including iOS optimizations and IPTV redirect resolution. 2026-03-09 14:10:13 +01:00
Michael 0b5aa3f9e4 feat: Implement initial streaming handler for live and VOD content using FFmpeg HLS transcoding with GPU acceleration support. 2026-03-09 13:46:56 +01:00
Michael bd7645922d feat: add Xtream API proxy with SSRF protection and streaming handler with FFmpeg integration. 2026-03-09 13:41:56 +01:00
Michael 7eb483fc07 feat: introduce IPTV settings management with a dedicated mobile tab, providers, and service. 2026-03-09 13:31:01 +01:00
Michael 829c5751ca feat: implement initial mobile IPTV feature with player screen, live TV, movies, and series tabs, along with the Xtream API service. 2026-03-09 13:16:29 +01:00
Michael b9d6d715d7 feat: Add initial IPTV support with a dedicated player, series detail screen, Xtream API service, and a streaming API handler. 2025-12-15 22:09:21 +01:00
Michael 3f9a88c09a feat: Implement Xtream Codes IPTV streaming, VOD transcoding, and content browsing UI with a dedicated web player. 2025-12-15 21:18:36 +01:00
Michael 2c0725590e feat: Add initial IPTV player with web-based playback and streaming API. 2025-12-15 13:01:24 +01:00
Michael 2eb3304a2b feat: introduce Xtream Codes API service for IPTV content access and streaming. 2025-12-14 21:48:37 +01:00
Michael ee707d3cf9 feat: implement IPTV player screen for live, VOD, and series streams with integrated controls and state management. 2025-12-14 18:47:00 +01:00
Michael a7ca1a087f feat: add Xtream service for IPTV integration and a lite player HTML file. 2025-12-14 16:43:23 +01:00
Michael b2298a9bf4 feat: Add initial IPTV player with HLS.js and mpegts.js support, including UI and parent communication. 2025-12-14 16:05:30 +01:00
Michael 5b0ae63290 feat: Add Xtream Codes API service for managing playlists, streams, and channels, including caching and proxy handling. 2025-12-14 09:13:53 +01:00
Michael 0644f376db feat: implement Xtream Codes API service for managing IPTV connections, streams, and channel data. 2025-12-14 00:17:13 +01:00
Michael e95fdb534a feat: add new UI tabs for movies and series, including mobile-specific versions with search and pagination. 2025-12-08 20:43:41 +01:00
Michael 6ee7fa178a feat: Add movies tab with pagination, search, and player integration. 2025-12-06 20:45:04 +01:00
Michael ebbf9217fc feat: add LiveTVTab widget for displaying categorized live TV channels with pagination. 2025-12-06 15:28:05 +01:00
Michael e3c3fad058 feat: Implement initial Xtream IPTV features including API service, models, and UI for live TV, movies, series, and settings. 2025-12-06 12:45:43 +01:00
Michael 39dabfa7b5 feat: add Dart server for API, Xtream proxy, and FFmpeg streaming, updating Dockerfile for ffmpeg support. 2025-12-06 11:49:39 +01:00
Michael 62ba2d33b9 feat: Implement Xtream service for IPTV API integration and add a web player. 2025-12-06 11:34:47 +01:00
Michael 120bc04318 feat: add XtreamService for API communication, stream URL generation, caching, and HTTPS proxying. 2025-12-06 10:38:53 +01:00
Michael ebbc44718b feat: add Xtream Codes API service and data models for IPTV integration. 2025-12-06 02:17:00 +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 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