Contributing
Getting started
- Fork the repository and clone your fork.
- Create a branch for your change.
- Make your changes, run
cargo clippyandcargo test. - Open a pull request against
main.
Code style
Follow the patterns already established in the codebase:
- Keep layers separate. The API layer should not import from
imessage/. Everything goes through theMessageBackendtrait. - Use the existing error type. Add new variants to
core_layer/errors.rsrather than introducing new error types. - No
unwrap()in production paths. Use?or explicit error handling. - Run
cargo clippybefore pushing. CI will fail on clippy warnings. - Format with
cargo fmtbefore pushing.
Where to find issues
Check the GitHub issues list for open bugs and feature requests. Issues tagged good first issue are a good starting point.
Testing
Unit tests live alongside the code they test. Integration tests that require a real Mac (Full Disk Access, Messages.app) should be marked with #[ignore] so they do not run in CI automatically.
cargo test # run all non-ignored tests
cargo test -- --ignored # run ignored (integration) tests on a Mac with permissions