Commit Graph
140 Commits
Author SHA1 Message Date
4gray ea55c485a7 Merge pull request #801 from markc1984/master
fix: support raw MPEG-TS (.ts) streams in all embedded video players
2026-03-05 23:42:38 +01:00
4gray e24967fc68 feat: implement Stalker portal normalization and watchdog functionality in playlists and session services
feat: enhance EPG list component with channel icon fallback and scrolling behavior
style: update styles for EPG list and playlist item components for improved UI
fix: add selection state to playlist items in recent playlists component
2026-03-05 23:35:24 +01:00
4gray 698668f3e3 refactor: Enhance Stalker Live Stream Layout and EPG components
- Refactored StalkerLiveStreamLayoutComponent to improve channel selection and playback handling.
- Introduced new methods for building external playback headers and handling cross-origin streams.
- Updated EPG preview logic to use a more structured approach with EpgProgram type.
- Improved styling for channel list items, including hover effects and active states.
- Enhanced EPG view with a more responsive layout and improved item display.
- Updated video player components to ensure proper sizing and overflow handling.
- Added fallback handling for channel logos and improved action button visibility.
2026-03-05 23:34:17 +01:00
4gray 96f3205868 Merge branch 'vk/dab9-add-sqlite-suppo' 2026-03-03 18:26:51 +01:00
4gray 9787f79176 fix(database): silence expected duplicate-column migration logs 2026-03-03 12:03:01 +01:00
4gray c325b94347 fix(storage): normalize playlist service return types for Electron/PWA 2026-03-03 11:45:36 +01:00
markc1984 b0e1642e6c fix: address code review issues for mpegts.js integration
- ArtPlayer: use getExtensionFromUrl for query-string-aware URL parsing
  instead of naive split('.').pop() and endsWith('.ts')
- VJS player: call player.reset() before initMpegTs() on non-TS to TS
  channel switch to prevent playback conflicts
2026-03-03 07:01:50 +00:00
markc1984 e3d1bf2048 fix: support raw MPEG-TS (.ts) streams in all embedded video players
Xtream Codes live streams with .ts format serve continuous raw MPEG-TS
data over HTTP, not HLS playlists. All three embedded players failed to
handle this: ArtPlayer had no handler, HTML5 player fed it to HLS.js,
and Video.js tried to parse it as an HLS manifest.

