From 7df71917994cf6faa8babf293db6419cd28432c3 Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Fri, 20 Mar 2026 21:03:53 -0500 Subject: [PATCH] Fix: Attempt to Fix Nix/Flatpak (Testing) --- PKGBUILD | 13 +- README.md | 80 +- build-scripts/bump.sh | 45 - build-scripts/release.sh | 113 --- dev.moku.app.yml | 2 +- flake.lock | 102 +- flake.nix | 308 ++++--- package.json | 3 +- packaging/cargo-sources.json | 1024 ++++++++++++++++++++- packaging/frontend-dist.tar.gz | Bin 172554 -> 0 bytes pnpm-lock.yaml | 18 + src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 4 +- src-tauri/capabilities/default.json | 13 +- src-tauri/icons/Square107x107Logo.png | Bin 0 -> 2160 bytes src-tauri/icons/Square142x142Logo.png | Bin 0 -> 2946 bytes src-tauri/icons/Square150x150Logo.png | Bin 0 -> 3232 bytes src-tauri/icons/Square284x284Logo.png | Bin 0 -> 6322 bytes src-tauri/icons/Square30x30Logo.png | Bin 0 -> 538 bytes src-tauri/icons/Square310x310Logo.png | Bin 0 -> 6628 bytes src-tauri/icons/Square44x44Logo.png | Bin 0 -> 842 bytes src-tauri/icons/Square71x71Logo.png | Bin 0 -> 1289 bytes src-tauri/icons/Square89x89Logo.png | Bin 0 -> 1783 bytes src-tauri/src/lib.rs | 208 +++-- src-tauri/tauri.conf.json | 17 +- src/App.svelte | 26 +- src/assets/moku-icon-rounded.svg | 29 + src/assets/rounded-logo.png | Bin 29426 -> 0 bytes src/components/layout/SplashScreen.svelte | 89 +- src/components/pages/Explore.svelte | 372 ++++++++ src/components/settings/Settings.svelte | 64 +- src/store/state.svelte.ts | 32 +- vite.config.ts | 9 +- 33 files changed, 1953 insertions(+), 620 deletions(-) delete mode 100755 build-scripts/bump.sh delete mode 100755 build-scripts/release.sh delete mode 100644 packaging/frontend-dist.tar.gz create mode 100644 src-tauri/icons/Square107x107Logo.png create mode 100644 src-tauri/icons/Square142x142Logo.png create mode 100644 src-tauri/icons/Square150x150Logo.png create mode 100644 src-tauri/icons/Square284x284Logo.png create mode 100644 src-tauri/icons/Square30x30Logo.png create mode 100644 src-tauri/icons/Square310x310Logo.png create mode 100644 src-tauri/icons/Square44x44Logo.png create mode 100644 src-tauri/icons/Square71x71Logo.png create mode 100644 src-tauri/icons/Square89x89Logo.png create mode 100644 src/assets/moku-icon-rounded.svg delete mode 100644 src/assets/rounded-logo.png create mode 100644 src/components/pages/Explore.svelte diff --git a/PKGBUILD b/PKGBUILD index 834a38c..be51486 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,5 +1,5 @@ pkgname=moku -pkgver=0.3.0 +pkgver=0.4.0 pkgrel=1 pkgdesc="Native Linux manga reader frontend for Suwayomi-Server" arch=('x86_64') @@ -33,14 +33,8 @@ prepare() { build() { cd "Moku-$pkgver" - - # Build frontend pnpm build - - # Repack dist for Tauri tar -czf packaging/frontend-dist.tar.gz -C dist . - - # Build Tauri binary TAURI_SKIP_DEVSERVER_CHECK=true cargo build \ --release \ --manifest-path src-tauri/Cargo.toml @@ -49,19 +43,15 @@ build() { package() { cd "Moku-$pkgver" - # Moku binary install -Dm755 src-tauri/target/release/moku \ "$pkgdir/usr/bin/moku" - # Bundled JRE install -dm755 "$pkgdir/usr/lib/moku/jre" tar -xf "$srcdir/jdk.tar.gz" -C "$pkgdir/usr/lib/moku/jre" --strip-components=1 - # Suwayomi server jar install -Dm644 "$srcdir/suwayomi-server.jar" \ "$pkgdir/usr/lib/moku/tachidesk/Suwayomi-Server.jar" - # tachidesk-server wrapper script install -dm755 "$pkgdir/usr/lib/moku/tachidesk/default-conf" cat > "$pkgdir/usr/lib/moku/tachidesk/default-conf/server.conf" << 'EOF' server.ip = "127.0.0.1" @@ -109,7 +99,6 @@ exec /usr/lib/moku/jre/bin/java \ -jar /usr/lib/moku/tachidesk/Suwayomi-Server.jar EOF - # Desktop entry and icons install -Dm644 packaging/dev.moku.app.desktop \ "$pkgdir/usr/share/applications/dev.moku.app.desktop" install -Dm644 src-tauri/icons/32x32.png \ diff --git a/README.md b/README.md index 02946cf..0b7a31c 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,11 @@
- +

Moku

-

A fast, minimal manga reader for Suwayomi-Server.
Built with Tauri v2 and React.

- - - - - - - - - - - - -
+

A fast, minimal manga reader for Suwayomi-Server.
Built with Tauri v2 and Svelte.

--- -## Features - -### Reader -- **Single**, **double-page**, and **longstrip** reading modes -- **Infinite longstrip** — when Auto mode is enabled, the next chapter's pages are appended directly into the scroll without any re-render or gap; the entire series flows as one seamless ribbon -- Fit modes: fit width, fit height, fit screen, and 1:1 original -- Per-series zoom control via Ctrl+scroll or a slider popover -- RTL / LTR reading direction toggle -- Configurable page gaps -- Full keyboard navigation with rebindable keybinds -- UI auto-hides after 3 seconds of inactivity; reappears on cursor movement near edges -- Chapter-relative page counter that updates live as you scroll through the infinite strip -- Auto-mark chapters as read when the last page is reached - -### Library -- Grid view of your entire manga collection with lazy-loaded cover art -- Filter tabs: **Saved**, **Downloaded**, and **All** -- Genre tag filter chips — multi-select to narrow by any combination of tags -- In-line search -- Context menu: open, add/remove from library - -### Series Detail -- Cover, author, artist, status badge, genres, and synopsis -- Read progress bar with percentage -- Continue / Start / Re-read button that picks up exactly where you left off (including mid-chapter page) -- Chapter list with scanlator, upload date, and in-progress page indicator -- **Grid view** — displays all chapters as numbered tiles; read/unread/in-progress states are visually distinct at a glance; switches between list and grid with a single click -- Sort by newest or oldest first -- Jump-to-chapter input -- Bulk download menu: from current chapter, unread only, or all -- Per-chapter context menu: mark read/unread, mark all above as read, download, delete, bulk download from here -- Collapsible source details panel with source ID, language, and source migration - -### Search -- Cross-source search running up to 3 concurrent requests -- Language filter bar (preferred language default, per-language, or all) -- Results grouped by source with skeleton loading states - -### Sources & Extensions -- Browse and search installed sources, grouped by extension with per-language expansion -- Extension manager: install, update, remove, and install from external APK URL -- Repo refresh with update count badge - -### Downloads -- Download queue with live progress - -### History -- Reading history grouped by day with relative timestamps -- Per-entry thumbnail, chapter name, and last-read page -- Full-text search across titles and chapter names -- One-click clear - ---- - ## Requirements [Suwayomi-Server](https://github.com/Suwayomi/Suwayomi-Server) must be running. By default Moku expects it at `http://127.0.0.1:4567`. @@ -114,20 +47,15 @@ pnpm install pnpm tauri:dev ``` -> `tauri:dev` uses `src-tauri/tauri.dev.conf.json` to point at the Vite dev server, keeping the release build config clean for `nix build`. - --- - ## Stack | | | |---|---| | [Tauri v2](https://tauri.app) | Native app shell | -| [React](https://react.dev) + [TypeScript](https://www.typescriptlang.org) | UI | +| [Svelte](https://svelte.dev) + [TypeScript](https://www.typescriptlang.org) | UI | | [Vite](https://vitejs.dev) | Frontend bundler | -| [Zustand](https://zustand-demo.pmnd.rs) | State management | -| [Phosphor Icons](https://phosphoricons.com) | Icon set | | [Crane](https://github.com/ipetkov/crane) | Nix Rust builds | --- @@ -140,4 +68,4 @@ Distributed under the [Apache 2.0 License](./LICENSE). ## Disclaimer -Moku does not host or distribute any content. The developers have no affiliation with any content providers accessible through connected sources. \ No newline at end of file +Moku does not host or distribute any content. The developers have no affiliation with any content providers accessible through connected sources. diff --git a/build-scripts/bump.sh b/build-scripts/bump.sh deleted file mode 100755 index cc0dd37..0000000 --- a/build-scripts/bump.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash -# build-scripts/pkgbuild-bump.sh -# ───────────────────────────────────────────────────────────────────────────── -# Run this AFTER the git tag has been pushed to GitHub. -# -# Usage: -# ./build-scripts/pkgbuild-bump.sh 0.3.0 -set -euo pipefail - -RED='\033[0;31m'; GREEN='\033[0;32m'; CYAN='\033[0;36m'; BOLD='\033[1m'; RESET='\033[0m' -info() { echo -e "${CYAN} →${RESET} $*"; } -success() { echo -e "${GREEN} ✓${RESET} $*"; } -die() { echo -e "${RED} ✗${RESET} $*" >&2; exit 1; } -section() { echo -e "\n${BOLD}── $* ──${RESET}"; } - -[[ $# -lt 1 ]] && die "Usage: $0 " -VERSION="$1" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" -PKGBUILD="${REPO_ROOT}/PKGBUILD" - -command -v curl &>/dev/null || die "curl not found" -[[ -f "$PKGBUILD" ]] || die "PKGBUILD not found: $PKGBUILD" - -section "Patching PKGBUILD → ${VERSION}" - -TARBALL_URL="https://github.com/Youwes09/Moku/archive/refs/tags/v${VERSION}.tar.gz" -info "Fetching source tarball to compute sha256…" -TARBALL_SHA=$(curl -fsSL "$TARBALL_URL" | sha256sum | awk '{print $1}') - -sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD" -sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" - -# Replace only the first sha256 entry (source tarball) inside sha256sums=('...') -# The suwayomi jar and jdk hashes are pinned and stay untouched. -# Strategy: match the opening sha256sums=('' then swap just that first hash. -sed -i "s/\(sha256sums=('\)[0-9a-f]\{64\}/\1${TARBALL_SHA}/" "$PKGBUILD" - -# Verify the replacement landed -if ! grep -q "$TARBALL_SHA" "$PKGBUILD"; then - die "sha256 replacement failed — check PKGBUILD sha256sums format" -fi - -success "PKGBUILD patched (pkgver=${VERSION}, sha256=${TARBALL_SHA})" -info "PKGBUILD → ${PKGBUILD}" \ No newline at end of file diff --git a/build-scripts/release.sh b/build-scripts/release.sh deleted file mode 100755 index 5e73cd5..0000000 --- a/build-scripts/release.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env bash -# build-scripts/release.sh -# ───────────────────────────────────────────────────────────────────────────── -# Usage: -# ./build-scripts/release.sh 0.2.0 -# -# Requires: nix, flatpak-builder, appstream -set -euo pipefail - -# ── Colour helpers ───────────────────────────────────────────────────────────── -RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m' -CYAN='\033[0;36m'; BOLD='\033[1m'; RESET='\033[0m' -info() { echo -e "${CYAN} →${RESET} $*"; } -success() { echo -e "${GREEN} ✓${RESET} $*"; } -warn() { echo -e "${YELLOW} ⚠${RESET} $*"; } -die() { echo -e "${RED} ✗${RESET} $*" >&2; exit 1; } -section() { echo -e "\n${BOLD}── $* ──${RESET}"; } - -# ── Args ─────────────────────────────────────────────────────────────────────── -[[ $# -lt 1 ]] && die "Usage: $0 " -VERSION="$1" -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" -FLATPAK_MANIFEST="${REPO_ROOT}/dev.moku.app.yml" -PKGBUILD="${REPO_ROOT}/PKGBUILD" - -# ── Sanity checks ────────────────────────────────────────────────────────────── -section "Pre-flight" -command -v nix &>/dev/null || die "nix not found" -command -v curl &>/dev/null || die "curl not found" -[[ -f "$FLATPAK_MANIFEST" ]] || die "Flatpak manifest not found: $FLATPAK_MANIFEST" -[[ -f "$PKGBUILD" ]] || die "PKGBUILD not found: $PKGBUILD" -success "OK" - -# ── Bump versions ────────────────────────────────────────────────────────────── -section "Bumping version → ${VERSION}" -sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"${VERSION}\"/" \ - "${REPO_ROOT}/src-tauri/tauri.conf.json" -success "tauri.conf.json → ${VERSION}" - -sed -i "0,/^version = \"[^\"]*\"/s//version = \"${VERSION}\"/" \ - "${REPO_ROOT}/src-tauri/Cargo.toml" -success "Cargo.toml → ${VERSION}" - -# flake.nix has two `version = "x.y.z";` strings inside the frontend -# derivation and fetchPnpmDeps — both need to match. -sed -i "s/version = \"[^\"]*\";/version = \"${VERSION}\";/g" \ - "${REPO_ROOT}/flake.nix" -success "flake.nix → ${VERSION}" - -# ── Build frontend ───────────────────────────────────────────────────────────── -section "Building frontend" -cd "$REPO_ROOT" -nix develop --command pnpm install --frozen-lockfile -nix develop --command pnpm build -success "Frontend built → dist/" - -# ── Flatpak ──────────────────────────────────────────────────────────────────── -section "Regenerating cargo-sources.json" -cd "$REPO_ROOT" -nix-shell \ - -p "python311.withPackages(ps: [ ps.aiohttp ps.tomlkit ])" \ - --run "python3 packaging/flatpak-cargo-generator.py src-tauri/Cargo.lock -o packaging/cargo-sources.json" -success "cargo-sources.json updated" - -section "Rebuilding frontend-dist.tar.gz" -tar -czf packaging/frontend-dist.tar.gz -C dist . -FRONTEND_SHA=$(sha256sum packaging/frontend-dist.tar.gz | awk '{print $1}') -success "frontend-dist.tar.gz rebuilt sha256: ${FRONTEND_SHA}" - -section "Patching frontend-dist sha256 in dev.moku.app.yml" -PATCH_SCRIPT=$(mktemp /tmp/patch-sha256-XXXXXX.py) -cat > "$PATCH_SCRIPT" << PYEOF -import re, sys -path = "${FLATPAK_MANIFEST}" -new_sha = "${FRONTEND_SHA}" -text = open(path).read() -pattern = r'(path:\s*packaging/frontend-dist\.tar\.gz\s*\n\s*sha256:\s*)[0-9a-f]+' -replacement = r'\g<1>' + new_sha -updated, n = re.subn(pattern, replacement, text) -if n == 0: - sys.exit("Could not find frontend-dist sha256 in dev.moku.app.yml") -open(path, 'w').write(updated) -PYEOF -nix-shell -p python3 --run "python3 '$PATCH_SCRIPT'" -rm -f "$PATCH_SCRIPT" -success "dev.moku.app.yml sha256 updated" - -section "Building Flatpak bundle" -rm -rf "${REPO_ROOT}/build-dir" "${REPO_ROOT}/repo" -nix shell nixpkgs#appstream nixpkgs#flatpak-builder --command \ - flatpak-builder \ - --repo="${REPO_ROOT}/repo" \ - --force-clean \ - "${REPO_ROOT}/build-dir" \ - "$FLATPAK_MANIFEST" - -flatpak build-bundle \ - "${REPO_ROOT}/repo" \ - "${REPO_ROOT}/moku.flatpak" \ - dev.moku.app - -rm -rf "${REPO_ROOT}/build-dir" "${REPO_ROOT}/repo" -success "moku.flatpak created" - -# ── Done ─────────────────────────────────────────────────────────────────────── -echo "" -success "v${VERSION} ready" -info "Flatpak bundle → ${REPO_ROOT}/moku.flatpak" -echo "" -warn "PKGBUILD not patched yet — tag must exist on GitHub first." -info "After pushing the tag, run:" -echo -e " ${CYAN}./build-scripts/pkgbuild-bump.sh ${VERSION}${RESET}" \ No newline at end of file diff --git a/dev.moku.app.yml b/dev.moku.app.yml index 429618d..2552130 100644 --- a/dev.moku.app.yml +++ b/dev.moku.app.yml @@ -181,7 +181,7 @@ modules: path: . - type: file path: packaging/frontend-dist.tar.gz - sha256: c9bb5ee6613b2bc61e69a92cc1ef0029da3b61138d51b01d363f8ea524e51996 + sha256: c78a3f002f898011c4e70e1af781b37dac0fd995b5623170256d88339c90ca74 - packaging/cargo-sources.json - type: inline dest: src-tauri/.cargo diff --git a/flake.lock b/flake.lock index b3e4811..09846e2 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "crane": { "locked": { - "lastModified": 1771438068, - "narHash": "sha256-nGBbXvEZVe/egCPVPFcu89RFtd8Rf6J+4RFoVCFec0A=", + "lastModified": 1773857772, + "narHash": "sha256-5xsK26KRHf0WytBtsBnQYC/lTWDhQuT57HJ7SzuqZcM=", "owner": "ipetkov", "repo": "crane", - "rev": "b5090e53e9d68c523a4bb9ad42b4737ee6747597", + "rev": "b556d7bbae5ff86e378451511873dfd07e4504cd", "type": "github" }, "original": { @@ -15,32 +15,16 @@ "type": "github" } }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "type": "github" }, "original": { @@ -49,53 +33,13 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nix-appimage": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1757920913, - "narHash": "sha256-jd0QwCVz4O1sHHkeaZILD/7D6oyalceEJ4EFnWCgm0k=", - "owner": "ralismark", - "repo": "nix-appimage", - "rev": "7946addbc0d97e358a6d7aefe5e82310f0fe6b18", - "type": "github" - }, - "original": { - "owner": "ralismark", - "repo": "nix-appimage", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1771369470, - "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "lastModified": 1773821835, + "narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0182a361324364ae3f436a63005877674cf45efb", + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", "type": "github" }, "original": { @@ -107,11 +51,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1769909678, - "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "lastModified": 1772328832, + "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "72716169fe93074c333e8d0173151350670b824c", + "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", "type": "github" }, "original": { @@ -124,7 +68,6 @@ "inputs": { "crane": "crane", "flake-parts": "flake-parts", - "nix-appimage": "nix-appimage", "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay" } @@ -136,11 +79,11 @@ ] }, "locked": { - "lastModified": 1771556776, - "narHash": "sha256-zKprqMQDl3xVfhSSYvgru1IGXjFdxryWk+KqK0I20Xk=", + "lastModified": 1773975983, + "narHash": "sha256-zrRVwdfhDdohANqEhzY/ydeza6EXEi8AG6cyMRNYT9Q=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8b3f46b8a6d17ab46e533a5e3d5b1cc2ff228860", + "rev": "cc80954a95f6f356c303ed9f08d0b63ca86216ac", "type": "github" }, "original": { @@ -148,21 +91,6 @@ "repo": "rust-overlay", "type": "github" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 273d044..9a4a827 100644 --- a/flake.nix +++ b/flake.nix @@ -2,43 +2,34 @@ description = "Moku — manga reader frontend for Suwayomi"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; - crane.url = "github:ipetkov/crane"; + crane.url = "github:ipetkov/crane"; rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - nix-appimage = { - url = "github:ralismark/nix-appimage"; + url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = - inputs@{ flake-parts, crane, rust-overlay, nix-appimage, ... }: + inputs@{ flake-parts, crane, rust-overlay, ... }: flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ - "x86_64-linux" - "aarch64-linux" - ]; + systems = [ "x86_64-linux" "aarch64-linux" ]; - perSystem = - { system, pkgs, lib, ... }: + perSystem = { system, lib, ... }: let - pkgs' = import inputs.nixpkgs { + version = "0.4.0"; + + pkgs = import inputs.nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; - rustToolchain = pkgs'.rust-bin.stable.latest.default.override { - extensions = [ - "rust-src" - "rust-analyzer" - ]; + rustToolchain = pkgs.rust-bin.stable.latest.default.override { + extensions = [ "rust-src" "rust-analyzer" ]; }; - craneLib = (crane.mkLib pkgs').overrideToolchain rustToolchain; + craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain; runtimeLibs = with pkgs; [ webkitgtk_4_1 @@ -65,56 +56,44 @@ || base == "package.json" || base == "pnpm-lock.yaml" || base == "tsconfig.json" - || base == "tsconfig.node.json" - || base == "vite.config.ts" - || base == "postcss.config.js" - || base == "postcss.config.cjs" - || base == "tailwind.config.js" - || base == "tailwind.config.ts"; + || base == "vite.config.ts"; }; frontend = pkgs.stdenv.mkDerivation { - pname = "moku-frontend"; - version = "0.3.0"; - src = frontendSrc; + pname = "moku-frontend"; + inherit version; + src = frontendSrc; - nativeBuildInputs = with pkgs; [ - nodejs_22 - pnpm - pnpmConfigHook - ]; + nativeBuildInputs = with pkgs; [ nodejs_22 pnpm pnpmConfigHook ]; pnpmDeps = pkgs.fetchPnpmDeps { - pname = "moku-frontend"; - version = "0.3.0"; - src = frontendSrc; + pname = "moku-frontend"; + inherit version; + src = frontendSrc; fetcherVersion = 1; - hash = "sha256-bpGYsB534RPNNAcYR9BA61vvFpSG6Xu2hY923PakCyY="; + hash = "sha256-FsZTHeBS9qQ9KYgiwDX1vam6uJXK8OjLe5U6Jfu33lc="; }; - buildPhase = "pnpm build"; + buildPhase = "pnpm build"; installPhase = "cp -r dist $out"; }; cargoSrc = lib.cleanSourceWith { - src = ./src-tauri; + src = ./src-tauri; filter = path: type: (craneLib.filterCargoSources path type) - || (lib.hasInfix "/icons/" path) + || (lib.hasInfix "/icons/" path) || (lib.hasInfix "/capabilities/" path) || (builtins.baseNameOf path == "tauri.conf.json"); }; commonArgs = { - src = cargoSrc; - cargoToml = ./src-tauri/Cargo.toml; - cargoLock = ./src-tauri/Cargo.lock; + src = cargoSrc; + cargoToml = ./src-tauri/Cargo.toml; + cargoLock = ./src-tauri/Cargo.lock; strictDeps = true; - buildInputs = runtimeLibs; - nativeBuildInputs = with pkgs; [ - pkg-config - wrapGAppsHook3 - ]; + buildInputs = runtimeLibs; + nativeBuildInputs = with pkgs; [ pkg-config wrapGAppsHook3 ]; preBuild = '' cp -r ${frontend} ../dist ''; @@ -126,6 +105,36 @@ inherit cargoArtifacts; meta.mainProgram = "moku"; postInstall = '' + mkdir -p "$out/share/applications" + cat > "$out/share/applications/moku.desktop" << EOF +[Desktop Entry] +Version=1.0 +Type=Application +Name=Moku +Comment=Manga reader frontend for Suwayomi +Exec=$out/bin/moku +Icon=moku +Terminal=false +Categories=Graphics;Viewer; +Keywords=manga;comic;reader;suwayomi; +StartupWMClass=moku +EOF + + for size in 32x32 128x128 256x256 512x512; do + src="icons/$size.png" + [ -f "$src" ] && install -Dm644 "$src" \ + "$out/share/icons/hicolor/$size/apps/moku.png" + done + + for size in 128x128 256x256; do + src="icons/''${size}@2x.png" + [ -f "$src" ] && install -Dm644 "$src" \ + "$out/share/icons/hicolor/''${size}@2/apps/moku.png" + done + + install -Dm644 "${./src/assets/moku-icon.svg}" \ + "$out/share/icons/hicolor/scalable/apps/moku.svg" + wrapProgram $out/bin/moku \ --prefix XDG_DATA_DIRS : "${lib.makeSearchPath "share/gsettings-schemas" [ pkgs.gsettings-desktop-schemas @@ -134,72 +143,139 @@ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeLibs}" \ --prefix PATH : "${lib.makeBinPath [ pkgs.suwayomi-server ]}" \ --set GDK_BACKEND wayland \ - --set WEBKIT_FORCE_SANDBOX 0 - - # ── Icon ───────────────────────────────────────────────────────── - # Tauri bakes several sizes into src-tauri/icons/. We prefer the - # largest PNG (512x512) for the hicolor theme, and also install the - # rounded 32x32 used as the in-app logo so small sizes look right. - # Adjust the source filenames if yours differ. - for size in 32x32 128x128 256x256 512x512; do - src="icons/$size.png" - if [ -f "$src" ]; then - install -Dm644 "$src" \ - "$out/share/icons/hicolor/$size/apps/moku.png" - fi - done - - # @2x variants that Tauri also generates - for size in 128x128 256x256; do - src="icons/''${size}@2x.png" - if [ -f "$src" ]; then - install -Dm644 "$src" \ - "$out/share/icons/hicolor/''${size}@2/apps/moku.png" - fi - done - - # Scalable SVG — src/assets/moku-icon.svg is the rounded version - # referenced in SplashScreen.tsx. Pull it straight from the source - # tree so the launcher always uses the same rounded artwork. - install -Dm644 "${./src/assets/moku-icon.svg}" \ - "$out/share/icons/hicolor/scalable/apps/moku.svg" - - # ── .desktop entry ─────────────────────────────────────────────── - install -Dm644 /dev/stdin \ - "$out/share/applications/moku.desktop" <"; exit 1; } + VERSION="$1" + REPO="$(git rev-parse --show-toplevel)" + sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" \ + "$REPO/src-tauri/tauri.conf.json" + sed -i "0,/^version = \"[^\"]*\"/s//version = \"$VERSION\"/" \ + "$REPO/src-tauri/Cargo.toml" + sed -i "s/version = \"[^\"]*\";/version = \"$VERSION\";/g" \ + "$REPO/flake.nix" + echo "Bumped to $VERSION" + ''; + }; + + flatpakScript = pkgs.writeShellApplication { + name = "moku-flatpak"; + runtimeInputs = with pkgs; [ + gnused coreutils git + nodejs_22 pnpm + appstream flatpak-builder flatpak + (python3.withPackages (ps: [ ps.aiohttp ps.tomlkit ])) + ]; + text = '' + [[ $# -lt 1 ]] && { echo "Usage: nix run .#flatpak -- "; exit 1; } + VERSION="$1" + REPO="$(git rev-parse --show-toplevel)" + MANIFEST="$REPO/dev.moku.app.yml" + + echo "── Bumping versions ──" + sed -i "s/\"version\": \"[^\"]*\"/\"version\": \"$VERSION\"/" \ + "$REPO/src-tauri/tauri.conf.json" + sed -i "0,/^version = \"[^\"]*\"/s//version = \"$VERSION\"/" \ + "$REPO/src-tauri/Cargo.toml" + sed -i "s/version = \"[^\"]*\";/version = \"$VERSION\";/g" \ + "$REPO/flake.nix" + echo "Done" + + echo "── Building frontend ──" + cd "$REPO" + pnpm install --frozen-lockfile + pnpm build + echo "Done" + + echo "── Repacking frontend-dist.tar.gz ──" + tar -czf "$REPO/packaging/frontend-dist.tar.gz" -C "$REPO/dist" . + FRONTEND_SHA=$(sha256sum "$REPO/packaging/frontend-dist.tar.gz" | awk '{print $1}') + echo "sha256: $FRONTEND_SHA" + + echo "── Patching manifest sha256 ──" + python3 - "$MANIFEST" "$FRONTEND_SHA" <<'PYEOF' + import re, sys + path, sha = sys.argv[1], sys.argv[2] + text = open(path).read() + updated, n = re.subn( + r'(path:\s*packaging/frontend-dist\.tar\.gz\s*\n\s*sha256:\s*)[0-9a-f]+', + r'\g<1>' + sha, text) + if n == 0: + sys.exit("ERROR: could not find frontend-dist sha256 in manifest") + open(path, 'w').write(updated) + PYEOF + echo "Done" + + echo "── Regenerating cargo-sources.json ──" + python3 "$REPO/packaging/flatpak-cargo-generator.py" \ + "$REPO/src-tauri/Cargo.lock" \ + -o "$REPO/packaging/cargo-sources.json" + echo "Done" + + echo "── Building flatpak ──" + rm -rf "$REPO/build-dir" "$REPO/repo" + flatpak-builder \ + --repo="$REPO/repo" \ + --force-clean \ + "$REPO/build-dir" \ + "$MANIFEST" + flatpak build-bundle "$REPO/repo" "$REPO/moku.flatpak" dev.moku.app + rm -rf "$REPO/build-dir" "$REPO/repo" + echo "moku.flatpak created" + + echo "" + echo "Done — v$VERSION" + echo " -> $REPO/moku.flatpak" + echo "" + echo "After pushing the tag, run:" + echo " nix run .#pkgbuild-bump -- $VERSION" + ''; + }; + + pkgbuildBumpScript = pkgs.writeShellApplication { + name = "moku-pkgbuild-bump"; + runtimeInputs = with pkgs; [ gnused curl coreutils git ]; + text = '' + [[ $# -lt 1 ]] && { echo "Usage: nix run .#pkgbuild-bump -- "; exit 1; } + VERSION="$1" + REPO="$(git rev-parse --show-toplevel)" + PKGBUILD="$REPO/PKGBUILD" + [[ -f "$PKGBUILD" ]] || { echo "PKGBUILD not found"; exit 1; } + + TARBALL_URL="https://github.com/Youwes09/Moku/archive/refs/tags/v$VERSION.tar.gz" + echo "Fetching tarball sha256..." + TARBALL_SHA=$(curl -fsSL "$TARBALL_URL" | sha256sum | awk '{print $1}') + + sed -i "s/^pkgver=.*/pkgver=$VERSION/" "$PKGBUILD" + sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" + sed -i "s/\(sha256sums=('\)[0-9a-f]\{64\}/\1$TARBALL_SHA/" "$PKGBUILD" + + grep -q "$TARBALL_SHA" "$PKGBUILD" \ + || { echo "ERROR: sha256 replacement failed"; exit 1; } + + echo "PKGBUILD -> $VERSION ($TARBALL_SHA)" + ''; + }; + in { - # Expose as both a runnable app and installable packages. apps = { - default = { - type = "app"; - program = "${moku}/bin/moku"; - }; - moku = { - type = "app"; - program = "${moku}/bin/moku"; - }; + default = { type = "app"; program = "${moku}/bin/moku"; }; + moku = { type = "app"; program = "${moku}/bin/moku"; }; + bump = { type = "app"; program = "${bumpScript}/bin/moku-bump"; }; + flatpak = { type = "app"; program = "${flatpakScript}/bin/moku-flatpak"; }; + pkgbuild-bump = { type = "app"; program = "${pkgbuildBumpScript}/bin/moku-pkgbuild-bump"; }; }; packages = { inherit moku frontend; default = moku; - appimage = nix-appimage.bundlers."${system}".default moku; }; devShells.default = pkgs.mkShell { @@ -214,26 +290,16 @@ xdg-utils ]; shellHook = '' - export APPIMAGE_EXTRACT_AND_RUN=1 export NO_STRIP=true export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig''${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}''${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}" - if [ ! -e /usr/bin/xdg-open ]; then - sudo ln -sf ${pkgs.xdg-utils}/bin/xdg-open /usr/bin/xdg-open - fi - - LINUXDEPLOY="$HOME/.cache/tauri/linuxdeploy-x86_64.AppImage" - LINUXDEPLOY_REAL="$HOME/.cache/tauri/linuxdeploy-x86_64.AppImage.real" - if [ -f "$LINUXDEPLOY" ] && [ ! -f "$LINUXDEPLOY_REAL" ]; then - mv "$LINUXDEPLOY" "$LINUXDEPLOY_REAL" - printf '#!/bin/sh\nexec ${pkgs.appimage-run}/bin/appimage-run "%s" "$@"\n' "$LINUXDEPLOY_REAL" > "$LINUXDEPLOY" - chmod +x "$LINUXDEPLOY" - echo "linuxdeploy wrapped with appimage-run" - fi - - echo "Moku dev shell" - echo " pnpm install && pnpm tauri:dev" + echo "Moku dev shell — pnpm install && pnpm tauri:dev" + echo "" + echo "Release:" + echo " nix run .#bump -- bump versions only" + echo " nix run .#flatpak -- full flatpak build" + echo " nix run .#pkgbuild-bump -- patch PKGBUILD (after tag push)" ''; }; diff --git a/package.json b/package.json index cc9a23a..9c47d11 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "dev": "vite", "build": "vite build", "preview": "vite preview", - "tauri": "tauri" + "tauri": "tauri", + "tauri:dev": "tauri dev --config src-tauri/tauri.dev.conf.json" }, "dependencies": { "@tauri-apps/api": "^2.0.0", diff --git a/packaging/cargo-sources.json b/packaging/cargo-sources.json index 110bbe9..4bd0467 100644 --- a/packaging/cargo-sources.json +++ b/packaging/cargo-sources.json @@ -12,6 +12,19 @@ "dest": "cargo/vendor/adler2-2.0.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/aes/aes-0.8.4.crate", + "sha256": "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0", + "dest": "cargo/vendor/aes-0.8.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0\", \"files\": {}}", + "dest": "cargo/vendor/aes-0.8.4", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -77,6 +90,19 @@ "dest": "cargo/vendor/anyhow-1.0.102", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/arbitrary/arbitrary-1.4.2.crate", + "sha256": "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1", + "dest": "cargo/vendor/arbitrary-1.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1\", \"files\": {}}", + "dest": "cargo/vendor/arbitrary-1.4.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -285,6 +311,32 @@ "dest": "cargo/vendor/bytes-1.11.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bzip2/bzip2-0.5.2.crate", + "sha256": "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47", + "dest": "cargo/vendor/bzip2-0.5.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47\", \"files\": {}}", + "dest": "cargo/vendor/bzip2-0.5.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/bzip2-sys/bzip2-sys-0.1.13+1.0.8.crate", + "sha256": "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14", + "dest": "cargo/vendor/bzip2-sys-0.1.13+1.0.8" + }, + { + "type": "inline", + "contents": "{\"package\": \"225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14\", \"files\": {}}", + "dest": "cargo/vendor/bzip2-sys-0.1.13+1.0.8", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -454,6 +506,19 @@ "dest": "cargo/vendor/chrono-0.4.43", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/cipher/cipher-0.4.4.crate", + "sha256": "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad", + "dest": "cargo/vendor/cipher-0.4.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad\", \"files\": {}}", + "dest": "cargo/vendor/cipher-0.4.4", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -467,6 +532,19 @@ "dest": "cargo/vendor/combine-4.6.7", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/constant_time_eq/constant_time_eq-0.3.1.crate", + "sha256": "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6", + "dest": "cargo/vendor/constant_time_eq-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6\", \"files\": {}}", + "dest": "cargo/vendor/constant_time_eq-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -493,6 +571,19 @@ "dest": "cargo/vendor/cookie-0.18.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/core-foundation/core-foundation-0.9.4.crate", + "sha256": "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f", + "dest": "cargo/vendor/core-foundation-0.9.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f\", \"files\": {}}", + "dest": "cargo/vendor/core-foundation-0.9.4", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -558,6 +649,32 @@ "dest": "cargo/vendor/cpufeatures-0.2.17", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc/crc-3.4.0.crate", + "sha256": "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d", + "dest": "cargo/vendor/crc-3.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d\", \"files\": {}}", + "dest": "cargo/vendor/crc-3.4.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crc-catalog/crc-catalog-2.4.0.crate", + "sha256": "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5", + "dest": "cargo/vendor/crc-catalog-2.4.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5\", \"files\": {}}", + "dest": "cargo/vendor/crc-catalog-2.4.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -584,6 +701,32 @@ "dest": "cargo/vendor/crossbeam-channel-0.5.15", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-deque/crossbeam-deque-0.8.6.crate", + "sha256": "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51", + "dest": "cargo/vendor/crossbeam-deque-0.8.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-deque-0.8.6", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/crossbeam-epoch/crossbeam-epoch-0.9.18.crate", + "sha256": "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e\", \"files\": {}}", + "dest": "cargo/vendor/crossbeam-epoch-0.9.18", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -688,6 +831,19 @@ "dest": "cargo/vendor/darling_macro-0.21.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/deflate64/deflate64-0.1.11.crate", + "sha256": "807800ff3288b621186fe0a8f3392c4652068257302709c24efd918c3dffcdc2", + "dest": "cargo/vendor/deflate64-0.1.11" + }, + { + "type": "inline", + "contents": "{\"package\": \"807800ff3288b621186fe0a8f3392c4652068257302709c24efd918c3dffcdc2\", \"files\": {}}", + "dest": "cargo/vendor/deflate64-0.1.11", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -701,6 +857,19 @@ "dest": "cargo/vendor/deranged-0.5.6", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/derive_arbitrary/derive_arbitrary-1.4.2.crate", + "sha256": "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a", + "dest": "cargo/vendor/derive_arbitrary-1.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a\", \"files\": {}}", + "dest": "cargo/vendor/derive_arbitrary-1.4.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -909,6 +1078,19 @@ "dest": "cargo/vendor/dyn-clone-1.0.20", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/either/either-1.15.0.crate", + "sha256": "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719", + "dest": "cargo/vendor/either-1.15.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\", \"files\": {}}", + "dest": "cargo/vendor/either-1.15.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -987,6 +1169,19 @@ "dest": "cargo/vendor/errno-0.3.14", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/fastrand/fastrand-2.3.0.crate", + "sha256": "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be", + "dest": "cargo/vendor/fastrand-2.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be\", \"files\": {}}", + "dest": "cargo/vendor/fastrand-2.3.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1065,6 +1260,19 @@ "dest": "cargo/vendor/foldhash-0.1.5", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foreign-types/foreign-types-0.3.2.crate", + "sha256": "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1", + "dest": "cargo/vendor/foreign-types-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1\", \"files\": {}}", + "dest": "cargo/vendor/foreign-types-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1091,6 +1299,19 @@ "dest": "cargo/vendor/foreign-types-macros-0.2.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/foreign-types-shared/foreign-types-shared-0.1.1.crate", + "sha256": "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b", + "dest": "cargo/vendor/foreign-types-shared-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b\", \"files\": {}}", + "dest": "cargo/vendor/foreign-types-shared-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1351,6 +1572,19 @@ "dest": "cargo/vendor/generic-array-0.14.7", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/gethostname/gethostname-1.1.0.crate", + "sha256": "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8", + "dest": "cargo/vendor/gethostname-1.1.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8\", \"files\": {}}", + "dest": "cargo/vendor/gethostname-1.1.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1533,6 +1767,19 @@ "dest": "cargo/vendor/gtk3-macros-0.18.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/h2/h2-0.4.13.crate", + "sha256": "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54", + "dest": "cargo/vendor/h2-0.4.13" + }, + { + "type": "inline", + "contents": "{\"package\": \"2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54\", \"files\": {}}", + "dest": "cargo/vendor/h2-0.4.13", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1611,6 +1858,19 @@ "dest": "cargo/vendor/hex-0.4.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hmac/hmac-0.12.1.crate", + "sha256": "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e", + "dest": "cargo/vendor/hmac-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e\", \"files\": {}}", + "dest": "cargo/vendor/hmac-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1689,6 +1949,32 @@ "dest": "cargo/vendor/hyper-1.8.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hyper-rustls/hyper-rustls-0.27.7.crate", + "sha256": "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58", + "dest": "cargo/vendor/hyper-rustls-0.27.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58\", \"files\": {}}", + "dest": "cargo/vendor/hyper-rustls-0.27.7", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/hyper-tls/hyper-tls-0.6.0.crate", + "sha256": "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0", + "dest": "cargo/vendor/hyper-tls-0.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0\", \"files\": {}}", + "dest": "cargo/vendor/hyper-tls-0.6.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -1923,6 +2209,19 @@ "dest": "cargo/vendor/infer-0.19.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/inout/inout-0.1.4.crate", + "sha256": "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01", + "dest": "cargo/vendor/inout-0.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01\", \"files\": {}}", + "dest": "cargo/vendor/inout-0.1.4", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2040,6 +2339,19 @@ "dest": "cargo/vendor/jni-sys-0.3.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/jobserver/jobserver-0.1.34.crate", + "sha256": "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33", + "dest": "cargo/vendor/jobserver-0.1.34" + }, + { + "type": "inline", + "contents": "{\"package\": \"9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33\", \"files\": {}}", + "dest": "cargo/vendor/jobserver-0.1.34", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2196,6 +2508,19 @@ "dest": "cargo/vendor/libredox-0.1.12", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/linux-raw-sys/linux-raw-sys-0.12.1.crate", + "sha256": "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53", + "dest": "cargo/vendor/linux-raw-sys-0.12.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53\", \"files\": {}}", + "dest": "cargo/vendor/linux-raw-sys-0.12.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2235,6 +2560,32 @@ "dest": "cargo/vendor/log-0.4.29", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lzma-rs/lzma-rs-0.3.0.crate", + "sha256": "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e", + "dest": "cargo/vendor/lzma-rs-0.3.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e\", \"files\": {}}", + "dest": "cargo/vendor/lzma-rs-0.3.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/lzma-sys/lzma-sys-0.1.20.crate", + "sha256": "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27", + "dest": "cargo/vendor/lzma-sys-0.1.20" + }, + { + "type": "inline", + "contents": "{\"package\": \"5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27\", \"files\": {}}", + "dest": "cargo/vendor/lzma-sys-0.1.20", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2365,6 +2716,19 @@ "dest": "cargo/vendor/muda-0.17.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/native-tls/native-tls-0.2.18.crate", + "sha256": "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2", + "dest": "cargo/vendor/native-tls-0.2.18" + }, + { + "type": "inline", + "contents": "{\"package\": \"465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2\", \"files\": {}}", + "dest": "cargo/vendor/native-tls-0.2.18", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2420,14 +2784,14 @@ { "type": "archive", "archive-type": "tar-gzip", - "url": "https://static.crates.io/crates/nix/nix-0.29.0.crate", - "sha256": "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46", - "dest": "cargo/vendor/nix-0.29.0" + "url": "https://static.crates.io/crates/nix/nix-0.30.1.crate", + "sha256": "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6", + "dest": "cargo/vendor/nix-0.30.1" }, { "type": "inline", - "contents": "{\"package\": \"71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46\", \"files\": {}}", - "dest": "cargo/vendor/nix-0.29.0", + "contents": "{\"package\": \"74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6\", \"files\": {}}", + "dest": "cargo/vendor/nix-0.30.1", "dest-filename": ".cargo-checksum.json" }, { @@ -2443,6 +2807,19 @@ "dest": "cargo/vendor/nodrop-0.1.14", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ntapi/ntapi-0.4.3.crate", + "sha256": "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae", + "dest": "cargo/vendor/ntapi-0.4.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae\", \"files\": {}}", + "dest": "cargo/vendor/ntapi-0.4.3", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2586,6 +2963,19 @@ "dest": "cargo/vendor/objc2-core-image-0.3.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/objc2-core-location/objc2-core-location-0.3.2.crate", + "sha256": "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009", + "dest": "cargo/vendor/objc2-core-location-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009\", \"files\": {}}", + "dest": "cargo/vendor/objc2-core-location-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2716,6 +3106,19 @@ "dest": "cargo/vendor/objc2-ui-kit-0.3.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/objc2-user-notifications/objc2-user-notifications-0.3.2.crate", + "sha256": "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e", + "dest": "cargo/vendor/objc2-user-notifications-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e\", \"files\": {}}", + "dest": "cargo/vendor/objc2-user-notifications-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2755,6 +3158,58 @@ "dest": "cargo/vendor/open-5.3.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl/openssl-0.10.76.crate", + "sha256": "951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf", + "dest": "cargo/vendor/openssl-0.10.76" + }, + { + "type": "inline", + "contents": "{\"package\": \"951c002c75e16ea2c65b8c7e4d3d51d5530d8dfa7d060b4776828c88cfb18ecf\", \"files\": {}}", + "dest": "cargo/vendor/openssl-0.10.76", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-macros/openssl-macros-0.1.1.crate", + "sha256": "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c", + "dest": "cargo/vendor/openssl-macros-0.1.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c\", \"files\": {}}", + "dest": "cargo/vendor/openssl-macros-0.1.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-probe/openssl-probe-0.2.1.crate", + "sha256": "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe", + "dest": "cargo/vendor/openssl-probe-0.2.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe\", \"files\": {}}", + "dest": "cargo/vendor/openssl-probe-0.2.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/openssl-sys/openssl-sys-0.9.112.crate", + "sha256": "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb", + "dest": "cargo/vendor/openssl-sys-0.9.112" + }, + { + "type": "inline", + "contents": "{\"package\": \"57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb\", \"files\": {}}", + "dest": "cargo/vendor/openssl-sys-0.9.112", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2768,6 +3223,19 @@ "dest": "cargo/vendor/option-ext-0.2.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/os_info/os_info-3.14.0.crate", + "sha256": "e4022a17595a00d6a369236fdae483f0de7f0a339960a53118b818238e132224", + "dest": "cargo/vendor/os_info-3.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"e4022a17595a00d6a369236fdae483f0de7f0a339960a53118b818238e132224\", \"files\": {}}", + "dest": "cargo/vendor/os_info-3.14.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -2846,6 +3314,19 @@ "dest": "cargo/vendor/pathdiff-0.2.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/pbkdf2/pbkdf2-0.12.2.crate", + "sha256": "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2", + "dest": "cargo/vendor/pbkdf2-0.12.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2\", \"files\": {}}", + "dest": "cargo/vendor/pbkdf2-0.12.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3405,6 +3886,32 @@ "dest": "cargo/vendor/raw-window-handle-0.6.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon/rayon-1.11.0.crate", + "sha256": "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f", + "dest": "cargo/vendor/rayon-1.11.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f\", \"files\": {}}", + "dest": "cargo/vendor/rayon-1.11.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rayon-core/rayon-core-1.13.0.crate", + "sha256": "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91", + "dest": "cargo/vendor/rayon-core-1.13.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91\", \"files\": {}}", + "dest": "cargo/vendor/rayon-core-1.13.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3509,6 +4016,19 @@ "dest": "cargo/vendor/regex-syntax-0.8.9", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/reqwest/reqwest-0.12.28.crate", + "sha256": "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147", + "dest": "cargo/vendor/reqwest-0.12.28" + }, + { + "type": "inline", + "contents": "{\"package\": \"eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147\", \"files\": {}}", + "dest": "cargo/vendor/reqwest-0.12.28", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3522,6 +4042,19 @@ "dest": "cargo/vendor/reqwest-0.13.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ring/ring-0.17.14.crate", + "sha256": "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7", + "dest": "cargo/vendor/ring-0.17.14" + }, + { + "type": "inline", + "contents": "{\"package\": \"a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7\", \"files\": {}}", + "dest": "cargo/vendor/ring-0.17.14", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3535,6 +4068,58 @@ "dest": "cargo/vendor/rustc_version-0.4.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustix/rustix-1.1.4.crate", + "sha256": "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190", + "dest": "cargo/vendor/rustix-1.1.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190\", \"files\": {}}", + "dest": "cargo/vendor/rustix-1.1.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls/rustls-0.23.37.crate", + "sha256": "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4", + "dest": "cargo/vendor/rustls-0.23.37" + }, + { + "type": "inline", + "contents": "{\"package\": \"758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4\", \"files\": {}}", + "dest": "cargo/vendor/rustls-0.23.37", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-pki-types/rustls-pki-types-1.14.0.crate", + "sha256": "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd", + "dest": "cargo/vendor/rustls-pki-types-1.14.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd\", \"files\": {}}", + "dest": "cargo/vendor/rustls-pki-types-1.14.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/rustls-webpki/rustls-webpki-0.103.10.crate", + "sha256": "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef", + "dest": "cargo/vendor/rustls-webpki-0.103.10" + }, + { + "type": "inline", + "contents": "{\"package\": \"df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef\", \"files\": {}}", + "dest": "cargo/vendor/rustls-webpki-0.103.10", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3548,6 +4133,19 @@ "dest": "cargo/vendor/rustversion-1.0.22", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/ryu/ryu-1.0.23.crate", + "sha256": "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f", + "dest": "cargo/vendor/ryu-1.0.23" + }, + { + "type": "inline", + "contents": "{\"package\": \"9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f\", \"files\": {}}", + "dest": "cargo/vendor/ryu-1.0.23", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3561,6 +4159,19 @@ "dest": "cargo/vendor/same-file-1.0.6", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/schannel/schannel-0.1.29.crate", + "sha256": "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939", + "dest": "cargo/vendor/schannel-0.1.29" + }, + { + "type": "inline", + "contents": "{\"package\": \"91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939\", \"files\": {}}", + "dest": "cargo/vendor/schannel-0.1.29", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3626,6 +4237,32 @@ "dest": "cargo/vendor/scopeguard-1.2.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework/security-framework-3.7.0.crate", + "sha256": "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d", + "dest": "cargo/vendor/security-framework-3.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-3.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/security-framework-sys/security-framework-sys-2.17.0.crate", + "sha256": "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3", + "dest": "cargo/vendor/security-framework-sys-2.17.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3\", \"files\": {}}", + "dest": "cargo/vendor/security-framework-sys-2.17.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3769,6 +4406,19 @@ "dest": "cargo/vendor/serde_spanned-1.0.4", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/serde_urlencoded/serde_urlencoded-0.7.1.crate", + "sha256": "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd", + "dest": "cargo/vendor/serde_urlencoded-0.7.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd\", \"files\": {}}", + "dest": "cargo/vendor/serde_urlencoded-0.7.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -3834,6 +4484,19 @@ "dest": "cargo/vendor/servo_arc-0.2.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sha1/sha1-0.10.6.crate", + "sha256": "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba", + "dest": "cargo/vendor/sha1-0.10.6" + }, + { + "type": "inline", + "contents": "{\"package\": \"e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba\", \"files\": {}}", + "dest": "cargo/vendor/sha1-0.10.6", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4081,6 +4744,19 @@ "dest": "cargo/vendor/strsim-0.11.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/subtle/subtle-2.6.1.crate", + "sha256": "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292", + "dest": "cargo/vendor/subtle-2.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292\", \"files\": {}}", + "dest": "cargo/vendor/subtle-2.6.1", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4146,6 +4822,58 @@ "dest": "cargo/vendor/synstructure-0.13.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sys-locale/sys-locale-0.3.2.crate", + "sha256": "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4", + "dest": "cargo/vendor/sys-locale-0.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4\", \"files\": {}}", + "dest": "cargo/vendor/sys-locale-0.3.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/sysinfo/sysinfo-0.32.1.crate", + "sha256": "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af", + "dest": "cargo/vendor/sysinfo-0.32.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af\", \"files\": {}}", + "dest": "cargo/vendor/sysinfo-0.32.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/system-configuration/system-configuration-0.7.0.crate", + "sha256": "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b", + "dest": "cargo/vendor/system-configuration-0.7.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b\", \"files\": {}}", + "dest": "cargo/vendor/system-configuration-0.7.0", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/system-configuration-sys/system-configuration-sys-0.6.0.crate", + "sha256": "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4", + "dest": "cargo/vendor/system-configuration-sys-0.6.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4\", \"files\": {}}", + "dest": "cargo/vendor/system-configuration-sys-0.6.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4263,6 +4991,19 @@ "dest": "cargo/vendor/tauri-plugin-2.5.3", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tauri-plugin-os/tauri-plugin-os-2.3.2.crate", + "sha256": "d8f08346c8deb39e96f86973da0e2d76cbb933d7ac9b750f6dc4daf955a6f997", + "dest": "cargo/vendor/tauri-plugin-os-2.3.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"d8f08346c8deb39e96f86973da0e2d76cbb933d7ac9b750f6dc4daf955a6f997\", \"files\": {}}", + "dest": "cargo/vendor/tauri-plugin-os-2.3.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4328,6 +5069,19 @@ "dest": "cargo/vendor/tauri-winres-0.3.5", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tempfile/tempfile-3.27.0.crate", + "sha256": "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd", + "dest": "cargo/vendor/tempfile-3.27.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd\", \"files\": {}}", + "dest": "cargo/vendor/tempfile-3.27.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4458,6 +5212,32 @@ "dest": "cargo/vendor/tokio-1.49.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tokio-native-tls/tokio-native-tls-0.3.1.crate", + "sha256": "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2", + "dest": "cargo/vendor/tokio-native-tls-0.3.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2\", \"files\": {}}", + "dest": "cargo/vendor/tokio-native-tls-0.3.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/tokio-rustls/tokio-rustls-0.26.4.crate", + "sha256": "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61", + "dest": "cargo/vendor/tokio-rustls-0.26.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61\", \"files\": {}}", + "dest": "cargo/vendor/tokio-rustls-0.26.4", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4822,6 +5602,19 @@ "dest": "cargo/vendor/unicode-xid-0.2.6", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/untrusted/untrusted-0.9.0.crate", + "sha256": "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1", + "dest": "cargo/vendor/untrusted-0.9.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1\", \"files\": {}}", + "dest": "cargo/vendor/untrusted-0.9.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -4887,6 +5680,19 @@ "dest": "cargo/vendor/uuid-1.21.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/vcpkg/vcpkg-0.2.15.crate", + "sha256": "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426", + "dest": "cargo/vendor/vcpkg-0.2.15" + }, + { + "type": "inline", + "contents": "{\"package\": \"accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426\", \"files\": {}}", + "dest": "cargo/vendor/vcpkg-0.2.15", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5108,6 +5914,19 @@ "dest": "cargo/vendor/wasm-metadata-0.244.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/wasm-streams/wasm-streams-0.4.2.crate", + "sha256": "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65", + "dest": "cargo/vendor/wasm-streams-0.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65\", \"files\": {}}", + "dest": "cargo/vendor/wasm-streams-0.4.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5277,6 +6096,19 @@ "dest": "cargo/vendor/window-vibrancy-0.6.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows/windows-0.57.0.crate", + "sha256": "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143", + "dest": "cargo/vendor/windows-0.57.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143\", \"files\": {}}", + "dest": "cargo/vendor/windows-0.57.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5303,6 +6135,19 @@ "dest": "cargo/vendor/windows-collections-0.2.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-core/windows-core-0.57.0.crate", + "sha256": "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d", + "dest": "cargo/vendor/windows-core-0.57.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d\", \"files\": {}}", + "dest": "cargo/vendor/windows-core-0.57.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5342,6 +6187,19 @@ "dest": "cargo/vendor/windows-future-0.2.1", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-implement/windows-implement-0.57.0.crate", + "sha256": "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7", + "dest": "cargo/vendor/windows-implement-0.57.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7\", \"files\": {}}", + "dest": "cargo/vendor/windows-implement-0.57.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5355,6 +6213,19 @@ "dest": "cargo/vendor/windows-implement-0.60.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-interface/windows-interface-0.57.0.crate", + "sha256": "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7", + "dest": "cargo/vendor/windows-interface-0.57.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7\", \"files\": {}}", + "dest": "cargo/vendor/windows-interface-0.57.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5407,6 +6278,32 @@ "dest": "cargo/vendor/windows-numerics-0.2.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-registry/windows-registry-0.6.1.crate", + "sha256": "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720", + "dest": "cargo/vendor/windows-registry-0.6.1" + }, + { + "type": "inline", + "contents": "{\"package\": \"02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720\", \"files\": {}}", + "dest": "cargo/vendor/windows-registry-0.6.1", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-result/windows-result-0.1.2.crate", + "sha256": "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8", + "dest": "cargo/vendor/windows-result-0.1.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8\", \"files\": {}}", + "dest": "cargo/vendor/windows-result-0.1.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -5485,6 +6382,19 @@ "dest": "cargo/vendor/windows-sys-0.48.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/windows-sys/windows-sys-0.52.0.crate", + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + "dest": "cargo/vendor/windows-sys-0.52.0" + }, + { + "type": "inline", + "contents": "{\"package\": \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\", \"files\": {}}", + "dest": "cargo/vendor/windows-sys-0.52.0", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -6161,6 +7071,19 @@ "dest": "cargo/vendor/x11-dl-2.21.0", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/xz2/xz2-0.1.7.crate", + "sha256": "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2", + "dest": "cargo/vendor/xz2-0.1.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2\", \"files\": {}}", + "dest": "cargo/vendor/xz2-0.1.7", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -6239,6 +7162,32 @@ "dest": "cargo/vendor/zerofrom-derive-0.1.6", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zeroize/zeroize-1.8.2.crate", + "sha256": "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0", + "dest": "cargo/vendor/zeroize-1.8.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0\", \"files\": {}}", + "dest": "cargo/vendor/zeroize-1.8.2", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zeroize_derive/zeroize_derive-1.4.3.crate", + "sha256": "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e", + "dest": "cargo/vendor/zeroize_derive-1.4.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e\", \"files\": {}}", + "dest": "cargo/vendor/zeroize_derive-1.4.3", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -6278,6 +7227,19 @@ "dest": "cargo/vendor/zerovec-derive-0.11.2", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zip/zip-2.4.2.crate", + "sha256": "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50", + "dest": "cargo/vendor/zip-2.4.2" + }, + { + "type": "inline", + "contents": "{\"package\": \"fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50\", \"files\": {}}", + "dest": "cargo/vendor/zip-2.4.2", + "dest-filename": ".cargo-checksum.json" + }, { "type": "archive", "archive-type": "tar-gzip", @@ -6291,6 +7253,58 @@ "dest": "cargo/vendor/zmij-1.0.21", "dest-filename": ".cargo-checksum.json" }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zopfli/zopfli-0.8.3.crate", + "sha256": "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249", + "dest": "cargo/vendor/zopfli-0.8.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249\", \"files\": {}}", + "dest": "cargo/vendor/zopfli-0.8.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd/zstd-0.13.3.crate", + "sha256": "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a", + "dest": "cargo/vendor/zstd-0.13.3" + }, + { + "type": "inline", + "contents": "{\"package\": \"e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a\", \"files\": {}}", + "dest": "cargo/vendor/zstd-0.13.3", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd-safe/zstd-safe-7.2.4.crate", + "sha256": "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d", + "dest": "cargo/vendor/zstd-safe-7.2.4" + }, + { + "type": "inline", + "contents": "{\"package\": \"8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d\", \"files\": {}}", + "dest": "cargo/vendor/zstd-safe-7.2.4", + "dest-filename": ".cargo-checksum.json" + }, + { + "type": "archive", + "archive-type": "tar-gzip", + "url": "https://static.crates.io/crates/zstd-sys/zstd-sys-2.0.16+zstd.1.5.7.crate", + "sha256": "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748", + "dest": "cargo/vendor/zstd-sys-2.0.16+zstd.1.5.7" + }, + { + "type": "inline", + "contents": "{\"package\": \"91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748\", \"files\": {}}", + "dest": "cargo/vendor/zstd-sys-2.0.16+zstd.1.5.7", + "dest-filename": ".cargo-checksum.json" + }, { "type": "inline", "contents": "[source.vendored-sources]\ndirectory = \"cargo/vendor\"\n\n[source.crates-io]\nreplace-with = \"vendored-sources\"\n", diff --git a/packaging/frontend-dist.tar.gz b/packaging/frontend-dist.tar.gz deleted file mode 100644 index 159287ae64f90461bf5f87f9308afeb2c9879a50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172554 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 azkmJrumAq_-~Sl@{r>^eapVgCpb7wYe(!hy diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d78feb4..7422033 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -230,66 +230,79 @@ packages: resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.59.0': resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.59.0': resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.59.0': resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.59.0': resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.59.0': resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.59.0': resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.59.0': resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.59.0': resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.59.0': resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.59.0': resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.59.0': resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.59.0': resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.59.0': resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} @@ -367,30 +380,35 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@tauri-apps/cli-linux-arm64-musl@2.10.1': resolution: {integrity: sha512-MIj78PDDGjkg3NqGptDOGgfXks7SYJwhiMh8SBoZS+vfdz7yP5jN18bNaLnDhsVIPARcAhE1TlsZe/8Yxo2zqg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@tauri-apps/cli-linux-riscv64-gnu@2.10.1': resolution: {integrity: sha512-X0lvOVUg8PCVaoEtEAnpxmnkwlE1gcMDTqfhbefICKDnOTJ5Est3qL0SrWxizDackIOKBcvtpejrSiVpuJI1kw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@tauri-apps/cli-linux-x64-gnu@2.10.1': resolution: {integrity: sha512-2/12bEzsJS9fAKybxgicCDFxYD1WEI9kO+tlDwX5znWG2GwMBaiWcmhGlZ8fi+DMe9CXlcVarMTYc0L3REIRxw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@tauri-apps/cli-linux-x64-musl@2.10.1': resolution: {integrity: sha512-Y8J0ZzswPz50UcGOFuXGEMrxbjwKSPgXftx5qnkuMs2rmwQB5ssvLb6tn54wDSYxe7S6vlLob9vt0VKuNOaCIQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@tauri-apps/cli-win32-arm64-msvc@2.10.1': resolution: {integrity: sha512-iSt5B86jHYAPJa/IlYw++SXtFPGnWtFJriHn7X0NFBVunF6zu9+/zOn8OgqIWSl8RgzhLGXQEEtGBdR4wzpVgg==} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 96f7c0a..8e8f5d7 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1816,7 +1816,7 @@ dependencies = [ [[package]] name = "moku" -version = "0.3.0" +version = "0.4.0" dependencies = [ "dirs 5.0.1", "serde", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 48e777b..d7814aa 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "moku" -version = "0.3.0" +version = "0.4.0" edition = "2021" [lib] name = "moku_lib" -crate-type = ["staticlib", "cdylib", "rlib"] +crate-type = ["cdylib", "rlib"] [[bin]] name = "moku" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index 4d8025a..75da45d 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -1,7 +1,7 @@ { "$schema": "../gen/schemas/desktop-schema.json", "identifier": "default", - "description": "Allow launching suwayomi-server sidecar", + "description": "Default permissions for Moku", "windows": ["main"], "permissions": [ "core:default", @@ -10,11 +10,12 @@ { "identifier": "shell:allow-spawn", "allow": [ - { - "name": "binaries/suwayomi-server", - "sidecar": true - } + { "name": "tachidesk-server" }, + { "name": "suwayomi-server" }, + { "name": "suwayomi-server-aarch64-apple-darwin" }, + { "name": "suwayomi-server-x86_64-apple-darwin" }, + { "name": "javaw" } ] } ] -} \ No newline at end of file +} diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f77f279edd8a3b1219250be2bbfc5de1b5683b GIT binary patch literal 2160 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 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f1db7338d8ffb6eab63a83d9deceaea0ade06964 GIT binary patch literal 3232 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

!b6$v{frP($>kT@Js!)7q4H=`nwKPXgu~m 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 IDOiR74>X6XFaQ7m literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..136d4a34f96f11fa08019fd0c644ec1ff59e0960 GIT binary patch literal 538 zcmV+#0_FXQP)huj9}qg=m^ady&|TQ5NI1Fo8wR z8A~l@IfZN}IGrY7STS1AmowWNWbSMQ&vTHMjMW@{b>6ApvgJ64`KCH*rpW1k$_s`& z=HP_Vh@)njdX3jV3@D{KxxPZ($A%|*J!z1AckdhA7qFg8P&_y1nS&!P?Mi?VS*KbP zMb#ZdH=I{Eg=Z81CnPAqhQVd8-^@#=@Qf0wwdj=0Gr-*f1N8t^Mm50DH2N(|f+Mf) zdd3(I_*qi_2FAxb)h7w$8lnd6$Sv6LQ)IrVMnqUb@to;t9=PC?uZ<$e?t}6 zS0X*T`v8#*u^kf6$5y?0B2N-f_Mw0aP;rDQ4vsJ`cp`0FOR>!;kBw(sg(QB?#Oa}g cNZmia0W-GD<{w8x*8l(j07*qoM6N<$f;K?*u>b%7 literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..864fd32d0e6541b0660bf6015b2b14c1a8a8e957 GIT binary patch literal 6628 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 Ky;99S;(q`|Xt@3W literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b26b59cce589e77a403aa591540b3e1b6316bdf6 GIT binary patch literal 842 zcmV-Q1GW5#P)kkyL`(jV9H;pW6!@NhMWgH6*|rmsiyCYQ}!Um?T1TQA)3`(&fR|Zl8O2 ztolrbF<^iJ&>vSvCCY9*vkMry#jS^C2i%@zfpNU70q)hUzaMeF_eD8}6~M^gD2X7v z(=+v6KmR@Q+NlELR>KASz6*J1SPg7K7Dgn2!t!U^JN+@>BB`}U!2;`I)3+W_qq3OE zKV=s=8Cw>ialN-UPy6G!+!VBE@AyMoqv5{d~3qAhW$lnS`ri8 zmoN=Gao~yEHQp7h&I&B=zJG&D9MbF%mqScloS_UCMdxh8EAuYqg5?|9Ro>8c!gbfJ z^NJ1o!<&{Tc&B<++3TJnEi5nYbCzFNn%&RUpBI~bQ!}S~3j;R7g01fqNv&&H8hlE# zi_;pu=y}k`2>GG<+HFZeM+c)oGbOP;h&2FdYurU|{Fd9=pF_`j_bb5+C>4N1vpE;E;`VgZVHA zIya#cEv-sdtTsE}Tcb&PQ=^O|P40n^wn>ZklXJf3oNID5=Fp-e@ex)&pV4(a$rKi) zk0y1U?|p5G!t%7sFrDQUMM<$p%W8fnyW{A)*FqWWO%Q|y+7c`vM!?dvz03bTNZ$$$ zJVh^`Ed>dR5K=^&xAP<+oaj(rQm<5&njvidN7&K!M&v~;bzlbW&s8e=dwSW%!eMRX z1as|OcYl_Siy2$b;b3%qiG|cumAx{1kW!;DpTiJJ4MQxVJvB5)H4a>eZ)m}A1~h(f zxb!3=oPwN{ZU`uW^5qha&h)nuiv`dE4>M>@<@9V@BB>GQR&7)xFmn=xz{=+dl@wZP zjlig+Nous8kSK&{J*tI0eK)WPO){{rc~oCDIq@EUWh}q^A+hPltpD|M*86fo!ZBOt z*bwT9s|I-Tk%VJ_=^Ptm2WwyWd+fE&cGfW*4>z3FSQiJgzw*)Yd2VBqb&Zb_q>gaH zQClNiUveAYSmm^AEx_nKJjiSP@eB?Iezdv6PIE`X<7X#DI=;)6v(NY*nW{E>8JZP1 zI1u5(wXeK2KvisKMvWsf0K@MD4i2t3!X&%A&cg#KT4ar~7(&g>w63}pQicd)fM^#G zJ|aMkvKY>f#O~RGZF)FP0NH`T`Nx#n-SQsQtp>B!BW?l+=^y9ed}O;oc@73A>Yx?v`5dwtkR2Fw?sg4o(|Zm=%IJ--uk{iGkhp!=_5_S;o`b;w$l1wXK43JH z=$XtFa4i6%eL!b!Hp~z@X+N3@4r&`{1v~_h;xw5K6HQwHOevca9_twHCsE!CPFUgU z0}Kj0fI^sMmp@RaJyMsJjoCjD82m=n1B=0`ka4xmS_44)E1!f@5q9lEYtn+~)M4U{0 z;yieloks<(2t-i_AvQ9WT^HXsJ5`tR0}lrV?Wks~QG)cs0>Jp67QDr)0?_mJ0bvFm z0Str>yPOT2^0YGc)r|zk>|dE+Ae`tv#k$Hk)VH8iLoG+)^u%+I@hO}`J_+v^^VMx{ z2&HrCyO_LriQRaD-EC949`x!=n*YN}!jW)-VR-hTATbDU?=PtQfplpi%i!6EyyU<{ zxA*5&6-yXM6X{J#rL`T>5{1Bsi;BmDNqkl%4T~7_#X!`HH;WR91=E3;Ep{^^x(4J(-;Uvw=#aLEBDIFDeuo?)p>B$hL?)m)Q zLF)STbE>N?rD*F8MJT~z1ncJrC%bSW#olDlQ#{6paoR0U<#f%i#UN!e4u#V7t=H_b zS?w)>C-s%9)!w?BA#Bh@@?NRB+FRP`YH$AlM=DT=RM*A#00000NkvXXu0mjfxN2s} literal 0 HcmV?d00001 diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9888b6c01eab8583c41babceb98b0bc19df201 GIT binary patch literal 1783 zcmVbG>3djP2vV6uFCYknb}>Y@D_`ICpkxomO6Gc{e1jCFMi?^5lvcr ze&&j*s%c4RDPvPg(?nc!kx7zJ=%1`6q^vB<8PPXzTgl}V&)?$-?A&BpQ^gmW5KE#* zjevbG$>N5xwVm-5vJO`hSLu}&Y^IlI==GHw*nLhr#Ac_i5!{>fHpytKEJ<9J&%}n} z0~6Cfl@z7q*^}eRL{cjsf2V1un#*SE)lyc9_I4~Ydw+rZa96#bg^Tw+`; zSwd6G126ZBt95dLG)+~-Iy3UeWLaD?(>wWpSC_6a8egU3YLzC(=ckuARr4Kk8tQNg zSv^*l8H@i$^82N($tXJ1!=s0cBp_|>A0CT{@-g=#g0$meI-*jGl1T(98CqJV9PVRA z5oBvrOG&YFlNzH4w$zR=hTuzWhWrYQA-{?=u9N<=!wd7`jpa|p_=k%OIVivr7vIs} zk1W2a|ILtnwEpp!h^O8X|K8u!|9-aii|);XuO}F?Uw~&mxgfUhY>2{xEqz<@QC{R% z@9LoOIYVx#?vIMei|>*L{~=2G=R!R!pMG|@vnQ17U;5|Rk0Cc{00@|c2Y*|Bj_sxV zj=mp5Zo=ZJ^CB`lAa)ELwzHl4zw7(OC>Szi4|X;&p+kF00j^Ra>{7OY z<0Hd^4B5_*_ae}_(cwzKI4-|>k5aln#op$_(3RbCn963fxb4!lMwK866Z6CXGPWal zGUOT?C0GFDwGw=~_OqT#R~qC7@ELN2p$CCn*KG=hbPa$}3DyFJp*qA>5f*Qj!yy%O zdPV_ncGF!OBh3ZiM$&?mE-VE~+aV(pfEWMs!;j+mo!2Z|G%z;-u|wFPho;K?^X+&yC`;<2js$QSFg+R*vj)AAz<<9ubOINQ8As0`pGP7m*gj$wJ zyWHI6z%jAKq~7MV0(nwR4m#?7*UJSi<>|}s8$IE>`rm*C_>DjV@JXBVo~@^%+H0p4 zhXyjztuy4g0Bm|3pqZepnmjlmc%jW{2N+k!2zj|#viCG(c-l)^J5ifv0UmUA)S@p8 zFRnZ(!scEfzPH^$FEp)Ateu!5$*8?I2Z+ZM9BV5!z;6T?nhvROTC>qpkO2(o8ML|H zqmSygHPTs}5S%bbiQ6RwJ#+iXETLcf?4v5rMFYv}Eh%&DoZyxA)}Y~i)0aQcOJls; zmc(YZfyRFrGKx_DoBDp$37*XQvma$7#K1`W@E@93)1wor(MPn=+m@zktb&v zMWB|IF{p$&1ZTz|7%9Ujf_zxDl#xZ>AVUt)h_7tSGP=by0s5%^4}}6>~H!YK-1qU_>nwzCm7m z)3RwVM~7BuSkwknYH8Tk1~@v*e!}#!qb%w3C?oS;LeuQ0RKwX%Fzi6nxYFFyXaX>C zvlI&!4 z)p;<|G&eI+Jx}{JM(teb PathBuf { if !downloads_path.trim().is_empty() { return PathBuf::from(downloads_path); } let base = std::env::var("XDG_DATA_HOME") .map(PathBuf::from) - .unwrap_or_else(|_| { - dirs::data_dir() - .unwrap_or_else(|| PathBuf::from("/")) - }); + .unwrap_or_else(|_| dirs::data_dir().unwrap_or_else(|| PathBuf::from("/"))); base.join("Tachidesk/downloads") } @@ -45,7 +49,9 @@ fn get_storage_info(downloads_path: String) -> Result { 0 }; - let stat_path = if path.exists() { path.clone() } else { + let stat_path = if path.exists() { + path.clone() + } else { dirs::home_dir().unwrap_or_else(|| PathBuf::from("/")) }; @@ -56,20 +62,14 @@ fn get_storage_info(downloads_path: String) -> Result { .max_by_key(|d| d.mount_point().as_os_str().len()) .ok_or_else(|| "Could not find disk for path".to_string())?; - let total_bytes = disk.total_space(); - let free_bytes = disk.available_space(); - Ok(StorageInfo { manga_bytes, - total_bytes, - free_bytes, + total_bytes: disk.total_space(), + free_bytes: disk.available_space(), path: path.to_string_lossy().into_owned(), }) } -/// Returns the true OS-level scale factor for the main window. -/// On Linux this bypasses WebKitGTK's unreliable devicePixelRatio. -/// On macOS the value comes directly from the native window. #[tauri::command] fn get_scale_factor(window: tauri::Window) -> f64 { window.scale_factor().unwrap_or(1.0) @@ -77,26 +77,21 @@ fn get_scale_factor(window: tauri::Window) -> f64 { fn kill_tachidesk(app: &tauri::AppHandle) { let state = app.state::(); - let mut guard = state.0.lock().unwrap(); - if let Some(child) = guard.take() { + if let Some(child) = state.0.lock().unwrap().take() { let _ = child.kill(); - println!("Killed tracked server child."); } #[cfg(target_os = "windows")] let _ = std::process::Command::new("taskkill") - .args(["/F", "/FI", "IMAGENAME eq tachidesk*"]) + .args(["/F", "/FI", "IMAGENAME eq java*"]) .status(); #[cfg(not(target_os = "windows"))] let _ = std::process::Command::new("pkill") - .arg("-f") - .arg("tachidesk") + .args(["-f", "tachidesk"]) .status(); } -/// The default server.conf we seed on first launch. -/// Mirrors the Flatpak wrapper: headless, no tray, no browser pop-up. const DEFAULT_SERVER_CONF: &str = r#"server.ip = "127.0.0.1" server.port = 4567 server.webUIEnabled = false @@ -114,9 +109,6 @@ server.maxSourcesInParallel = 6 server.extensionRepos = [] "#; -/// Ensure the Suwayomi data dir and server.conf exist, and that the three -/// keys that cause GUI/JCEF crashes are always set to safe values. -/// This mirrors the shell-script logic in the Flatpak's tachidesk-server wrapper. fn seed_server_conf(data_dir: &PathBuf) { let conf_path = data_dir.join("server.conf"); @@ -131,97 +123,73 @@ fn seed_server_conf(data_dir: &PathBuf) { return; } - // Conf already exists — patch the three critical keys in-place. let Ok(contents) = std::fs::read_to_string(&conf_path) else { return }; let patched = patch_conf_key( patch_conf_key( - patch_conf_key( - contents, - "server.webUIEnabled", - "false", - ), - "server.initialOpenInBrowserEnabled", - "false", + patch_conf_key(contents, "server.webUIEnabled", "false"), + "server.initialOpenInBrowserEnabled", "false", ), - "server.systemTrayEnabled", - "false", + "server.systemTrayEnabled", "false", ); let _ = std::fs::write(&conf_path, patched); } -/// Replace `key = ` in a HOCON/properties-style conf, or append it -/// if the key is absent. -fn patch_conf_key(mut text: String, key: &str, value: &str) -> String { +fn patch_conf_key(text: String, key: &str, value: &str) -> String { let replacement = format!("{key} = {value}"); - // Find a line that starts with the key (tolerant of surrounding whitespace) - if let Some(pos) = text.lines().position(|l| l.trim_start().starts_with(key)) { - let lines: Vec<&str> = text.lines().collect(); - // We need an owned replacement; rebuild from scratch. - let owned: Vec = lines + let lines: Vec<&str> = text.lines().collect(); + + if let Some(pos) = lines.iter().position(|l| l.trim_start().starts_with(key)) { + let mut out = lines .iter() .enumerate() - .map(|(i, l)| { - if i == pos { replacement.clone() } else { l.to_string() } - }) - .collect(); - return owned.join("\n"); + .map(|(i, l)| if i == pos { replacement.as_str() } else { l }) + .collect::>() + .join("\n"); + out.push('\n'); + return out; } - // Key absent — append. - if !text.ends_with('\n') { text.push('\n'); } - text.push_str(&replacement); - text.push('\n'); - text + + let mut out = text; + if !out.ends_with('\n') { out.push('\n'); } + out.push_str(&replacement); + out.push('\n'); + out } -/// Resolve the Suwayomi data directory. -/// -/// - Linux: $XDG_DATA_HOME/moku/tachidesk (matches Flatpak path) -/// - macOS: ~/Library/Application Support/dev.moku.app/tachidesk fn suwayomi_data_dir() -> PathBuf { + #[cfg(target_os = "windows")] + { + dirs::data_dir() + .unwrap_or_else(|| PathBuf::from("C:\\ProgramData")) + .join("moku\\tachidesk") + } #[cfg(target_os = "macos")] { dirs::data_dir() .unwrap_or_else(|| dirs::home_dir().unwrap_or_else(|| PathBuf::from("~"))) .join("dev.moku.app/tachidesk") } - #[cfg(not(target_os = "macos"))] + #[cfg(not(any(target_os = "windows", target_os = "macos")))] { let base = std::env::var("XDG_DATA_HOME") .map(PathBuf::from) - .unwrap_or_else(|_| { - dirs::data_dir().unwrap_or_else(|| PathBuf::from("/tmp")) - }); + .unwrap_or_else(|_| dirs::data_dir().unwrap_or_else(|| PathBuf::from("/tmp"))); base.join("moku/tachidesk") } } -/// Everything needed to spawn the server process. struct ServerInvocation { - /// Path to the executable (javaw.exe on Windows, the sidecar script on macOS/Linux). - bin: std::ffi::OsString, - /// Extra args prepended before the Suwayomi rootDir flag. - /// On Windows: ["-jar", ""] - /// Elsewhere: [] + bin: std::ffi::OsString, prefix_args: Vec, - /// Working directory for the child process. - /// On Windows this must be the bundle folder so javaw can find the JRE and jar. - /// Elsewhere: None (inherit). working_dir: Option, } -/// Resolve the server binary path. -/// -/// If the frontend passes a non-empty `binary` string (user override in -/// Settings) we always use that — on Linux this is the nixpkgs/Flatpak path. -/// -/// Otherwise we look for the Tauri-bundled sidecar inside the resource dir -/// and, on Windows, build the javaw + jar invocation from the suwayomi-bundle. fn resolve_server_binary( binary: &str, app: &tauri::AppHandle, -) -> Result { +) -> Result { if !binary.trim().is_empty() { return Ok(ServerInvocation { bin: std::ffi::OsString::from(binary), @@ -233,18 +201,17 @@ fn resolve_server_binary( let resource_dir = app .path() .resource_dir() - .map_err(|e| format!("Could not locate resource dir: {e}"))?; + .map_err(|e| SpawnError::SpawnFailed(format!("Could not locate resource dir: {e}")))?; - // ── Windows: invoke the bundled javaw.exe with -jar Suwayomi-Launcher.jar ── #[cfg(target_os = "windows")] { - let sidecar = resource_dir.join("suwayomi-server-x86_64-pc-windows-msvc.exe"); let bundle_dir = resource_dir.join("suwayomi-bundle"); - let jar = bundle_dir.join("Suwayomi-Launcher.jar"); + let javaw = bundle_dir.join("jre").join("bin").join("javaw.exe"); + let jar = bundle_dir.join("Suwayomi-Launcher.jar"); - if sidecar.exists() && jar.exists() { + if javaw.exists() && jar.exists() { return Ok(ServerInvocation { - bin: sidecar.into_os_string(), + bin: javaw.into_os_string(), prefix_args: vec![ "-jar".to_string(), jar.to_string_lossy().into_owned(), @@ -252,16 +219,22 @@ fn resolve_server_binary( working_dir: Some(bundle_dir), }); } + + return Err(SpawnError::NotConfigured( + "No bundled server found. Set the server path in Settings.".to_string(), + )); } - // ── macOS / Linux: sidecar script is self-contained ── + #[cfg(target_os = "macos")] let candidates = [ "suwayomi-server-aarch64-apple-darwin", "suwayomi-server-x86_64-apple-darwin", - // plain name as a dev/Linux fallback - "suwayomi-server", ]; + #[cfg(not(any(target_os = "windows", target_os = "macos")))] + let candidates = ["suwayomi-server"]; + + #[cfg(not(target_os = "windows"))] for name in &candidates { let p = resource_dir.join(name); if p.exists() { @@ -273,58 +246,83 @@ fn resolve_server_binary( } } - Err("Suwayomi server binary not found. Please set the path in Settings.".to_string()) + // Fall back to PATH — covers Nix, distro packages, and any system install. + { + #[cfg(target_os = "windows")] + let which_cmd = "where"; + #[cfg(not(target_os = "windows"))] + let which_cmd = "which"; + + for name in &["tachidesk-server", "suwayomi-server"] { + if std::process::Command::new(which_cmd) + .arg(name) + .output() + .map(|o| o.status.success()) + .unwrap_or(false) + { + return Ok(ServerInvocation { + bin: std::ffi::OsString::from(name), + prefix_args: vec![], + working_dir: None, + }); + } + } + } + + Err(SpawnError::NotConfigured( + "Server binary not found. Set the path in Settings.".to_string(), + )) } #[tauri::command] -fn spawn_server(binary: String, app: tauri::AppHandle) -> Result<(), String> { - let state = app.state::(); +fn spawn_server(binary: String, app: tauri::AppHandle) -> Result<(), SpawnError> { { + let state = app.state::(); let guard = state.0.lock().unwrap(); if guard.is_some() { - println!("Server already running, skipping spawn."); return Ok(()); } } - // Seed server.conf before launching so Suwayomi starts in headless mode. let data_dir = suwayomi_data_dir(); seed_server_conf(&data_dir); let invocation = resolve_server_binary(&binary, &app)?; - let shell = app.shell(); + let bin_display = invocation.bin.clone(); let rootdir_flag = format!( "-Dsuwayomi.tachidesk.config.server.rootDir={}", data_dir.to_string_lossy() ); - // Build the full arg list: prefix_args (e.g. -jar foo.jar) + rootDir flag. - let args: Vec = invocation.prefix_args.into_iter().chain(std::iter::once(rootdir_flag)).collect(); + let args: Vec = invocation.prefix_args + .into_iter() + .chain(std::iter::once(rootdir_flag)) + .collect(); - // On Windows, set the working directory to the bundle folder so javaw.exe - // can resolve the JRE and jar relative paths correctly. - let cmd = shell + let cmd = app.shell() .command(&invocation.bin) .env("JAVA_TOOL_OPTIONS", "-Djava.awt.headless=true") .args(&args) - .current_dir(invocation.working_dir.unwrap_or_else(|| std::env::current_dir().unwrap_or_default())); + .current_dir( + invocation.working_dir + .unwrap_or_else(|| std::env::current_dir().unwrap_or_default()) + ); match cmd.spawn() { Ok((_rx, child)) => { - println!("Spawned server: {:?}", invocation.bin); - let mut guard = state.0.lock().unwrap(); - *guard = Some(child); + println!("Spawned server: {:?}", bin_display); + let state = app.state::(); + *state.0.lock().unwrap() = Some(child); Ok(()) } Err(e) => { - eprintln!("Failed to spawn {:?}: {}", invocation.bin, e); - Err(e.to_string()) + eprintln!("Failed to spawn {:?}: {}", bin_display, e); + Err(SpawnError::SpawnFailed(e.to_string())) } } } - #[tauri::command] fn kill_server(app: tauri::AppHandle) -> Result<(), String> { kill_tachidesk(&app); @@ -350,4 +348,4 @@ pub fn run() { }) .run(tauri::generate_context!()) .expect("error while running moku"); -} \ No newline at end of file +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index f66c6e2..a637166 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,12 +1,10 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Moku", - "version": "0.3.0", + "version": "0.4.0", "identifier": "dev.moku.app", "build": { "frontendDist": "../dist", - "devUrl": "http://localhost:1420", - "beforeDevCommand": "pnpm dev", "beforeBuildCommand": "pnpm build" }, "app": { @@ -28,14 +26,21 @@ }, "bundle": { "active": true, - "targets": ["appimage"], + "targets": ["appimage", "nsis", "deb"], "icon": [ "icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", - "icons/icon.ico" - ] + "icons/icon.ico", + "icons/icon.png" + ], + "windows": { + "nsis": { + "installerIcon": "icons/icon.ico", + "installMode": "currentUser" + } + } }, "plugins": { "shell": { diff --git a/src/App.svelte b/src/App.svelte index 05b9fde..caa55ee 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -16,11 +16,12 @@ const MAX_ATTEMPTS = 30; - let serverProbeOk = $state(!store.settings.autoStartServer); - let appReady = $state(!store.settings.autoStartServer); - let failed = $state(false); - let idle = $state(false); - let devSplash = $state(false); + let serverProbeOk = $state(!store.settings.autoStartServer); + let appReady = $state(!store.settings.autoStartServer); + let failed = $state(false); + let notConfigured = $state(false); + let idle = $state(false); + let devSplash = $state(false); let prevQueue: DownloadQueueItem[] = []; let idleTimer: ReturnType | null = null; @@ -68,7 +69,6 @@ const scale = store.settings.uiScale * 1.5; document.documentElement.style.zoom = `${scale}%`; document.documentElement.style.setProperty("--ui-scale", String(scale)); - // --visual-vh gives true viewport height independent of zoom document.documentElement.style.setProperty("--visual-vh", `${window.innerHeight / (scale / 100)}px`); }); @@ -90,8 +90,13 @@ (window as any).__mokuShowSplash = () => devSplash = true; if (store.settings.autoStartServer) { - invoke("spawn_server", { binary: store.settings.serverBinary }).catch(err => - console.warn("Could not start server:", err)); + invoke("spawn_server", { binary: store.settings.serverBinary }).catch((err: any) => { + if (err?.kind === "NotConfigured") { + notConfigured = true; + } else { + console.warn("Could not start server:", err); + } + }); } if (!serverProbeOk) { @@ -117,6 +122,7 @@ unlistenDownload = await listen

("download-progress", e => { setActiveDownloads(e.payload); }); return () => { + cancelled = true; if (store.settings.autoStartServer) invoke("kill_server").catch(() => {}); if (idleTimer) clearTimeout(idleTimer); if (pollInterval) clearInterval(pollInterval); @@ -125,14 +131,14 @@ }; }); - function handleRetry() { failed = false; serverProbeOk = false; } + function handleRetry() { failed = false; notConfigured = false; serverProbeOk = false; } {#if devSplash} setTimeout(() => devSplash = false, 340)} /> {:else if !appReady} - appReady = true} onRetry={handleRetry} /> diff --git a/src/assets/moku-icon-rounded.svg b/src/assets/moku-icon-rounded.svg new file mode 100644 index 0000000..a215c63 --- /dev/null +++ b/src/assets/moku-icon-rounded.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/src/assets/rounded-logo.png b/src/assets/rounded-logo.png deleted file mode 100644 index 2abb47a7d059318ad718a0533e34f313b5950c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29426 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 import { onMount } from "svelte"; import { getCurrentWindow } from "@tauri-apps/api/window"; + import { store } from "../../store/state.svelte"; import logoUrl from "../../assets/moku-icon.svg"; interface Props { - mode?: "loading" | "idle"; - ringFull?: boolean; - failed?: boolean; - showCards?: boolean; - showFps?: boolean; - onReady?: () => void; - onRetry?: () => void; - onDismiss?: () => void; + mode?: "loading" | "idle"; + ringFull?: boolean; + failed?: boolean; + notConfigured?: boolean; + showCards?: boolean; + showFps?: boolean; + onReady?: () => void; + onRetry?: () => void; + onDismiss?: () => void; } - let { mode = "loading", ringFull = false, failed = false, showCards = true, - showFps = false, onReady, onRetry, onDismiss }: Props = $props(); + let { mode = "loading", ringFull = false, failed = false, notConfigured = false, + showCards = true, showFps = false, onReady, onRetry, onDismiss }: Props = $props(); const EXIT_MS = 320; @@ -90,10 +92,22 @@ const h = w * 1.44; const speed = cfg.speedMin + hash(seed + 5) * (cfg.speedMax - cfg.speedMin); const travel = vh + h + BUF; - cards.push({ cx: (col + 0.5) * laneW + (hash(seed + 2) * 2 - 1) * Math.max(0, (laneW - w) / 2 - 2), w, h, lines: 1 + Math.floor(hash(seed + 7) * 3), alpha: cfg.alpha, speed, cycleSec: travel / speed, phase: ((col / COLS) + hash(seed + 6) * 0.6 + layer * 0.23) % 1, travel, yStart: vh + h / 2 + BUF / 2, angleStart: hash(seed + 3) * 50 - 25, tilt: (hash(seed + 4) * 2 - 1) * 18 }); + cards.push({ + cx: (col + 0.5) * laneW + (hash(seed + 2) * 2 - 1) * Math.max(0, (laneW - w) / 2 - 2), + w, h, lines: 1 + Math.floor(hash(seed + 7) * 3), alpha: cfg.alpha, speed, + cycleSec: travel / speed, + phase: ((col / COLS) + hash(seed + 6) * 0.6 + layer * 0.23) % 1, + travel, yStart: vh + h / 2 + BUF / 2, + angleStart: hash(seed + 3) * 50 - 25, + tilt: (hash(seed + 4) * 2 - 1) * 18, + }); } } - const trigs: CardTrig[] = cards.map(c => ({ cosA: Math.cos(c.angleStart * (Math.PI / 180)), sinA: Math.sin(c.angleStart * (Math.PI / 180)), tiltRad: c.tilt * (Math.PI / 180) })); + const trigs: CardTrig[] = cards.map(c => ({ + cosA: Math.cos(c.angleStart * (Math.PI / 180)), + sinA: Math.sin(c.angleStart * (Math.PI / 180)), + tiltRad: c.tilt * (Math.PI / 180), + })); return { cards, trigs }; } @@ -140,7 +154,10 @@ return oc; } - function drawFrame(ctx: CanvasRenderingContext2D, t: number, cw: number, ch: number, dpr: number, cards: CardDef[], trigs: CardTrig[], stamps: HTMLCanvasElement[], vignette: HTMLCanvasElement) { + function drawFrame( + ctx: CanvasRenderingContext2D, t: number, cw: number, ch: number, dpr: number, + cards: CardDef[], trigs: CardTrig[], stamps: HTMLCanvasElement[], vignette: HTMLCanvasElement, + ) { ctx.clearRect(0, 0, cw, ch); for (let i = 0; i < cards.length; i++) { const c = cards[i]; @@ -174,9 +191,13 @@ function mountCanvas(el: HTMLCanvasElement) { const win = getCurrentWindow(); const ctx = el.getContext("2d")!; - interface RenderState { cards: CardDef[]; trigs: CardTrig[]; stamps: HTMLCanvasElement[]; vignette: HTMLCanvasElement; CW: number; CH: number; scale: number; } + interface RenderState { + cards: CardDef[]; trigs: CardTrig[]; stamps: HTMLCanvasElement[]; + vignette: HTMLCanvasElement; CW: number; CH: number; scale: number; + } let live: RenderState | null = null; let lastLogW = 0, lastLogH = 0, lastScale = 0, buildGen = 0; + async function syncSize() { const gen = ++buildGen; const [phys, scale] = await Promise.all([win.innerSize(), win.scaleFactor()]); @@ -190,8 +211,10 @@ el.width = phys.width; el.height = phys.height; live = { cards: built.cards, trigs: built.trigs, stamps, vignette: vig, CW: phys.width, CH: phys.height, scale }; } + const ro = new ResizeObserver(() => syncSize()); ro.observe(el); syncSize(); + let raf = 0, t0 = -1; function frame(now: number) { raf = requestAnimationFrame(frame); @@ -205,14 +228,14 @@ return () => { cancelAnimationFrame(raf); ro.disconnect(); }; } - const ringR = $derived(44); - const ringPad = $derived(8); + const ringR = $derived(70); + const ringPad = $derived(12); const ringSize = $derived((ringR + ringPad) * 2); const ringC = $derived(ringR + ringPad); const ringCirc = $derived(2 * Math.PI * ringR); const ringArc = $derived(ringCirc * Math.min(Math.max(ringProg, 0.025), 0.999)); - const ringTop = $derived(-((ringSize - 80) / 2)); - const ringLeft = $derived(-((ringSize - 80) / 2)); + const ringTop = $derived(-((ringSize - 140) / 2)); + const ringLeft = $derived(-((ringSize - 140) / 2));

@@ -232,21 +255,32 @@

press any key to continue

{:else} -
- {#if !failed} +
+ {#if !failed && !notConfigured} {/if} - Moku + Moku

moku

- {#if failed} -

Could not reach Suwayomi

-

Make sure tachidesk-server is on your PATH

- + {#if notConfigured} +
+

Server not configured

+

Set the server path in Settings, then retry

+
+ + +
+
+ {:else if failed} +
+

Could not reach Suwayomi

+

Make sure tachidesk-server is on your PATH

+ +
{:else}

{ringFull ? "Ready" : `Initializing server${dots}`} @@ -268,4 +302,9 @@ .hint { font-family: var(--font-ui); font-size: 10px; color: var(--text-faint); letter-spacing: 0.22em; text-transform: uppercase; margin: 0; user-select: none; animation: hintFade 3.5s ease-in-out infinite; } .title-label { font-family: var(--font-ui); font-size: 11px; font-weight: 500; letter-spacing: 0.26em; text-transform: uppercase; color: var(--text-secondary); margin: 0 0 8px; z-index: 1; user-select: none; } .retry-btn { margin-top: 4px; padding: 5px 16px; border-radius: var(--radius-md); border: 1px solid var(--border-dim); background: var(--bg-raised); color: var(--text-muted); cursor: pointer; font-family: var(--font-ui); font-size: 11px; letter-spacing: 0.08em; } + .retry-btn:hover { border-color: var(--border-strong); color: var(--text-secondary); } + .error-box { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 14px 20px; border-radius: var(--radius-lg); background: rgba(0,0,0,0.55); border: 1px solid rgba(255,255,255,0.12); max-width: 260px; text-align: center; backdrop-filter: blur(4px); } + .error-box--danger { border-color: rgba(220,50,50,0.5); } + .error-title { font-family: var(--font-ui); font-size: 11px; font-weight: 500; color: var(--text-muted); letter-spacing: 0.1em; margin: 0; } + .error-body { font-family: var(--font-ui); font-size: 10px; color: var(--text-faint); letter-spacing: 0.05em; margin: 0; line-height: 1.6; } diff --git a/src/components/pages/Explore.svelte b/src/components/pages/Explore.svelte new file mode 100644 index 0000000..1229c65 --- /dev/null +++ b/src/components/pages/Explore.svelte @@ -0,0 +1,372 @@ + + +{#if $activeSource} + +{:else if $genreFilter} + +{:else} +

+
+
+

Explore

+
+ + +
+
+
+ +
+
+ + {#if continueReading.length > 0 || loadingLib} +
+
+ Continue Reading +
+ {#if loadingLib} +
{#each Array(8) as _}
{/each}
+ {:else} +
+ {#each continueReading.slice(0, ROW_CAP) as { manga, chapterName, progress }} + + {/each} + {#each Array(GHOST_COUNT) as _}
{/each} +
+ {/if} +
+ {/if} + + {#if recommended.length > 0 || loadingLib} +
+
+ Recommended for You +
+ {#if loadingLib} +
{#each Array(8) as _}
{/each}
+ {:else} +
+ {#each recommended.slice(0, ROW_CAP) as m} + + {/each} + {#each Array(GHOST_COUNT) as _}
{/each} +
+ {/if} +
+ {/if} + + {#if popularManga.length > 0 || loadingPopular} +
+
+ + + {sources.length === 1 ? `Popular on ${sources[0].displayName}` : sources.length > 1 ? `Popular across ${sources.length} sources` : "Popular"} + +
+ {#if loadingPopular} +
{#each Array(8) as _}
{/each}
+ {:else if sources.length === 0} +
No sources installed. Add extensions first.
+ {:else} +
+ {#each popularManga.slice(0, ROW_CAP) as m} + + {/each} + {#each Array(GHOST_COUNT) as _}
{/each} +
+ {/if} +
+ {/if} + + {#each frecencyGenres as genre} + {@const items = genreResultsMap.get(genre) ?? []} + {@const isLoading = loadingGenres && items.length === 0} + {#if isLoading || items.length > 0} +
+
+ {genre} + +
+ {#if isLoading} +
{#each Array(8) as _}
{/each}
+ {:else} +
+ {#each items.slice(0, ROW_CAP) as m} + + {/each} + {#if items.length >= ROW_CAP} + + {/if} + {#each Array(GHOST_COUNT) as _}
{/each} +
+ {/if} +
+ {/if} + {/each} + + {#if !loadingLib && !loadingPopular && !loadingGenres && continueReading.length === 0 && recommended.length === 0 && popularManga.length === 0 && frecencyGenres.every((g) => !genreResultsMap.get(g)?.length)} +
+ {#if loadError} + Could not reach Suwayomi + Make sure the server is running, then try again. + + {:else} + Nothing to explore yet + Add manga to your library or install sources to get started. + {/if} +
+ {/if} +
+
+ + {#if mode === "sources"}{/if} +
+{/if} + +{#if ctx} + ctx = null} /> +{/if} + + diff --git a/src/components/settings/Settings.svelte b/src/components/settings/Settings.svelte index 3fe9a03..9efe8a9 100644 --- a/src/components/settings/Settings.svelte +++ b/src/components/settings/Settings.svelte @@ -2,6 +2,7 @@ import { tick } from "svelte"; import { X, Book, Image, Sliders, Info, Keyboard, Gear, HardDrives, FolderSimple, Plus, Pencil, Trash, Wrench, PaintBrush } from "phosphor-svelte"; import { invoke } from "@tauri-apps/api/core"; + import { getVersion } from "@tauri-apps/api/app"; import { gql } from "../../lib/client"; import { GET_DOWNLOADS_PATH } from "../../lib/queries"; import { store, updateSettings, resetKeybinds, addFolder, removeFolder, renameFolder, toggleFolderTab, clearHistory, wipeAllData, setSettingsOpen } from "../../store/state.svelte"; @@ -195,6 +196,33 @@ let splashTriggered = $state(false); + + let appVersion = $state("…"); + let latestVersion = $state(null); + let checkingUpdate = $state(false); + let updateError = $state(null); + + $effect(() => { + if (tab === "about") { + getVersion().then(v => appVersion = v).catch(() => appVersion = "unknown"); + } + }); + + async function checkForUpdate() { + checkingUpdate = true; updateError = null; latestVersion = null; + try { + const res = await fetch("https://api.github.com/repos/Youwes09/Moku/releases/latest", { + method: "GET", + headers: { "User-Agent": "Moku" }, + }); + const data = await res.json() as { tag_name: string }; + latestVersion = data.tag_name.replace(/^v/, ""); + } catch (e) { + updateError = "Could not reach GitHub"; + } finally { + checkingUpdate = false; + } + } function triggerSplash() { splashTriggered = true; setTimeout(() => splashTriggered = false, 200); @@ -695,7 +723,41 @@

Moku

A manga reader frontend for Suwayomi / Tachidesk.

-

Built with Tauri + Svelte. Connects to tachidesk-server.

+

Built with Tauri + Svelte.

+
+
+
+

Version

+
+
+ Current version + v{appVersion} +
+ +
+ {#if updateError} +

{updateError}

+ {:else if latestVersion !== null} + {#if latestVersion === appVersion} +

✓ You are on the latest version

+ {:else} +
+

Update available — v{latestVersion}

+ + Download on GitHub → + +
+ {/if} + {/if} +
+
+

Links

+
diff --git a/src/store/state.svelte.ts b/src/store/state.svelte.ts index 5a3655e..106c0f0 100644 --- a/src/store/state.svelte.ts +++ b/src/store/state.svelte.ts @@ -132,7 +132,7 @@ export const DEFAULT_SETTINGS: Settings = { compactSidebar: false, gpuAcceleration: true, serverUrl: "http://localhost:4567", - serverBinary: "tachidesk-server", + serverBinary: "", autoStartServer: true, preferredExtensionLang: "en", keybinds: DEFAULT_KEYBINDS, @@ -151,6 +151,14 @@ export const DEFAULT_SETTINGS: Settings = { // ── Persistence ─────────────────────────────────────────────────────────────── +const STORE_VERSION = 2; + +// Fields reset to their DEFAULT_SETTINGS value on each version bump. +// Add a key here whenever its default changes meaning between releases. +const RESET_ON_UPGRADE: (keyof Settings)[] = [ + "serverBinary", +]; + function loadPersisted(): any { try { const raw = localStorage.getItem("moku-store"); @@ -167,7 +175,26 @@ function persist(patch: Record) { } catch {} } -const saved = loadPersisted(); +const saved = (() => { + const data = loadPersisted(); + if (!data) return null; + if ((data.storeVersion ?? 1) < STORE_VERSION) { + const resetPatch: Partial = {}; + for (const key of RESET_ON_UPGRADE) { + (resetPatch as any)[key] = (DEFAULT_SETTINGS as any)[key]; + } + const migrated = { + ...data, + storeVersion: STORE_VERSION, + settings: { ...data.settings, ...resetPatch }, + }; + try { + localStorage.setItem("moku-store", JSON.stringify(migrated)); + } catch {} + return migrated; + } + return data; +})(); function mergeSettings(saved: any): Settings { const userFolders: Folder[] = saved?.settings?.folders ?? []; @@ -222,6 +249,7 @@ class Store { constructor() { $effect.root(() => { + $effect(() => { persist({ storeVersion: STORE_VERSION }); }); $effect(() => { persist({ navPage: this.navPage }); }); $effect(() => { persist({ libraryFilter: this.libraryFilter }); }); $effect(() => { persist({ history: this.history }); }); diff --git a/vite.config.ts b/vite.config.ts index e78c010..555abb8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,14 +1,21 @@ import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; +import path from "path"; export default defineConfig({ plugins: [svelte()], clearScreen: false, + resolve: { + alias: { + $store: path.resolve("./src/store"), + $components: path.resolve("./src/components"), + }, + }, server: { port: 1420, strictPort: true, watch: { - ignored: ["**/.flatpak-builder/**", "**/src-tauri/**"], + ignored: ["**/src-tauri/**"], }, }, envPrefix: ["VITE_", "TAURI_"],