From 18d2b6e400ccb529954a1677d958354ce72e4f1d Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:15:10 +0200 Subject: [PATCH 01/11] fix(rust): scope unix write imports --- src-tauri/src/export.rs | 2 +- src-tauri/src/inventory.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/export.rs b/src-tauri/src/export.rs index 58e1e86..45e443c 100644 --- a/src-tauri/src/export.rs +++ b/src-tauri/src/export.rs @@ -1,5 +1,4 @@ use std::fs; -use std::io::Write; use std::path::Path; use crate::session::StoredBucket; @@ -78,6 +77,7 @@ fn io_error(path: &Path, err: std::io::Error) -> String { fn write_mode(path: &Path, bytes: &[u8]) -> std::io::Result<()> { #[cfg(unix)] { + use std::io::Write; use std::os::unix::fs::{OpenOptionsExt, PermissionsExt}; let mut file = fs::OpenOptions::new() .write(true) diff --git a/src-tauri/src/inventory.rs b/src-tauri/src/inventory.rs index 96dbbf0..72ce772 100644 --- a/src-tauri/src/inventory.rs +++ b/src-tauri/src/inventory.rs @@ -1,6 +1,6 @@ use std::collections::{BTreeMap, HashMap, HashSet}; use std::fs; -use std::io::{ErrorKind, Write}; +use std::io::ErrorKind; use std::path::{Path, PathBuf}; use crate::parse::{self, ProxyLine}; @@ -202,6 +202,7 @@ fn write_atomic(path: &Path, bytes: &[u8]) -> Result<(), String> { fn write_mode(path: &Path, bytes: &[u8]) -> std::io::Result<()> { #[cfg(unix)] { + use std::io::Write; use std::os::unix::fs::{OpenOptionsExt, PermissionsExt}; let mut file = fs::OpenOptions::new() .write(true) From 9f62d222e0e86c3d0b41ba411acedb21d1c5f008 Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:16:10 +0200 Subject: [PATCH 02/11] fix(release): use ad hoc macOS signing --- .github/workflows/release.yml | 60 +++++++++-------------------------- 1 file changed, 15 insertions(+), 45 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 138d4f8..957ae36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,56 +43,26 @@ jobs: git fetch --no-tags --depth=1 origin main:refs/remotes/origin/main test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)" - - name: check Apple signing configuration + - name: build unsigned macOS release if: startsWith(matrix.os, 'macos') - shell: bash - env: - APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }} - APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} - APPSTORE_P8_BASE64: ${{ secrets.APPLE_APPSTORE_CONNECT_P8_BASE64 }} - APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - APPLE_SIGNING_IDENTITY_RAW: ${{ secrets.APPLE_SIGNING_IDENTITY }} - run: | - if [ -z "${APPLE_API_KEY_ID}${APPLE_API_ISSUER}${APPSTORE_P8_BASE64}${APPLE_CERTIFICATE}${APPLE_CERTIFICATE_PASSWORD}${APPLE_SIGNING_IDENTITY_RAW}" ]; then - echo "No Apple signing secrets configured; building unsigned." - exit 0 - fi - status=0 - for var in APPLE_API_KEY_ID APPLE_API_ISSUER APPSTORE_P8_BASE64 APPLE_CERTIFICATE APPLE_CERTIFICATE_PASSWORD APPLE_SIGNING_IDENTITY_RAW; do - if [ -z "$(eval "printf '%s' \"\${$var}\"")" ]; then - echo "Missing $var" - status=1 - fi - done - if [ "$status" -ne 0 ]; then - echo "Apple signing secrets are partially configured." - exit 1 - fi - - - name: materialize App Store Connect API key - if: startsWith(matrix.os, 'macos') - shell: bash env: - APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }} - APPSTORE_P8_BASE64: ${{ secrets.APPLE_APPSTORE_CONNECT_P8_BASE64 }} - run: | - if [ -z "$APPLE_API_KEY_ID" ]; then - exit 0 - fi - key_path="$RUNNER_TEMP/AuthKey_${APPLE_API_KEY_ID}.p8" - printf '%s' "$APPSTORE_P8_BASE64" | base64 -d > "$key_path" - echo "APPLE_API_KEY_PATH=$key_path" >> "$GITHUB_ENV" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + APPLE_SIGNING_IDENTITY: "-" + uses: tauri-apps/tauri-action@1deb371b0cd8bd54025b384f1cd735e725c4060f + with: + tagName: v__VERSION__ + releaseName: proxybench v__VERSION__ + releaseBody: Preview builds made without certificates yet. macOS DMGs need right-click Open on first launch. The Windows NSIS setup wizard may trigger SmartScreen; choose More info, then Run anyway. + releaseDraft: false + tauriScript: bun run tauri + retryAttempts: 3 + args: ${{ matrix.args }} - - uses: tauri-apps/tauri-action@1deb371b0cd8bd54025b384f1cd735e725c4060f + - name: build Windows release + if: startsWith(matrix.os, 'windows') + uses: tauri-apps/tauri-action@1deb371b0cd8bd54025b384f1cd735e725c4060f env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - APPLE_CERTIFICATE: ${{ startsWith(matrix.os, 'macos') && secrets.APPLE_CERTIFICATE || '' }} - APPLE_CERTIFICATE_PASSWORD: ${{ startsWith(matrix.os, 'macos') && secrets.APPLE_CERTIFICATE_PASSWORD || '' }} - APPLE_SIGNING_IDENTITY: ${{ startsWith(matrix.os, 'macos') && secrets.APPLE_SIGNING_IDENTITY || '-' }} - APPLE_API_ISSUER: ${{ startsWith(matrix.os, 'macos') && secrets.APPLE_API_ISSUER || '' }} - APPLE_API_KEY: ${{ startsWith(matrix.os, 'macos') && secrets.APPLE_API_KEY_ID || '' }} - APPLE_API_KEY_PATH: ${{ env.APPLE_API_KEY_PATH }} with: tagName: v__VERSION__ releaseName: proxybench v__VERSION__ From 110450c78b257e4528b941c3585b2df0912ba52a Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:16:39 +0200 Subject: [PATCH 03/11] fix(release): cache nested Rust workspace --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 957ae36..62b89b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,6 +33,7 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 with: target: ${{ matrix.target }} + cache-workspaces: src-tauri -> target - run: bun install --frozen-lockfile From 6d82fd77a62f8f03922c160cb64ea7889f2ef7ac Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:17:25 +0200 Subject: [PATCH 04/11] ci(rust): validate Windows builds --- .github/workflows/ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 908ee23..bb7ffe1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,3 +32,13 @@ jobs: - run: cargo fmt --all --manifest-path src-tauri/Cargo.toml -- --check - run: cargo clippy --locked --all-targets --manifest-path src-tauri/Cargo.toml -- -D warnings - run: cargo test --locked --lib --manifest-path src-tauri/Cargo.toml + + rust-windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 + - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 + with: + cache-workspaces: src-tauri -> target + - run: cargo clippy --locked --all-targets --manifest-path src-tauri/Cargo.toml -- -D warnings + - run: cargo test --locked --lib --manifest-path src-tauri/Cargo.toml From e8e69dbd9e3a0a5a9dc1a5ea65b60cb8317a31b0 Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:17:59 +0200 Subject: [PATCH 05/11] ci(release): stop retrying failed builds --- .github/workflows/release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 62b89b7..02bbec3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,7 +56,6 @@ jobs: releaseBody: Preview builds made without certificates yet. macOS DMGs need right-click Open on first launch. The Windows NSIS setup wizard may trigger SmartScreen; choose More info, then Run anyway. releaseDraft: false tauriScript: bun run tauri - retryAttempts: 3 args: ${{ matrix.args }} - name: build Windows release @@ -70,5 +69,4 @@ jobs: releaseBody: Preview builds made without certificates yet. macOS DMGs need right-click Open on first launch. The Windows NSIS setup wizard may trigger SmartScreen; choose More info, then Run anyway. releaseDraft: false tauriScript: bun run tauri - retryAttempts: 3 args: ${{ matrix.args }} From 8cba6d09cf771ec361bc6c980ceacf6f0d50f9c2 Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:18:55 +0200 Subject: [PATCH 06/11] fix(bundle): use stable application identifier --- src-tauri/tauri.conf.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ff47638..e368cdc 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -2,7 +2,7 @@ "$schema": "https://schema.tauri.app/config/2", "productName": "proxybench", "version": "0.2.0", - "identifier": "com.proxybench.app", + "identifier": "com.mathious.proxybench", "build": { "beforeDevCommand": "bun run dev", "devUrl": "http://localhost:1420", From 7aab00a6f41e8bdf35aeb39c232b776b59e7a4ba Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:19:59 +0200 Subject: [PATCH 07/11] chore(release): prepare version 0.2.1 --- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index fa28941..92d5623 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "proxybench", - "version": "0.2.0", + "version": "0.2.1", "description": "Split HTTP proxy lists by subnet and measure Connect and TTFB", "type": "module", "scripts": { diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 17f658f..160a1b0 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2370,7 +2370,7 @@ dependencies = [ [[package]] name = "proxybench" -version = "0.2.0" +version = "0.2.1" dependencies = [ "base64 0.22.1", "bytes", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 39da988..07effca 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "proxybench" -version = "0.2.0" +version = "0.2.1" description = "Split HTTP proxy lists by subnet and measure Connect and TTFB" edition = "2021" license = "MIT" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e368cdc..baa3040 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "proxybench", - "version": "0.2.0", + "version": "0.2.1", "identifier": "com.mathious.proxybench", "build": { "beforeDevCommand": "bun run dev", From cd21d2773bae35b2e7b0d44fd66943f092f01d19 Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:27:06 +0200 Subject: [PATCH 08/11] docs(release): describe unsigned installers --- AGENTS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 2e54a32..ecc9ac0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -119,5 +119,5 @@ to the same `X.Y.Z`, merge to `main`, then tag `vX.Y.Z`. GitHub Actions (`.github/workflows/ci.yml` on `main` and pull requests, `.github/workflows/release.yml` on `vX.Y.Z`) builds macOS DMGs for Apple -Silicon and Intel and a Windows NSIS setup wizard. Apple signing runs only -when those secrets exist; otherwise the installers stay unsigned. +Silicon and Intel and a Windows NSIS setup wizard. macOS uses ad-hoc signing; +Windows installers are unsigned. From 929a50c637b0b320c349f02a2911e3d32525e0eb Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:35:35 +0200 Subject: [PATCH 09/11] fix(storage): migrate legacy application data --- src-tauri/src/data_migration.rs | 92 +++++++++++++++++++++++++++++++++ src-tauri/src/lib.rs | 3 ++ 2 files changed, 95 insertions(+) create mode 100644 src-tauri/src/data_migration.rs diff --git a/src-tauri/src/data_migration.rs b/src-tauri/src/data_migration.rs new file mode 100644 index 0000000..ab7a0a9 --- /dev/null +++ b/src-tauri/src/data_migration.rs @@ -0,0 +1,92 @@ +use std::fs; +use std::io::ErrorKind; +use std::path::Path; +use std::sync::atomic::{AtomicU64, Ordering}; + +const FILES: [&str; 3] = ["proxies.json", "tags.json", "last-target.txt"]; +const OLD_IDENTIFIER: &str = "com.proxybench.app"; +static NEXT_TEMPORARY: AtomicU64 = AtomicU64::new(0); + +pub fn migrate(data_dir: &Path) -> Result<(), String> { + let Some(parent) = data_dir.parent() else { + return Ok(()); + }; + let old_dir = parent.join(OLD_IDENTIFIER); + for name in FILES { + copy_missing(&old_dir.join(name), &data_dir.join(name))?; + } + Ok(()) +} + +fn copy_missing(source: &Path, destination: &Path) -> Result<(), String> { + if destination.exists() || !source.is_file() { + return Ok(()); + } + if let Some(parent) = destination.parent() { + fs::create_dir_all(parent).map_err(|err| err.to_string())?; + } + let temporary = destination.with_extension(format!( + "migrating-{}-{}", + std::process::id(), + NEXT_TEMPORARY.fetch_add(1, Ordering::Relaxed) + )); + fs::copy(source, &temporary).map_err(|err| err.to_string())?; + let result = match fs::hard_link(&temporary, destination) { + Ok(()) => Ok(()), + Err(err) if err.kind() == ErrorKind::AlreadyExists => Ok(()), + Err(err) => Err(err.to_string()), + }; + let _ = fs::remove_file(&temporary); + result +} + +#[cfg(test)] +mod tests { + use super::*; + use std::path::PathBuf; + + fn temp_dir() -> PathBuf { + static NEXT: AtomicU64 = AtomicU64::new(0); + let path = std::env::temp_dir().join(format!( + "proxybench-data-migration-{}-{}", + std::process::id(), + NEXT.fetch_add(1, Ordering::Relaxed) + )); + fs::create_dir_all(&path).unwrap(); + path + } + + #[test] + fn copies_existing_data_to_new_identifier_directory() { + let root = temp_dir(); + let old = root.join(OLD_IDENTIFIER); + let new = root.join("com.mathious.proxybench"); + fs::create_dir_all(&old).unwrap(); + for name in FILES { + fs::write(old.join(name), name).unwrap(); + } + + migrate(&new).unwrap(); + + for name in FILES { + assert_eq!(fs::read_to_string(new.join(name)).unwrap(), name); + } + fs::remove_dir_all(root).unwrap(); + } + + #[test] + fn keeps_data_already_present_in_new_directory() { + let root = temp_dir(); + let old = root.join(OLD_IDENTIFIER); + let new = root.join("com.mathious.proxybench"); + fs::create_dir_all(&old).unwrap(); + fs::create_dir_all(&new).unwrap(); + fs::write(old.join("proxies.json"), "old").unwrap(); + fs::write(new.join("proxies.json"), "new").unwrap(); + + migrate(&new).unwrap(); + + assert_eq!(fs::read_to_string(new.join("proxies.json")).unwrap(), "new"); + fs::remove_dir_all(root).unwrap(); + } +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 1a4b7d2..97a542f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,5 +1,6 @@ mod commands; mod country; +mod data_migration; mod export; mod import; mod inventory; @@ -23,6 +24,8 @@ pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_dialog::init()) .setup(|app| { + let data_dir = app.path().app_data_dir()?; + data_migration::migrate(&data_dir)?; let store = import::open_store(app.handle())?; let inventory = import::open_inventory(app.handle())?; let last = commands::open_last_target(app.handle())?; From 8a5c6c97d36c966edba05fe4d160f2284f5319b9 Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:36:00 +0200 Subject: [PATCH 10/11] docs(release): clarify installer signing --- .github/workflows/release.yml | 2 +- README.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 02bbec3..a5653f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: git fetch --no-tags --depth=1 origin main:refs/remotes/origin/main test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)" - - name: build unsigned macOS release + - name: build ad-hoc signed macOS release if: startsWith(matrix.os, 'macos') env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 35c47f1..654fff3 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,8 @@ On Windows, run the setup wizard. If SmartScreen appears, choose **More info**, then **Run anyway**. Windows needs WebView2; Windows 10 and 11 usually already have it. -Builds are unsigned until signing certificates are configured. +macOS builds use ad-hoc signing and are not notarized. Windows installers are +unsigned. ## Use From 7b0a90ce94fc12c67c38cc54b0d4edbf33e23edf Mon Sep 17 00:00:00 2001 From: Mathious6 <91007976+Mathious6@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:43:57 +0200 Subject: [PATCH 11/11] refactor(storage): remove data migration --- src-tauri/src/data_migration.rs | 92 --------------------------------- src-tauri/src/lib.rs | 3 -- 2 files changed, 95 deletions(-) delete mode 100644 src-tauri/src/data_migration.rs diff --git a/src-tauri/src/data_migration.rs b/src-tauri/src/data_migration.rs deleted file mode 100644 index ab7a0a9..0000000 --- a/src-tauri/src/data_migration.rs +++ /dev/null @@ -1,92 +0,0 @@ -use std::fs; -use std::io::ErrorKind; -use std::path::Path; -use std::sync::atomic::{AtomicU64, Ordering}; - -const FILES: [&str; 3] = ["proxies.json", "tags.json", "last-target.txt"]; -const OLD_IDENTIFIER: &str = "com.proxybench.app"; -static NEXT_TEMPORARY: AtomicU64 = AtomicU64::new(0); - -pub fn migrate(data_dir: &Path) -> Result<(), String> { - let Some(parent) = data_dir.parent() else { - return Ok(()); - }; - let old_dir = parent.join(OLD_IDENTIFIER); - for name in FILES { - copy_missing(&old_dir.join(name), &data_dir.join(name))?; - } - Ok(()) -} - -fn copy_missing(source: &Path, destination: &Path) -> Result<(), String> { - if destination.exists() || !source.is_file() { - return Ok(()); - } - if let Some(parent) = destination.parent() { - fs::create_dir_all(parent).map_err(|err| err.to_string())?; - } - let temporary = destination.with_extension(format!( - "migrating-{}-{}", - std::process::id(), - NEXT_TEMPORARY.fetch_add(1, Ordering::Relaxed) - )); - fs::copy(source, &temporary).map_err(|err| err.to_string())?; - let result = match fs::hard_link(&temporary, destination) { - Ok(()) => Ok(()), - Err(err) if err.kind() == ErrorKind::AlreadyExists => Ok(()), - Err(err) => Err(err.to_string()), - }; - let _ = fs::remove_file(&temporary); - result -} - -#[cfg(test)] -mod tests { - use super::*; - use std::path::PathBuf; - - fn temp_dir() -> PathBuf { - static NEXT: AtomicU64 = AtomicU64::new(0); - let path = std::env::temp_dir().join(format!( - "proxybench-data-migration-{}-{}", - std::process::id(), - NEXT.fetch_add(1, Ordering::Relaxed) - )); - fs::create_dir_all(&path).unwrap(); - path - } - - #[test] - fn copies_existing_data_to_new_identifier_directory() { - let root = temp_dir(); - let old = root.join(OLD_IDENTIFIER); - let new = root.join("com.mathious.proxybench"); - fs::create_dir_all(&old).unwrap(); - for name in FILES { - fs::write(old.join(name), name).unwrap(); - } - - migrate(&new).unwrap(); - - for name in FILES { - assert_eq!(fs::read_to_string(new.join(name)).unwrap(), name); - } - fs::remove_dir_all(root).unwrap(); - } - - #[test] - fn keeps_data_already_present_in_new_directory() { - let root = temp_dir(); - let old = root.join(OLD_IDENTIFIER); - let new = root.join("com.mathious.proxybench"); - fs::create_dir_all(&old).unwrap(); - fs::create_dir_all(&new).unwrap(); - fs::write(old.join("proxies.json"), "old").unwrap(); - fs::write(new.join("proxies.json"), "new").unwrap(); - - migrate(&new).unwrap(); - - assert_eq!(fs::read_to_string(new.join("proxies.json")).unwrap(), "new"); - fs::remove_dir_all(root).unwrap(); - } -} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 97a542f..1a4b7d2 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,6 +1,5 @@ mod commands; mod country; -mod data_migration; mod export; mod import; mod inventory; @@ -24,8 +23,6 @@ pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_dialog::init()) .setup(|app| { - let data_dir = app.path().app_data_dir()?; - data_migration::migrate(&data_dir)?; let store = import::open_store(app.handle())?; let inventory = import::open_inventory(app.handle())?; let last = commands::open_last_target(app.handle())?;