Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,108 @@ env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
android-release:
name: Release (android)
runs-on: ubuntu-22.04
steps:
- name: Check out Git repository
uses: actions/checkout@v4

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE=".github/workflows/release.yml"
echo "== File = $FILE =="
if [ ! -f "$FILE" ]; then
  echo "Missing: $FILE"
  exit 1
fi

echo "== Line-numbered excerpt around the originally cited lines =="
nl -ba "$FILE" | sed -n '1,220p'

echo "== All uses: lines (with line numbers) =="
nl -ba "$FILE" | rg -n '^\s*uses:\s*' -n || true

echo "== Check whether any uses: entries use @<commit-sha> (40/64 hex) =="
# Extract uses lines and report if they match a likely SHA (40 hex or 64 hex)
nl -ba "$FILE" | rg '^\s*uses:\s*' | sed -E 's/^\s*[0-9]+\s+uses:\s*//' | while read -r uses; do
  if echo "$uses" | rg -q '@([0-9a-f]{40}|[0-9a-f]{64})$'; then
    echo "PINNED_SHA  $uses"
  else
    echo "NOT_PINNED  $uses"
  fi
done

Repository: YueMiyuki/Risuko

Length of output: 227


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE=".github/workflows/release.yml"
echo "== File = $FILE =="
if [ ! -f "$FILE" ]; then
  echo "Missing: $FILE"
  exit 1
fi

echo "== Line-numbered excerpt (1-220) =="
python3 - <<'PY'
path = ".github/workflows/release.yml"
with open(path, "r", encoding="utf-8") as f:
    for i, line in enumerate(f, start=1):
        if i > 220: break
        print(f"{i:5d}  {line.rstrip()}")
PY

echo "== All uses: entries (line-numbered) =="
python3 - <<'PY'
import re
path = ".github/workflows/release.yml"
pat = re.compile(r'^\s*uses:\s*(.+)\s*$')
with open(path, "r", encoding="utf-8") as f:
    for i, line in enumerate(f, start=1):
        m = pat.match(line)
        if m:
            print(f"{i:5d}  {m.group(1)}")
PY

echo "== Check whether uses: use a commit SHA suffix =="
python3 - <<'PY'
import re
path = ".github/workflows/release.yml"
pat = re.compile(r'^\s*uses:\s*(.+)\s*$')
sha_pat = re.compile(r'@([0-9a-f]{40}|[0-9a-f]{64})$')
with open(path, "r", encoding="utf-8") as f:
    for i, line in enumerate(f, start=1):
        m = pat.match(line)
        if not m:
            continue
        uses = m.group(1)
        kind = "PINNED_SHA" if sha_pat.search(uses) else "NOT_PINNED"
        print(f"{kind:11s}  line {i}: {uses}")
PY

Repository: YueMiyuki/Risuko

Length of output: 10984


Pin third-party GitHub Actions to commit SHAs.

.github/workflows/release.yml uses mutable action tags (e.g., actions/checkout@v4, actions/setup-node@v4, android-actions/setup-android@v3, dtolnay/rust-toolchain@stable, softprops/action-gh-release@v2, actions/upload-artifact@v4, tauri-apps/tauri-action@v0), which weakens CI supply-chain guarantees—pin every uses: to a full commit SHA.

Applies to uses: lines: 21, 24, 29, 35, 41, 53, 104, 113, 152, 155, 160, 166, 196, 277, 286, 317, 326, 367, 376.

🧰 Tools
🪛 zizmor (1.25.2)

[warning] 20-21: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)


[error] 21-21: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml at line 21, The workflow uses mutable action
tags (e.g., actions/checkout@v4, actions/setup-node@v4,
android-actions/setup-android@v3, dtolnay/rust-toolchain@stable,
softprops/action-gh-release@v2, actions/upload-artifact@v4,
tauri-apps/tauri-action@v0 and others referenced in the file) which must be
pinned to immutable commit SHAs; update every uses: entry (including the ones
called out in the review) to the corresponding full commit SHA for that action,
replacing tags like actions/checkout@v4 with actions/checkout@<commit-sha> and
do the same for actions/setup-node, android-actions/setup-android,
dtolnay/rust-toolchain, softprops/action-gh-release, actions/upload-artifact,
tauri-apps/tauri-action, etc., ensuring each uses: line in the workflow is
updated to a specific commit SHA and then run the workflow to verify no
breakages.


