diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb29362..12d604f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,15 +55,27 @@ jobs: - name: 🛠️ Install frontend dependencies run: npm install + - name: 📄 Read CHANGELOG + id: changelog + run: | + CONTENT=$(cat CHANGELOG.md) + echo "content<> $GITHUB_OUTPUT + echo "$CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + - name: 🚀 Build and publish uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TARGET_ARCH: ${{ matrix.arch }} + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} with: tagName: ${{ github.ref_name }} releaseName: ${{ github.event.repository.name }}-${{ github.ref_name }} - releaseBody: 'See the assets to download this version and install.' + releaseBody: ${{ steps.changelog.outputs.content }} releaseDraft: true prerelease: false + includeUpdaterJson: true + updaterJsonPreferNsis: true args: ${{ matrix.args }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8ac37c0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,29 @@ +### ✨ Changelog + +- Migrated to Tauri v2 +- Added support for caption download +- Added new Settings page +- Added dynamic websocket server port configuration option +- Added Node.js detection and installation option +- Changed RPM ffmpeg-free dependency to ffmpeg (as full ffmpeg is required for embedding captions) +- Improved single instance capability by switching to tauri_plugin_single_instance from websocket based single instance detection +- Enabled app-updater (for some packaging formats in Windows, MacOS) +- Minor fixes and improvements + +### 📎 Minimum Requirements + +- pytubepp v1.1.8 +- pytubepp-extension v0.2.0 + +> IMPORTANT: MacOS users must re-click the 'Register' button after updating + +> This is an Un-Signed Build (Windows doesn't trust this Certificate so, it may flag this as malicious software, in that case, disable Windows SmartScreen and Defender, install it, and then re-enable them) + +> This is an Un-Signed Build (MacOS doesn't trust this Certificate so, it may flag this as from 'unverified developer' and prevent it from opening, in that case, open Settings and allow it from 'Settings > Privacy and Security' section to get started) + +### ⬇️ Download Section + +| Arch\OS | Windows (msi) | Windows (exe) | Linux (deb) | Linux (rpm) | MacOS (dmg) | MacOS (app) | +| :---- | :---- | :---- | :---- | :---- | :---- | :---- | +| x86_64 | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64_en-US.msi) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64-setup.exe) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_amd64.deb) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper-0.7.0-1.x86_64.rpm) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_x64.dmg) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_x64.app.tar.gz) | +| ARM64 | N/A | N/A | N/A | N/A | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_0.7.0_aarch64.dmg) | [Download](https://github.com/neosubhamoy/pytubepp-helper/releases/download/v0.7.0-beta/pytubepp-helper_aarch64.app.tar.gz) | \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9b86afd..c900538 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@tauri-apps/plugin-fs": "^2.2.0", "@tauri-apps/plugin-os": "^2.2.0", "@tauri-apps/plugin-shell": "^2.2.0", + "@tauri-apps/plugin-updater": "^2.5.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "dotenv": "^16.4.5", @@ -1893,6 +1894,15 @@ "@tauri-apps/api": "^2.0.0" } }, + "node_modules/@tauri-apps/plugin-updater": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-updater/-/plugin-updater-2.5.0.tgz", + "integrity": "sha512-CWpwrkgpMESDPgJ0EuXgQTI/U9zeZQ9NLUvMyuWVrsuRez7tJ/3c7y73LAkvkI6+ekUxVaRJrxYrSfd8W+DRvQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", diff --git a/package.json b/package.json index 7f186d0..5c1662c 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@tauri-apps/plugin-fs": "^2.2.0", "@tauri-apps/plugin-os": "^2.2.0", "@tauri-apps/plugin-shell": "^2.2.0", + "@tauri-apps/plugin-updater": "^2.5.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "dotenv": "^16.4.5", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 2290a6b..b610b4e 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -62,6 +62,15 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "async-broadcast" version = "0.7.2" @@ -346,6 +355,25 @@ dependencies = [ "byte-tools", ] +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e58aa60e59d8dbfcc36138f5f18be5f24394d33b38b24f7fd0b1caa33095f22f" +dependencies = [ + "block-sys", + "objc2", +] + [[package]] name = "block2" version = "0.5.1" @@ -829,6 +857,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -918,6 +957,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "dlopen2" version = "0.7.0" @@ -1111,6 +1161,18 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "libredox", + "windows-sys 0.59.0", +] + [[package]] name = "fix-path-env" version = "0.0.0" @@ -1839,6 +1901,16 @@ dependencies = [ "png", ] +[[package]] +name = "icrate" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb69199826926eb864697bddd27f73d9fddcffc004f5733131e15b465e30642" +dependencies = [ + "block2 0.4.0", + "objc2", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -2113,6 +2185,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall 0.5.3", ] [[package]] @@ -2226,6 +2299,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minisign-verify" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6367d84fb54d4242af283086402907277715b8fe46976963af5ebf173f8efba3" + [[package]] name = "miniz_oxide" version = "0.7.4" @@ -2422,7 +2501,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", "syn 2.0.98", @@ -2463,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "libc", "objc2", "objc2-core-data", @@ -2479,7 +2558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-core-location", "objc2-foundation", @@ -2491,7 +2570,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", ] @@ -2503,7 +2582,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", ] @@ -2514,7 +2593,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", "objc2-metal", @@ -2526,7 +2605,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "block2", + "block2 0.5.1", "objc2", "objc2-contacts", "objc2-foundation", @@ -2545,7 +2624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "libc", "objc2", ] @@ -2556,7 +2635,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "block2", + "block2 0.5.1", "objc2", "objc2-app-kit", "objc2-foundation", @@ -2569,11 +2648,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", ] +[[package]] +name = "objc2-osa-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6788b04a18ea31e3dc3ab256b8546639e5bbae07c1a0dc4ea8615252bc6aee9a" +dependencies = [ + "bitflags 2.6.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + [[package]] name = "objc2-quartz-core" version = "0.2.2" @@ -2581,7 +2672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", "objc2-metal", @@ -2604,7 +2695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-cloud-kit", "objc2-core-data", @@ -2624,7 +2715,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ - "block2", + "block2 0.5.1", "objc2", "objc2-foundation", ] @@ -2636,7 +2727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-core-location", "objc2-foundation", @@ -2649,7 +2740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" dependencies = [ "bitflags 2.6.0", - "block2", + "block2 0.5.1", "objc2", "objc2-app-kit", "objc2-foundation", @@ -2769,6 +2860,20 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "osakit" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35366a452fce3f8947eb2f33226a133aaf0cacedef2af67ade348d58be7f85d0" +dependencies = [ + "icrate", + "objc2-foundation", + "objc2-osa-kit", + "serde", + "serde_json", + "thiserror 1.0.63", +] + [[package]] name = "pango" version = "0.18.3" @@ -3174,6 +3279,7 @@ dependencies = [ "tauri-plugin-os", "tauri-plugin-shell", "tauri-plugin-single-instance", + "tauri-plugin-updater", "tokio", "tokio-tungstenite", ] @@ -4275,6 +4381,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "tar" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "target-lexicon" version = "0.12.16" @@ -4488,6 +4605,37 @@ dependencies = [ "zbus", ] +[[package]] +name = "tauri-plugin-updater" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf3da08c36fb03c98c76e5563d4e74d9a590df0f40978cbe07f39cb52833f7c" +dependencies = [ + "base64 0.22.1", + "dirs 6.0.0", + "flate2", + "futures-util", + "http", + "infer", + "minisign-verify", + "osakit", + "percent-encoding 2.3.1", + "reqwest", + "semver 1.0.23", + "serde", + "serde_json", + "tar", + "tauri", + "tauri-plugin", + "tempfile", + "thiserror 2.0.11", + "time 0.3.36", + "tokio", + "url 2.5.2", + "windows-sys 0.59.0", + "zip", +] + [[package]] name = "tauri-runtime" version = "2.3.0" @@ -5944,7 +6092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1" dependencies = [ "base64 0.22.1", - "block2", + "block2 0.5.1", "cookie", "crossbeam-channel", "dpi", @@ -6011,6 +6159,17 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "xattr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + [[package]] name = "xdg-home" version = "1.3.0" @@ -6111,6 +6270,21 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zip" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils 0.8.20", + "displaydoc", + "indexmap 2.4.0", + "memchr", + "thiserror 2.0.11", +] + [[package]] name = "zvariant" version = "5.4.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a9439ba..a0b78db 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -26,6 +26,7 @@ tauri-plugin-os = "2" [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] tauri-plugin-single-instance = "2" +tauri-plugin-updater = "2" [features] # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index 44ae7a2..e5eaae2 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -11,6 +11,7 @@ "shell:default", "os:default", "fs:default", + "updater:default", "core:window:allow-hide", "fs:allow-app-write", "fs:allow-app-write-recursive" diff --git a/src-tauri/capabilities/shell.json b/src-tauri/capabilities/shell.json index 11895c1..2eafe4d 100644 --- a/src-tauri/capabilities/shell.json +++ b/src-tauri/capabilities/shell.json @@ -1,98 +1,133 @@ { - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "shell-scope", - "description": "allowed shell scopes", - "windows": ["main"], - "permissions": [ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "shell-scope", + "description": "allowed shell scopes", + "windows": [ + "main" + ], + "permissions": [ + { + "identifier": "shell:allow-execute", + "allow": [ { - "identifier": "shell:allow-execute", - "allow": [ + "name": "detect-windows", + "cmd": "systeminfo", + "args": [] + }, + { + "name": "detect-macos", + "cmd": "sw_vers", + "args": [] + }, + { + "name": "detect-distro", + "cmd": "grep", + "args": [ + "^ID=", + "/etc/os-release" + ] + }, + { + "name": "detect-pkgmngr", + "cmd": "sh", + "args": [ + "-c", + "command -v apt || command -v dnf || command -v pacman" + ] + }, + { + "name": "is-apt-installed", + "cmd": "apt", + "args": [ + "--version" + ] + }, + { + "name": "is-dnf-installed", + "cmd": "dnf", + "args": [ + "--version" + ] + }, + { + "name": "is-python3-installed", + "cmd": "python3", + "args": [ + "--version" + ] + }, + { + "name": "is-pip3-installed", + "cmd": "pip3", + "args": [ + "--version" + ] + }, + { + "name": "is-winget-installed", + "cmd": "winget", + "args": [ + "--version" + ] + }, + { + "name": "is-homebrew-installed", + "cmd": "brew", + "args": [ + "--version" + ] + }, + { + "name": "is-python-installed", + "cmd": "python", + "args": [ + "--version" + ] + }, + { + "name": "is-pip-installed", + "cmd": "pip", + "args": [ + "--version" + ] + }, + { + "name": "is-ffmpeg-installed", + "cmd": "ffmpeg", + "args": [ + "-version" + ] + }, + { + "name": "is-nodejs-installed", + "cmd": "node", + "args": [ + "--version" + ] + }, + { + "name": "is-pytubepp-installed", + "cmd": "pytubepp", + "args": [ + "--version" + ] + }, + { + "name": "fetch-video-info", + "cmd": "pytubepp", + "args": [ { - "name": "detect-windows", - "cmd": "systeminfo", - "args": [] + "validator": "\\S+" }, - { - "name": "detect-macos", - "cmd": "sw_vers", - "args": [] - }, - { - "name": "detect-distro", - "cmd": "grep", - "args": ["^ID=", "/etc/os-release"] - }, - { - "name": "detect-pkgmngr", - "cmd": "sh", - "args": ["-c", "command -v apt || command -v dnf || command -v pacman"] - }, - { - "name": "is-apt-installed", - "cmd": "apt", - "args": ["--version"] - }, - { - "name": "is-dnf-installed", - "cmd": "dnf", - "args": ["--version"] - }, - { - "name": "is-python3-installed", - "cmd": "python3", - "args": ["--version"] - }, - { - "name": "is-pip3-installed", - "cmd": "pip3", - "args": ["--version"] - }, - { - "name": "is-winget-installed", - "cmd": "winget", - "args": ["--version"] - }, - { - "name": "is-homebrew-installed", - "cmd": "brew", - "args": ["--version"] - }, - { - "name": "is-python-installed", - "cmd": "python", - "args": ["--version"] - }, - { - "name": "is-pip-installed", - "cmd": "pip", - "args": ["--version"] - }, - { - "name": "is-ffmpeg-installed", - "cmd": "ffmpeg", - "args": ["-version"] - }, - { - "name": "is-nodejs-installed", - "cmd": "node", - "args": ["--version"] - }, - { - "name": "is-pytubepp-installed", - "cmd": "pytubepp", - "args": ["--version"] - }, - { - "name": "fetch-video-info", - "cmd": "pytubepp", - "args": [{ "validator": "\\S+" }, "--raw-info"] - } - ] + "--raw-info" + ] } - ], - "platforms": [ - "windows", - "macOS", - "linux" - ] + ] + } + ], + "platforms": [ + "windows", + "macOS", + "linux" + ] } \ No newline at end of file diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 443d001..01cb4f9 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -318,6 +318,7 @@ pub async fn run() { let start_hidden = args.contains(&"--hidden".to_string()); tauri::Builder::default() + .plugin(tauri_plugin_updater::Builder::new().build()) .plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { // Focus the main window when attempting to launch another instance if let Some(window) = app.get_webview_window("main") { diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 30ba56f..81538de 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3,4 +3,4 @@ #[tokio::main] async fn main() { pytubepp_helper_lib::run().await; -} \ No newline at end of file +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e73bd8c..7266c80 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -9,6 +9,7 @@ "bundle": { "active": true, "targets": "all", + "createUpdaterArtifacts": true, "icon": [ "icons/32x32.png", "icons/128x128.png", @@ -21,7 +22,17 @@ "mainBinaryName": "pytubepp-helper", "version": "0.6.0", "identifier": "com.neosubhamoy.pytubepp.helper", - "plugins": {}, + "plugins": { + "updater": { + "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEMwNjIwMjQ1OTk4NjJDRUMKUldUc0xJYVpSUUppd0Y5NGhyTUg0VDhDNFd3SFMzNnBYUlhZSlE1WGNjamcxS0tOMDE5M1dycWYK", + "endpoints": [ + "https://releases.neosubhamoy.com/tauri-update/pytubepp-helper/{{target}}/{{arch}}/{{current_version}}" + ], + "windows": { + "installMode": "passive" + } + } + }, "app": { "security": { "csp": null diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index 06b0f4f..f8cafce 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -6,7 +6,6 @@ "frontendDist": "../dist" }, "identifier": "com.neosubhamoy.pytubepp.helper", - "plugins": {}, "app": { "windows": [ { @@ -27,6 +26,7 @@ "bundle": { "active": true, "targets": ["deb", "rpm"], + "createUpdaterArtifacts": true, "licenseFile": "../LICENSE", "icon": [ "icons/32x32.png", diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 1d6d41a..afa0ead 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -6,7 +6,6 @@ "frontendDist": "../dist" }, "identifier": "com.neosubhamoy.pytubepp.helper", - "plugins": {}, "app": { "windows": [ { @@ -50,6 +49,7 @@ "bundle": { "active": true, "targets": ["app", "dmg"], + "createUpdaterArtifacts": true, "licenseFile": "../LICENSE", "icon": [ "icons/32x32.png", diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json index ec71f2b..0cbc990 100644 --- a/src-tauri/tauri.windows.conf.json +++ b/src-tauri/tauri.windows.conf.json @@ -6,7 +6,6 @@ "frontendDist": "../dist" }, "identifier": "com.neosubhamoy.pytubepp.helper", - "plugins": {}, "app": { "windows": [ { @@ -41,6 +40,7 @@ "bundle": { "active": true, "targets": ["msi", "nsis"], + "createUpdaterArtifacts": true, "licenseFile": "../LICENSE", "icon": [ "icons/32x32.png",