Move playlist reducers into a dedicated reducers module and re-export a
composed playlistReducer built from smaller reducer arrays (epg,
channel, playlist, favorites, filter). This extracts and organizes the
previously monolithic reducer implementation into focused reducer files,
improving modularity and maintainability.
Add simple selectors in the new reducers index for commonly accessed
pieces of PlaylistState (playlists, selected playlist id, epg availability,
active channel, current EPG program, channels list, playlists loaded flag,
current playlist id) so callers can import them from a single place.
These changes make reducer logic easier to reason about, enable
incremental testing and extension of individual reducer groups, and
centralize basic selectors for consistent usage across the app.
a dedicated refresh button and workflow for Xtream in the
recent playlists UI. Show a refresh icon only when the playlist has a
serverUrl. For Xtream playlists, prompt the user with a confirmation
dialog, delete locally cached categories and streams, show a toast that
the refresh started, and navigate to the playlist to trigger re-import.
Keep existing refresh IPC logic for non-Xtream (M3U/local) playlists.
Also add English translations for the Xtream refresh tooltip and dialog
messages, and surface errors via snackbar on failure.
This enables safe re-importing of remote Xtream playlists while preserving
favorites and recent items.
- Enableplayer global config and component options:
- set Artplayer.AUTO_PLAYBACK_TIMEOUT to 10000 to reduce autoplay
timeouts.
- enable autoPlayback, playsInline, airplay, backdrop, mutex and set
theme on Artplayer instance to improve playback behaviour and UI.
- add autoSize, autoMini, pip, screenshot, aspectRatio and fullscreen
settings for a consistent feature set.
- Harden channel URL check to avoid null errors:
- use optional chaining when checking channel.url for m3u8.
- Move StreamFormat import ordering and clean unused enum entry:
- remove DPlayer from VideoPlayer enum and related commented code.
- remove DPlayer component imports, declarations and template branch,
simplifying player selection and eliminating dead code.
- Tidy component decorator formatting and fix template array trailing
commas to preserve style consistency.
These changes replace the deprecated/removed DPlayer integration with a
fully configured Artplayer, improve runtime safety, and clean up unused
code.
Update several packages in package-lock to newer minor/patch releases
and align Angular ESLint packages with the Angular 20 toolchain. Key
changes include:
- Upgrade @rx-angular/* to 20.0.0 to match other framework updates.
- Bump runtime libs: artplayer, axios, hls.js, rxjs, semver, uuid,
zone.js to patch/minor versions for fixes and compatibility.
- Update @angular-eslint packages to 20.3.0 to match Angular 20.x.
- Refresh eslint, @eslint/*, eslint-plugin-import, prettier, and
semantic-release to more recent releases for linting/CI stability.
- Add explicit rxjs 7.8.1 entries under some Angular DevKit node_modules
to ensure consistent resolution.
These updates address compatibility with Angular 20, pull in bug fixes
and security/maintenance patches, and stabilize dev tooling and CI.
Use channel.url instead of channel.id when updating the favorites
ordering in the playlist store. The change ensures the dispatched
setFavorites action contains the correct identifierurl) that the
store and downstream logic expect, preventing mismatches between the
UI order and persisted favorites.
- Removed unnecessary imports from header, account-info,
loading-overlay, navigation-bar, season-container, serial-details, and
vod-details components.
- Updated template syntax to use structural directives more efficiently in mpv-player-bar, account-info, navigation-bar, season-container, serial-details, and vod-details components.
- Enhanced readability and maintainability of the code by organizing imports and using Angular's async pipe and structural directives appropriately.
- Adjusted TypeScript configuration to use "bundler" for module resolution for better compatibility with modern build tools.
- Replaced the existing favorites component HTML structure with a new app-favorites-layout component for better organization and maintainability.
- Removed unused styles from favorites.component.scss.
- Updated favorites.component.ts to utilize the new layout component and streamline imports.
- Enhanced detail-view styles for improved responsiveness and layout consistency.
- Adjusted navigation component to conditionally render elements based on playlist type.
- Introduced a new NavigationItem interface for better type safety in navigation items.
- Refactored search results component to utilize new search-form and search-result-item components for cleaner code and separation of concerns.
- Updated vod-details component to handle portal ID retrieval more robustly.
- Made various style adjustments across components for improved UI consistency.
- Added `StalkerSearchComponent` for searching VOD and series content.
- Integrated search form and results grid with loading states.
- Implemented item selection and details display for VOD and series.
- Created a new `StalkerShellComponent` for navigation and routing.
- Established routing for Stalker module with nested routes for VOD, series, and favorites.
- Introduced a centralized `StalkerStore` for managing state and API interactions.
- Enhanced `StalkerSeriesViewComponent` to display detailed information about selected series.
- Updated styles for improved layout and user experience.