# supernote-push Push PDFs to a Ratta Supernote over its on-device Browse & Access HTTP server. LAN only, no cloud, no telemetry. ## Usage ```rust use supernote_push::Supernote; let sn = Supernote::at("192.168.1.42"); let bytes = std::fs::read("workout.pdf")?; sn.push_pdf("Document/ripgrow", "2026-07-19.pdf", &bytes)?; ``` Discovery via mDNS: ```rust use std::time::Duration; for device in supernote_push::discover(Duration::from_secs(3))? { println!("found: {device:?}"); } ``` ## What it does - Uploads bytes to a chosen folder on the device via HTTP `PUT`. - Lists folder contents. - Reports reachability as a first-class enum so callers can distinguish "device asleep or Wi-Fi Transfer off" from "device on the wrong network." - Best-effort mDNS discovery. ## What it does not do - Cloud sync (Supernote Cloud is deliberately unsupported). - USB transfer. - Read or decode `.note` files. - Handwriting recognition. ## Compatibility Targets the Browse & Access interface exposed on port 8089 when Wi-Fi Transfer is enabled on the device. Tested against firmware versions listed in `CHANGELOG.md`. The precise wire format is not officially documented by Ratta; the crate quarantines every wire-format assumption in `src/browse.rs` so firmware drift only touches one file. ## License MIT.