Commit Graph
259 Commits
Author SHA1 Message Date
4gray 32cc0b74e8 feat: add self-hosted PWA backend runtime (#944)
* feat(web-backend): add self-hosted proxy app

* feat(web): enable runtime PWA configuration

* test(web-e2e): cover self-hosted backend proxy

* test(web-e2e): clean self-hosted lint warnings

* fix(web-backend): validate proxied provider URLs

* fix(web-backend): proxy through registered provider targets

* fix(web-backend): document CodeQL SSRF validation boundary

* test(web-e2e): mock provider target registration

* fix(web): address self-hosted review feedback
2026-05-16 00:10:03 +02:00
4gray 2d5c4fa4f9 chore: tighten validation and runtime logging
* chore: tighten validation and runtime logging

* fix(i18n): localize new settings labels
2026-05-15 17:43:42 +02:00
4gray 1ca291d35c chore(nx): update Nx to 22.7.1 (#923)
* chore(nx): update Nx to 22.7.1
Entire-Checkpoint: f957cd9849e0

* fix(ci): patch nx-electron package metadata copy
Entire-Checkpoint: f957cd9849e0

* fix(packaging): preserve electron package metadata
Entire-Checkpoint: f957cd9849e0

* fix(packaging): address package verifier review
Entire-Checkpoint: f957cd9849e0
2026-05-10 22:01:25 +02:00
4gray 48463953db test(packaging): harden package identity regression
Entire-Checkpoint: f957cd9849e0
2026-05-09 19:28:35 +02:00
4gray 8c0e038b7d chore: bump version to 0.22.0
Entire-Checkpoint: f957cd9849e0
2026-05-06 23:26:53 +02:00
4gray 8fd25ac39a build(embedded-mpv): add Homebrew build scripts for embedded MPV
Entire-Checkpoint: f957cd9849e0
2026-05-02 17:20:29 +02:00
4gray 2330c5ae59 chore(package): update version to 0.21.0 and add new scripts for artwork generation
Entire-Checkpoint: c6e522b4276c
2026-04-26 16:12:24 +02:00
4gray 04d2800ab1 chore: update dependencies
Entire-Checkpoint: c6e522b4276c
2026-04-21 00:19:23 +02:00
4gray b9ab4d5ab5 chore(deps): update pnpm version and remove unused electron-builder-sandbox-fix dependency
Entire-Checkpoint: 21b9b9f90f23
2026-04-12 11:47:34 +02:00
4gray d3e30056f6 refactor: remove deprecated moment dependency
Entire-Checkpoint: db35a98d337f
2026-04-11 10:38:52 +02:00
4gray 2bfa557438 ci(workflow): add verification step for packaged worker layout 2026-03-28 21:41:24 +01:00
4gray 78de7dc125 chore(package): add unit test scripts and type checking commands; update font dependencies 2026-03-28 15:43:34 +01:00
markc1984 e3d1bf2048 fix: support raw MPEG-TS (.ts) streams in all embedded video players
Xtream Codes live streams with .ts format serve continuous raw MPEG-TS
data over HTTP, not HLS playlists. All three embedded players failed to
handle this: ArtPlayer had no handler, HTML5 player fed it to HLS.js,
and Video.js tried to parse it as an HLS manifest.

Add mpegts.js to handle raw MPEG-TS streams via Media Source Extensions
in ArtPlayer, HTML5 player, and Video.js. Fix the MIME type for .ts
sources from application/x-mpegURL to video/mp2t.
2026-03-03 06:47:34 +00:00
4gray 992b996ecd feat: general development, update core application components, and enhance build scripts. 2026-03-01 22:52:33 +01:00
4gray d7ee25e3aa chore: add dev dependencies and bump version to v0.20 2026-02-21 08:41:59 +01:00
4gray fae4c44804 chore: update angular dependencies 2026-02-20 08:22:50 +01:00
4gray 61d34aef7a chore: switch to pnpm 2026-02-19 23:08:36 +01:00
4gray f8b8464c4a chore: update nx dependencies 2026-02-19 21:52:54 +01:00
4gray 59581bd890 chore: add @tailwindcss/typography package and update dependencies
- Added @tailwindcss/typography version 0.5.19 to package.json
- Updated pnpm-lock.yaml to include @tailwindcss/typography with its dependencies
- Updated sass version from 1.97.1 to 1.90.0 in pnpm-lock.yaml
2026-02-14 22:32:16 +01:00
4grayandClaude Opus 4.6 3dc3794ac2 feat(website): add Astro landing page and blog with cinematic broadcast design
Create a new IPTVnator website using Astro 5 + Tailwind CSS within the Nx monorepo.
Features include a landing page with hero section, feature grid with auto-scrolling
carousel, screenshot showcase, download CTA, blog with MDX content collections,
and a GitHub Pages deployment workflow. Design uses a cinematic broadcast aesthetic
with TV-effect hover animations, Playfair Display serif typography, and warm dark
surfaces. Also fixes .gitignore to cover nested node_modules directories.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Entire-Checkpoint: 8171359f42f3
2026-02-14 19:47:47 +01:00
4gray c06feb1ff6 chore: update version to 0.19.0 in package.json 2026-02-11 08:03:41 +01:00
4gray c161326406 chore: remove @rx-angular dependencies from package.json and pnpm-lock.yaml 2026-02-01 22:54:44 +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
4gray 8662fa90c6 fix(vjs-player): replace HLS quality plugin and add plugin guards
Swap videojs-hls-quality-selector for videojs-quality-selector-hls
and update package versions. Initialize plugins defensively: call the
new quality selector via qualitySelectorHls when available and wrap
both quality selector and aspectRatioPanel initializations in try/catch
blocks to avoid runtime errors if a plugin fails to load. Bump project
version to 0.18.0 and add the new dependency and packageManager entry.
2026-01-13 19:50:36 +01:00
4gray 4f5d05f937 bump: release version to 0.18.0 2026-01-12 00:39:11 +01:00
4gray 128d15349e chore(config): add pnpm and webfetch rules to local Claude settings 2026-01-09 12:54:05 +01:00
4gray 747e602ed2 chore: update nx dependencies 2026-01-04 19:06:32 +01:00
4gray 943a55585b chore: add saxes, remove epg-parser 2026-01-02 17:22:09 +01:00
4gray c714996ce0 feat(electron): refine Linux sandbox handling and format copy filter
Improve sandbox handling on Linux by detecting Snap, Flatpak,
and AppImage environments and applying appropriate Chromium
command-line switches:

- If running in Snap or Flatpak, disable Chromium's sandbox
  (--no-sandbox) to avoid conflicts with the distribution's
  own sandboxing.
- Otherwise (traditional packages and AppImage), disable the
  SUID sandbox and prefer the user namespace sandbox
  (--disable-setuid-sandbox). This avoids requiring a SUID
  chrome-sandbox binary and aligns with modern Linux best
  practices.

Also adjust apps/electron-backend/src/main.ts to only apply
these changes on Linux (process.platform === 'linux').

Minor formatting: expand the package.json copy "filter" array
to a multiline style for readability.
2025-12-14 12:31:00 +01:00
4gray ddc87e95a7 chore(package): bump version to 0.17.1 2025-12-12 21:25:36 +01:00
4gray a80f3b925f feat(package): include built remote-control-web in packaged app
Add a packaging rule to copy the built remote-control-web output from
dist/apps/remote-control-web into the installer as remote-control-web.
Previously the repository included the raw source pattern
remote-control-web/**/* which did not reflect the compiled build output.
By pointing files to the dist build and filtering all files, the packaged
app now contains the production web assets instead of source files.

This fixes missing runtime assets in releases and ensures the packaged
installer includes the correct built web app for remote control.
2025-12-09 16:43:25 +01:00
4gray 7e4732a1bf chore: add angularx-qrcode and tidy package-lock entries 2025-12-06 21:45:51 +01:00
4gray ac39c2a9dd chore(deps): replace @libsql with better-sqlite3
Remove @libsql/client and its transitive entries from package-lock and
add better-sqlite3 plus its TypeScript types. This updates the lockfile
to reflect switching DB client dependencies: drop the @libsql packages
and related node_modules entries, and add "better-sqlite3" and
"@types/better-sqlite3". The change reduces unused libsql artifacts and
ensures type definitions are available for the new native sqlite client.
2025-12-06 09:26:27 +01:00
4gray 72802f3f7c build(win): unpack libsql native bindings in ASAR
Add an asarUnpack rule for node_modules/@libsql/** so native bindings are
not embedded in the ASAR archive. This ensures libsql's native modules
are available at runtime for the Electron app and prevents issues when
loading native binaries from inside an ASAR.

Also remove ia32 architecture from NSIS target, keeping only x64 to
align installers with supported platforms and reduce build artifacts.
2025-12-05 08:38:18 +01:00
4gray 2c1d29f841 ci: restrict architecture targets to x64 only 2025-11-26 17:46:27 +01:00
4gray 3b76db7aeb ci: update Linux targets in package.json 2025-11-26 17:27:48 +01:00
4gray 1531b1ab73 ci: update Linux target configurations in package.json 2025-11-26 16:48:08 +01:00
4gray a948ce0265 feat(electron): bundle worker assets and resolve worker path
Add webpack config and include it in the electron backend build so 
worker scripts are correctly bundled for packaged apps. Move worker 
files to be packaged as extraResources instead of asar unpack patterns 
so the packaged app can load worker JS from Resources/dist/... at 
runtime. Fix worker path resolution in epg.events: compute resourcesPath
from app.getAppPath() and point to dist/apps/electron-backend/workers 
when app.isPackaged. Remove verbose app path logging and update comments
to reflect the actual packaged layout.
Why: ensure webworker entry points are included in the renderer/backend
bundle and accessible when the Electron app is packaged, preventing
worker loading failures in production builds.
2025-11-24 20:46:15 +01:00
4gray b7109c16a2 feat(package): update build directories and refine file inclusion for packaging 2025-11-24 17:40:48 +00:00
4gray 9f7995054d feat(epg): update worker path for packaged app and refine file inclusion in build 2025-11-24 17:19:35 +00:00
4gray 64afc2901e feat(epg): enhance worker path handling and add fallback for missing worker files 2025-11-24 16:21:00 +00:00
4gray 5b697f458a feat(electron): load epg worker from asar.unpacked in prod
Update EPG worker path handling and unpack worker files for production
builds so the worker can be spawned when the app is packaged with ASAR.
- Change workerPath to let and, when the resolved path includes
  app.asar, replace it with app.asar.unpacked. This ensures the spawned
  worker points to the unpacked resource in production.
- Add electron-builder asarUnpack pattern for workers/** so worker files
  are packaged outside the ASAR archive.
These changes fix runtime errors where worker threads cannot be started
from inside app.asar and ensure the EPG parser can run in packaged apps.
2025-11-23 22:16:33 +01:00
4gray 7da2202119 ci: add icon paths to electron packager configs
Add explicit icon settings to packaged app configuration for macOS,
Linux and Windows. Set macOS icon to 
apps/web/src/assets/icons/favicon.ic, Linux icon directory to 
apps/web/src/assets/icons and Windows icon to 
apps/web/src/assets/icons/favicon.ico. This ensures bundled installers 
and app bundles include the intended application icon across platforms 
and prevents missing icon assets when creating artifacts. Also add 
trailing commas to keep JSON formatting
consistent.
2025-11-23 18:50:46 +01:00
4gray 0d6e519709 chore(deps): update nx & angular packages
Update Angular in pnpm-lock to newer 20.3.x versions
and align CDK/Material specifiers to the compatible 20.2.12/20.2.12
releases. This brings core, common, compiler, platform-browser,
animations, forms and related packages to the 20.3.x series to fix
version skew and ensure dependency compatibility.

Add tsConfig for tests in libs/shared/interfaces project config so
jest runner uses the correct TypeScript spec configuration, fixing
test/compile issues for that library.

Remove husky commit-msg hooks and local pre-commit checks to avoid
running commitlint, tests and eslint on commit (CI remains unaffected).
2025-11-08 23:24:56 +01:00
4gray ea3c2b1e45 feat(build): set deterministic artifact file names
Standardize generated installer/artifact file names across build
targets by adding explicit artifactName patterns in package.json.
Add a general artifactName at the top-level build config, ensure
linux targets (snap/deb/rpm) carry the same pattern, and set a
Windows-specific artifactName for win and nsis outputs that includes
the platform and arch.

This makes build outputs predictable for CI, releases, and automated
upload tooling by embedding name, version, OS, arch, and extension in
artifact filenames.
2025-11-08 23:02:15 +01:00
4gray e6aa33959e feat(deps): bump Electron to v39.x 2025-11-08 10:22:57 +01:00
4gray 516a376dc0 chore(deps): remove Tauri packages and bump test deps 2025-10-27 08:20:29 +01:00
4gray 2f930a6dfe chore(deps): upgrade video.js to 8
Add nested @videojs/http-streaming and related module entries (v2.16.3,
video.js 7.21.7, mpd-parser, @videojs/xhr, videojs-font, etc.) required by
the upgraded video.js ecosystem.

These changes ensure the lockfile reflects the new major video.js
version and pulls in compatible HTTP streaming and parsing libraries so
consumers get consistent, resolved dependency trees and avoid runtime
mismatches when using the newer player.
2025-10-23 22:54:22 +02:00
4gray 94e8d76a36 chore(de): upgrade epg-parser to 0.4.0 and add new deps
Bump epg-parser from 0.1.6 to 0.4.0 in package.json and update
package-lock.json to reflect the new version, resolved tarball, and
integrity. Add its new runtime dependencies (dayjs ^1.11.6 and
lodash.groupby ^4.6.0) into package-lock.json and include a dayjs
entry. Also add missing license fields for some modules.

This upgrade brings epg-parser improvements and fixes, and ensures the
lockfile accurately represents the installed dependency tree.
2025-10-23 21:52:09 +02:00
4gray 0a934d2ac6 refactor(electron): migrate from tauri/plugin-sql to libsql 2025-10-18 21:31:29 +02:00