# Contributing ## Layout - `src/lib.rs` — public re-exports. - `src/client.rs` — `Supernote` struct and its methods. - `src/discover.rs` — mDNS discovery. - `src/browse.rs` — Browse & Access wire format. Every assumption about the device's HTTP surface lives here; nothing else in the crate should encode Ratta-specific quirks. - `src/error.rs` — the `Error` enum. ## Style - Rust 2024 edition. - Sync API (`ureq` + `mdns-sd` blocking). Async callers wrap with `tokio::task::spawn_blocking`. - No panics in library code; return `Result`. - No emoji in any output, doc, or comment. ## Reconnaissance Wire-format details (listing JSON shape, PUT semantics, passcode header) were pinned by `curl` against a real device with Wi-Fi Transfer enabled. When a new firmware ships and something breaks, the fix belongs in `browse.rs`. Record the firmware version and the change in `CHANGELOG.md`. ## Tests Unit tests live alongside their module. Integration tests that need a real device go under `tests/` and are gated on the `SUPERNOTE_HOST` environment variable.