Commit Graph
100 Commits
Author SHA1 Message Date
4gray 04f9686483 feat: implement detailed tracing for database operations, window events, and renderer API interactions 2026-04-05 23:26:09 +02:00
4gray 04e8709d7b feat: implement URL probing functionality and enhance time formatting in EPG component 2026-04-05 19:04:20 +02:00
4gray 71befe0d47 feat: enhance typings and localization for Xtream categories and URL handling 2026-04-04 21:17:13 +02:00
4gray 1d0b4ca1fe feat: implement category ID normalization and enhance category operations tests 2026-04-04 21:16:32 +02:00
4gray 4e0afe8b20 feat: implement playlist refresh functionality and cache management 2026-04-04 13:39:45 +02:00
4gray 3a66bf21a3 test(e2e): enhance Xtream category management and sorting with unique title handling 2026-03-29 13:37:48 +02:00
4gray 688d9ec123 fix(worker): implement worker runtime path resolution and native module loading 2026-03-28 21:42:19 +01:00
4gray 456173b772 feat(database): implement DatabaseWorkerClient and associated worker functionality
- Added DatabaseWorkerClient to manage database operations in a worker thread.
- Created database-worker-client.ts to handle requests and responses between the main process and the worker.
- Introduced database-worker.types.ts for type definitions related to worker messages and operations.
- Implemented database.worker.ts to execute various database operations, including CRUD operations for playlists, content, and favorites.
- Added database.worker-connection.ts to manage database connections and ensure proper handling of SQLite instances.
- Created tests for DatabaseWorkerClient to ensure correct request handling and error management.
- Updated xtream.events.ts to allow suppression of error logging for specific requests.
- Enhanced EPG parser worker to include a busy timeout for SQLite operations.
- Integrated shutdown logic for the DatabaseWorkerClient in the main application lifecycle.
2026-03-28 15:40:06 +01:00
4gray a987e10a59 feat: Implement global favorites list component with drag-and-drop support
- Added `GlobalFavoritesListComponent` to display and manage favorite channels.
- Integrated drag-and-drop functionality for reordering favorite channels.
- Created HTML and SCSS files for the global favorites list layout and styling.
- Implemented logic to handle empty states and search functionality within the favorites list.

feat: Enhance unified collection page with live and grid tabs

- Developed `UnifiedCollectionPageComponent` to manage different content types (live, movies, series).
- Added `UnifiedGridTabComponent` and `UnifiedLiveTabComponent` for displaying content in grid and live formats.
- Implemented loading states and empty states for better user experience.
- Integrated EPG (Electronic Program Guide) functionality for live channels.

style: Refactor styles for unified collection components

- Updated SCSS styles for `UnifiedGridTabComponent` and `UnifiedLiveTabComponent` to improve layout and responsiveness.
- Added skeleton loading states for better visual feedback during data fetching.

fix: Improve scrolling behavior in category view component

- Adjusted scrolling logic in `CategoryViewComponent` to ensure selected categories are centered in the view.

Entire-Checkpoint: 0e4488af6c76
2026-03-25 19:20:59 +01:00
4gray e579c21486 Merge pull request #803 from GiviMAD/fix_epg_ignored_programs
fix: epg ignored programs
2026-03-17 23:30:42 +01:00
4gray 81c2aab829 test(e2e): add end-to-end tests for playlist import, providers, and settings persistence
- Implemented tests for importing M3U playlists via native dialog.
- Added smoke tests for loading Xtream and Stalker content through IPC.
- Created tests to verify persistence of remote control settings across app restarts.
- Updated smoke tests to check for main window properties and workspace content rendering.

refactor(electron-backend): enhance store service and database path handling

- Modified store service to use a dynamic configuration directory based on environment.
- Refactored database connection to utilize new path utility functions for better path management.

fix(e2e): improve test selectors and structure for better reliability

- Updated test selectors in web-e2e tests to use role-based queries for better accessibility.
- Refactored settings tests to reduce redundancy and improve clarity.

chore(e2e): update TypeScript configuration for better inclusion of test files

- Adjusted tsconfig.json to ensure proper inclusion of e2e test files.

Entire-Checkpoint: bb9a8e2e351e
2026-03-17 23:30:16 +01:00
4gray 1780bb0e53 refactor: remove 'on-air' widget and related functionality from dashboard 2026-03-08 18:55:18 +01:00
4gray 3b04b5105f feat(global-favorites): implement global favorites feature with drag-and-drop support
- Added GlobalFavoritesListComponent to manage and display favorite channels.
- Created GlobalFavoritesPageComponent to serve as the main page for global favorites.
- Implemented loading and displaying of EPG data for channels.
- Introduced GlobalFavoritesService to handle fetching, removing, and reordering favorites from various sources (M3U, Xtream, Stalker).
- Enhanced unified favorite channel interface to support new features and data structures.
- Added necessary HTML and SCSS for the global favorites page layout and styling.
- Updated database schema to include position column for favorites to support ordering.
- Added typings for new database operations related to global favorites.
2026-03-08 18:17:04 +01:00
4gray c6bd861b49 refactor: streamline layout and styling for live stream component
- Consolidated SCSS styles for the live stream layout, reducing redundancy and improving maintainability.
- Introduced a new portal layout mixin for better structure.
- Enhanced sidebar and content container styles for improved user experience.
- Updated TypeScript component to utilize new styles and improve readability.
- Refactored channel list and recently viewed components for consistency in design.
- Optimized playlist service and store interactions for better performance.
- Added new translations for enhanced user interface clarity.
- Improved database schema with additional indexing for EPG programs.
2026-03-08 11:25:26 +01:00
4gray 4732af8a38 feat: add external playback support and UI enhancements
- Integrated external playback functionality in category and detail views.
- Updated styles for play buttons to reflect different states (idle, launching, stop).
- Enhanced episode cards to indicate launching and active external playback states.
- Added new computed properties for managing external playback session states.
- Improved user interface for playback buttons with dynamic labels and icons based on playback state.
- Introduced new settings option to show external playback status bar on desktop.
- Updated translations for new features and UI elements.
2026-03-07 19:06:40 +01:00
4gray 3a2114c932 refactor: add portal debug logging utilities and corresponding tests 2026-03-07 19:05:56 +01:00
4gray ee411393ce feat: Enhance settings context service with pending scroll target management
feat: Update category view to improve empty state representation

