Files
protocol-rs/CHANGELOG.md
T
swaits a21e368e18 chore: prepare 0.1.0 for crates.io publish
- Cargo.toml: add documentation and readme fields; expand the exclude
  list so deny.toml, justfile, mise.toml, .github, .jj, fuzz, and any
  cargo-mutants output never ship in the published tarball.
- README: badges, install snippet for both feature shapes, testing
  matrix.
- CHANGELOG.md: keep-a-changelog skeleton with a 0.1.0 entry.
- Revert framing.rs let-chain back to nested if-let so the published
  MSRV holds at the edition-2024 floor (1.85). Behaviour unchanged.

cargo publish --dry-run packages cleanly.
2026-04-13 12:12:12 -06:00

1.4 KiB

Changelog

All notable changes to this crate are documented here. The format follows Keep a Changelog and this project adheres to Semantic Versioning.

0.1.0 — 2026-04-13

Initial release. The DongLoRa wire-protocol types and COBS framing, extracted from the firmware so the firmware, client-rs, mux-rs, and bridge can share one definition.

Added

  • Wire types: Command, Response, RadioConfig, Bandwidth, ErrorCode, plus the MAX_PAYLOAD, RADIO_CONFIG_SIZE, TX_POWER_MAX, and PREAMBLE_DEFAULT constants. Fixed-width little-endian on the wire — see the firmware repo's PROTOCOL.md.
  • framing module: streaming CobsDecoder plus cobs_encode_response, with a MAX_FRAME constant sized to fit any valid Response after COBS overhead.
  • Cargo features: defmt (default, derives defmt::Format on public enums) and std (off, opt-in for host-side Debug niceties).
  • Test surface: 23 proptest properties (~1.13M cases per run), 4 cargo-fuzz targets, 16 canonical wire-byte vectors anchored to the spec, 6 mutation-killers. Mutation testing reaches 89/89 viable mutants under both feature configurations (3 provably-equivalent mutants documented and excluded). Miri runs clean on the library and the canonical-vector tests.
  • forbid(unsafe_code) at the crate root.
  • GitHub Actions CI (test/clippy/fmt/doc/deny/miri/fuzz/mutants).