matter-codec 0.2.0

Matter protocol TLV (Tag-Length-Value) encoder and decoder.
Documentation
# Changelog

All notable changes to `matter-codec` will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Changed

- MSRV raised from Rust 1.75 to Rust 1.88 (workspace-level bump).
  See workspace `CHANGELOG.md` for rationale.

## [0.1.0] - 2026-05-17

First publishable release.

### Added

- `Tag` enum with all 5 spec-defined tag forms (Anonymous,
  Context(u8), CommonProfile(u32), ImplicitProfile(u32),
  FullyQualified { vendor, profile, tag }).
- `Value` enum with all 11 element types (Bool, Uint, Int, Float,
  Double, Utf8, Bytes, Null, Structure, Array, List).
- `TlvWriter` with `put_*` primitives for every scalar plus
  `start_structure` / `start_array` / `start_list` / `end_container`
  plus a recursive `write_value` convenience. Minimal-width encoding
  for integers, tags, and length fields.
- `TlvReader` with `next()` streaming primitive returning
  `Element::Scalar` / `ContainerStart` / `ContainerEnd`, plus a
  recursive `read_value` tree-builder. Container nesting limited
  to `MAX_DEPTH = 32` levels per spec recommendation.
- `Error` enum with `thiserror::Error` derive covering every wire
  failure mode (UnexpectedEof, InvalidTagControl, InvalidElementType,
  InvalidUtf8, IntegerOutOfRange, BufferTooSmall, LengthOverflow,
  UnexpectedEndOfContainer, UnclosedContainer, ContainerTooDeep).

### Test coverage

- 49 writer unit tests covering every put_* method at every width
  boundary, every tag form, and the recursive write_value dispatch.
- 48 reader unit tests covering every element type, every tag form,
  three streaming error paths, and the recursive read_value tree
  builder with three additional container-specific error paths.
- 5 internal unit tests for the private `element_type` and
  `tag_control` modules (2 + 3 respectively).
- 1 integration test loading 24 spec-derived TLV vectors and
  asserting byte-for-byte encode + structural decode round-trip.
- 2 proptest round-trip properties (scalar + full Value with
  containers up to depth 4) at 256 cases each.
- A `cargo-fuzz` target (`fuzz_decode`) that runs `read_value` on
  arbitrary bytes; weekly 5-minute CI run.

### Notes

- MSRV is Rust 1.75.
- No cryptographic primitives are implemented in this crate.

[0.1.0]: https://github.com/phunapps/matter-rust/releases/tag/matter-codec-v0.1.0