Skip to main content
The Cargo workspace is crates/* plus src-tauri (root Cargo.toml). Plugins and the guest SDK build for wasm32-wasip2 in their own workspaces and are excluded.

Rules

  • One domain per crate. A feature crate owns its domain end to end: data model, I/O, protocol, and conversion to IPC types.
  • Shared types live in ide-core. Anything that crosses a crate boundary or IPC (ids, Pos/Range, IdeError, IdeEvent, settings types) is defined there and derives specta::Type.
  • Never reach into another crate’s internals. Use its public API, or move the shared type into ide-core.
  • Convert errors at the crate edge to IdeError.
  • ide-host assembles; src-tauri adapts. ide-host wires the crates into a UI-less backend (Host, Project, ops/); src-tauri exposes it as Tauri commands. Neither is the place for domain logic that belongs in a feature crate.
Each crate’s lib.rs opens with a module doc comment describing its contract; read it before changing the crate.

Foundation

Code intelligence

Run, debug and build

Tools and integrations

Remote

Plugins

Desktop and OS

Outside the workspace