style: Refactor category view styles for better layout and responsiveness

fix: Adjust favorites component navigation logic for better routing

refactor: Improve playlist error view structure and styles for clarity

style: Revamp playlist error view styles for consistency and readability

feat: Update portal channels list to use new channel list item component

style: Clean up portal channels list styles for improved layout

refactor: Optimize portal channels list component logic and structure

feat: Implement recently viewed component navigation improvements

fix: Update global search results component for better routing

test: Add unit tests for search results component functionality

feat: Enhance search results component to handle initial query

fix: Update EPG queue service to manage preview limits effectively

style: Clean up nav list styles for better visual consistency
2026-03-05 23:35:45 +01:00
4gray e76466e250 feat: add support for additional HTTP headers in player and Stalker requests 2026-03-05 23:33:07 +01:00
Miguel Álvarez Díez 39d89c54f1 apply pr review 2026-03-03 23:03:41 +01:00
Miguel Álvarez Díez 75e5866a55 fix: epg ignored programs 2026-03-03 22:56:07 +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 5e46731d26 feat(favorites): add global favorites retrieval and update layout for workspace support 2026-02-24 19:16:41 +01:00
4gray fa742cbaba feat(api): add dbGetGlobalFavorites method to expose global favorites 2026-02-24 19:09:16 +01:00
4gray 53a23cd03a fix(player): update title in player when switching between items 2026-02-16 22:07:16 +01:00
4gray d7953d9e13 Merge pull request #771 from 4gray/refactor/stalker-portals
Refactor: Stalker portal store
2026-02-14 16:27:33 +01:00
4gray 3ee1d71b79 fix(remote-control): add payload size limit handling for remote control requests 2026-02-14 16:11:35 +01:00
4gray 94bc3f1f0a chore(events): enhance error handling in player and xtream events 2026-02-14 11:44:06 +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 620ecb7518 feat(remote-control): remote control support for xtream and stalker live tv 2026-02-13 22:17:20 +01:00
4gray ba3247b782 feat(xtream): use server order for live tv channels by default 2026-02-12 23:37:10 +01:00
4gray 639c443416 feat: add excludeHidden parameter to search functions for improved filtering 2026-02-10 08:15:46 +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 e04ae0e738 feat: enhance search functionality with improved LIKE pattern matching for non-ASCII characters 2026-02-08 20:24:18 +01:00
4gray c253db4cef feat: enhance search functionality with improved filtering and UI updates 2026-02-08 19:18:05 +01:00
4gray c3deb56bff refactor: remove expired program cleanup functionality and adjust EPG program queries 2026-02-01 22:54:00 +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
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 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
4grayandClaude Opus 4.5 9cd278256b fix: use specific listener cleanup instead of removeAllListeners
Return unsubscribe function from onPlaybackPositionUpdate to ensure
only the specific listener is removed on destroy, preventing issues
with multiple store instances.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 13:32:04 +01:00
4gray adb89145a3 feat: playback position persistence for all players and grid indicators 2026-01-18 11:40:27 +01:00
4gray e53555d324 fix(epg): robustly load better-sqlite3 from workerData, resourcesPath, or fallback 2026-01-13 23:31:27 +01:00
4gray b57f4a640a fix(electron): pass nativeModulesPath to workers and load native modules in worker to support packaged app 2026-01-13 22:55:32 +01:00
4gray 1bd31bf18c fix(electron): use app.isPackaged to detect dev mode
Replace custom environment-based dev detection with Electron's
built-in app.isPackaged check. Import the app module from Electron
and remove reliance on ELECTRON_IS_DEV and the environment file.

This simplifies logic, improves reliability of development vs
production detection, and reduces dependency on external env vars.
2026-01-13 22:43:11 +01:00
4gray 54f4abb48b fix(xtream): track and show import progress of playlist 2026-01-12 00:54:55 +01:00
4gray c173553d78 feat(xtream): add recently added views 2026-01-12 00:54:00 +01:00
4gray 33d8036ecc Merge pull request #724 from 4gray/refactor/store-refactoring
refactor/store-refactoring
2026-01-12 00:40:40 +01:00
4gray 960b295cd8 fix: handle Unicode search in DB queries 2026-01-12 00:39:11 +01:00
4gray 2630025b11 feat: restore hidden category state after playlist refresh 2026-01-11 21:20:50 +01:00