Commit Graph

48 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
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
803dac3788 feat(ui): add EPG source priority controls (#24)
Render active and inactive EPG priority lists, support move controls, and persist complete EPG source ordering from the settings UI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:59:06 +02:00
638a31d9ef feat(ui): surface live language filters and built-in EPG sources (#23)
Add language filter controls for projected live channels, preserve backend language views in the browser, and separate built-in EPG sources from custom sources.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-06 11:42:23 +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
4f65588893 fix: correct Settings actions in Laya ready state and clear stale AI warning (#12)
Offer the right actions in Settings when Laya is ready/available
instead of leaving irrelevant ones, and stop showing the ChannelList
local-AI warning once the runtime is actually available. Derive both
from layaStatusPresentation and cover the ready/available action set
with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 14:34:30 +02:00
d253642dec fix: make Laya status consistent between Settings and ChannelList (#12)
The model was reported as ready while the AI runtime was actually
unreachable, and the Download action stayed visible afterwards.
Distinguish model-downloaded from runtime-available in
layaStatusPresentation, derive the Download action from the real
combined state, and align Settings and ChannelList rendering on that
single source of truth. Cover the combined status cases with tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 13:31:35 +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
b95a408071 feat: detect variant language with confidence scoring and player language selector (#10)
Add a channelLanguageDetection service that scores language evidence
per IPTV variant (country/language prefixes in name and group, source
metadata, original title words) and picks the highest-scored language.
Integrate detected languages into channel variant grouping and add a
language selector to the live player to switch to a variant of the
logical channel in the desired language, keeping raw streams
non-destructive.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 09:33:28 +02:00
a7a83a6faa feat: group variants of the same IPTV channel into a logical channel (#9)
Add a channelVariantGrouping service that normalizes channel names
(strips region prefixes and quality tokens) to fingerprint duplicate
stream entries and cluster them under a single logical channel with
quality/source variants. Wire it into the Live TV channel list and
player variant selection, reducing duplicates without destructively
merging streams.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-02 08:25:42 +02:00
e1342348d1 fix: restore readable contrast in native select dropdowns (#7) 2026-09-30 17:14:05 +02:00
c8ca09011f fix: adjust timing for up next panel 2026-01-22 20:15:46 -08:00
e83b173755 fix: safari specific fixes for video player and watch page 2026-01-22 13:35:19 -08:00
6f966f1095 fix: implement dynamic viewport height 2026-01-21 20:12:54 -08:00
cddf02b114 fix: add safari webkit support and mobile safe area adjustments 2026-01-21 15:22:34 -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
53c577a932 Added 60 second refresh interval for epg now indicator 2026-01-18 19:00:33 -08:00
4a8be395ca fix: mobile epg programme alignment 2026-01-18 18:48:58 -08:00
f9fefa3947 fix: filter homepage recent sections by hidden status 2026-01-18 17:06:26 -08:00
b890d30253 feat: add home page with favorites, resume playback, recently added VOD 2026-01-18 14:04:40 -08:00
bf111e1fca feat: add home page with resume functionality and recently added VOD 2026-01-18 03:08:08 -08:00
052178e395 feat: add now playing header indicator and enable background playback for watchpage 2026-01-18 01:17:51 -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
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
77eb7bff5f feat: add dedicated transcoding settings tab 2026-01-17 01:27:27 -08:00
7c9c80c2f1 fix: add media query for desktop sidebar expand button 2026-01-16 20:53:17 -08:00
b467471590 feat: add copy stream URL menu and desktop sidebar collapse (closes #43, closes #45) 2026-01-16 18:04:24 -08:00
616ec37a93 fix: align EPG program blocks with time header (#47) 2026-01-13 13:00:47 -08:00
098dc3a8ce feat: add version badge to header displaying app version from package.json 2026-01-11 23:31:34 -08:00
955d68e899 Update live tv player styling to match VOD player 2026-01-06 20:43:03 -08:00
f525a6ee67 Added streaming service style watch page for movies and series playback 2026-01-06 20:01:43 -08:00
1be84d3ade Improved app visual identity with new icon, logo and interface fonts 2026-01-02 15:42:22 -08:00
e1a197f2be implement authentication and authorization 2026-01-01 15:36:38 -05:00
46c68813ec add video controls 2026-01-01 11:07:07 -05:00
51c2fb915c feat: implement fully responsive mobile design with channel drawer
- Add comprehensive responsive breakpoints (1024px, 768px, 640px, 480px)
- Implement slide-out channel drawer for mobile Live TV page
- Add floating 'Channels' button with overlay for mobile
- Convert navigation to hamburger menu on small screens
- Optimize all pages (Movies, Series, EPG, Settings) for mobile
- Add touch-friendly interactions and safe area insets
- Improve source action buttons layout on mobile
- Add smooth scrolling and overscroll behavior controls
- Implement proper visibility handling for mobile menus
2026-01-01 10:50:56 -05:00
3b0d311756 Update UI elements for consistency 2025-12-29 23:41:40 -08:00
54a4b84d6e Updated settings page icons 2025-12-29 00:14:14 -08:00
29a7996ecd Implemented SVG icons 2025-12-28 21:27:21 -08:00
3b460591e0 Updated channel list context menu 2025-12-28 19:01:10 -08:00
ec05112f8f Enabled CEA-708 and WebVTT caption parsing 2025-12-28 01:11:14 -08:00
6a1d5b44e9 Added channel overlay to fullscreen video player 2025-12-27 23:04:34 -08:00
f76e41c398 Fixed CSS issue video player to not display correctly on widescreen resolutions 2025-12-27 21:58:07 -08:00
275c713296 Updated Docker config and readme 2025-12-27 14:54:13 -08:00
4f9ec55874 Initial commit 2025-12-27 14:16:40 -08:00