···11# changelog
2233+## 0.3.1
44+55+- **feat**: `XrpcClient.queryChecked` and `XrpcClient.procedureChecked` return a checked union of successful `Response` or structured `XrpcError`, preserving AT Protocol `error` / `message` envelopes for non-2xx responses.
66+- **feat**: `XrpcClient.RetryPolicy` adds status-driven retries for transient transport errors plus HTTP 429/5xx responses, with `retry-after` and rate-limit header support.
77+- **feat**: `HttpTransport.fetch` captures `ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`, and `retry-after` headers on responses.
88+- **fix**: DID and handle resolution now reject unsafe network targets by default, including private, loopback, link-local, multicast, documentation, and unspecified IP ranges.
99+- **fix**: identity resolution validates DNS and redirect targets before issuing HTTP requests, reducing SSRF exposure when resolving untrusted AT Protocol identifiers.
1010+311## 0.3.0
412513- **breaking**: zig 0.16 — all networking APIs take `io: std.Io` as first parameter
···4455## current status
6677-**v0.3.0-alpha** — zig 0.16, `std.Io` throughout.
77+**v0.3.1** — zig 0.16, `std.Io` throughout.
8899the v0.3.0 migration replaced all networking and concurrency primitives with zig 0.16's [`std.Io`](https://ziglang.org/documentation/master/std/#std.Io) interface. the API change is mechanical: every networking type takes `io: std.Io` as its first parameter. streaming clients moved from `connect()` + `next()` loops to `subscribe(handler)` with automatic reconnection, backoff, and host rotation.
10101111-the library is stable and tested. the alpha tag reflects that downstream consumers (zlay, labelz, pollz) are still validating in production.
1111+the library is stable and tested. downstream consumers continue to drive hardening work, especially around network safety and XRPC error handling.
12121313## history
1414···2424- CID hash verification in CAR parser (v0.2.1), size limits (v0.2.2)
2525- OAuth 2.1 DPoP client (v0.2.14)
2626- configurable keep-alive, transport options (v0.2.12–v0.2.18)
2727-- `std.Io` migration, `subscribe(handler)` streaming API (v0.3.0-alpha)
2727+- `std.Io` migration, `subscribe(handler)` streaming API (v0.3.0)
2828+- checked XRPC results, retry policy, and identity network safety (v0.3.1)
28292930this pattern — start minimal, expand based on real pain — continues.
3031···3334the library covers the full AT Protocol verification pipeline: identity resolution, repo parsing, signature verification, and MST validation. benchmarked against Go (indigo) and Rust (rsky) in [atproto-bench](https://tangled.org/zzstoatzz.io/atproto-bench).
34353536near-term:
3636-- promote to v0.3.0-beta once production consumers stabilize
3737-- cut v0.3.0 when the API surface is confirmed
3737+- keep validating the v0.3.x surface in production consumers
3838+- promote repeated downstream patterns into the library once they prove stable
38393940what's missing will show up when people build things. until then, no speculative features.
4041