diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a48af79..20b055ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,21 +23,25 @@ jobs: - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu name: linux-x86_64 + formats: deb,appimage # Windows x86_64 - os: windows-latest target: x86_64-pc-windows-msvc name: windows-x86_64 + formats: nsis # macOS Apple Silicon - os: macos-14 target: aarch64-apple-darwin name: macos-arm64 + formats: dmg,app # macOS Intel - os: macos-13 target: x86_64-apple-darwin name: macos-x86_64 + formats: dmg,app runs-on: ${{ matrix.os }} @@ -54,7 +58,21 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libvulkan-dev libasound2-dev + sudo apt-get install -y \ + libwebkit2gtk-4.1-dev \ + build-essential \ + curl \ + wget \ + file \ + libxdo-dev \ + libssl-dev \ + libayatana-appindicator3-dev \ + librsvg2-dev \ + libfontconfig1-dev \ + libfreetype6-dev \ + libgl1-mesa-dev \ + libvulkan-dev \ + libasound2-dev - name: Install cargo-packager run: cargo install cargo-packager --locked || true @@ -63,7 +81,7 @@ jobs: run: cargo build --release --bin oneclient_app --target ${{ matrix.target }} - name: Package Application - run: cargo packager --release --target ${{ matrix.target }} + run: cargo packager --release --target ${{ matrix.target }} --formats ${{ matrix.formats }} continue-on-error: true - name: Upload Build Artifacts @@ -72,6 +90,11 @@ jobs: name: binaries-${{ matrix.name }} path: | target/${{ matrix.target }}/release/oneclient_app* + target/${{ matrix.target }}/release/OneClient* + target/${{ matrix.target }}/release/*.deb + target/${{ matrix.target }}/release/*.AppImage + target/${{ matrix.target }}/release/*.dmg + target/${{ matrix.target }}/release/*.exe target/${{ matrix.target }}/release/bundle/**/* target/release/oneclient_app* dist/**/* diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a5a928f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/target +/dist +*.swp +*~ +.DS_Store +Thumbs.db diff --git a/packages/oneclient_app/Cargo.toml b/packages/oneclient_app/Cargo.toml index 1c5c9b86..499cc6c8 100644 --- a/packages/oneclient_app/Cargo.toml +++ b/packages/oneclient_app/Cargo.toml @@ -69,7 +69,6 @@ publisher = "Polyfrost Inc." copyright = "© 2026 Polyfrost Inc." homepage = "https://polyfrost.org/projects/oneclient" long-description = "Next-generation open source Minecraft launcher" -formats = ["nsis", "app", "dmg", "deb", "appimage"] binaries = [{ path = "oneclient_app", main = true }] icons = [ "icons/32x32.png", diff --git a/packages/oneclient_auth/tests/offline.rs b/packages/oneclient_auth/tests/offline.rs index 21325eec..ec7b074a 100644 --- a/packages/oneclient_auth/tests/offline.rs +++ b/packages/oneclient_auth/tests/offline.rs @@ -28,13 +28,14 @@ fn offline_uuid_matches_vanilla_algorithm() { } #[tokio::test] -async fn offline_account_blocked_without_microsoft() { +async fn offline_account_allowed_without_microsoft() { isolate_launcher_dir(); let mut store = CredentialsStore::default(); - let err = store.add_offline_account("Steve".into()).unwrap_err(); + let offline = store.add_offline_account("Steve".into()).unwrap(); - assert!(err.to_string().contains("Microsoft")); + assert_eq!(offline.kind, AccountKind::Offline); + assert_eq!(offline.username, "Steve"); } #[tokio::test] @@ -51,7 +52,7 @@ async fn offline_account_allowed_when_microsoft_exists() { } #[tokio::test] -async fn default_offline_fails_when_last_microsoft_removed() { +async fn default_offline_works_when_last_microsoft_removed() { isolate_launcher_dir(); let mut store = CredentialsStore::default(); @@ -60,11 +61,13 @@ async fn default_offline_fails_when_last_microsoft_removed() { store.users.insert(msa_id, msa); let offline = store.add_offline_account("Steve".into()).unwrap(); - store.default_user = Some(offline.id); + let offline_id = offline.id; + store.default_user = Some(offline_id); store.users.remove(&msa_id); - let err = store.default_account().await.unwrap_err(); - assert!(err.to_string().contains("Microsoft")); + let account = store.default_account().await.unwrap().unwrap(); + assert_eq!(account.id, offline_id); + assert_eq!(account.kind, AccountKind::Offline); } #[test]