diff --git a/package.json b/package.json index 2ffadbf6..6103e889 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "risuko", "version": "0.3.6", "description": "A full-featured download manager", - "homepage": "https://risuko.vercel.app", + "homepage": "https://risuko.app", "author": { "name": "YueMiyuki", "email": "yuemiyuki4737@gmail.com" @@ -75,7 +75,7 @@ "vite-plugin-static-copy": "^4.1.1", "vue": "^3.5.35", "vue-router": "^5.1.0", - "vue-tsc": "^3.3.3", + "vue-tsc": "^3.3.4", "vue-virtual-scroller": "3.0.4" }, "packageManager": "pnpm@11.3.0" diff --git a/packages/risuko-app/package.json b/packages/risuko-app/package.json index ff525d65..ef03f37b 100644 --- a/packages/risuko-app/package.json +++ b/packages/risuko-app/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/app", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko download manager — launches the desktop app, downloading it from GitHub Releases on first run", "license": "MIT", "repository": { diff --git a/packages/risuko-cli/npm/darwin-arm64/package.json b/packages/risuko-cli/npm/darwin-arm64/package.json index 6bc0f6dd..d5a86689 100644 --- a/packages/risuko-cli/npm/darwin-arm64/package.json +++ b/packages/risuko-cli/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-darwin-arm64", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for macOS ARM64", "repository": { "type": "git", diff --git a/packages/risuko-cli/npm/darwin-x64/package.json b/packages/risuko-cli/npm/darwin-x64/package.json index 67b84d31..7d840a3e 100644 --- a/packages/risuko-cli/npm/darwin-x64/package.json +++ b/packages/risuko-cli/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-darwin-x64", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for macOS x64", "repository": { "type": "git", diff --git a/packages/risuko-cli/npm/linux-arm64-gnu/package.json b/packages/risuko-cli/npm/linux-arm64-gnu/package.json index 6201c37c..f659a2fd 100644 --- a/packages/risuko-cli/npm/linux-arm64-gnu/package.json +++ b/packages/risuko-cli/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-linux-arm64-gnu", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for Linux ARM64", "repository": { "type": "git", diff --git a/packages/risuko-cli/npm/linux-x64-gnu/package.json b/packages/risuko-cli/npm/linux-x64-gnu/package.json index bcc7c042..0d2c8afd 100644 --- a/packages/risuko-cli/npm/linux-x64-gnu/package.json +++ b/packages/risuko-cli/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-linux-x64-gnu", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for Linux x64", "repository": { "type": "git", diff --git a/packages/risuko-cli/npm/win32-arm64-msvc/package.json b/packages/risuko-cli/npm/win32-arm64-msvc/package.json index 00514712..feff89c9 100644 --- a/packages/risuko-cli/npm/win32-arm64-msvc/package.json +++ b/packages/risuko-cli/npm/win32-arm64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-win32-arm64-msvc", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for Windows ARM64", "repository": { "type": "git", diff --git a/packages/risuko-cli/npm/win32-x64-msvc/package.json b/packages/risuko-cli/npm/win32-x64-msvc/package.json index 12cae4df..efff619d 100644 --- a/packages/risuko-cli/npm/win32-x64-msvc/package.json +++ b/packages/risuko-cli/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli-win32-x64-msvc", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko CLI binary for Windows x64", "repository": { "type": "git", diff --git a/packages/risuko-cli/package.json b/packages/risuko-cli/package.json index 0403e2fa..e4fbdadf 100644 --- a/packages/risuko-cli/package.json +++ b/packages/risuko-cli/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/cli", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko download engine CLI — multi-protocol downloads (HTTP, BitTorrent, ED2K, M3U8, FTP/SFTP)", "license": "MIT", "repository": { @@ -24,12 +24,12 @@ "bin.js" ], "optionalDependencies": { - "@risuko/cli-darwin-arm64": "0.4.0", - "@risuko/cli-darwin-x64": "0.4.0", - "@risuko/cli-linux-arm64-gnu": "0.4.0", - "@risuko/cli-linux-x64-gnu": "0.4.0", - "@risuko/cli-win32-arm64-msvc": "0.4.0", - "@risuko/cli-win32-x64-msvc": "0.4.0" + "@risuko/cli-darwin-arm64": "0.4.1", + "@risuko/cli-darwin-x64": "0.4.1", + "@risuko/cli-linux-arm64-gnu": "0.4.1", + "@risuko/cli-linux-x64-gnu": "0.4.1", + "@risuko/cli-win32-arm64-msvc": "0.4.1", + "@risuko/cli-win32-x64-msvc": "0.4.1" }, "engines": { "node": ">= 18" diff --git a/packages/risuko-js/npm/darwin-arm64/package.json b/packages/risuko-js/npm/darwin-arm64/package.json index 32fe24de..0bafd0ba 100644 --- a/packages/risuko-js/npm/darwin-arm64/package.json +++ b/packages/risuko-js/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-darwin-arm64", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for macOS ARM64", "repository": { "type": "git", diff --git a/packages/risuko-js/npm/darwin-x64/package.json b/packages/risuko-js/npm/darwin-x64/package.json index f9b8eb41..c1b5bc41 100644 --- a/packages/risuko-js/npm/darwin-x64/package.json +++ b/packages/risuko-js/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-darwin-x64", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for macOS x64", "repository": { "type": "git", diff --git a/packages/risuko-js/npm/linux-arm64-gnu/package.json b/packages/risuko-js/npm/linux-arm64-gnu/package.json index 16dc46ac..2477e692 100644 --- a/packages/risuko-js/npm/linux-arm64-gnu/package.json +++ b/packages/risuko-js/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-linux-arm64-gnu", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for Linux ARM64", "repository": { "type": "git", diff --git a/packages/risuko-js/npm/linux-x64-gnu/package.json b/packages/risuko-js/npm/linux-x64-gnu/package.json index 4a80a00b..3b7b00b4 100644 --- a/packages/risuko-js/npm/linux-x64-gnu/package.json +++ b/packages/risuko-js/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-linux-x64-gnu", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for Linux x64", "repository": { "type": "git", diff --git a/packages/risuko-js/npm/win32-arm64-msvc/package.json b/packages/risuko-js/npm/win32-arm64-msvc/package.json index 3fde9b94..cf0b8ec2 100644 --- a/packages/risuko-js/npm/win32-arm64-msvc/package.json +++ b/packages/risuko-js/npm/win32-arm64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-win32-arm64-msvc", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for Windows ARM64", "repository": { "type": "git", diff --git a/packages/risuko-js/npm/win32-x64-msvc/package.json b/packages/risuko-js/npm/win32-x64-msvc/package.json index 518fafac..35ac4323 100644 --- a/packages/risuko-js/npm/win32-x64-msvc/package.json +++ b/packages/risuko-js/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/js-win32-x64-msvc", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko JS native module for Windows x64", "repository": { "type": "git", diff --git a/packages/risuko-js/package.json b/packages/risuko-js/package.json index e0339547..de4d7a33 100644 --- a/packages/risuko-js/package.json +++ b/packages/risuko-js/package.json @@ -1,6 +1,6 @@ { "name": "@risuko/risuko-js", - "version": "0.4.0", + "version": "0.4.1", "description": "Risuko download engine — Node.js native bindings for multi-protocol downloads (HTTP, BitTorrent, ED2K, M3U8, FTP/SFTP)", "main": "index.js", "types": "index.d.ts", @@ -34,12 +34,12 @@ } }, "optionalDependencies": { - "@risuko/js-darwin-arm64": "0.4.0", - "@risuko/js-darwin-x64": "0.4.0", - "@risuko/js-linux-x64-gnu": "0.4.0", - "@risuko/js-linux-arm64-gnu": "0.4.0", - "@risuko/js-win32-x64-msvc": "0.4.0", - "@risuko/js-win32-arm64-msvc": "0.4.0" + "@risuko/js-darwin-arm64": "0.4.1", + "@risuko/js-darwin-x64": "0.4.1", + "@risuko/js-linux-x64-gnu": "0.4.1", + "@risuko/js-linux-arm64-gnu": "0.4.1", + "@risuko/js-win32-x64-msvc": "0.4.1", + "@risuko/js-win32-arm64-msvc": "0.4.1" }, "engines": { "node": ">= 22" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e8a7ce6..b505c009 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -124,55 +124,17 @@ importers: specifier: ^5.1.0 version: 5.1.0(@vue/compiler-sfc@3.5.35)(pinia@3.0.4(typescript@6.0.3)(vue@3.5.35(typescript@6.0.3)))(vite@8.0.16(@types/node@25.9.2)(jiti@2.7.0)(sass@1.100.0)(terser@5.48.0)(yaml@2.9.0))(vue@3.5.35(typescript@6.0.3)) vue-tsc: - specifier: ^3.3.3 - version: 3.3.3(typescript@6.0.3) + specifier: ^3.3.4 + version: 3.3.4(typescript@6.0.3) vue-virtual-scroller: specifier: 3.0.4 version: 3.0.4(vue@3.5.35(typescript@6.0.3)) packages/risuko-app: {} - packages/risuko-cli: - optionalDependencies: - '@risuko/cli-darwin-arm64': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/cli-darwin-x64': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/cli-linux-arm64-gnu': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/cli-linux-x64-gnu': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/cli-win32-arm64-msvc': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/cli-win32-x64-msvc': - specifier: 0.4.0 - version: 0.4.0 - - packages/risuko-js: - optionalDependencies: - '@risuko/js-darwin-arm64': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/js-darwin-x64': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/js-linux-arm64-gnu': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/js-linux-x64-gnu': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/js-win32-arm64-msvc': - specifier: 0.4.0 - version: 0.4.0 - '@risuko/js-win32-x64-msvc': - specifier: 0.4.0 - version: 0.4.0 + packages/risuko-cli: {} + + packages/risuko-js: {} packages: @@ -365,68 +327,6 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} - '@risuko/cli-darwin-arm64@0.4.0': - resolution: {integrity: sha512-+lqlK0HmZwaHIgwjFTmuKeiFXCLJEoXWdwDF/sXI3u6YrHmg7X5/yIg6XRpKXp2nRAMil546YB6D7WOjT3j4dQ==} - cpu: [arm64] - os: [darwin] - - '@risuko/cli-darwin-x64@0.4.0': - resolution: {integrity: sha512-fxOutYcaz/9YzeYJJ0/U1+SkE6PUaj1NpEHZ5GBCQ7nE+eqI+ByfVG4egTQr+jWMnAwWHlgcRjX2hp2eQW15Pw==} - cpu: [x64] - os: [darwin] - - '@risuko/cli-linux-arm64-gnu@0.4.0': - resolution: {integrity: sha512-+G/s8yZ6dVtVHPfCz+hkXx3xuP2MUjcrNqgJU+f+Yh6yXLTqkgUIji4sZj7amBSbq7uYRksuVgewC9BAakTqaQ==} - cpu: [arm64] - os: [linux] - - '@risuko/cli-linux-x64-gnu@0.4.0': - resolution: {integrity: sha512-QUUXEcDLZxFZhLemuuarAx4oE/GrmpX0fVbxYeV9MNYBoaz3q1lj4PXjqu7yiRFjngV4lon6FKDgModYfkEOhQ==} - cpu: [x64] - os: [linux] - - '@risuko/cli-win32-arm64-msvc@0.4.0': - resolution: {integrity: sha512-2ruMq5BLj16y2uRnx7nRnyyy1zZOFJwARJ3OrTbbE7A3jLFU9vy5+JFm3QwTBD/gAkwWZ9lRmf6hbiIefXZAnQ==} - cpu: [arm64] - os: [win32] - - '@risuko/cli-win32-x64-msvc@0.4.0': - resolution: {integrity: sha512-p6E8umPY5q9i4ZcHK2m6aqU1+od491PbCiqT7kTdxUVQVbpUam5wmwuHb8C9PX65bsGwhHucnxXqi/+O8xZuDg==} - cpu: [x64] - os: [win32] - - '@risuko/js-darwin-arm64@0.4.0': - resolution: {integrity: sha512-t4a2cnk8lCJ3Gpst6Fht2uhMa3QQalvKHl10EnePo4nUppApZKn536cdFGFwyZCUMQiIVSjfbFEZDus+SkFTqw==} - cpu: [arm64] - os: [darwin] - - '@risuko/js-darwin-x64@0.4.0': - resolution: {integrity: sha512-veU/vMKzGDnDg7NpLmWAYzyYHa0tGqiSchWbKAFJ/jwd6P4FWfxnIQjoiir9d60HC6tgPDoVB8lZw+/Kpra5Kw==} - cpu: [x64] - os: [darwin] - - '@risuko/js-linux-arm64-gnu@0.4.0': - resolution: {integrity: sha512-Ipc6F0gJTweauGlNbtv8AJ9m0Y4381hKLsOxrTX13BNQwFGiLuUIois8fQyb7BXL40Ay//G2rz0IWKjFT6KVfA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@risuko/js-linux-x64-gnu@0.4.0': - resolution: {integrity: sha512-ePptz6CzNwCNUziJRNNWH+KWJi4FKSCkbZOkPAW4X2/7PRstHHOYQnCxgLbluTK8Kb4TMAnmncfxQ8WBJwR7eA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@risuko/js-win32-arm64-msvc@0.4.0': - resolution: {integrity: sha512-TiFjQf8WnN/vs5m6gSOcCcj4y4GfvMlHK6RM0FfKlO6AwPiabcGy1yX6/BlNrfNtvdxR8DVhFGDR3u5cYoQDiA==} - cpu: [arm64] - os: [win32] - - '@risuko/js-win32-x64-msvc@0.4.0': - resolution: {integrity: sha512-m8FK5yQyD7Xyih0hhRPnGkb42kw0npspGDn3Fco443XTwpTUNnrtveQBQYECPPmmNSpuIgqDihefyGDHKp+87g==} - cpu: [x64] - os: [win32] - '@rolldown/binding-android-arm64@1.0.3': resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -789,8 +689,8 @@ packages: '@vue/devtools-shared@8.1.2': resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==} - '@vue/language-core@3.3.3': - resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==} + '@vue/language-core@3.3.4': + resolution: {integrity: sha512-IuHqQ5zGGOE7CXP72VX6A42IVeIzYv4WAhO6arej11TRNqtdZfGyH8Yr2FOCaDX0dSQG+JwULLoFHGY1igYVjQ==} '@vue/reactivity@3.5.35': resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==} @@ -1579,8 +1479,8 @@ packages: nuxt: optional: true - vue-tsc@3.3.3: - resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==} + vue-tsc@3.3.4: + resolution: {integrity: sha512-XA/JqmQwS2GZmfgpjOEGdrKwaTSEuPwxpHa7/t6f4yiGrJb3gVHTPb9wBfByMNZwQ+xDXs41b8gaS2DKsOozUw==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -1794,42 +1694,6 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.6 optional: true - '@risuko/cli-darwin-arm64@0.4.0': - optional: true - - '@risuko/cli-darwin-x64@0.4.0': - optional: true - - '@risuko/cli-linux-arm64-gnu@0.4.0': - optional: true - - '@risuko/cli-linux-x64-gnu@0.4.0': - optional: true - - '@risuko/cli-win32-arm64-msvc@0.4.0': - optional: true - - '@risuko/cli-win32-x64-msvc@0.4.0': - optional: true - - '@risuko/js-darwin-arm64@0.4.0': - optional: true - - '@risuko/js-darwin-x64@0.4.0': - optional: true - - '@risuko/js-linux-arm64-gnu@0.4.0': - optional: true - - '@risuko/js-linux-x64-gnu@0.4.0': - optional: true - - '@risuko/js-win32-arm64-msvc@0.4.0': - optional: true - - '@risuko/js-win32-x64-msvc@0.4.0': - optional: true - '@rolldown/binding-android-arm64@1.0.3': optional: true @@ -2125,7 +1989,7 @@ snapshots: '@vue/devtools-shared@8.1.2': {} - '@vue/language-core@3.3.3': + '@vue/language-core@3.3.4': dependencies: '@volar/language-core': 2.4.28 '@vue/compiler-dom': 3.5.35 @@ -2839,10 +2703,10 @@ snapshots: vue-sonner@2.0.9: {} - vue-tsc@3.3.3(typescript@6.0.3): + vue-tsc@3.3.4(typescript@6.0.3): dependencies: '@volar/typescript': 2.4.28 - '@vue/language-core': 3.3.3 + '@vue/language-core': 3.3.4 typescript: 6.0.3 vue-virtual-scroller@3.0.4(vue@3.5.35(typescript@6.0.3)): diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 89e4bbf4..efa28447 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,4 +8,4 @@ allowBuilds: unrs-resolver: true vue-demi: true minimumReleaseAgeExclude: - - '@risuko/*' \ No newline at end of file + - '@risuko/*' diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index b60ae19e..39805481 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2879,9 +2879,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" dependencies = [ "bytes", "itoa", @@ -3409,13 +3409,12 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -5489,7 +5488,7 @@ dependencies = [ [[package]] name = "risuko" -version = "0.4.0" +version = "0.4.1" dependencies = [ "apple-native-keyring-store", "base64 0.22.1", @@ -5567,7 +5566,7 @@ dependencies = [ [[package]] name = "risuko-cli" -version = "0.4.0" +version = "0.4.1" dependencies = [ "base64 0.22.1", "clap", @@ -5584,7 +5583,7 @@ dependencies = [ [[package]] name = "risuko-cookies" -version = "0.4.0" +version = "0.4.1" dependencies = [ "rookie", "serde", @@ -5596,7 +5595,7 @@ dependencies = [ [[package]] name = "risuko-engine" -version = "0.4.0" +version = "0.4.1" dependencies = [ "aes 0.9.1", "async-trait", @@ -5654,7 +5653,7 @@ dependencies = [ [[package]] name = "risuko-http" -version = "0.4.0" +version = "0.4.1" dependencies = [ "async-compression", "async-stream", @@ -5689,7 +5688,7 @@ dependencies = [ [[package]] name = "risuko-napi" -version = "0.4.0" +version = "0.4.1" dependencies = [ "base64 0.22.1", "dirs 6.0.0", @@ -6744,9 +6743,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "suppaftp" -version = "8.0.3" +version = "8.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4275c142b5be3af2eeadd70dd368caf3b65546c8af1035839372dd7a1436127d" +checksum = "4cf00e4d8418c477a8cb3c13ae5396a68d31658e760c74280bdbd34926e3b94b" dependencies = [ "async-trait", "chrono", @@ -8058,9 +8057,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.2" +version = "1.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" dependencies = [ "getrandom 0.4.2", "js-sys", @@ -8163,9 +8162,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563" dependencies = [ "cfg-if", "once_cell", @@ -8176,9 +8175,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.72" +version = "0.4.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +checksum = "54568702fabf5d4849ce2b90fadfa64168a097eaf4b351ce9df8b687a0086aaf" dependencies = [ "js-sys", "wasm-bindgen", @@ -8186,9 +8185,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8196,9 +8195,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b" dependencies = [ "bumpalo", "proc-macro2", @@ -8209,9 +8208,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92" dependencies = [ "unicode-ident", ] @@ -8335,9 +8334,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.99" +version = "0.3.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +checksum = "6e0871acf327f283dc6da28a1696cdc64fb355ba9f935d052021fa77f35cce69" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5b805701..5c95f926 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -2,7 +2,7 @@ members = ["risuko-engine", "risuko-bt", "risuko-cli", "risuko-napi", "risuko-http", "risuko-cookies"] [workspace.package] -version = "0.4.0" +version = "0.4.1" authors = ["YueMiyuki"] edition = "2021" rust-version = "1.82" diff --git a/src-tauri/linux/app.risuko.Risuko.desktop b/src-tauri/linux/app.risuko.Risuko.desktop new file mode 100644 index 00000000..5a281c52 --- /dev/null +++ b/src-tauri/linux/app.risuko.Risuko.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Name=Risuko +GenericName=Download Manager +Comment=A full-featured download manager +Exec=risuko %U +Icon=app.risuko.Risuko +Terminal=false +Categories=Network;FileTransfer; +MimeType=application/x-bittorrent;x-scheme-handler/mo;x-scheme-handler/risuko;x-scheme-handler/magnet;x-scheme-handler/thunder;x-scheme-handler/ed2k;x-scheme-handler/adc;x-scheme-handler/adcs;x-scheme-handler/dchub;x-scheme-handler/nmdc;x-scheme-handler/gnutella;x-scheme-handler/gnet;x-scheme-handler/g2; +StartupNotify=true diff --git a/src-tauri/linux/app.risuko.Risuko.metainfo.xml b/src-tauri/linux/app.risuko.Risuko.metainfo.xml new file mode 100644 index 00000000..0b885bab --- /dev/null +++ b/src-tauri/linux/app.risuko.Risuko.metainfo.xml @@ -0,0 +1,35 @@ + + + app.risuko.Risuko + Risuko + Download manager + MIT + MIT + + YueMiyuki + + +

Risuko is a download manager for HTTP downloads, BitTorrent files, and magnet links.

+
+ app.risuko.Risuko.desktop + + risuko + + + + https://raw.githubusercontent.com/YueMiyuki/Risuko/v0.4.1/static/readme/UI.png + Main Risuko window + + + https://risuko.app + https://github.com/YueMiyuki/Risuko/issues + https://github.com/YueMiyuki/Risuko + + + + +

Release 0.4.1

+
+
+
+
diff --git a/src-tauri/risuko-bt/examples/download_magnet.rs b/src-tauri/risuko-bt/examples/download_magnet.rs deleted file mode 100644 index 0991615c..00000000 --- a/src-tauri/risuko-bt/examples/download_magnet.rs +++ /dev/null @@ -1,119 +0,0 @@ -//! Diagnostic: drive a real risuko-bt `Session` download of a magnet and -//! print progress/peer stats periodically. Mirrors how the app downloads. -//! -//! Usage: download_magnet [plaintext|prefer|require] [seconds] - -use std::time::Duration; - -use risuko_bt::session::{ - AddTorrent, AddTorrentOptions, AddTorrentResponse, ListenerOptions, Session, SessionOptions, -}; -use risuko_bt::EncryptionPolicy; - -#[tokio::main(flavor = "multi_thread", worker_threads = 4)] -async fn main() { - env_logger::init(); - - let mut args = std::env::args().skip(1); - let magnet = args - .next() - .expect("usage: download_magnet [plaintext|prefer|require] [seconds]"); - let policy = match args.next().as_deref() { - Some("prefer") => EncryptionPolicy::Prefer, - Some("require") => EncryptionPolicy::RequireEncryption, - _ => EncryptionPolicy::PlaintextOnly, - }; - let secs: u64 = args.next().and_then(|s| s.parse().ok()).unwrap_or(90); - // Optional 4th arg: path to a file with one tracker URL per line. - let trackers: Option> = args.next().map(|path| { - let body = std::fs::read_to_string(&path).expect("read trackers file"); - body.lines() - .map(|l| l.trim().to_string()) - .filter(|l| !l.is_empty()) - .collect() - }); - if let Some(t) = &trackers { - eprintln!("loaded {} trackers", t.len()); - } - - let out = std::env::temp_dir().join("risuko-cmp-dl"); - std::fs::create_dir_all(&out).unwrap(); - - let session = Session::new_with_opts( - out.clone(), - SessionOptions { - listen: Some(ListenerOptions { - listen_addr: Some("0.0.0.0:0".parse().unwrap()), - enable_upnp_port_forwarding: false, - listen_ipv6: true, - ..Default::default() - }), - encryption: policy, - ..Default::default() - }, - ) - .await - .expect("session"); - - eprintln!( - "session listen_port={} policy={:?} out={}", - session.listen_port(), - policy, - out.display() - ); - eprintln!("resolving + adding magnet (may take a few seconds)..."); - - let add_opts = AddTorrentOptions { - trackers, - ..AddTorrentOptions::default() - }; - // If the first arg is an existing file, treat it as a .torrent (skip - // magnet resolution); otherwise treat it as a magnet URL. - let which = if std::path::Path::new(&magnet).is_file() { - eprintln!("loading .torrent file (skipping magnet resolution)"); - let bytes = std::fs::read(&magnet).expect("read torrent file"); - AddTorrent::TorrentFileBytes(bytes.into()) - } else { - AddTorrent::Url(magnet) - }; - let handle = match session.add_torrent(which, Some(add_opts)).await { - Ok(AddTorrentResponse::Added(_, h)) => h, - Ok(_) => { - eprintln!("unexpected non-Added response"); - return; - } - Err(e) => { - eprintln!("add_torrent failed: {e}"); - return; - } - }; - - eprintln!("added; polling stats for {secs}s"); - let deadline = tokio::time::Instant::now() + Duration::from_secs(secs); - loop { - let s = handle.stats(); - let live = s - .live - .as_ref() - .map(|l| l.snapshot.peer_stats.live) - .unwrap_or(0); - let pct = if s.total_bytes > 0 { - s.progress_bytes as f64 / s.total_bytes as f64 * 100.0 - } else { - 0.0 - }; - eprintln!( - "progress {} / {} bytes ({pct:.3}%) live_peers={} known_peers={} finished={}", - s.progress_bytes, - s.total_bytes, - live, - s.peers.len(), - s.finished - ); - if s.finished || tokio::time::Instant::now() > deadline { - break; - } - tokio::time::sleep(Duration::from_secs(3)).await; - } - eprintln!("DONE"); -} diff --git a/src-tauri/risuko-bt/examples/probe_handshake.rs b/src-tauri/risuko-bt/examples/probe_handshake.rs deleted file mode 100644 index 90d22d51..00000000 --- a/src-tauri/risuko-bt/examples/probe_handshake.rs +++ /dev/null @@ -1,105 +0,0 @@ -//! Diagnostic probe: dial a single peer via risuko-bt's real `connect()` -//! path and report the handshake outcome. Used to reproduce/inspect the -//! plaintext-handshake rejection seen on certain swarms. -//! -//! Usage: probe_handshake [v2] - -use std::time::Duration; - -use risuko_bt::generate_peer_id; -use risuko_bt::peer::{connect, EncryptionPolicy, PeerCommand, PeerEvent, SpawnPeer}; -use risuko_bt::wire::Message; -use risuko_bt::Id20; - -#[tokio::main] -async fn main() { - let mut args = std::env::args().skip(1); - let addr: std::net::SocketAddr = args - .next() - .expect("usage: probe_handshake [v2]") - .parse() - .expect("valid socket addr"); - let ih_hex = args.next().expect("info_hash hex required"); - let advertise_v2 = args.next().map(|s| s == "v2").unwrap_or(false); - // Optional 4th arg: override the local peer_id (e.g. "-qB5011-" or - // "-rQ0011-") to test whether a peer rejects us based on our peer_id. - let peer_id_override = args.next(); - - let ih = hex::decode(ih_hex.trim()).expect("valid hex info hash"); - let info_hash = Id20::from_slice(&ih).expect("info hash must be 20 bytes"); - let our_peer_id = match peer_id_override { - Some(prefix) => { - let mut raw = [0u8; 20]; - let pb = prefix.as_bytes(); - let n = pb.len().min(20); - raw[..n].copy_from_slice(&pb[..n]); - // fill the remainder with pseudo-random-ish bytes - for (i, b) in raw.iter_mut().enumerate().skip(n) { - *b = (i as u8).wrapping_mul(37).wrapping_add(11); - } - Id20::from_slice(&raw).unwrap() - } - None => generate_peer_id(), - }; - - eprintln!( - "dialing {addr} info_hash={ih_hex} advertise_v2={advertise_v2} peer_id={:02x?}", - our_peer_id.0 - ); - - let spawn = SpawnPeer { - addr, - info_hash, - our_peer_id, - connect_timeout: Duration::from_secs(10), - read_timeout: Duration::from_secs(15), - encryption: EncryptionPolicy::PlaintextOnly, - advertise_v2, - ext_handshake_builder: None, - }; - - match connect(spawn).await { - Ok((handle, mut rx)) => { - eprintln!("CONNECTED (tcp + handshake write ok)"); - // Mimic rqbit: eagerly send Unchoke + Interested right after the - // handshake so the peer sees a complete, well-behaved client. - let _ = handle.tx.send(PeerCommand::Send(Message::Unchoke)).await; - let _ = handle.tx.send(PeerCommand::Send(Message::Interested)).await; - eprintln!("sent Unchoke + Interested"); - let mut idle_deadline = tokio::time::Instant::now() + Duration::from_secs(15); - loop { - match tokio::time::timeout_at(idle_deadline, rx.recv()).await { - Ok(Some(PeerEvent::Handshook { - peer_id, - reserved, - encrypted, - .. - })) => { - idle_deadline = tokio::time::Instant::now() + Duration::from_secs(15); - eprintln!( - "HANDSHOOK reserved={:02x?} encrypted={encrypted} remote_peer_id={:02x?}", - reserved, peer_id.0 - ); - } - Ok(Some(PeerEvent::Message(m))) => { - idle_deadline = tokio::time::Instant::now() + Duration::from_secs(15); - eprintln!("MSG {m:?}") - } - Ok(Some(PeerEvent::Disconnected { reason })) => { - eprintln!("DISCONNECTED: {reason}"); - break; - } - Ok(None) => { - eprintln!("event channel closed"); - break; - } - Err(_) => { - eprintln!("idle timeout (still connected, no further events)"); - break; - } - } - } - } - Err(e) => eprintln!("CONNECT FAILED: {e}"), - } -} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 17a81264..26e867da 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,8 +1,8 @@ { "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", "productName": "Risuko", - "version": "0.4.0", - "identifier": "app.risuko.native", + "version": "0.4.1", + "identifier": "app.risuko.Risuko", "build": { "devUrl": "http://127.0.0.1:9080", "frontendDist": "../dist/outputs", diff --git a/src-tauri/tauri.linux.arm64.conf.json b/src-tauri/tauri.linux.arm64.conf.json index a080c553..501fe3c5 100644 --- a/src-tauri/tauri.linux.arm64.conf.json +++ b/src-tauri/tauri.linux.arm64.conf.json @@ -1,3 +1,4 @@ { + "identifier": "app.risuko.Risuko", "bundle": {} } diff --git a/src-tauri/tauri.linux.armv7l.conf.json b/src-tauri/tauri.linux.armv7l.conf.json index a080c553..501fe3c5 100644 --- a/src-tauri/tauri.linux.armv7l.conf.json +++ b/src-tauri/tauri.linux.armv7l.conf.json @@ -1,3 +1,4 @@ { + "identifier": "app.risuko.Risuko", "bundle": {} } diff --git a/src-tauri/tauri.linux.x64.conf.json b/src-tauri/tauri.linux.x64.conf.json index a080c553..501fe3c5 100644 --- a/src-tauri/tauri.linux.x64.conf.json +++ b/src-tauri/tauri.linux.x64.conf.json @@ -1,3 +1,4 @@ { + "identifier": "app.risuko.Risuko", "bundle": {} }