Skip to content

Contributing

Development targets main in Cretezy/cretty_private. Read the root AGENTS.md when working with a coding agent.

Repository access is required while the repository is private:

Terminal window
git clone https://github.com/Cretezy/cretty_private.git
cd cretty_private
cargo build --locked
cargo run --locked

Rustup selects Rust 1.97.1 from rust-toolchain.toml. Use cargo run --release --locked for an optimized build. Keep Cargo.lock committed.

On Linux, install a C compiler/linker, pkg-config, and desktop development libraries. Ubuntu builds use:

Terminal window
sudo apt-get install build-essential pkg-config libxkbcommon-dev libwayland-dev libegl1-mesa-dev

A working graphics driver and desktop session are needed to run the app. The system linker is the default; Mold is optional. On macOS, install Xcode Command Line Tools with xcode-select --install.

Run ./scripts/install-from-local.sh to install for the current user. macOS bundling uses cargo-bundle 0.11.0:

Terminal window
cargo install cargo-bundle --version 0.11.0 --locked
cargo build --release --locked --package cretty
cargo bundle --release --package cretty
open target/release/bundle/osx/Cretty.app

Local app bundles are unsigned. See Releases before distributing one. Icons and bundle metadata live in cretty/icons/ and cretty/Cargo.toml; run ./generate.sh from cretty/icons/ when changing the source icon.

Windows development is experimental. Install Rust and Visual Studio Build Tools with the Desktop development with C++ workload, then run cargo build --release --locked --package cretty. Include the Windows version, architecture, and workarounds when reporting results; no Windows installer is part of the supported release matrix.

From the repository root:

Terminal window
cargo fmt --all -- --check
cargo check --workspace --all-targets --locked
cargo nextest run --workspace --all-targets --locked
cargo clippy --workspace --all-targets --locked -- -D warnings

If Nextest is unavailable, use cargo test --workspace --all-targets --locked. Include --workspace: plain Cargo commands otherwise select only the app. Add tests at the affected boundary and check native desktop behavior as well; compilation alone does not validate focus, graphics, clipboard, or installation. Run cargo audit after dependency updates and review advisory reachability.

The guide uses Astro Starlight. Edit docs/src/content/docs/ and update docs/astro.config.mjs when changing navigation.

Terminal window
./scripts/docs check
cd docs
bun install --frozen-lockfile
bun run build

For settings changes, update the Rust schema/documentation or renderer, then run ./scripts/docs generate. Never hand-edit the generated reference. Keep related guides, shortcuts, CLI examples, and screenshots synchronized. Use neutral demo content and real, borderless app captures. See docs/AGENTS.md for conventions.

Path Purpose
cretty/ Application UI, tabs, windows, settings, themes, and host integration.
cretty_terminal/ Iced widget, PTY, protocols, renderer, selection, search, links, and graphics.
tools/cretty_config_docs/ Configuration-reference renderer.
docs/ Astro Starlight documentation.
scripts/ Installation, documentation, and release helpers.

The terminal crate README contains the host API and example; the crate is not published separately.

Keep changes focused and describe the problem, resulting behavior, and validation. Conventional Commit titles (fix: ..., feat: ..., docs: ...) feed release-please. See Releases for the release process. Report vulnerabilities privately using the security policy.