Commit Graph
17 Commits
Author SHA1 Message Date
4gray 6f9e8aa64e feat(player): pass playlist headers to external players 2025-11-08 10:22:27 +01:00
4gray 3eed15d806 feat(player): use user-agent, referrer, origin for vlc and mpv
Enhance MPV player IPC handler to accept and forward extra parameters
(url, path, title, userAgent, referer, origin). Attempt to reuse an
existing MPV instance when reuse is enabled and an IPC socket is
available; if reuse fails, fall back to spawning a new process.

When creating a new MPV process, generate a unique platform-aware IPC
socket path, build arguments conditionally from provided metadata
(user-agent, referrer, origin via http-header-fields, force-media-title)
and append the URL last. Improve logging for debugging and handle
process spawn errors by clearing stale process/socket references.

These changes enable smoother playback handoff, preserve headers and
title for remote resources, and make MPV invocations more robust.
2025-11-08 10:22:27 +01:00
4gray ccbb08cfb4 fix(ui): correct imports, guard checks, logging and settings handling 2025-10-27 08:20:29 +01:00
4gray 51e04ab069 fix(settings): fix settings issues, fix ipc commands
Update channel.model to import Channel from the local interface file
instead of the package namespace. This fixes an incorrect module
resolution and keeps the codebase consistent with local typings.

Add a new SidebarView union type ('CHANNELS' | 'PLAYLISTS') to expose
possible sidebar view options for consumers of the shared interfaces.
2025-10-23 22:55:17 +02:00
4gray 1b420c67de refactor: code style improvements
- Comment/test stubs in several .spec.ts to avoid importing
  heavy modules and to disable flaky tests
 (video-player.component.spec.ts, channel-list-container.component.spec.ts,
  recent-playlists.component.spec.ts).
- Replace long relative import with package alias for PlaylistsService
  to simplify module resolution (video-player.component.spec.ts).
- Add missing alt attribute to channel logo img for accessibility
  (channel-list-item.component.ts).
- Assert non-null where templates expect values by removing optional
  chaining in template bindings (video-player.component.html):
  use activeChannel.url and activeChannel.epgParams, and non-null
  assertions for playerSettings.showCaptions to avoid runtime/template
  type errors.
- Consolidate SidebarView import with Channel from shared-interfaces to
  fix incorrect relative path (sidebar.component.ts).
- Restore or replace MomentDatePipe import usage in tests (info-overlay.spec.ts).

These changes reduce test import noise, fix template type issues,
improve accessibility, and simplify imports to match project aliases.
2025-10-23 22:52:44 +02:00
4gray 461e2e2e7e feat(xtream): Xtream playlist refresh workflow
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.
2025-10-18 21:55:48 +02:00
4gray 0a934d2ac6 refactor(electron): migrate from tauri/plugin-sql to libsql 2025-10-18 21:31:29 +02:00
4gray 6dcbbadda8 refactor(app): replace TauriService with ElectronService usage 2025-10-18 13:05:26 +02:00
4gray 7c42c1b6fc feat(settings): add mpvReuseInstance setting to store and i18n
Add MPV_REUSE_INSTANCE key to the electron backend store service and
include mpvReuseInstance in the shared settings interface so the new
boolean setting is persisted and available across renderer and main
processes.

Also update English i18n JSON formatting and expand the HOME section
translations (reformatting and adding nested playlist-related keys)
to ensure the UI strings remain consistent after changes.
2025-10-18 11:57:20 +02:00
4gray b61530f279 feat(preloadtauri): add external player IPC and playlist auto-update
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.
2025-10-15 23:31:08 +02:00
4gray 6b693b3237 refactor: convert to standalone api 2025-10-15 23:12:19 +02:00
4gray 7487738a7d refactor(nx): remove packages, fix build issues 2025-10-14 23:44:33 +02:00
4gray 260f3b3da7 refactor(nx): app restructuring 2025-10-14 09:00:31 +02:00
4gray 2d4fdcfc1b refactor(nx): add restructuring 2025-10-13 01:33:50 +02:00
4gray 7028ff4049 refactor(nx): app restructuring 2025-10-13 00:24:54 +02:00
4gray 920afa6850 refactor(nx): created shared and m3u-utils library 2025-10-10 11:49:35 +02:00
4gray 99ed5df404 chore: back to electron + nx 2025-10-07 18:02:13 +02:00