Comment on lines +20 to +22

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Show the relevant workflow sections around the referenced lines
FILE=".github/workflows/release.yml"
echo "== File: $FILE =="
nl -ba "$FILE" | sed -n '1,120p'
echo
echo "== Snippet around lines 15-40 =="
nl -ba "$FILE" | sed -n '15,45p'

echo
echo "== Find all checkout uses in this workflow =="
rg -n "uses:\s*actions/checkout@v" "$FILE" -n || true

echo
echo "== For each checkout, show following lines to inspect 'with:' config =="
# Print checkout blocks (checkout line + next 12 lines)
python3 - <<'PY'
import re, itertools, pathlib
path = pathlib.Path(".github/workflows/release.yml")
lines = path.read_text().splitlines()
for i,l in enumerate(lines):
    if re.search(r"uses:\s*actions/checkout@v\d+", l):
        start = max(0, i-2)
        end = min(len(lines), i+14)
        print(f"\n--- checkout occurrence at line {i+1} ---")
        for j in range(start, end):
            ln = j+1
            print(f"{ln:4d} {lines[j]}")
PY

Repository: YueMiyuki/Risuko

Length of output: 163


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE=".github/workflows/release.yml"
echo "== File: $FILE (first 140 lines) =="
# Show with line numbers using awk
awk '{printf "%4d %s\n", NR, $0}' "$FILE" | sed -n '1,140p'

echo
echo "== Snippet around lines 15-45 (requested area) =="
awk '{if (NR>=15 && NR<=45) printf "%4d %s\n", NR, $0}' "$FILE"

echo
echo "== Find all checkout uses in this workflow =="
rg -n "uses:\s*actions/checkout@v" "$FILE" || true

echo
echo "== For each checkout occurrence, print nearby lines (uses line + 15 lines) =="
python3 - <<'PY'
import re, pathlib
p=pathlib.Path(".github/workflows/release.yml")
lines=p.read_text().splitlines()
for i,l in enumerate(lines):
    if re.search(r"uses:\s*actions/checkout@v\d+", l):
        print(f"\n--- checkout occurrence at line {i+1} ---")
        for j in range(i, min(len(lines), i+16)):
            print(f"{j+1:4d} {lines[j]}")
PY

Repository: YueMiyuki/Risuko

Length of output: 7222


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE=".github/workflows/release.yml"
echo "== Snippet around line 130-190 =="
awk '{if (NR>=130 && NR<=200) printf "%4d %s\n", NR, $0}' "$FILE"

echo
echo "== Extract all 'uses: actions/checkout@v4' blocks including their immediate 'with:' sections (up to 15 lines) =="
python3 - <<'PY'
import re, pathlib
p=pathlib.Path(".github/workflows/release.yml")
lines=p.read_text().splitlines()
for i,l in enumerate(lines):
    if re.search(r"uses:\s*actions/checkout@v4\s*$", l):
        print(f"\n--- checkout occurrence at line {i+1} ---")
        # print until next step header or 20 lines
        for j in range(i, min(len(lines), i+22)):
            print(f"{j+1:4d} {lines[j]}")
            if j>i and re.search(r"^\s*-\s+name:\s+", lines[j]):
                break
PY

Repository: YueMiyuki/Risuko

Length of output: 3594


🌐 Web query:

actions/checkout@v4 persist-credentials default value

💡 Result:

For actions/checkout@v4, the input persist-credentials defaults to true (i.e., if you omit with: persist-credentials, credentials are configured/persisted in the local git config). [1][2] If you want to avoid persisting credentials, set: uses: actions/checkout@v4 with: persist-credentials: false [3][4]

