Thank you for your interest in contributing!
git clone https://github.com/userFRM/tauri-conduit.git
cd tauri-conduit
cargo test --workspace
cargo clippy --workspace- Rust 1.85+ (edition 2024)
- Node.js 20+ (for TypeScript client)
crates/
conduit/ Facade crate (re-exports #[command], handler!, core types)
conduit-core/ Core library (codec, router, ring buffer, handler trait)
conduit-derive/ Proc macros (Encode, Decode, #[command], handler!)
tauri-plugin-conduit/ Tauri v2 plugin (requires Tauri app context)
packages/
tauri-plugin-conduit/ TypeScript client (tauri-plugin-conduit)
cargo test --workspace # All Rust tests
cargo clippy --workspace # Lint check
cargo bench --workspace # Benchmarks (requires criterion)
cd packages/tauri-plugin-conduit && npx tsc --noEmit # TypeScript type check- Follow existing patterns in the codebase
- All public items must have doc comments
- No
unsafecode without justification - Prefer
std::syncovertokio::syncin conduit-core (no tokio dependency) - Use
unwrap_or_else(|e| e.into_inner())for mutex poisoning recovery
- No network surface. Everything runs in-process via Tauri's custom protocol handler.
- No async in conduit-core. Handlers are synchronous. Callers that need async should spawn internally.
- Binary-first. The wire format is fixed-width binary, not JSON. JSON is only used for Tauri command bootstrap.
- Security by default. Per-launch invoke key on every request, constant-time validation.
- Fork the repo and create a feature branch
- Add tests for new functionality
- Ensure
cargo test --workspaceandcargo clippy --workspacepass - Keep PRs focused -- one feature or fix per PR
By contributing, you agree that your contributions will be licensed under the MIT OR Apache-2.0 dual license.