First off, thank you for considering contributing to etr! It's people like you who make the open-source community such an amazing place to learn, inspire, and create.
- Check for existing issues: Before opening a new issue, please search the issue tracker to see if the problem has already been reported.
- Provide reproduction steps: A clear description of how to reproduce the bug helps us fix it faster.
- Include environment details: OS, shell,
etrversion (etr --version), and how you're connecting (localhost, remote, SSH port, etc.).
- Open a GitHub issue describing your idea and why it would be useful.
- Be specific: Describe the desired behavior and any potential edge cases.
- Fork the repository and create your branch from
mainusing the prefix pattern{feature,fix,chore,docs}/<branch-name>. - Ensure the code follows the project's style: We use
rustfmtandclippy. - Run the quality gate:
just check(fmt + clippy) andjust testmust both pass. - Write tests: Every new public function and every bug fix needs a corresponding test.
- Bump the version in
Cargo.toml(patch for fixes/docs/tests, minor for new features) and runjust man. - Write a clear commit message: Imperative mood, subject line under 50 characters.
- Link related issues: Mention any related issues in your PR description.
- Rust (latest stable)
- just (command runner)
- mandown (for generating man pages —
cargo install mandown) - SSH access to localhost (required for the end-to-end test suite)
git clone https://github.com/l1a/etr.git
cd etr
cargo buildBefore submitting a PR, please run:
just check # cargo fmt --check + cargo clippy -D warnings
just test # all unit and integration testsjust check-tools # verifies tmux, ssh, passwordless localhost SSH
just e2e-local # full happy-path + reconnect test against localhostBy contributing to etr, you agree that your contributions will be licensed under the project's GPL-3.0 License.