Add mpegts.js to handle raw MPEG-TS streams via Media Source Extensions
in ArtPlayer, HTML5 player, and Video.js. Fix the MIME type for .ts
sources from application/x-mpegURL to video/mp2t.
2026-03-03 06:47:34 +00:00
4gray 7370019abe fix: resolve type definition in playlists service 2026-03-02 23:52:42 +01:00
4gray 086eab9306 feat(storage): add SQLite-backed m3u playlists for Electron with IndexedDB migration 2026-03-02 23:41:02 +01:00
4gray 129848c4d4 feat: remove home component, and update workspace UI and routing 2026-03-02 22:31:10 +01:00
4gray 20485972c3 feat: refactor dashboard widgets, and remove the home component. 2026-03-02 22:30:16 +01:00
4gray 992b996ecd feat: general development, update core application components, and enhance build scripts. 2026-03-01 22:52:33 +01:00
4gray 09efead104 style: enhance UI components with improved styles, search functionality, and error handling 2026-02-26 00:45:58 +01:00
4gray e1b41832a9 feat(playlist-switcher): add playlist type filters and enhance search functionality 2026-02-25 07:45:00 +01:00
4gray 853ba51c25 style(widget): add title class to focus source and improve text overflow handling 2026-02-25 07:44:03 +01:00
4gray ff76eb1af2 feat: Refactor workspace panel resizing to use a unified storage key, enhance downloads UI, and introduce new AI assistant skill definitions. 2026-02-25 00:17:34 +01:00
4gray 9193f8bb80 feat(workspace): add i18n support for dashboard widgets and update translations 2026-02-24 21:14:34 +01:00
4gray 22c1e5462c refactor: code style improvements 2026-02-24 19:18:09 +01:00
4gray 5e46731d26 feat(favorites): add global favorites retrieval and update layout for workspace support 2026-02-24 19:16:41 +01:00
4gray 4211f22a69 feat(dashboard): create separate workspace-dashboard lib with widgets
- Implemented `DashboardActivityItemsComponent` with styles and functionality for displaying activity items in list and grid views.
- Created `DashboardWidgetShellComponent` for consistent widget layout with header and content areas.
- Developed `GlobalFavoritesWidgetComponent` to manage and display global favorites with filtering options.
- Added `RecentSourcesWidgetComponent` to show recently accessed sources with links to manage them.
- Introduced `RecentlyWatchedWidgetComponent` to track and display recently watched content with filtering capabilities.
- Created `SourceStatsWidgetComponent` to present statistics of different source types.
- Established TypeScript configuration files for the dashboard UI library.
2026-02-24 19:08:10 +01:00
4gray 538649feff feat(players): enhance video player with audio track management and UI adjustments
Entire-Checkpoint: f35656857e95
2026-02-21 11:56:21 +01:00
4gray fae4c44804 chore: update angular dependencies 2026-02-20 08:22:50 +01:00
4gray 61ef8e2553 refactor(xtream): introduce silent actions and improve error handling for Xtream requests 2026-02-16 23:37:05 +01:00
4gray 0623baa4b7 fix(playlists): update timestamp of recently viewed items 2026-02-16 22:16:12 +01:00
4gray 87b2c509aa fix(channel-list): handle null values in channelList input setter
Entire-Checkpoint: 033757b19995
2026-02-15 23:20:50 +01:00
4gray a9eee9e64f refactor(stalker): adapt store calls, enhance recently viewed, favorites, download manger layout 2026-02-14 15:44:16 +01:00
4gray f0be21486d refactor(stalker): add VOD series adapters and tests
- Implemented `stalker-series.adapters.ts` for mapping VOD series seasons and episodes.
- Added utility functions for handling VOD series items and mapping to view models.
- Created unit tests for the new adapter functions in `stalker-series.adapters.spec.ts`.
- Updated `stalker.store.ts` to manage VOD series state and handle favorites.
- Enhanced `category-content-view` component to support favorite functionality for VOD items.
- Refactored favorite management in `playlists.service.ts` to ensure proper ID handling.
2026-02-14 11:47:36 +01:00
4gray 7c9db4bc7d feat(remote-control): add channel selection by number and volume control features
- Implemented `getChannelItemByNumber` utility function to retrieve channels by their number.
- Enhanced `StalkerLiveStreamLayoutComponent` and `LiveStreamLayoutComponent` to handle remote control commands for channel selection and volume adjustments.
- Updated typings to include new remote control commands and status updates.
- Refactored `RemoteControlComponent` to manage numeric input for channel selection and volume control actions.
- Improved UI for remote control with new volume and channel navigation features.
- Added service methods for volume up, down, and mute toggle in `RemoteControlService`.
2026-02-14 00:03:42 +01:00
4gray c63988d0fc style(m3u): adjust channel list item width and add responsive container queries
Entire-Checkpoint: 3ba3a7503b59
2026-02-11 23:11:41 +01:00
4gray 166e81dae0 fix(xtream): enhance error handling in content hero and serial details components
Entire-Checkpoint: 3ba3a7503b59
2026-02-11 22:50:33 +01:00
4gray 6e93ec81fd feat: add excludeHidden option to search functions for filtering results
This commit closes #760
2026-02-09 23:43:21 +01:00
4gray 3e7c58b049 refactor: replace lodash import with specific groupBy function for improved performance 2026-02-08 20:23:48 +01:00
4gray d603c46a5a feat: implement stalker live stream layout with EPG support
- Added new component for live stream layout with sidebar and content area.
- Integrated playlist switcher and category view for better navigation.
- Implemented channel list with loading indicators and favorite functionality.
- Added EPG (Electronic Program Guide) support for channels with loading and pagination.
- Enhanced styles for responsive design and improved user experience.
- Updated routing to use the new live stream layout component.
- Modified stalker store to handle EPG fetching and search functionality.
- Introduced new actions in the StalkerPortalActions enum for EPG operations.
2026-02-08 19:19:15 +01:00
4gray edcd7cb148 feat: improve global favorites handling and channel display logic in the UI 2026-02-08 19:18:56 +01:00
4gray bb1f3af082 refactor: optimize progress calculation and enhance enriched channel retrieval in favorites and groups tabs 2026-02-01 22:35:10 +01:00
4gray ed8c373d78 feat: add favorite functionality to channel list items and groups tab 2026-02-01 21:13:52 +01:00
4gray 3988708ab5 refactor: move favorites tab to own component 2026-02-01 20:22:46 +01:00
4gray 40173e6498 feat: improve search behavior, add debounce operation, skip FilterPipe 2026-02-01 20:22:20 +01:00
4gray 8b95cfea70 feat: implement groups tab with infinite scroll and enriched channel data 2026-02-01 20:20:15 +01:00
4gray 6b18d91ca7 Merge pull request #749 from 4gray/feat/custom-sorting-for-playlists
Feat/custom-sorting-for-playlists
2026-02-01 16:40:56 +01:00
4grayandClaude Opus 4.5 932b1e5b53 feat: add custom drag-and-drop sorting for playlists
Add a new "Custom order" sort option that allows users to manually
reorder playlists via drag-and-drop. When this sort mode is active,
drag handles appear in front of each playlist item.

