···3232 as `Atex.OAuth.Plug.revoke_session/2` to revoke a conn's session
3333 programmaticly (e.g. from a session management dashboard).
34343535+### Fixed
3636+3737+- Fix issue when trying to validate OAuth authorisation codes in localhost mode
3838+ on PDS implementations that are more strict than the Bluesky reference
3939+ implementation.
4040+3541## [0.8.0] - 2026-03-29
36423743### Breaking Changes
+9-3
lib/atex/config/oauth.ex
···4040 end
41414242 @doc """
4343+ Returns whether OAuth should be put into the localhost loopback mode.
4444+ """
4545+ @spec is_localhost() :: boolean()
4646+ def is_localhost() do
4747+ Keyword.get(Application.get_env(:atex, Atex.OAuth, []), :is_localhost, false)
4848+ end
4949+5050+ @doc """
4351 Returns the client ID based on configuration.
44524553 If `is_localhost` is set, it'll be a string handling the "http://localhost"
···4856 """
4957 @spec client_id() :: String.t()
5058 def client_id() do
5151- is_localhost = Keyword.get(Application.get_env(:atex, Atex.OAuth, []), :is_localhost, false)
5252-5353- if is_localhost do
5959+ if is_localhost() do
5460 query =
5561 %{redirect_uri: redirect_uri(), scope: scopes()}
5662 |> URI.encode_query()