# [0.8.0] - 2026-03-29
## Breaking Changes
- The `Atex.IdentityResolver` config key has been replaced with a flat config
option. Update your config from:
```elixir
config :atex, Atex.IdentityResolver,
directory_url: "https://plc.directory"
```
to:
```elixir
config :atex,
plc_directory_url: "https://plc.directory"
```
- `Atex.Config.IdentityResolver` has been renamed to `Atex.Config`.
- `Atex.IdentityResolver.DIDDocument` has been renamed to `Atex.DID.Document`.
- Replace existing `Atex.DID.Document.new/1` method with the method previously
named `from_json/1`.
## Added
- `Atex.Crypto` module for performing AT Protocol-related cryptographic
operations.
- `Atex.PLC` module for interacting with
[a did:plc directory API](https://web.plc.directory/).
- `Atex.ServiceAuth` module for validating
[inter-service authentication tokens](https://atproto.com/specs/xrpc#inter-service-authentication-jwt).
- Various improvements to `Atex.Did.Document`
- Add `Atex.DID.Document.Service` and `Atex.DID.Document.VerificationMethod`
sub-structs.
- Add `to_json/1` methods and `JSON.Encoder` protocols for easy conversion to
camelCase JSON.
- `Atex.XRPC.Router` module with `query/3` and `procedure/3` macros for easily
building XRPC server routes inside a `Plug.Router`, with built-in service auth
validation and validation if passed the name of a module using `deflexicon`.
- `deflexicon` now emits `content_type/0` functions (on `Input` submodules for typed JSON bodies,
otherwise on the root module) for procedures.
- `Atex.XRPC.ServiceAuthClient` module for making requests to other atproto services using a service auth token.
## Fixed
- Fix a problem where generated `%<LexiconId>.Params` structs could not be
passed to an XRPC call due to not having the Enumerable protocol implemented.
- Correctly generate `Input`/`Output` submodules with `from_json` methods for
queries and procedures that use `ref` or `union` types.-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAAEoAAAAac2stc3NoLWVkMjU1MTlAb3BlbnNzaC5jb20AAAAg4jPimx
0oxa28BFKwTT3k3wRG1ofQa7RWQlKW47kp3pcAAAAEc3NoOgAAAANnaXQAAAAAAAAABnNo
YTUxMgAAAGcAAAAac2stc3NoLWVkMjU1MTlAb3BlbnNzaC5jb20AAABAzYKlbKvRF1zgS2
x7HjaOXryhTOP1kQjfhKGIU+A5la+kyszh7Z4QKPyYtWf5a6WmQesJYyTudNbrQHhNCUPS
DQEAAI2l
-----END SSH SIGNATURE-----