name: Release Desktop Wallet on: push: tags: - 'wallet-v*' workflow_dispatch: inputs: draft: description: 'Create as draft release' required: false default: true type: boolean env: CARGO_TERM_COLOR: always permissions: contents: write jobs: # Build Linux AppImage on self-hosted runner build-linux: name: Build Wallet (Linux) runs-on: self-hosted steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Install pnpm run: npm install -g pnpm - name: Setup Rust uses: dtolnay/rust-toolchain@stable - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y \ libgtk-3-dev \ libwebkit2gtk-4.1-dev \ libsoup-3.0-dev \ libjavascriptcoregtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libclang-dev \ llvm-dev - name: Cache cargo registry uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ key: ${{ runner.os }}-cargo-wallet-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-wallet- - name: Cache pnpm store uses: actions/cache@v4 with: path: ~/.pnpm-store key: ${{ runner.os }}-pnpm-store-${{ hashFiles('apps/desktop-wallet/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Install frontend dependencies working-directory: apps/desktop-wallet run: pnpm install - name: Build Tauri app (Linux) uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: projectPath: apps/desktop-wallet tagName: wallet-v__VERSION__ releaseName: 'Synor Wallet v__VERSION__' releaseBody: | ## Synor Desktop Wallet A secure desktop wallet for the Synor blockchain network with post-quantum cryptography support (Dilithium3). ### Installation **Linux:** - Download the `.AppImage` file - Make it executable: `chmod +x Synor*.AppImage` - Run: `./Synor*.AppImage` ### Features - 24-word BIP39 mnemonic generation - Post-quantum Dilithium3 signatures - OS keychain integration - System tray support ### Security Note Always verify the checksums of downloaded files. releaseDraft: ${{ github.event.inputs.draft || true }} prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}