# Notes for developers
## Build, test, and release
- Review changelog to ensure nothing important has been omitted
- Update version in `Cargo.toml`
- Update the changelog version (add a new release header below the `Unreleased` header)
- Update the version in `fetch-and-run.sh`
- `cargo clippy --all-targets && cargo test && cargo doc --no-deps`
- `cargo build --release`
- Do any manual testing
- Commit version change
- `cargo publish`
- `git tag -a vX.Y.Z -m X.Y.Z`
- `git push && git push --tags`
- Cut a new release on Codeberg:
- Name the release X.Y.Z (no `v` prefix)
- Attach `./target/release/breakmancer` to the release
- Hide auto-generated archives
- Test the release by running `./fetch-and-run.sh`
## Manual testing
Some interesting things to enter:
- `(yes "out" | head -n20)& (yes " err" | head -n20 >&2)` to show interleaving of stdout and stderr
- `echo start; sleep 10; echo stop` to experiment with blocking commands
- `while true; do date; sleep 0.001; done` for a rapid output stream (not as fast as `yes`)