70 Commits

Author SHA1 Message Date
b3dbb3cfba feat: run full refresh with EPG rematching
Run full live catalog refreshes through live source sync, complete channel analysis, EPG source refresh, and persisted EPG rematching while keeping check-new incremental.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-08 00:05:00 +02:00
4cca030afa feat: split live analysis actions and page catalog loading
Separate incremental live checks from full catalog rebuilds and page projected channel/variant loading so first live-list display stays bounded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-07 23:45:42 +02:00
4319e64e1e feat: persist incremental live channel analysis
Persist live channel language metadata across background projection rebuilds and target Local AI identity analysis to newly detected streams unless a manual full analysis is requested.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-07 23:12:42 +02:00
ba5b1b37a1 fix: prevent background Laya rebuilds during playback
Ensure automatic live projection rebuilds use the algorithmic path so Laya identity batches are not launched during live list playback or background sync.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-07 22:44:05 +02:00
5ee07570e0 feat(cast): add server-managed Google Cast playback (#34)
Add server-side Google Cast discovery and sessions, signed cast media URLs, browser device picker integration, and deployment documentation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 22:40:17 +02:00
45d1fe29d3 fix(live): keep channel search responsive (#25)
Filter projected live channels locally in the browser and apply server-side search and language filters before costly enrichment work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 13:08:16 +02:00
afe91089e5 feat(epg): order EPG sources by priority (#24)
Add persistent EPG priority ordering, source reorder validation, and priority-aware EPG matching for live channels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:58:50 +02:00
2a1c745a26 feat(live): add language-aware flexible channel search (#23)
Add backend language detection, flexible live channel search, iptv-org catalog caching, and protected built-in EPG source registration.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:42:06 +02:00
45b56d872f fix: show live Laya analysis progress (#21)
Track the Laya identity phase separately from catalog projection progress and expose phase-specific counters through the live status API and Settings presentation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-05 23:30:35 +02:00
6bb1914906 fix(live): preserve channels after empty projection rebuild (#18)
Treat successful but empty live projections with existing live input as stale, reject them on the frontend, and keep the previous visible channel state during rebuild failures.

Add DOM coverage for the Settings analysis flow and backend serialization coverage for empty projection state.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-05 22:30:37 +02:00
67d9869364 feat: add Settings live stream analysis button and diagnose Laya batch failure (#14)
Add a Settings action to manually rerun Live TV stream analysis:
it triggers an admin-guarded projection rebuild endpoint that
groups streams into logical channels (covering channels present
before the projection existed) and reruns language/Laya detection,
with progress presented via liveAnalysisPresentation. Harden the
Laya batch path that failed with 'Local AI language matching
failed' by surfacing the underlying cause and falling back to
standard matching cleanly. Guard admin-only rebuild through a new
authz helper and cover routes, service and presentation with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 16:09:13 +02:00
9f97020996 feat: precompute stream grouping during source sync (#13)
Move variant grouping work out of Live TV rendering into the
catalog pipeline: a liveProjectionService builds the logical channel
projection (schema in liveProjectionSchema) whenever a source is
added, synced or modified (name change, new address), and the
projection is served through a /live route. ChannelList now consumes
the precomputed projection via a liveChannelProjection client
service, recalculating only when the catalog changes. Cover
projection building, incremental recompute and client consumption
with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 15:35:02 +02:00
d276d3b4c3 fix: show Laya model download progress and surface errors in Settings (#12)
Track download progress in layaService (bytes/total, phase, error
state) and expose it through the laya status route. Render a progress
bar during model download in Settings via a layaStatusPresentation
service, and display download/status errors inline instead of failing
silently. Cover progress tracking and status presentation with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 11:49:36 +02:00
ce11ecc757 feat: add optional Laya engine mode for grouping and language detection (#12)
Add a languageDetectionMode setting (algo | laya | laya+algo) exposed
in Settings with three engine choices. When Laya is enabled, a laya
service (Dockerfile.laya, optional compose profile, models stored
outside the repo under ./data/models/laya) can be started, with model
download and deletion from the UI via /laya routes to manage disk
space. Add a channelLanguageFusion service combining Laya results
with the existing algorithm, and wire detection mode through
grouping, channel list and player. Cover engine selection, fusion
and laya service behavior with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 11:13:34 +02:00
4488914b2d feat: add quality/transcoding options to live player (#6)
Manual quality profiles (source/1080p/720p/480p) in the player overflow
menu plus an honest/preparatory Auto contract: adaptive when the HLS
manifest exposes multiple levels, single-rendition automatic selection
otherwise.

- server: transcodeQualityProfiles service and qualityMode session option
- player: quality menu, persisted preference, live switch with rollback
- tests: npm test script and unit tests for quality profiles
2026-09-30 12:01:08 +02:00
d018ac078c feat: add Plex-style adaptive transcoding with bitrate limits and hardware fallback 2026-09-29 23:31:05 +02:00
ac6c82e3fc fix: resume from homepage not correctly handling source_id 2026-01-22 18:23:48 -08:00
237d11cf00 feat: implement hardware and software upscaling 2026-01-19 01:34:45 -08:00
100a26fe4e chore: update screenshots in readme and sso icon 2026-01-18 19:49:22 -08:00
f9fefa3947 fix: filter homepage recent sections by hidden status 2026-01-18 17:06:26 -08:00
bf111e1fca feat: add home page with resume functionality and recently added VOD 2026-01-18 03:08:08 -08:00
dc029f75e5 feat: implement per-user favorites with SQLite storage 2026-01-17 23:47:09 -08:00
d54428472c feat: add user management modal with SSO/Local badges and fix OIDC session serialization 2026-01-17 23:36:34 -08:00
5752f529cb feat: implement OIDC SSO with JIT provisioning 2026-01-17 22:52:06 -08:00
c1f8077438 feat: add smart audio copy and audio mix presets for configurable 5.1 downmixing 2026-01-17 13:31:13 -08:00
2c34359b2c feat: Implement hardware-accelerated HLS transcoding with granular controls, smart stereo downmixing, and robust support for MKV and 10-bit HEVC playback. 2026-01-17 03:07:16 -08:00
efcf14a545 feat: implement GPU encoder pipelines 2026-01-17 01:39:26 -08:00
f0c1393ce0 feat: add hardware detection service for GPU-accelerated transcoding (NVIDIA/AMD/Intel/VAAPI) 2026-01-17 01:00:37 -08:00
2a03cad213 feat: add -seekable 0 to fix 405 errors and configurable User-Agent presets for stream requests 2026-01-17 00:45:55 -08:00
196b9520b7 feat: add large M3U playlist warning (50K+ channels) 2026-01-16 17:00:57 -08:00
c951a5998e fix: normalize epg_channel_id for M3U sources (#44) 2026-01-12 14:01:37 -08:00
838b540922 chore: remove deprecated M3U proxy route and API method 2026-01-12 00:23:27 -08:00
aeee45869b Fixed EPG description not displaying due to property name mismatch 2026-01-10 14:10:07 -08:00
8d36a2c07e feat: add subtitle extraction and display for MKV/container streams 2026-01-10 12:35:39 -08:00
346a0519e9 feat: added smart auto-transcoding with probe-based routing and MKV/remux support 2026-01-10 00:35:42 -08:00
67d9cb26d2 Fix proxy streaming for small files like HLS encryption keys 2026-01-07 16:38:17 -08:00
ffd995c1c5 Fix Pluto TV key loading by expanding CDN domain detection 2026-01-07 14:32:40 -08:00
7184a1ba56 Added DEFAULT_MAX_AGE_HOURS constant to proxy route 2026-01-07 13:51:05 -08:00
3e834d4f41 Fix: Restore proper HLS stream proxy with encryption key handling 2026-01-07 11:17:01 -05:00
5bb0629de2 Changed transcode ffmpeg flags 2026-01-06 20:16:20 -08:00
f525a6ee67 Added streaming service style watch page for movies and series playback 2026-01-06 20:01:43 -08:00
6557b9061f Implemented cascade deletion for removed sources 2026-01-04 17:17:27 -08:00
a00082b0ef Implemented virutal scrolling for epg, optimized database batching, moved sync timer to server 2026-01-04 00:46:51 -08:00
ca87a5f143 Misc fixes for syncService, remux and proxy 2026-01-04 00:18:58 -08:00
dd95c6f6ed Removed +igndts and +nobuffer from FFmpeg fflags 2026-01-03 23:25:47 -08:00
374a87b2fd Implemented cascading update save logic 2026-01-03 21:46:07 -08:00
8805ddbc13 Refactored code to use sqlite for channel, epg and vod data 2026-01-03 21:07:18 -08:00
b7bc03a960 fix vod seeking bar 2026-01-03 06:55:55 -05:00
024b847d05 Increased stream analyze duration to 0.5 seconds 2026-01-01 16:16:39 -08:00
096420596b Merge branch 'main' into dev 2026-01-01 13:07:34 -08:00