Commit Graph
11 Commits
Author SHA1 Message Date
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 d9cbb1ce87 refactor(player,epg): add MPV reuse, IPC commands, and EPG handlers
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.
2025-10-18 11:53:57 +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 bc3c9ce8cc feat(electron-backend): add IPC event scaffolding and persistent store 2025-10-15 08:55:03 +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