Commit Graph
1689 Commits
Author SHA1 Message Date
4gray edcd7cb148 feat: improve global favorites handling and channel display logic in the UI 2026-02-08 19:18:56 +01:00
4gray c253db4cef feat: enhance search functionality with improved filtering and UI updates 2026-02-08 19:18:05 +01:00
4gray f5edba7d4c feat: add search view localization for multiple languages 2026-02-08 18:39:49 +01:00
4gray 6640753bec fix: ensure dependencies are installed without frozen lockfile in E2E tests 2026-02-08 09:50:19 +01:00
4gray a72fb31d7a refactor: enhance params handling in recently viewed and favorites components 2026-02-07 23:08:56 +01:00
4gray ed9e85f5e8 refactor: implement search layout component with dynamic results and filters 2026-02-05 23:08:22 +01:00
4gray e8632e7bee feat: implement category scroll restoration in live stream layout 2026-02-05 23:07:46 +01:00
4gray 2691e3f36e refactor: update navigation and recently added components for improved UI and functionality 2026-02-04 22:55:02 +01:00
4gray 9a04c42e79 refactor: remove unused back navigation and clean up downloads component 2026-02-04 22:52:52 +01:00
4gray 2f1e455330 refactor: refactor favorites and recently viewed components to use content card 2026-02-04 22:13:23 +01:00
4gray e6923d3fff feat: implement content card component with dynamic features and styles 2026-02-04 22:12:51 +01:00
4gray d64283e33d style: enhance favorites and recently viewed UI with improved layout and functionality 2026-02-04 00:41:03 +01:00
4gray 139944281c feat: keep filter search phrase and results when navigating back from details view 2026-02-04 00:40:04 +01:00
4gray b101dfaf91 Merge pull request #751 from 4gray/fix/epg-keep-expired-items
Fix/epg-keep-expired-items
2026-02-03 07:49:43 +01:00
4gray c161326406 chore: remove @rx-angular dependencies from package.json and pnpm-lock.yaml 2026-02-01 22:54:44 +01:00
4gray c3deb56bff refactor: remove expired program cleanup functionality and adjust EPG program queries 2026-02-01 22:54:00 +01:00
4gray 243213dc5b Merge pull request #750 from 4gray/refactor/optimize-m3u-module
Refactor/optimize-m3u-module
2026-02-01 22:51:53 +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 bffcc24f67 refactor: optimize imports in downloads component and fix download folder access 2026-02-01 21:22:43 +01:00
4gray e420ef1c8e feat: add new message to localization 2026-02-01 21:21:07 +01:00
4gray ed8c373d78 feat: add favorite functionality to channel list items and groups tab 2026-02-01 21:13:52 +01:00
4gray fef815058f feat: add new loading and search related messages to the English localization 2026-02-01 20:22:54 +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
4gray 0526d69a4c Merge pull request #747 from 4gray/refactor/xtream-stalker-code-generalization
Refactor/xtream stalker code generalization
2026-02-01 16:06:09 +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 54cd1445c7 refactor: use signal-based output() in season-container component
Replace @Output() decorator with EventEmitter with modern Angular
signal-based output() function for consistency with other components.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:12:15 +01:00
4grayandClaude Opus 4.5 45213d8d1a fix: wrap isElectron in computed for proper reactivity
Changed from direct signal assignment to computed() wrapper to ensure
consistent reactive pattern and clearer intent.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:08:58 +01:00
4grayandClaude Opus 4.5 e1f04c598c fix: emit toggled state in favoriteToggled event
Changed toggleFavorite() to emit the desired new state (!isFavorite)
instead of the current state. Updated all parent handlers to match
the new semantic where isFavorite means "user wants it to be a favorite".

This makes the API more intuitive - consumers can now apply the payload
directly without inverting the boolean.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:07:01 +01:00
4grayandClaude Opus 4.5 88758609d5 fix: remove double navigation in vod-details goBack method
The goBack() method was both emitting backClicked and calling
location.back(), causing double navigation when parent components
also handled backClicked with their own location.back() call.

Now goBack() only emits the event, consistent with stalker-series-view.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 14:23:37 +01:00
4grayandClaude Opus 4.5 8aac765694 fix: only sync Stalker playlists to SQLite and normalize playlist ID
- Add check for macAddress and portalUrl to ensure only Stalker playlists
  are synced to the SQLite database
- Normalize playlist._id to string before passing to IPC handlers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 14:19:06 +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
4grayandClaude Opus 4.5 83d031c3b0 fix: preserve page state on back navigation and sort downloads by newest
- Only reset page to 0 when category actually changes in setSelectedCategory
- Preserve current page when navigating back from VOD/series details
- Sort downloads list by createdAt descending (newest first)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 10:55:20 +01:00
4grayandClaude Opus 4.5 229392d5b0 fix: fix Stalker search thumbnails and series view for Ministra portals
- Convert relative screenshot_uri URLs to absolute URLs using portal base URL
- Fix series detection logic to distinguish between embedded series data
  (vclub/Ministra with episode numbers) vs items needing API fetch
- Only set is_series flag when seasons need to be fetched from API
- Items with embedded series array now correctly use vodWithSeries mode

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 10:54:40 +01:00
4gray a3b0c9a1a3 chore: update permissions in settings.local.json to include additional Bash commands and MCP skills 2026-01-30 20:39:35 +01:00
4gray 1e3cfaedce docs: update README to include additional links for support and donations 2026-01-30 20:39:26 +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
4gray 25e8c78df1 Merge pull request #743 from 4gray/feat/download-manager-ui
feat: add download manager feature
2026-01-27 13:25:49 +01:00
4gray 93e1d098d5 chore: remove nxCloudId from configuration 2026-01-27 11:10:21 +01:00
4gray 38fb5c0aa1 refactor: add electron-dl and related dependencies to package-lock and pnpm-lock 2026-01-26 22:44:12 +01:00
4grayandClaude Opus 4.5 c5db6ff0ea fix: improve Stalker ITV infinite scroll and episode download tracking
Stalker ITV infinite scroll:
- Replace "Load More" button with automatic infinite scroll
- Wrap mat-nav-list in scrollable div for reliable scroll detection
- Auto-load more content when viewport isn't filled
- Show loading spinner at bottom while fetching

Episode download status tracking:
- Add getEpisodeDownloadId() for consistent ID extraction
- Extract numeric ID from cmd string for regular-series episodes
- Use hash function fallback for non-numeric IDs
- Fix download button status not updating for Stalker VOD series

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 10:18:28 +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
4gray 84a2cc8822 Merge pull request #737 from 4gray/feat/playback-position-persistence
feat: playback position persistence
2026-01-23 21:08:10 +01:00
4grayandClaude Opus 4.5 85225c03d2 fix: improve VLC property parsing with defensive handling
- Add resolved flag to prevent double resolution race condition
- Use regex to parse numeric values instead of fragile line filtering
- Centralize cleanup in done() helper for consistent handling
- Increase timeout to 2000ms to match MPV

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 13:43:36 +01:00
4grayandClaude Opus 4.5 1df371b163 fix: replace deprecated substr() and fix MPV IPC timeout handling
- Use manual time calculation instead of fragile toISOString().substr()
- Explicitly resolve null on MPV IPC timeout to prevent hanging promises
- Clear timeout handle in all event paths to prevent races

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 13:34:32 +01:00