- Add SortBy.CUSTOM enum value to SortService
- Add custom order button to filter-sort-menu
- Add isDraggable input and cdkDrag support to PlaylistItemComponent
- Enable cdkDropList in RecentPlaylistsComponent when custom sort active
- Add translation key for custom order option

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:57:18 +01:00
4grayandClaude Opus 4.5 0643acac3a feat: add o_name support and Stalker playback position tracking
- Add o_name (original title) field to Stalker VOD interfaces
- Prefer o_name over name in adapters and grid list display
- Add playback position tracking for Stalker VOD content
- Support resume playback from last position in vod-details
- Add real-time position updates via IPC listener
- Add progress indicators for Stalker VOD items in grid view
- Add debug logging for VOD series seasons resource

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 10:55:45 +01:00
4gray f95ac9c34e refactor: refactor existing vod-details component and implement VOD details route component
- Added `VodDetailsRouteComponent` to handle VOD details with route parameters.
- Refactored existing `VodDetailsComponent` to use a unified structure for Xtream and Stalker portals.
- Enhanced VOD details display with normalized metadata and improved playback position handling.
- Integrated resizable sidebar functionality in main container and live stream layout components.
- Updated routing to use the new VOD details route component.
- Improved favorite toggling and download handling in VOD details.
- Adjusted styles for responsive sidebar and grid layouts.
2026-01-30 20:39:18 +01:00
4gray e4be046194 refactor: add SafePipe for sanitizing resource URLs 2026-01-30 20:38:41 +01:00
4gray 522e18e13d refactor: add Stalker VOD and serial details interfaces with normalization functions 2026-01-30 20:38:26 +01:00
4gray 6c52ee349d feat: add resizable directive and styles for dynamic element resizing 2026-01-30 20:36:36 +01:00
4grayandClaude Opus 4.5 7c44541721 feat: add download manager for VOD and series episodes
Add comprehensive download functionality for Xtream and Stalker portals:

Backend (Electron):
- Add downloads table schema with foreign key to playlists
- Create downloads.events.ts with IPC handlers for download operations
- Support download start, cancel, retry, remove, and status queries
- Auto-create playlist entries for Stalker portals to satisfy FK constraints
- Add download folder selection and file reveal/play functionality

Frontend (Angular):
- Create DownloadsService with reactive signal-based state management
- Add DownloadsComponent with queue management UI
- Implement download buttons with three states: download, downloading, play local
- Support both Xtream and Stalker modes with proper playlist ID handling
- Add download progress indicators and status badges

UI Components:
- Update VodDetailsComponent with download/play-local buttons
- Update SeasonContainerComponent with episode download buttons
- Add navigation link to downloads page
- Style download buttons and progress indicators

Stalker Portal Support:
- Resolve stream URLs via fetchLinkToPlay API before downloading
- Handle both vod-series and regular-series episode types
- Use playlist._id for Stalker (vs portalId for Xtream)
- Pass playlist info for auto-creation in database

Translations:
- Add download-related strings for en, de, es, fr

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 09:22:30 +01:00
4grayandClaude Opus 4.5 0219d3253e fix: add type safety to PlaybackPositionService and clarify watched state logic
- Move PlaybackPositionData interface to shared-interfaces lib
- Replace all `any` types with proper PlaybackPositionData typing
- Add comment clarifying position=duration semantics for watched episodes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 13:25:10 +01:00
4gray adb89145a3 feat: playback position persistence for all players and grid indicators 2026-01-18 11:40:27 +01:00