Skip to content

fix: hide console window for sidecar processes on Windows #28

fix: hide console window for sidecar processes on Windows

fix: hide console window for sidecar processes on Windows #28

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Release tag (e.g. v0.2.0) β€” must match an existing git tag'
required: true
permissions:
contents: write
env:
# Opt into Node.js 24 for all actions (avoids Node 20 deprecation warnings)
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build:
name: Build Β· ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
target: x86_64-pc-windows-msvc
uv-ext: '.exe'
- os: macos-14 # Apple Silicon
target: aarch64-apple-darwin
uv-ext: ''
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
uv-ext: ''
# Skip RPM β€” xz-compressing a large binary takes hours on CI.
# AppImage + deb cover the vast majority of Linux users.
extra-args: '--bundles deb,appimage'
steps:
# ── Checkout ─────────────────────────────────────────────────────────────
- name: Checkout
uses: actions/checkout@v4
# ── uv binary ────────────────────────────────────────────────────────────
# The sidecar Python source (src-tauri/sidecar-src/) and the pre-exported
# ONNX model are committed directly to the repo β€” no copy or export step
# needed. All CI has to do is place the uv binary that lib.rs will call
# at first launch to sync the venv.
- name: Install uv
uses: astral-sh/setup-uv@v3
# Seed preinstalled plugins from the public plugins registry into
# src-tauri/sidecar-src/ragdoll_plugins/ so lib.rs can copy them to
# AppData on the user's first launch.
- name: Fetch preinstalled plugins
shell: bash
run: |
git clone --depth 1 https://github.com/itz-mune/RAGdoll-plugins.git _plugins_tmp
mkdir -p src-tauri/sidecar-src/ragdoll_plugins
SRC="_plugins_tmp/plugins"
if [ -d "$SRC" ]; then
cp -r "$SRC/." src-tauri/sidecar-src/ragdoll_plugins/
echo "Seeded $(ls src-tauri/sidecar-src/ragdoll_plugins | wc -l | tr -d ' ') plugin(s)"
else
echo "No plugins/ dir found β€” skipping seed"
fi
rm -rf _plugins_tmp
# Place the CI uv binary into src-tauri/binaries/ using Tauri's
# externalBin naming convention: uv-{triple}(.exe).
# At install time Tauri strips the triple β†’ uv / uv.exe beside the exe.
- name: Place uv binary for Tauri
shell: bash
run: |
mkdir -p src-tauri/binaries
UV_PATH="$(which uv)"
DST="src-tauri/binaries/uv-${{ matrix.target }}${{ matrix.uv-ext }}"
cp "$UV_PATH" "$DST"
echo "Placed uv β†’ $DST"
# ── Node / pnpm ──────────────────────────────────────────────────────────
- name: Set up Node.js 24
uses: actions/setup-node@v4
with:
node-version: 24
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Install frontend dependencies
run: pnpm install --frozen-lockfile
# ── Rust ─────────────────────────────────────────────────────────────────
- name: Set up Rust (stable)
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache Rust build artefacts
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri -> target
# ── Linux system libraries ────────────────────────────────────────────────
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf \
libssl-dev \
rpm \
libglib2.0-dev \
libpango1.0-dev \
libcairo2-dev \
libgdk-pixbuf2.0-dev \
libffi-dev \
shared-mime-info \
libgtk-3-dev
# ── Pre-build sanity check ───────────────────────────────────────────────
- name: Verify sidecar-src exists and is populated
shell: bash
run: |
echo "=== git commit ==="
git rev-parse HEAD
echo "=== src-tauri/sidecar-src top-level ==="
ls -la src-tauri/sidecar-src/ || echo "MISSING: src-tauri/sidecar-src/"
echo "=== file count ==="
find src-tauri/sidecar-src -type f | wc -l
echo "=== uv binary ==="
ls -la src-tauri/binaries/ || echo "MISSING: src-tauri/binaries/"
# ── Build & publish ───────────────────────────────────────────────────────
- name: Build and publish Tauri app
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
tagName: ${{ github.ref_name }}
releaseName: 'RAGdoll ${{ github.ref_name }}'
releaseBody: |
See the [**What's New**](https://github.com/itz-mune/RAGdoll#-whats-new--v020) section in the README for full release notes.
> **First-time install?** Download the installer for your OS below.
> **Existing install?** RAGdoll will prompt you to update automatically.
releaseDraft: true
prerelease: false
args: --target ${{ matrix.target }} ${{ matrix.extra-args }}
includeUpdaterJson: true
updaterJsonPreferNsis: true