Contributing¶
git clone https://github.com/vsdudakov/yara-code
cd yara-code
make lint # cargo fmt --check + clippy -D warnings
make test # cargo test --workspace
make run ARGS=~/code/project
Nothing but a Rust toolchain and git is needed. CI runs the gate on Linux,
macOS and Windows, and gates crates/yara-core at 90% line coverage.
House rules¶
- Minimal. Add what a screen uses; no new dependency without a reason the standard library or a crate already in the tree cannot meet.
- Everything configurable lives in
settings.json, with a comment inSettings::to_commented_jsonand a test. Keys are never hardcoded: an action is aCommandvariant, a default chord insettings.rs, and an arm inApp::execute— the settings tests then enforce that it is bound and that no two commands share a chord. - Nothing the terminal cannot send. The default chords are function keys
and plain
Ctrl;Ctrl+Shiftneeds the kitty keyboard protocol, which most terminals lack. - Comments explain why, not what, and read as prose.
- Tests are named as sentences and assert behaviour, not implementation.
- The frontend is tested end to end:
crates/ycode/tests/frame.rsruns the realAppon ratatui's test backend, keys and mouse in, the frame's text out.
Screenshots¶
make shots redraws every image on these pages with the editor itself, from a
scripted session on a bench of two repositories with a stand-in agent. Change a
screen, run it, and commit the SVGs with the change.
Releasing¶
Tag vX.Y.Z. The release workflow builds the binary for macOS, Linux and
Windows, the .deb and .rpm, attaches them with checksums, publishes the apt
and dnf repositories, and updates the Homebrew tap and the AUR PKGBUILD.