Development

Building from source

Copy Markdown

Set up Rust, WebAssembly, Svelte, and Tauri development for Inkfinite.

Inkfinite is a pnpm workspace with Rust crates, a WebAssembly document engine, a Svelte web app, and a Tauri desktop shell.

Requirements

Install Node.js 18 or newer, pnpm, and Rust 1.89. Desktop development also requires the Tauri 2 prerequisites for your operating system.

From the repository root, install JavaScript packages:

pnpm install

Add the WebAssembly target and install the wasm-bindgen CLI version used by Cargo.lock:

rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli --version 0.2.126 --locked
pnpm wasm:build

Run the applications

Start the documentation site and web editor:

pnpm dev:web

Open the printed local URL for the site or its /app route for the editor. Start the desktop app with:

pnpm tauri dev

Workspace commands

Build the CLI with Cargo or create its installable release tree:

cargo build -p inkfinite-cli
cargo xtask dist

Generate TypeScript bindings after changing shared Rust types:

pnpm bindings:generate

Run the repository checks from the root:

cargo fmt --all -- --check
cargo test --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
pnpm format:check
pnpm test
pnpm check
pnpm lint

See Testing for focused package and Playwright commands. See Performance corpus and profiling for native, process, renderer, and browser measurements.