# Contributor Source: https://tapid.dev/docs/contributor Build Tapid locally, run repository checks, and contribute changes. This is the development guide for contributing to Tapid. It covers the local checkout, build, tests, and repository checks. If you only need the package manager, start with [Getting started](https://tapid.dev/docs-markdown/getting-started/content.md) and use the public installer. ## Requirements Tapid itself requires Rust 1.88 or later. The repository's TypeScript tools require Node.js 22.7 or later for the reviewed development tools. Python and uv are no longer required after the TypeScript tooling migration. Install Rust with [rustup](https://rustup.rs/) if it is not already available, then check the tool versions: ```bash $ rustc --version $ node --version ``` ## Build from a checkout Clone the repository and build the CLI from the workspace root: ```bash $ git clone https://github.com/LimeTip/tapid.git $ cd tapid $ cargo build -p tapid --locked ``` A direct Cargo build writes the binary to `target/debug/tapid`. The v0.0.13 source also provides `node --experimental-strip-types scripts/dev.ts ` to share build output across worktrees. Obtain its target directory through the wrapper's `metadata` command instead of assuming the direct-build path. The source installer can also build a branch, tag, or commit with `--source-ref`, but a checkout gives you the files, tests, and documentation needed to make a change. ## Run the checks Start with the focused test for the behavior you are changing. Before opening a pull request, run the repository checks that apply to the change: ```bash $ cargo fmt --all -- --check $ cargo clippy --workspace --all-targets --all-features --locked -- -D warnings $ cargo test --workspace --all-features --locked $ cargo test --manifest-path tests/integration/Cargo.toml --locked $ cargo package --workspace --locked ``` For TypeScript architecture checks, use Node's built-in type stripping support: ```bash $ node --experimental-strip-types tools/check_architecture.ts $ node --experimental-strip-types --test tools/check_architecture_test.ts ``` The integration tests use temporary projects and local fixtures. They do not turn a local macOS result into evidence about Windows or Linux behavior. Platform-specific validation runs in CI. ## Keep the supported path working Every change should preserve this basic flow: ```text $ tapid init $ tapid i $ tapid install $ tapid install $ tapid run dev ``` The `run` example requires Node.js, an exact `tapid.toml` profile, and a supported containment platform. See [tapid run](https://tapid.dev/docs-markdown/commands/run/content.md). Source builds may expose unreleased commands; they do not establish public release availability. New behavior needs a focused test, failure-path coverage at the affected trust boundary, and documentation that states what the client does not support. Record architectural decisions in `docs/adr/`. Read [Testing Tapid](https://github.com/LimeTip/tapid/blob/main/docs/testing.md) and [the development rules](https://github.com/LimeTip/tapid/blob/main/docs/development-rules.md) for the full contributor checklist. ## Review the right revision The public website guides target v0.0.13 unless labelled historical. The repository testing instructions and TypeScript wrapper can advance independently. Read the [reviewed development checklist](https://github.com/LimeTip/tapid/blob/a6e109b65b5835c8bd6e023ca283488bd67512bf/docs/testing.md) for focused checks, build reuse and TypeScript test commands. The public CLI and supporting crates use Apache-2.0 starting with v0.0.12. Contributions retain their contributors' copyright ownership under that license. Run `tapid license` for the executable's embedded text. This does not change the private hosted application's licensing. Release preparation, candidate approval, signing and public smoke checks are separate from ordinary contribution checks. See [release automation](https://github.com/LimeTip/tapid/blob/a6e109b65b5835c8bd6e023ca283488bd67512bf/docs/release-automation.md); a prepared release is not a published release.