Start with the source
The executable lives in crates/tide; workbench coordination is in crates/tide-ui. Use the repository's pinned Rust toolchain, Git, and a native C compiler/linker.
git clone https://github.com/ultradotdev/tide.git
cd tide
cargo build --locked --release -p tide
./target/release/tide . Use release builds for interactive testing. The architecture guide maps responsibilities across the crates.
Install your development build
To build and install in one step:
./install-from-source.sh Or install the executable from the release build above:
./install.sh --binary "$PWD/target/release/tide"
~/.local/bin/tide . To use a custom absolute prefix:
./install.sh --binary "$PWD/target/release/tide" --prefix "$HOME/apps"
./install.sh --prefix "$HOME/apps" --rollback Local installs leave shell profiles unchanged. Add the launcher's directory to PATH if needed. Use real directories without symlink components; on macOS, use /private/tmp for a temporary prefix.
To migrate a recognized earlier Rust install from ~/.local/lib/tide-rust:
./install.sh --binary "$PWD/target/release/tide" --migrate-legacy Run the core checks
cargo fmt --all -- --check
cargo clippy --locked --workspace --all-targets -- -D warnings
cargo test --locked --workspace The tracked pre-commit hook runs the formatting check. Enable it once per clone:
git config core.hooksPath .githooks Integration tests requiring PostgreSQL, real language servers, TLS, or vim have explicit prerequisites. Follow CONTRIBUTING.md for disposable fixtures and opt-in acceptance checks.
Work in the owning crate
- Keep text operations independent of terminal rendering.
- Service and provider crates expose typed operations without importing UI code.
- Rendering and mouse targets share geometry.
- Keep slow parsing, discovery, and service work off the input/render path.
- Protect unsaved buffers and use explicit confirmation for destructive actions.
- Use semantic theme roles and preserve child terminal colors.
Add commands through the native routes and shared runtime catalog. Maintain supported settings, aliases, and alternate bindings alongside the behavior they control.
Generate the references
cargo xtask generate-rust-reference --write
cargo xtask generate-rust-reference --check
cargo xtask generate-tide-site-package --write
cargo xtask generate-rust-notices --check
cargo xtask verify-tide-docs
cargo xtask validate-doc-links Commit generated references with their source changes. Regenerate the website package after committing an input change so its source fingerprint is current. cargo xtask --help lists the available maintainer tasks.
Plugins and UX customization
Coming soon: plugins, UX mods, a dynamic interface, and custom workspaces. The current contribution path is the Rust workspace. Plugin APIs and development instructions will follow when that capability is available.
Issues and pull requests
Report bugs and request features in GitHub issues. Open pull requests against main, describing the concrete trigger, resulting behavior, relevant checks, and remaining limitations.
For vulnerability reports, follow the security policy.
License
Tide is licensed under the Apache License, Version 2.0. Bundled dependencies, themes, and syntax assets retain their attribution and notice requirements.