diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 40f891b..020480f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,6 +13,7 @@ jobs: cli: name: cli • ${{ matrix.target }} runs-on: ${{ matrix.os }} + timeout-minutes: 30 strategy: fail-fast: false matrix: @@ -24,9 +25,10 @@ jobs: # Windows - { os: windows-latest, target: x86_64-pc-windows-msvc, ext: ".exe" } - { os: windows-latest, target: aarch64-pc-windows-msvc, ext: ".exe" } - # macOS (arm64 native + Intel native on the x86 runner image) + # macOS: arm64 native on the Apple Silicon runner; Intel cross-compiled on the + # same runner (macos-13 is retired and hung to the 24h limit). - { os: macos-latest, target: aarch64-apple-darwin, ext: "" } - - { os: macos-13, target: x86_64-apple-darwin, ext: "" } + - { os: macos-latest, target: x86_64-apple-darwin, ext: "" } steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable @@ -78,18 +80,26 @@ jobs: diskghost-${{ matrix.target }}${{ matrix.ext }}.sha256 gui: - name: gui bundle • ${{ matrix.os }} + name: gui bundle • ${{ matrix.name }} runs-on: ${{ matrix.os }} + timeout-minutes: 60 strategy: fail-fast: false matrix: - # Native bundle per OS/arch: .AppImage/.deb/.rpm (Linux), - # .msi/.exe (Windows), .dmg for both Apple Silicon (macos-latest) - # and Intel (macos-13). Bundles are unsigned (no signing certs). - os: [ubuntu-latest, windows-latest, macos-latest, macos-13] + # Native bundle per OS/arch: .AppImage/.deb/.rpm (Linux), .msi/.exe (Windows), + # .dmg for Apple Silicon and Intel. macos-13 (Intel runner) is retired and used to + # hang to the 24h limit, so the Intel .dmg is cross-compiled on the Apple Silicon + # runner via --target x86_64-apple-darwin. Bundles are unsigned (no signing certs). + include: + - { os: ubuntu-latest, name: linux, target: "" } + - { os: windows-latest, name: windows, target: "" } + - { os: macos-latest, name: macos-arm64, target: aarch64-apple-darwin } + - { os: macos-latest, name: macos-x64, target: x86_64-apple-darwin } steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} - name: Install Tauri system dependencies (Linux) if: runner.os == 'Linux' run: | @@ -109,13 +119,15 @@ jobs: - name: Build GUI bundles working-directory: gui/src-tauri - run: cargo tauri build + run: cargo tauri build ${{ matrix.target != '' && format('--target {0}', matrix.target) || '' }} - name: Collect bundles shell: bash run: | mkdir -p dist - find gui/src-tauri/target/release/bundle -type f \ + # Match both host builds (target/release/bundle) and cross builds + # (target//release/bundle) so the Intel .dmg is picked up too. + find gui/src-tauri/target -type f -path '*/release/bundle/*' \ \( -name "*.dmg" -o -name "*.app.tar.gz" \ -o -name "*.msi" -o -name "*-setup.exe" \ -o -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" \) \ diff --git a/Cargo.lock b/Cargo.lock index a712d58..0d96351 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -358,7 +358,7 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "diskghost-cli" -version = "0.5.0" +version = "0.6.0" dependencies = [ "clap", "diskghost-core", @@ -367,7 +367,7 @@ dependencies = [ [[package]] name = "diskghost-core" -version = "0.5.0" +version = "0.6.0" dependencies = [ "blake3", "criterion", diff --git a/Cargo.toml b/Cargo.toml index 0191f4d..f23d811 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ exclude = ["gui"] resolver = "2" [workspace.package] -version = "0.5.0" +version = "0.6.0" edition = "2021" license = "MIT" authors = ["kingchenc"] diff --git a/gui/src-tauri/Cargo.lock b/gui/src-tauri/Cargo.lock index a26a322..05c2e03 100644 --- a/gui/src-tauri/Cargo.lock +++ b/gui/src-tauri/Cargo.lock @@ -148,6 +148,7 @@ dependencies = [ "cfg-if", "constant_time_eq", "cpufeatures 0.3.0", + "memmap2", ] [[package]] @@ -663,7 +664,7 @@ dependencies = [ [[package]] name = "diskghost-core" -version = "0.5.0" +version = "0.6.0" dependencies = [ "blake3", "fs4", @@ -677,7 +678,7 @@ dependencies = [ [[package]] name = "diskghost-gui" -version = "0.5.0" +version = "0.6.0" dependencies = [ "diskghost-core", "serde", @@ -1858,6 +1859,15 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.9.1" @@ -4159,7 +4169,7 @@ dependencies = [ [[package]] name = "winapi-i686-pc-windows-gnu" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" @@ -4174,7 +4184,7 @@ dependencies = [ [[package]] name = "winapi-x86_64-pc-windows-gnu" -version = "0.5.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/gui/src-tauri/Cargo.toml b/gui/src-tauri/Cargo.toml index 03e19f4..80a01c1 100644 --- a/gui/src-tauri/Cargo.toml +++ b/gui/src-tauri/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "diskghost-gui" -version = "0.5.0" +version = "0.6.0" edition = "2021" license = "MIT" description = "Diskghost desktop GUI (Tauri) — modern disk usage & duplicate finder." diff --git a/gui/src-tauri/tauri.conf.json b/gui/src-tauri/tauri.conf.json index 4f8333f..43535f7 100644 --- a/gui/src-tauri/tauri.conf.json +++ b/gui/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Diskghost", - "version": "0.5.0", + "version": "0.6.0", "identifier": "org.diskghost.app", "build": { "frontendDist": "../ui"