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-c3' 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-c3" >> $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 }} - **Complete Multiplayer Server Skin Support**: Native integration with client-side `OfflineSkins Reloaded` for Fabric 1.21.11, allowing skins to render directly on cracked multiplayer servers (e.g. `alwto.net`) when the server transmits empty player profiles. - **Proper Isolated Offline Skin System (Authlib-Injector)**: Embedded, zero-network-dependency Authlib-Injector session provider with RSA signature verification. 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. - **Dynamic Version Compatibility**: Automatically gates offline skin mod integration strictly to matching versions, while Authlib-Injector handles clean, zero-dependency offline profile signing across all Minecraft versions. - **Purged Incompatible Mods**: Completely cleaned and prevented CustomSkinLoader crashes on modern Fabric Loader (0.17+) and Sponge Mixin 0.8.7. - **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