Skip to main content

Developer Workflows

This page is the contributor operating guide for day-to-day engineering work.

Workspace Commands

From repository root:

cargo build --workspace
cargo check --workspace
cargo test --workspace
cargo fmt --all
cargo clippy --workspace --all-targets -- -D warnings

Focused Crate Loops

cargo test -p rift-core
cargo test -p rift-crypto
cargo test -p wavry-client
cargo test -p wavry-server
cargo test -p wavry-gateway
cargo test -p wavry-relay

Run a single test:

cargo test --workspace <TEST_NAME>
cargo test -p <crate> <TEST_NAME>

Desktop App Loop (Tauri)

cd crates/wavry-desktop
bun install
bun run check
bun run tauri dev

If Tauri build fails because frontendDist is missing, ensure web build output exists at crates/wavry-desktop/build or regenerate frontend assets before running native packaging.

Control Plane Local Loop

Run each service in a separate terminal:

cargo run --bin wavry-gateway
cargo run --bin wavry-master -- --listen 127.0.0.1:8080
cargo run --bin wavry-relay -- --master-url http://127.0.0.1:8080

Then start host/client:

cargo run --bin wavry-server -- --gateway-url ws://127.0.0.1:3000/ws
cargo run --bin wavry-client -- --connect 127.0.0.1:0

Linux and Wayland Validation Loop

./scripts/linux-display-smoke.sh

For desktop runtime verification, use Tauri commands exposed in crates/wavry-desktop/src-tauri/src/commands.rs:

  • linux_runtime_health
  • linux_host_preflight

Android Loop

./scripts/dev-android.sh
./scripts/run-android.sh

CI-Oriented Validation Before Release

  1. cargo fmt --all
  2. cargo clippy --workspace --all-targets -- -D warnings
  3. cargo test --workspace
  4. website checks (apps/website build and style checks)
  5. verify release artifact names against Release Artifacts

Contribution Workflow and CLA

Before opening a pull request:

  1. Branch from main and keep the change focused to one logical scope.
  2. Run required local quality gates (fmt, clippy, test, and website checks when docs/UI are touched).
  3. Use Conventional Commit style for commit subjects (feat:, fix:, docs:, etc.).
  4. Include the CLA attestation in commit or PR context: I have read and agree to CLA.md.
  5. Ensure all required CI workflows are green before merge.

References:

Where to Start for Major Changes

Change TypeFirst Files
Protocol evolutioncrates/rift-core/src/lib.rs, crates/rift-core/src/cc.rs, crates/rift-crypto/src/noise.rs
Relay behaviorcrates/wavry-relay/src/main.rs, crates/wavry-master/src/selection.rs
Gateway auth/securitycrates/wavry-gateway/src/auth.rs, crates/wavry-gateway/src/security.rs
Linux media pathcrates/wavry-media/src/linux.rs, crates/wavry-platform/src/linux/mod.rs
Desktop UX + commandscrates/wavry-desktop/src/routes/+page.svelte, crates/wavry-desktop/src-tauri/src/commands.rs