Citations:


Disable persisted checkout credentials in the actions/checkout@v4 steps (android-release and release matrix).

Both actions/checkout@v4 usages omit with: persist-credentials: false, so credentials are persisted by default and may be exposed to later steps.

Suggested patch
       - name: Check out Git repository
         uses: actions/checkout@v4
+        with:
+          persist-credentials: false
       - name: Check out Git repository
         uses: actions/checkout@v4
+        with:
+          persist-credentials: false
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Check out Git repository
uses: actions/checkout@v4
- name: Check out Git repository
uses: actions/checkout@v4
with:
persist-credentials: false
🧰 Tools
🪛 zizmor (1.25.2)

[warning] 20-21: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)


[error] 21-21: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 20 - 22, Update both
actions/checkout@v4 steps named "Check out Git repository" used in the
android-release job and in the release matrix to explicitly disable persisted
credentials: add a with block containing persist-credentials: false so checkout
does not leave GITHUB_TOKEN credentials available to later steps; locate the
steps that use actions/checkout@v4 and insert the with: persist-credentials:
false setting for each occurrence.

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
run_install: false

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 24
cache: pnpm

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Install Android SDK packages
shell: bash
run: |
set -euo pipefail
sdkmanager \
"platforms;android-36" \
"build-tools;35.0.0" \
"ndk;27.2.12479018"

- name: Setup Rust Android targets
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Build Android release APKs
run: pnpm android:build
env:
ANDROID_NDK_VERSION: 27.2.12479018
ANDROID_API_LEVEL: 35

- name: Sign Android release APKs
run: pnpm android:sign
env:
ANDROID_SIGNING_KEYSTORE_BASE64: ${{ secrets.ANDROID_SIGNING_KEYSTORE_BASE64 }}
ANDROID_SIGNING_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEYSTORE_PASSWORD }}
ANDROID_SIGNING_KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_KEY_ALIAS }}
ANDROID_SIGNING_KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}

- name: Package Android APKs with standardized names
shell: bash
run: |
set -euo pipefail
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
version="${{ github.ref_name }}"; version="${version#v}"
else
version=$(grep -m1 '^version' src-tauri/Cargo.toml | sed 's/.*"\(.*\)"/\1/')
fi
mkdir -p dist/android
declare -A labels=(
[arm]=arm
[arm64]=arm64
[x86]=x86
[x86_64]=x64
)
for abi in arm arm64 x86 x86_64; do
src="src-tauri/gen/android/app/build/outputs/apk/${abi}/release/app-${abi}-release.apk"
if [[ ! -f "$src" ]]; then
echo "::error::Signed Android APK not found: $src"
find src-tauri/gen/android/app/build/outputs/apk -type f -name '*.apk' -print || true
exit 1
fi
dest="dist/android/Risuko_${version}_android_${labels[$abi]}.apk"
cp "$src" "$dest"
echo "packaged: $dest"
done

