···8899## [Unreleased]
10101111+### Breaking Changes
1212+1313+- `Atex.OAuth` refactor:
1414+ - `Atex.OAuth.get_key/0` removed - use `Atex.Config.OAuth.get_key/0` directly
1515+ - `Atex.OAuth.create_client_metadata/1`, `create_client_assertion/3`,
1616+ `create_authorization_url/5`, `validate_authorization_code/5`,
1717+ `refresh_token/5`, `revoke_tokens/2` moved to `Atex.OAuth.Flow`
1818+ - `Atex.OAuth.create_dpop_token/4`, `send_oauth_dpop_request/3`,
1919+ `request_protected_dpop_resource/5` moved to `Atex.OAuth.DPoP`
2020+ - `Atex.OAuth.get_authorization_server/2`,
2121+ `get_authorization_server_metadata/2` moved to `Atex.OAuth.Discovery`
2222+ - Error atom `:invaild_issuer` corrected to `:invalid_issuer` in
2323+ `Atex.OAuth.Discovery`
2424+- `Atex.Config.OAuth.is_localhost/0` renamed to `Atex.Config.OAuth.localhost?/0`
2525+- `Atex.ServiceAuth.validate_jwt/2` now returns `{:error, :invalid_jwt}` on
2626+ malformed input instead of raising
2727+2828+### Added
2929+3030+- `Atex.OAuth.session_keys_name/0` and
3131+ `Atex.OAuth.session_active_session_name/0` expose Plug session key atoms
3232+- `Atex.IdentityResolver` now has full module and function documentation
3333+- `Atex.XRPC.LoginClient` now has a `@moduledoc`
3434+3535+### Fixed
3636+1137- Fix `raw_input` not actually being set as the request's body in
1238 `Atex.XRPC.post/3` when providing a struct as input.
1313-1414-### Breaking Changes
1515-1616-- `Atex.OAuth.get_key/0` removed — use `Atex.Config.OAuth.get_key/0` directly
1717-- `Atex.OAuth.create_client_metadata/1`, `create_client_assertion/3`, `create_authorization_url/5`, `validate_authorization_code/5`, `refresh_token/5`, `revoke_tokens/2` moved to `Atex.OAuth.Flow`
1818-- `Atex.OAuth.create_dpop_token/4`, `send_oauth_dpop_request/3`, `request_protected_dpop_resource/5` moved to `Atex.OAuth.DPoP`
1919-- `Atex.OAuth.get_authorization_server/2`, `get_authorization_server_metadata/2` moved to `Atex.OAuth.Discovery`
2020-- Error atom `:invaild_issuer` corrected to `:invalid_issuer`
3939+- `Atex.XRPC.LoginClient.handle_failure/3` now returns consistent 3-tuples
4040+ `{:error, response, client}`
4141+- `Atex.OAuth.Cache` metadata cache `ttl_check_interval` corrected to 5 minutes
4242+ (was 30 seconds)
4343+- Typo in `Atex.OAuth.Error` moduledoc corrected ("extesion" -> "exception")
21442245## [0.9.1] - 2026-04-17
2346