name: Release Multiplatform Binaries on: push: tags: - 'v*' workflow_dispatch: inputs: tag: description: 'Release Tag (e.g. v2.5.1)' required: false default: 'v2.5.1-c2' type: string permissions: contents: write env: SQLX_OFFLINE: true SQLX_OFFLINE_DIR: packages/oneclient_db/.sqlx jobs: build: strategy: fail-fast: false matrix: include: # Linux x86_64 - 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 (cross-compiled on macos-14) - os: macos-14 target: x86_64-apple-darwin name: macos-x86_64 formats: dmg,app runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - name: Rust Cache uses: Swatinem/rust-cache@v2 with: key: ${{ matrix.target }} cache-all-crates: true - name: Install Linux build dependencies 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 - name: Install cargo-packager run: cargo install cargo-packager --locked || true - name: Build Release Binary run: cargo build --release --bin oneclient_app --target ${{ matrix.target }} - name: Package Application run: cargo packager --release --target ${{ matrix.target }} --formats ${{ matrix.formats }} continue-on-error: true - name: Generate RPM Package (Linux) if: runner.os == 'Linux' run: | cargo install cargo-generate-rpm --locked || true cargo generate-rpm --target ${{ matrix.target }} -p oneclient_app || true - name: Upload Build Artifacts uses: actions/upload-artifact@v4 with: name: binaries-${{ matrix.name }} if-no-files-found: warn path: | target/${{ matrix.target }}/release/*.deb target/${{ matrix.target }}/release/*.AppImage target/${{ matrix.target }}/release/*.dmg target/${{ matrix.target }}/release/*-setup.exe target/${{ matrix.target }}/generate-rpm/*.rpm target/generate-rpm/*.rpm target/release/*.deb target/release/*.AppImage target/release/*.dmg target/release/*-setup.exe create-release: needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: ./artifacts merge-multiple: true - name: Determine Release Tag id: release_tag run: | if [[ "${{ github.ref_name }}" =~ ^v ]]; then echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT elif [ -n "${{ inputs.tag }}" ]; then echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT else echo "tag=v2.5.1-c2" >> $GITHUB_OUTPUT fi - name: Clean up previous release if exists env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release delete "${{ steps.release_tag.outputs.tag }}" -y --cleanup-tag=false || true - name: Publish GitHub Release uses: softprops/action-gh-release@v2 with: files: ./artifacts/**/* tag_name: ${{ steps.release_tag.outputs.tag }} name: "OneLauncher-Cracked ${{ steps.release_tag.outputs.tag }}" body: | ### What's New in ${{ steps.release_tag.outputs.tag }} - **Proper Isolated Offline Skin System (Authlib-Injector)**: Replaced legacy jar/pack character replacement with an embedded, zero-network-dependency Authlib-Injector session provider. Your skin is attached strictly and exclusively to your player profile, completely eliminating the bug where other players or NPCs on offline servers would receive your skin. - **Vanilla & Multi-server Integrity**: Other offline players remain authentic vanilla Steve/Alex, while online players on hybrid servers display their legitimate Mojang skins via transparent caching session proxying. - **Automatic Legacy Cleanup**: Restores pristine `client.jar` and removes stale skin resource packs from `options.txt` on launch. - **Guaranteed Offline Game Launch**: Direct offline launching with 0 Microsoft accounts required. - **In-Launcher 3D Skin Changer**: Full 3D skin preview, slim/classic arm model toggle, local file import, and online skin downloads. - **Rebased on Upstream 2.5.1**: All upstream 2.5.1 features, hook error reporting, and metadata self-healing. draft: false prerelease: false generate_release_notes: false make_latest: true fail_on_unmatched_files: false