Add a new IPC handler_DELETE_ALL_PLAYLIST that removes all
and related data from the SQLite database in a safe order that respects
foreign key relationships. The handler deletes favorites and recently
viewed entries first, then content, categories, and finally playlists.
Errors are logged and propagated.
Expose the new operation in the renderer preload API as
dbDeleteAllPlaylists() to allow UI code to invoke the purge. This
provides a single-call way to clear playlists and their dependent
records for testing or user-driven reset.
Add a new HttpServer class that serves the built remote-control-web
static assets and provides a simple REST/API routing layer for remote
control endpoints.
Key changes:
- Implement server lifecycle: start, stop, updateSettings with port and
enabled handling.
- Resolve distribution path depending on electron packaging (dev vs
production).
- Serve static files with basic security (normalize path to prevent
traversal) and SPA fallback to index.html for client-side routing.
- Provide registration API for remote control handlers mapped to
/api/remote-control/* endpoints.
- Log server status and listening URL on start, and on stop.
These changes enable the Electron backend to host the remote control
web app and route API calls without external web servers, simplifying
development and packaging.
Save and restore favorited and recently viewed Xtream items when
deleting and re-importing playlist content.
- Return favoritedXtreamIds and recentlyViewedXtreamIds from
deleteXtreamPlaylistContent so callers can capture user data before
.
- Add restoreXtreamUserData to the database service to allow restoring
favorites and recently viewed entries after a refresh.
- Query and collect xtreamIds and timestamps for favorites and recently
viewed items in the backend before deleting content.
- Persist the captured user data to localStorage in the recent playlists
component so it can be used to restore state after re-importing the
playlist.
- Keep existing playlist metadata update flow intact.
This prevents loss of user-specific favorites and recent history when
refreshing Xtream playlists.
Add automatic playlist refresh on application startup by listening
for successful playlist load and dispatching an IPC event for any
playlists with autoRefresh enabled.
- Inject Actions into AppComponent and add triggerAutoUpdatePlaylists
that waits for PlaylistActions.loadPlaylistsSuccess, selects
selectAllPlaylistsMeta from the store, filters playlists with
autoRefresh, and sends AUTO_UPDATE_PLAYLISTS via DataService.
- Call triggerAutoUpdatePlaylists from ngOnInit and remove a now-
unused commented commands list.
- Add helper functions in backend playlist events to fetch and parse
playlists from URL or file, consolidating parsing logic and creating
playlist objects.
This implements the previously noted TODO to trigger playlist auto-
refresh and centralizes playlist fetching/parsing for reuse and
clarity.
Introduce MPV process reuse and IPC control, and add basic EPG IPC
handlers.
- Add GET_CHANNEL_PROGRAMS and FETCH_EPG ipc handlers to epg.events.ts
to expose fetching EPG data by channel or URLs.
- Rework player.events.ts:
- Export proper bootstrap and add module-level mpvProcess and
mpvSocketPath to track a reusable MPV instance.
- Add sendMpvCommand helper to communicate with MPV via its IPC socket.
- Implement OPEN_MPV_PLAYER handler that:
- Reads MPV path and MPV_REUSE_INSTANCE setting from store.
- Attempts to reuse an existing MPV process by sending loadfile
command over the socket when reuse is enabled.
- Falls back to spawning a new mpv process, creating a unique IPC
socket path, and storing the process/socket when reuse is enabled.
- Adds error and exit handlers to clear stored references.
- Add necessary imports (ChildProcess, existsSync, createConnection).
- Remove/comment unused import block for shared-interfaces and adapt
existing code to the new flow.
Why:
- Enable reusing a single MPV instance to improve resource usage and
provide faster playback switching.
- Add IPC endpoints for EPG to support frontend requests for program
data.
MPV/VLC launch and playlist auto-update from the Electron preload
and migrate Tauri invoke calls to use the exposed window.electron API.
- Add openInMpv, openInVlc and autoUpdatePlaylists to the preload API,
forwarding parameters to ipcRenderer for native handling.
- Replace tauri invoke('open_in_mpv') and invoke('open_in_vlc') calls
with window.electron.openInMpv / openInVlc in tauri.service to use the
unified Electron IPC surface.
- Replace file-based AUTO_UPDATE_PLAYLISTS handling with a call to
window.electron.autoUpdatePlaylists and remove legacy file parsing
code (now commented) so the main process owns playlist refresh logic.
- Import shared AUTO_UPDATE_PLAYLISTS/Playlist types into preload.
This centralizes native player launching and playlist updates through the
preload IPC bridge, simplifying web service code and moving file I/O to
the native/main layer for better security and separation of concerns.