# Changelog All notable changes to pkarr will be documented in this file. ## [3.5.0](https://github.com/nuhvi/pkarr/compare/v2.0.0...pkarr-v3.5.0) - 2025-02-21 ### Added - Use `n_timestamp::Timestamp` - Impl `PartialEq, Eq` for `SignedPacket`. - Impl `From<PublicKey>` for `CacheKey`. - Derive `serde::Serialize` and `serde::Deserialize` for `SignedPacket`. - Add `SignedPacket::serialize` and `SignedPacket::deserialize`. - Add `SignedPacket::elapsed()` to return the number of seconds since this packet was last seen from remote network. - Add `SignedPacket::all_resource_records()` to access all resource records without accessing the dns packet. - Add `SignedPacket::builder()` and convenient methods to create `A`, `AAAA`, `CNAME`, `TXT`, `SVCB`, and `HTTPS` records. - Add `SignedPacket` implementation of `TryFrom<MutableItem>`. - Add `pkarr::LmdbCache` for persistent cache using lmdb. - Add `pkarr.pubky.org` as an extra default Relay and Resolver. - Implement `FromStr` for `PublicKey` - Add `ClientBuilder::no_default_network()` to disable both the `Dht` and `relays` settings, and allow you to choose what to add back. - Add `ClientBuilder::no_dht()` to disable using the DHT, relaying only on relays. - Add `ClientBuilder::dht()` to access `mainline::DhtBuilder` and control the internal dht node. - Add `ClientBuilder::extra_bootstrap()` to add extra nodes to the default bootstrap nodes. - Add `ClientBuilder::no_relays()` to disable using relays and relay only on the DHT. - Add `ClientBuilder::relays()` to set (override) the relays to be used. - Add `ClientBuilder::extend_relays()` to add extra relay servers to the list of relays used. - Add `Client::dht()` to return a reference to the internal dht node if configured. - Add `Client::resolve_most_reecent()` to do exactly what it says on the tin. - Add `PublishError` enum with more granular errors for concurrent publishing. - Add feature `endpoints` to resolve `HTTPS` and `SVCB` endpoints over Pkarr - Add feature `reqwest-resolve` to create a custom `reqwest::dns::Resolve` implementation from `Client` and `relay::client::Client` - Add feature `tls` to create `rustls::ClientConfig` from `Client` and `relay::client::Client` and create `rustls::ServerCongif` from `KeyPair`. - Add feature `reqwest-builder` to create a `reqwest::ClientBuilder` from `Client` and `relay::client::Client` using custom dns resolver and preconfigured rustls client config. - Add `BlockingClient` wrapper accessed by calling `Client::as_blocking()`. - Add `Client::minimum_ttl()` and `Client::maximum_ttl()` getters. ### Changed - Replace `Settings` with non-consuming `ClientBuilder`. - `SignedPacket::last_seen` is a `Timestamp` instead of u64. - `SignedPacket::resource_records()` and `SignedPacket::fresh_resource_records()` support wildcard names. - Replace `z32` with `base32`. - Update `mainline` to v5.0.0. - Make `rand` non-optional, and remove the feature flag. - Replace `ureq` with `reqwest` to work with HTTP/2 relays, and Wasm, but you can still use the client outside tokio. - Update `simple-dns` so you can't use `Name::new("@")`, instead you should use `Name::new(".")`, `SignedPacket::resource_records("@")` still works. - `Client::resolve`, `BlockingClient::resolve` return expired cached `SignedPacket` _before_ making query to the network (Relays/Dht) in the background. - Replace `ClientBuilder::testnet()` with `ClientBuilder::bootstrap()`. - `Client::cache()` returns an option, in case the cache size is set to zero. - Rename feature `relay` to `relays`. - Default client uses both `mainline` and `relays`, and each can be disabled with feature flags or the builder methods. - Improve `Debug` and `Display` implementations for `SignedPacket`. - update to `mainline` v5. - `Client::publish()` and `BlockingClient` take an optional `cas` argument. ### Removed - Removed `relay_client_web`, replaced with *(pkarr::Client)*. - Removed `SignedPacket::from_packet`. - Removed `SignedPacket::packet` getter. - Removed rexported `mainline` - Removed `Client::shutdown` and `Client::shutdown_sync`. - Removed crate level `Error` enum, and replaced with more granular error types. - Removed resolvers and replaced by contacting relays over http(s).