Tags: cometsh/atex
Tags
# [0.7.0] - 2026-01-07
## Breaking Changes
- `Atex.OAuth.Plug` now raises `Atex.OAuth.Error` exceptions instead of handling
error situations internally. Applications should implement `Plug.ErrorHandler`
to catch and gracefully handle them.
- `Atex.OAuth.Plug` now saves only the user's DID in the session instead of the
entire OAuth session object. Applications must use `Atex.OAuth.SessionStore`
to manage OAuth sessions.
- `Atex.XRPC.OAuthClient` has been overhauled to use `Atex.OAuth.SessionStore`
for retrieving and managing OAuth sessions, making it easier to use with not
needing to manually keep a Plug session in sync.
## Added
- `Atex.OAuth.SessionStore` behaviour and `Atex.OAuth.Session` struct for
managing OAuth sessions with pluggable storage backends.
- `Atex.OAuth.SessionStore.ETS` - in-memory session store implementation.
- `Atex.OAuth.SessionStore.DETS` - persistent disk-based session store
implementation.
- `Atex.OAuth.Plug` now requires a `:callback` option that is a MFA tuple
(Module, Function, Args), denoting a callback function to be invoked by after
a successful OAuth login. See [the OAuth example](./examples/oauth.ex) for a
simple usage of this.
- `Atex.OAuth.Permission` module for creating
[AT Protocol permission](https://atproto.com/specs/permission) strings for
OAuth.
- `Atex.OAuth.Error` exception module for OAuth flow errors. Contains both a
human-readable `message` string and a machine-readable `reason` atom for error
handling.
- `Atex.OAuth.Cache` module provides TTL caching for OAuth authorization server
metadata with a 1-hour default TTL to reduce load on third-party PDSs.
- `Atex.OAuth.get_authorization_server/2` and
`Atex.OAuth.get_authorization_server_metadata/2` now support an optional
`fresh` parameter to bypass the cache when needed.
## Changed
- `mix atex.lexicons` now adds `@moduledoc false` to generated modules to stop
them from automatically cluttering documentation.
- `Atex.IdentityResolver.Cache.ETS` now uses ConCache instead of ETS directly,
with a 1-hour TTL for cached identity information.
- `deflexicon` now converts all def names to be in snake_case instead… … of the casing as written the lexicon. - `deflexicon` now emits structs for records, objects, queries, and procedures. - `Atex.XRPC.get/3` and `Atex.XRPC.post/3` now support having a lexicon struct as the second argument instead of the method's name, making it easier to have properly checked XRPC calls. - Add pre-transpiled modules for the core `com.atproto` lexicons.
## [0.5.0] - 2025-10-11 ### Breaking Changes - Remove `Atex.HTTP` and associated modules as the abstraction caused a bit too much complexities for how early atex is. It may come back in the future as something more fleshed out once we're more stable. - Rename `Atex.XRPC.Client` to `Atex.XRPC.LoginClient` ### Added - `Atex.OAuth` module with utilites for handling some OAuth functionality. - `Atex.OAuth.Plug` module (if Plug is loaded) which provides a basic but complete OAuth flow, including storing the tokens in `Plug.Session`. - `Atex.XRPC.Client` behaviour for implementing custom client variants. - `Atex.XRPC` now supports using different client implementations. - `Atex.XRPC.OAuthClient` to make XRPC calls on the behalf of a user who has authenticated with ATProto OAuth.
# 0.4.0 - 2025-08-27 ## Added - `Atex.Lexicon` module that provides the `deflexicon` macro, taking in a JSON Lexicon definition and converts it into a series of schemas for each definition within it. - `mix atex.lexicons` for converting lexicon JSON files into modules using `deflexicon` easily.