From ddc87e95a776991226313ee6e43b8db0864b55e9 Mon Sep 17 00:00:00 2001 From: 4gray Date: Fri, 12 Dec 2025 21:25:36 +0100 Subject: [PATCH 1/7] chore(package): bump version to 0.17.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index beee534dc..6575d2fbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iptvnator", - "version": "0.17.0", + "version": "0.17.1", "license": "MIT", "description": "IPTV player application.", "homepage": "https://github.com/4gray/iptvnator", From 568a5feac3e9f9a6cf8ea04c5e542dfcebcb1a9f Mon Sep 17 00:00:00 2001 From: 4gray Date: Fri, 12 Dec 2025 22:22:31 +0100 Subject: [PATCH 2/7] fix(ci): use different runners for macos arm and intel arch Update GitHub Actions workflow to support multiple OS runners and CPU architectures, standardize matrix keys, and adjust platform-specific steps and artifact names. - Replace simple os matrix with include entries specifying os, runner, and arch to allow macOS x64/arm64 separation and explicit runners for linux/windows. - Use runner matrix value for runs-on and change timeout/strategy accordingly. - Adjust conditional checks to use normalized os values (linux, macos, windows) rather than platform-specific runner labels. - Install Linux system deps only when os == 'linux' and keep Flatpak setup for electron-builder. - Add a macOS-specific make step that passes the architecture to the electron make command, while keeping a combined make step for non-macOS builds. - Upload macOS artifacts per architecture and rename artifact paths to include arch; update release files list to include both macOS x64 and arm64 artifact patterns. These changes enable reliable, architecture-aware macOS builds, prevent native module conflicts across runners, and ensure artifacts are labeled and uploaded correctly. --- .github/workflows/build-and-make.yaml | 65 ++++++++++++++++++--------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build-and-make.yaml b/.github/workflows/build-and-make.yaml index 00a2f5d8d..e45e7cd15 100644 --- a/.github/workflows/build-and-make.yaml +++ b/.github/workflows/build-and-make.yaml @@ -15,12 +15,24 @@ on: jobs: build: - name: Build on ${{ matrix.os }} - runs-on: ${{ matrix.os }} + name: Build on ${{ matrix.os }} ${{ matrix.arch }} + runs-on: ${{ matrix.runner }} timeout-minutes: 60 strategy: matrix: - os: [macos-latest, ubuntu-latest, windows-latest] + include: + # macOS builds - separate runners to avoid native module conflicts + - os: macos + runner: macos-15-intel + arch: x64 + - os: macos + runner: macos-latest + arch: arm64 + # Linux and Windows + - os: linux + runner: ubuntu-latest + - os: windows + runner: windows-latest steps: - name: Checkout code @@ -38,18 +50,18 @@ jobs: cache: 'pnpm' - name: Install Linux system dependencies - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'linux' run: | - sudo apt-get update - sudo apt-get install --no-install-recommends -y rpm libarchive-tools flatpak flatpak-builder - - # Configure Flatpak - # 1. Add the Flathub repository (source of runtimes) - flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo - - # 2. Install the standard Freedesktop Platform and SDK (required by electron-builder) - # We install version 24.08 as a safe default, electron-builder might pick what it needs - flatpak install --user -y flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 + sudo apt-get update + sudo apt-get install --no-install-recommends -y rpm libarchive-tools flatpak flatpak-builder + + # Configure Flatpak + # 1. Add the Flathub repository (source of runtimes) + flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + + # 2. Install the standard Freedesktop Platform and SDK (required by electron-builder) + # We install version 24.08 as a safe default, electron-builder might pick what it needs + flatpak install --user -y flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 - name: Install dependencies run: pnpm install --no-frozen-lockfile @@ -60,21 +72,32 @@ jobs: - name: Build backend run: npm run build:backend + - name: Override macOS arch in package.json + if: matrix.os == 'macos' + run: | + # Replace the mac arch array with just the target architecture + node -e " + const fs = require('fs'); + const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); + pkg.build.mac.target.arch = ['${{ matrix.arch }}']; + fs.writeFileSync('package.json', JSON.stringify(pkg, null, 4)); + " + - name: Make Electron app run: npm run make:app - name: Upload artifacts (macOS) - if: matrix.os == 'macos-latest' + if: matrix.os == 'macos' uses: actions/upload-artifact@v4 with: - name: macos-artifacts + name: macos-${{ matrix.arch }}-artifacts path: | dist/executables/**/*.dmg dist/executables/**/*.zip retention-days: 7 - name: Upload artifacts (Linux) - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'linux' uses: actions/upload-artifact@v4 with: name: linux-artifacts @@ -89,7 +112,7 @@ jobs: retention-days: 7 - name: Upload artifacts (Windows) - if: matrix.os == 'windows-latest' + if: matrix.os == 'windows' uses: actions/upload-artifact@v4 with: name: windows-artifacts @@ -131,8 +154,10 @@ jobs: tag_name: ${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || format('test-{0}', github.sha) }} generate_release_notes: true files: | - artifacts/macos-artifacts/*.dmg - artifacts/macos-artifacts/*.zip + artifacts/macos-x64-artifacts/*-x64.dmg + artifacts/macos-x64-artifacts/*-x64.zip + artifacts/macos-arm64-artifacts/*-arm64.dmg + artifacts/macos-arm64-artifacts/*-arm64.zip artifacts/linux-artifacts/*.AppImage artifacts/linux-artifacts/*.deb artifacts/linux-artifacts/*.rpm From d7bfd2648c36dea318d29369dc5aee2512ab6961 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 14 Dec 2025 12:31:00 +0100 Subject: [PATCH 3/7] feat(ci): add GitHub Action job to publish Snap on tags Add a publish-snap job to the CI workflow that runs after build and only triggers for version tags (refs/tags/v*). The job downloads the linux build artifacts, installs snapcraft, locates the generated .snap file and uploads it to the Snapcraft Store releasing to the stable channel. It validates the presence of a snap file and fails if none is found. This enables automated Snap distribution for tagged releases using the SNAPCRAFT_STORE_CREDENTIALS secret. --- .github/workflows/build-and-make.yaml | 44 ++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-and-make.yaml b/.github/workflows/build-and-make.yaml index e45e7cd15..a5e09e23c 100644 --- a/.github/workflows/build-and-make.yaml +++ b/.github/workflows/build-and-make.yaml @@ -72,16 +72,16 @@ jobs: - name: Build backend run: npm run build:backend - - name: Override macOS arch in package.json + - name: Override macOS arch in electron-builder.json if: matrix.os == 'macos' run: | - # Replace the mac arch array with just the target architecture - node -e " - const fs = require('fs'); - const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')); - pkg.build.mac.target.arch = ['${{ matrix.arch }}']; - fs.writeFileSync('package.json', JSON.stringify(pkg, null, 4)); - " + # Replace the mac arch array with just the target architecture + node -e " + const fs = require('fs'); + const pkg = JSON.parse(fs.readFileSync('electron-builder.json', 'utf8')); + pkg.mac.target.arch = ['${{ matrix.arch }}']; + fs.writeFileSync('electron-builder.json', JSON.stringify(pkg, null, 4)); + " - name: Make Electron app run: npm run make:app @@ -170,3 +170,31 @@ jobs: artifacts/windows-artifacts/*.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + publish-snap: + name: Publish to Snapcraft Store + needs: build + runs-on: ubuntu-latest + # if: startsWith(github.ref, 'refs/tags/v') # Only publish on version tags + + steps: + - name: Download snap artifact + uses: actions/download-artifact@v4 + with: + name: linux-artifacts + path: artifacts + + - name: Setup Snapcraft + uses: samuelmeuli/action-snapcraft@v3 + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.snapcraft_token }} + + - name: Publish all snaps to edge channel + run: | + # Find and publish all snap files + for SNAP_FILE in artifacts/*.snap; do + if [ -f "$SNAP_FILE" ]; then + echo "Publishing: $SNAP_FILE" + snapcraft upload --release=edge "$SNAP_FILE" + fi + done From c714996ce00c495a9efe4c3289abf6f1ea37c15c Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 14 Dec 2025 12:06:37 +0100 Subject: [PATCH 4/7] 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. --- electron-builder.json | 134 ++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 18 ++++-- package.json | 92 +---------------------------- 3 files changed, 148 insertions(+), 96 deletions(-) create mode 100644 electron-builder.json diff --git a/electron-builder.json b/electron-builder.json new file mode 100644 index 000000000..7610d9f45 --- /dev/null +++ b/electron-builder.json @@ -0,0 +1,134 @@ +{ + "appId": "com.fourgray.iptvnator", + "productName": "IPTVnator", + "artifactName": "${name}-${version}-${os}-${arch}.${ext}", + "directories": { + "buildResources": "dist/apps", + "output": "dist/executables" + }, + "files": [ + { + "from": "dist/apps/remote-control-web", + "to": "remote-control-web", + "filter": [ + "**/*" + ] + }, + "electron-backend/**/*", + "web/**/*", + "!**/*.map" + ], + "asarUnpack": [ + "**/better-sqlite3/**" + ], + "extraMetadata": { + "main": "electron-backend/main.js" + }, + "extraResources": [ + "dist/apps/electron-backend/workers" + ], + "mac": { + "target": { + "target": "dmg", + "arch": [ + "x64", + "arm64" + ] + }, + "category": "public.app-category.video", + "identity": null, + "gatekeeperAssess": false, + "hardenedRuntime": false, + "entitlements": null, + "entitlementsInherit": null, + "icon": "apps/web/src/assets/icons/favicon.icns" + }, + "linux": { + "category": "Video", + "target": [ + { + "target": "AppImage", + "arch": [ + "x64", + "armv7l", + "arm64" + ] + }, + { + "target": "deb", + "arch": [ + "x64", + "armv7l", + "arm64" + ] + }, + { + "target": "Snap", + "arch": [ + "x64", + "armv7l" + ] + }, + { + "target": "rpm", + "arch": [ + "x64" + ] + }, + { + "target": "pacman", + "arch": [ + "x64" + ] + }, + { + "target": "flatpak", + "arch": [ + "x64" + ] + } + ], + "artifactName": "${name}-${version}-${os}-${arch}.${ext}", + "icon": "apps/web/src/assets/icons" + }, + "afterPack": "electron-builder-sandbox-fix", + "snap": { + "confinement": "strict", + "grade": "stable", + "summary": "IPTV player application for M3U playlists, Xtream Codes API, and Stalker portals", + "plugs": [ + "default", + "network", + "network-bind", + "home", + "removable-media", + "browser-support", + "audio-playback", + "pulseaudio", + "opengl", + "screen-inhibit-control", + "x11", + "desktop", + "desktop-legacy" + ], + "environment": { + "DISABLE_WAYLAND": "1" + } + }, + "win": { + "compression": "maximum", + "target": [ + { + "target": "nsis", + "arch": [ + "x64" + ] + } + ], + "artifactName": "${name}-${version}-windows-${arch}-setup.${ext}", + "icon": "apps/web/src/assets/icons/icon.png" + }, + "nsis": { + "artifactName": "${name}-${version}-windows-${arch}-setup.${ext}" + } +} diff --git a/package-lock.json b/package-lock.json index bb3aff4f2..d6635c17e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "iptvnator", - "version": "0.17.0", + "version": "0.17.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "iptvnator", - "version": "0.17.0", + "version": "0.17.1", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -38,6 +38,7 @@ "better-sqlite3": "^12.5.0", "date-fns": "4.1.0", "drizzle-orm": "0.44.6", + "electron-builder-sandbox-fix": "1.1.1", "electron-conf": "1.3.0", "epg-parser": "0.4.0", "fix-path": "5.0.0", @@ -113,6 +114,7 @@ "drizzle-kit": "0.31.5", "electron": "^39.0.0", "electron-builder": "^26.0.12", + "electron-playwright-helpers": "1.8.2", "esbuild": "0.27.0", "eslint": "^9.8.0", "eslint-config-prettier": "^10.1.8", @@ -16277,7 +16279,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -19212,6 +19213,15 @@ "node": ">=14.0.0" } }, + "node_modules/electron-builder-sandbox-fix": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/electron-builder-sandbox-fix/-/electron-builder-sandbox-fix-1.1.1.tgz", + "integrity": "sha512-+gSiLZ7KZDRr3ATm89eud96QwURauUXMzB2lbzZffkAYMC4yyF2fqq0W2xoTg38eDVFCJThcoyW1p8Ph/unxoA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + } + }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -22547,7 +22557,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -37193,7 +37202,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" diff --git a/package.json b/package.json index 6575d2fbd..eacf990b7 100644 --- a/package.json +++ b/package.json @@ -19,97 +19,6 @@ "video", "tv" ], - "build": { - "appId": "com.fourgray.iptvnator", - "productName": "IPTVnator", - "artifactName": "${name}-${version}-${os}-${arch}.${ext}", - "directories": { - "buildResources": "dist/apps", - "output": "dist/executables" - }, - "files": [ - { - "from": "dist/apps/remote-control-web", - "to": "remote-control-web", - "filter": ["**/*"] - }, - "electron-backend/**/*", - "web/**/*", - "!**/*.map" - ], - "asarUnpack": [ - "**/better-sqlite3/**" - ], - "extraMetadata": { - "main": "electron-backend/main.js" - }, - "extraResources": [ - "dist/apps/electron-backend/workers" - ], - "mac": { - "target": { - "target": "dmg", - "arch": [ - "x64", - "arm64" - ] - }, - "category": "public.app-category.video", - "identity": null, - "gatekeeperAssess": false, - "hardenedRuntime": false, - "entitlements": null, - "entitlementsInherit": null, - "icon": "apps/web/src/assets/icons/favicon.icns" - }, - "linux": { - "category": "Video", - "target": [ - { - "target": "AppImage", - "arch": ["x64", "armv7l", "arm64"] - }, - { - "target": "deb", - "arch": ["x64", "armv7l", "arm64"] - }, - { - "target": "Snap", - "arch": ["x64"] - }, - { - "target": "rpm", - "arch": ["x64"] - }, - { - "target": "pacman", - "arch": ["x64"] - }, - { - "target": "flatpak", - "arch": ["x64"] - } - ], - "artifactName": "${name}-${version}-${os}-${arch}.${ext}", - "icon": "apps/web/src/assets/icons" - }, - "win": { - "compression": "maximum", - "target": [ - { - "target": "nsis", - "arch": [ - "x64" - ] - } - ], - "artifactName": "${name}-${version}-windows-${arch}-setup.${ext}", - "icon": "apps/web/src/assets/icons/icon.png" - }, - "nsis": { - "artifactName": "${name}-${version}-windows-${arch}-setup.${ext}" - } - }, "scripts": { "postinstall": "electron-builder install-app-deps", "build:frontend": "nx build web", @@ -153,6 +62,7 @@ "better-sqlite3": "^12.5.0", "date-fns": "4.1.0", "drizzle-orm": "0.44.6", + "electron-builder-sandbox-fix": "1.1.1", "electron-conf": "1.3.0", "epg-parser": "0.4.0", "fix-path": "5.0.0", From cf5d88a4b4b3e785c451792b4adbc781a90fcac3 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 14 Dec 2025 12:07:18 +0100 Subject: [PATCH 5/7] docs: add troubleshooting section for macOS & Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a Troubleshooting section to the README covering two common platform-specific launch issues and how to resolve them. - macOS: document Gatekeeper "App is damaged and can't be opened" and show how to clear the quarantine flag with xattr. - Linux: document chrome-sandbox SUID permission error and provide two solutions — fix permissions (chown/chmod) for packaged installs, or run with --no-sandbox by editing the desktop launcher or using the command line. These instructions reduce user confusion and support requests by providing clear, actionable steps to get IPTVnator running on affected systems. --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/README.md b/README.md index f8c6c395e..decbf3e32 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,63 @@ sudo emerge iptvnator-bin Buy Me A Coffee +## Troubleshooting + +### macOS: "App is damaged and can't be opened" + +Due to Apple's Gatekeeper security and code signing requirements, you may need to remove the quarantine flag from the downloaded application: + +```bash +xattr -c /Applications/IPTVnator.app +``` + +Alternatively, if the app is located in a different directory: + +```bash +xattr -c ~/Downloads/IPTVnator.app +``` + +### Linux: chrome-sandbox Issues + +If you encounter the following error when launching IPTVnator: + +``` +The SUID sandbox helper binary was found, but is not configured correctly. +Rather than run without sandboxing I'm aborting now. +You need to make sure that chrome-sandbox is owned by root and has mode 4755. +``` + +**Solution 1: Fix chrome-sandbox permissions (Recommended for .deb/.rpm installations)** + +Navigate to the IPTVnator installation directory and run: + +```bash +sudo chown root:root chrome-sandbox +sudo chmod 4755 chrome-sandbox +``` + +**Solution 2: Launch with --no-sandbox flag** + +Edit the desktop launcher file to add the `--no-sandbox` flag: + +1. Find your desktop file location: + - **Ubuntu/Debian**: `~/.local/share/applications/iptvnator.desktop` + - **System-wide**: `/usr/share/applications/iptvnator.desktop` + +2. Edit the file and modify the `Exec` line: + + ``` + Exec=iptvnator --no-sandbox %U + ``` + +3. Save the file and relaunch the application from your application menu. + +Alternatively, you can launch IPTVnator from the terminal with the flag: + +```bash +iptvnator --no-sandbox +``` + ## How to Build and Develop Requirements: From 54b8d3a18b6b0a8419753d3039fd206a84bc519a Mon Sep 17 00:00:00 2001 From: 4gray <4gray@users.noreply.github.com> Date: Sun, 14 Dec 2025 13:03:13 +0100 Subject: [PATCH 6/7] ci: move env variable to step header --- .github/workflows/build-and-make.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-make.yaml b/.github/workflows/build-and-make.yaml index a5e09e23c..e5438965c 100644 --- a/.github/workflows/build-and-make.yaml +++ b/.github/workflows/build-and-make.yaml @@ -176,6 +176,8 @@ jobs: needs: build runs-on: ubuntu-latest # if: startsWith(github.ref, 'refs/tags/v') # Only publish on version tags + env: + SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.snapcraft_token }} steps: - name: Download snap artifact @@ -186,9 +188,7 @@ jobs: - name: Setup Snapcraft uses: samuelmeuli/action-snapcraft@v3 - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.snapcraft_token }} - + - name: Publish all snaps to edge channel run: | # Find and publish all snap files From 7fa7143868ba54fbadd401404f5924fb655aaad0 Mon Sep 17 00:00:00 2001 From: 4gray <4gray@users.noreply.github.com> Date: Sun, 14 Dec 2025 14:14:03 +0100 Subject: [PATCH 7/7] build: update snap description in electron-builder --- electron-builder.json | 67 ++++++++----------------------------------- 1 file changed, 12 insertions(+), 55 deletions(-) diff --git a/electron-builder.json b/electron-builder.json index 7610d9f45..4fca4325c 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -10,30 +10,21 @@ { "from": "dist/apps/remote-control-web", "to": "remote-control-web", - "filter": [ - "**/*" - ] + "filter": ["**/*"] }, "electron-backend/**/*", "web/**/*", "!**/*.map" ], - "asarUnpack": [ - "**/better-sqlite3/**" - ], + "asarUnpack": ["**/better-sqlite3/**"], "extraMetadata": { "main": "electron-backend/main.js" }, - "extraResources": [ - "dist/apps/electron-backend/workers" - ], + "extraResources": ["dist/apps/electron-backend/workers"], "mac": { "target": { "target": "dmg", - "arch": [ - "x64", - "arm64" - ] + "arch": ["x64", "arm64"] }, "category": "public.app-category.video", "identity": null, @@ -48,44 +39,27 @@ "target": [ { "target": "AppImage", - "arch": [ - "x64", - "armv7l", - "arm64" - ] + "arch": ["x64", "armv7l", "arm64"] }, { "target": "deb", - "arch": [ - "x64", - "armv7l", - "arm64" - ] + "arch": ["x64", "armv7l", "arm64"] }, { "target": "Snap", - "arch": [ - "x64", - "armv7l" - ] + "arch": ["x64", "armv7l"] }, { "target": "rpm", - "arch": [ - "x64" - ] + "arch": ["x64"] }, { "target": "pacman", - "arch": [ - "x64" - ] + "arch": ["x64"] }, { "target": "flatpak", - "arch": [ - "x64" - ] + "arch": ["x64"] } ], "artifactName": "${name}-${version}-${os}-${arch}.${ext}", @@ -95,22 +69,7 @@ "snap": { "confinement": "strict", "grade": "stable", - "summary": "IPTV player application for M3U playlists, Xtream Codes API, and Stalker portals", - "plugs": [ - "default", - "network", - "network-bind", - "home", - "removable-media", - "browser-support", - "audio-playback", - "pulseaudio", - "opengl", - "screen-inhibit-control", - "x11", - "desktop", - "desktop-legacy" - ], + "summary": "IPTV application for M3U playlists, Xtream Codes API, and Stalker portals", "environment": { "DISABLE_WAYLAND": "1" } @@ -120,9 +79,7 @@ "target": [ { "target": "nsis", - "arch": [ - "x64" - ] + "arch": ["x64"] } ], "artifactName": "${name}-${version}-windows-${arch}-setup.${ext}",