Skip to content

chore: release v0.5.0 #196

chore: release v0.5.0

chore: release v0.5.0 #196

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.86.0
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: sudo apt-get update && sudo apt-get install -y libasound2-dev
- run: cargo clippy --workspace --all-targets -- -D warnings
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
# cpal's Linux (ALSA) backend needs the libasound headers to build.
- run: sudo apt-get update && sudo apt-get install -y libasound2-dev
# lm-llamacpp links sherpa's static libraries and llama.cpp into one
# binary; on x86-64 Linux that combination aborts in C++ static
# initialization (std::bad_alloc) before the harness runs, even though
# its only test is model-backed and ignored in CI. Each library links
# fine alone — only the combined binary fails. Skip running it here;
# the clippy job still builds it.
- run: cargo test --workspace --exclude lm-llamacpp
# Portability gate. The sans-IO core, the runtime-agnostic async layer, and
# every platform-neutral trait crate must compile for the browser — no
# host-only dependency may creep in. Concrete backends are exempt: they are
# allowed to be host-specific (pipecrab-audio-cpal is native-only, so it is
# not checked here; the browser audio path will be a separate crate).
#
# The sans-IO core is pure logic — no async, no I/O — so it must build everywhere.
- run: cargo check -p pipecrab-core --target wasm32-unknown-unknown
# The runtime must stay executor-agnostic and build for the browser.
- run: cargo check -p pipecrab-runtime --target wasm32-unknown-unknown
# The audio I/O trait crate is platform-neutral and must build for the browser too.
- run: cargo check -p pipecrab-audio --target wasm32-unknown-unknown
# The STT interface is only the Transcriber trait plus its adapter — no engine — so
# it must build for the browser, where the engine is Transformers.js in a Worker.
- run: cargo check -p pipecrab-stt --target wasm32-unknown-unknown
# The VAD interface is likewise engine-free — just the VoiceActivityDetector trait —
# so it must build for the browser, where the engine is onnxruntime-web.
- run: cargo check -p pipecrab-vad --target wasm32-unknown-unknown
# The TTS interface is engine-free — the Synthesizer trait, its stage, and the
# chunker — so it must build for the browser, where the engine runs in a Worker.
- run: cargo check -p pipecrab-tts --target wasm32-unknown-unknown
# The LM interface is engine-free — the LanguageModel trait plus the LmStage
# adapter — so it must build for the browser, where the engine runs in a Worker.
- run: cargo check -p pipecrab-lm --target wasm32-unknown-unknown