All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project follows Semantic Versioning.

Unreleased

[0.4.0] - 23.05.2026

Changed

  • Run native HTTP requests asynchronously on the shared Tokio runtime instead of blocking DirtyIo NIF calls, improving high-concurrency throughput.
  • Abort in-flight native requests when the BEAM caller exits before the response is delivered.

Fixed

  • Respect Req connect_options for proxy configuration, proxy headers, and connect timeout in the native wreq adapter.
  • Reject unsupported connect_options with clear adapter errors instead of silently ignoring them.

[0.3.2] - 07.03.2026

Added

  • Ship usage-rules.md with the Hex package so consumers and LLM tooling can discover the canonical adapter usage and options.

Changed

  • Add a HexDocs package link in Hex metadata and a docs link near the top of the README.
  • Update dev dependencies: credo, styler, and usage_rules.

[0.3.1] - 07.03.2026

Fixed

  • Redirect cookies are now stored against the actual response host, so cookie jars behave correctly across host-changing redirects.
  • CI again tests the minimum advertised Elixir version (~> 1.19).

Changed

  • Releases are now tagged automatically when a version bump lands on main, and the release flow is documented in RELEASE.md.

[0.3.0] - 24.02.2026

Added

  • :local_address option for outbound source IP binding (IPv4/IPv6 tuples and strings).
  • Local address is included in the client cache key to prevent IP leakage through connection pooling.

[0.2.0] - 23.02.2026

Changed

  • Upgraded NIF version to 2.17.

Fixed

  • Release workflow now creates GitHub releases on workflow_dispatch runs.
  • Release tarball naming aligned with rustler_precompiled expectations.

[0.1.0] - 20.02.2026

Added

  • Req adapter with CloakedReq.attach/2 and CloakedReq.impersonate/2.
  • Browser emulation wiring and structured response/error mapping.
  • Cookie jar support (CloakedReq.CookieJar) with PSL-based domain validation.
  • Client pooling with TLS session resumption and HTTP keep-alive.
  • Configurable max_body_size option (default 10 MB).
  • Explicit :insecure_skip_verify option (default false) for constrained external test environments.