- name: Upload Android APKs to GitHub Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
files: dist/android/*.apk
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Android APK artifacts (manual builds)
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
uses: actions/upload-artifact@v4
with:
name: app-android
path: dist/android/*.apk

release:
name: Release (${{ matrix.platform }})
runs-on: ${{ matrix.os }}
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ release

# tauri
src-tauri/target
src-tauri/gen
src-tauri/gen/*
!src-tauri/gen/android/
!src-tauri/gen/android/**
Comment on lines +31 to +32

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid unignoring Android build artifacts wholesale.

Line 32 re-includes everything under src-tauri/gen/android/**, including generated build outputs. This is likely to bloat commits and leak transient artifacts. Re-allow only source/config files and keep **/build/** and .gradle/** ignored.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitignore around lines 31 - 32, Replace the blanket unignore of
src-tauri/gen/android/** with targeted unignore rules: keep the existing
negation for src-tauri/gen/android/ but remove or restrict
src-tauri/gen/android/** and instead explicitly unignore only the specific
source/config files needed (e.g., gradle wrapper, settings, and manifest files)
and re-add ignore patterns for transient artifacts like **/build/** and
**/.gradle/** so generated build outputs are not committed; update the
.gitignore entries around src-tauri/gen/android/, src-tauri/gen/android/**,
**/build/** and .gradle/** accordingly.


*.node
14 changes: 14 additions & 0 deletions README-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,20 @@ pnpm run dev
pnpm run build
```

### Android

需要 Android SDK 36、build-tools 35.0.0、NDK 27.2.12479018,以及 Rust 的 Android 目标

```bash
# Debug 包,单 ABI(快一些)
pnpm android:build:debug

# Release 拆 ABI 打包,并签名
pnpm android:build:signed
```

签名相关的环境变量在 `scripts/sign-android-apks.mjs`:`ANDROID_SIGNING_KEYSTORE_PATH`(CI 用 `ANDROID_SIGNING_KEYSTORE_BASE64`)、`ANDROID_SIGNING_KEYSTORE_PASSWORD`、`ANDROID_SIGNING_KEY_ALIAS`,可选 `ANDROID_SIGNING_KEY_PASSWORD`

## 🛠 技术栈

- [Tauri v2](https://v2.tauri.app/)
Expand Down
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,28 @@ pnpm run dev
pnpm run build
```

### Android

Requires Android SDK 36, build-tools 35.0.0, NDK 27.2.12479018, and Rust Android targets.

```bash
# Debug build, single ABI (faster)
pnpm android:build:debug

# Release APKs (split per ABI), then sign
pnpm android:build:signed
```

A few files under `src-tauri/gen/android/` are autogenerated by Tauri and gitignored on purpose:

- `tauri.settings.gradle` — has hardcoded paths into your local Cargo registry, would break on other machines
- `app/tauri.build.gradle.kts` — plugin dependency list
- `app/tauri.properties` — version numbers pulled from `tauri.conf.json`

`pnpm android:build` regenerates all three every time. If they go missing or look stale, just run a build. Don't commit them.

Signing reads `ANDROID_SIGNING_KEYSTORE_PATH` (or `ANDROID_SIGNING_KEYSTORE_BASE64` in CI), `ANDROID_SIGNING_KEYSTORE_PASSWORD`, `ANDROID_SIGNING_KEY_ALIAS`, and optionally `ANDROID_SIGNING_KEY_PASSWORD`. See `scripts/sign-android-apks.mjs`

## 🛠 Technology Stack

- [Tauri v2](https://v2.tauri.app/)
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "risuko",
"version": "0.3.3",
"version": "0.3.4",
"description": "A full-featured download manager",
"homepage": "https://risuko.vercel.app",
"author": {
Expand All @@ -19,6 +19,11 @@
"build": "node scripts/build.mjs",
"dev:renderer": "vite --config vite.renderer.config.ts --mode development --port 9080",
"pack:renderer": "vite build --config vite.renderer.config.ts --mode production",
"android:dev": "node scripts/android-env.mjs pnpm exec tauri android dev",
"android:build": "node scripts/android-env.mjs pnpm exec tauri android build --apk --split-per-abi",
"android:build:debug": "node scripts/android-env.mjs pnpm exec tauri android build --debug --target aarch64 --apk --split-per-abi",
"android:build:signed": "pnpm android:build && pnpm android:sign",
"android:sign": "node scripts/sign-android-apks.mjs",
"fmt": "pnpx @biomejs/biome check --write --max-diagnostics none",
"typecheck": "vue-tsc --noEmit -p tsconfig.json",
"knip": "pnpx knip --fix",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/app",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko download manager — launches the desktop app, downloading it from GitHub Releases on first run",
"license": "MIT",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-darwin-arm64",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for macOS ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-darwin-x64",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for macOS x64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-linux-arm64-gnu",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for Linux ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-linux-x64-gnu",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for Linux x64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/win32-arm64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-win32-arm64-msvc",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for Windows ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-cli/npm/win32-x64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli-win32-x64-msvc",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko CLI binary for Windows x64",
"repository": {
"type": "git",
Expand Down
14 changes: 7 additions & 7 deletions packages/risuko-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/cli",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko download engine CLI — multi-protocol downloads (HTTP, BitTorrent, ED2K, M3U8, FTP/SFTP)",
"license": "MIT",
"repository": {
Expand All @@ -24,12 +24,12 @@
"bin.js"
],
"optionalDependencies": {
"@risuko/cli-darwin-arm64": "0.3.3",
"@risuko/cli-darwin-x64": "0.3.3",
"@risuko/cli-linux-arm64-gnu": "0.3.3",
"@risuko/cli-linux-x64-gnu": "0.3.3",
"@risuko/cli-win32-arm64-msvc": "0.3.3",
"@risuko/cli-win32-x64-msvc": "0.3.3"
"@risuko/cli-darwin-arm64": "0.3.4",
"@risuko/cli-darwin-x64": "0.3.4",
"@risuko/cli-linux-arm64-gnu": "0.3.4",
"@risuko/cli-linux-x64-gnu": "0.3.4",
"@risuko/cli-win32-arm64-msvc": "0.3.4",
"@risuko/cli-win32-x64-msvc": "0.3.4"
},
"engines": {
"node": ">= 18"
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-darwin-arm64",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for macOS ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-darwin-x64",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for macOS x64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-linux-arm64-gnu",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for Linux ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-linux-x64-gnu",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for Linux x64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/win32-arm64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-win32-arm64-msvc",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for Windows ARM64",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/risuko-js/npm/win32-x64-msvc/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/js-win32-x64-msvc",
"version": "0.3.3",
"version": "0.3.4",
"description": "Risuko JS native module for Windows x64",
"repository": {
"type": "git",
Expand Down
14 changes: 7 additions & 7 deletions packages/risuko-js/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@risuko/risuko-js",
"version": "0.3.3",
"version": "0.3.4",
"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",
Expand Down Expand Up @@ -34,12 +34,12 @@
}
},
"optionalDependencies": {
"@risuko/js-darwin-arm64": "0.3.3",
"@risuko/js-darwin-x64": "0.3.3",
"@risuko/js-linux-x64-gnu": "0.3.3",
"@risuko/js-linux-arm64-gnu": "0.3.3",
"@risuko/js-win32-x64-msvc": "0.3.3",
"@risuko/js-win32-arm64-msvc": "0.3.3"
"@risuko/js-darwin-arm64": "0.3.4",
"@risuko/js-darwin-x64": "0.3.4",
"@risuko/js-linux-x64-gnu": "0.3.4",
"@risuko/js-linux-arm64-gnu": "0.3.4",
"@risuko/js-win32-x64-msvc": "0.3.4",
"@risuko/js-win32-arm64-msvc": "0.3.4"
},
"engines": {
"node": ">= 18"
Expand Down
13 changes: 13 additions & 0 deletions pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,16 @@ allowBuilds:
esbuild: true
unrs-resolver: true
vue-demi: true
minimumReleaseAgeExclude:
- '@risuko/cli-darwin-arm64@0.3.3'
- '@risuko/cli-darwin-x64@0.3.3'
- '@risuko/cli-linux-arm64-gnu@0.3.3'
- '@risuko/cli-linux-x64-gnu@0.3.3'
- '@risuko/cli-win32-arm64-msvc@0.3.3'
- '@risuko/cli-win32-x64-msvc@0.3.3'
- '@risuko/js-darwin-arm64@0.3.3'
- '@risuko/js-darwin-x64@0.3.3'
- '@risuko/js-linux-arm64-gnu@0.3.3'
- '@risuko/js-linux-x64-gnu@0.3.3'
- '@risuko/js-win32-arm64-msvc@0.3.3'
- '@risuko/js-win32-x64-msvc@0.3.3'
Loading