Update mix non-major dependencies #51

Open
pv wants to merge 1 commit from renovate/mix-minor-patch into master
Owner

This PR contains the following updates:

Package Type Update Change
assent (source) prod minor ~> 0.2.9 -> ~> 0.3.0
bandit (source) prod minor 1.4.2 -> 1.8.0
bcrypt_elixir (source) prod minor 3.1.0 -> 3.3.2
broadway (source) prod minor 1.0.7 -> 1.2.1
castore (source) prod patch 1.0.7 -> 1.0.15
credo (source) dev patch 1.7.5 -> 1.7.12
ecto_psql_extras (source) prod patch 0.8.0 -> 0.8.8
ecto_sql (source) prod minor 3.11.3 -> 3.13.2
esbuild (source) prod minor ~> 0.8 -> ~> 0.10
finch (source) prod minor ~> 0.18.0 -> ~> 0.20.0
floki (source) prod minor 0.36.1 -> 0.38.0
gettext (source) prod minor ~> 0.24 -> ~> 0.26
heroicons prod minor v2.1.4 -> v2.2.0
jason (source) prod patch 1.4.3 -> 1.4.4
oban (source) prod minor 2.17.9 -> 2.20.1
pgvector (source) prod patch 0.3.0 -> 0.3.1
phoenix (source) prod minor 1.7.12 -> 1.8.1
phoenix_ecto (source) prod minor 4.5.1 -> 4.6.5
phoenix_html (source) prod minor 4.1.1 -> 4.2.1
phoenix_live_dashboard (source) prod patch 0.8.3 -> 0.8.7
phoenix_live_reload (source) dev minor 1.5.3 -> 1.6.1
phoenix_live_view (source) prod patch 0.20.14 -> 0.20.17
postgrex (source) prod minor 0.18.0 -> 0.21.1
req (source) prod patch 0.5.1 -> 0.5.15
rustler (source) prod minor ~> 0.33.0 -> ~> 0.37.0
swoosh (source) prod minor 1.16.3 -> 1.19.6
tailwind (source) prod minor ~> 0.2.0 -> ~> 0.4.0
telemetry_metrics (source) prod minor 1.0.0 -> 1.1.0
telemetry_poller (source) prod minor 1.1.0 -> 1.3.0
temp (source) prod patch 0.4.7 -> 0.4.9
tesla (source) prod minor ~> 1.11.0 -> ~> 1.15.0

Release Notes

pow-auth/assent (assent)

v0.3.1

Compare Source

Bug fixes
  • Assent.JWTAdapter.AssentJWT fixed padding issue with ECDSA that caused invalid signatures

v0.3.0

Compare Source

This release consists of breaking changes.

Userinfo is now cast to the correct type per https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.5.1. When upgrading you must ensure that you do not depend on a specific type in the returned userinfo for any of the strategies listed below.

Breaking changes
  • Assent.Strategy.Auth0.authorize_url/2 no longer accepts :domain config, use :base_url instead
  • Assent.Strategy.Basecamp.callback/2 now encodes sub as a binary() instead of an integer()
  • Assent.Strategy.Github.callback/2 now encodes sub as a binary() instead of an integer()
  • Assent.Strategy.Google now encodes email_verified as a boolean() instead of a binary()
  • Assent.Strategy.Google now return hd instead of google_hd
  • Assent.Strategy.Strava.callback/2 now encodes sub as a binary() instead of an integer()
  • Assent.Strategy.Telegram.callback/2 now encodes sub as a binary() instead of an integer()
  • Assent.Strategy.Twitter.callback/2 now encodes sub as a binary() instead of an integer()
  • Assent.Strategy.VK.callback/2 now encodes sub as a binary() instead of an integer()
  • :site configuration option removed, use :base_url instead
  • Assent.Strategy.OAuth2.authorize_url/2 no longer allows :state in :authorization_params
  • Assent.Strategy.decode_response/2removed, use Assent.HTTPAdapter.decode_response/2 instead
  • Assent.Strategy.request/5 removed, use Assent.Strategy.http_request/5 instead
  • Assent.Strategy.prune/1 removed
  • Assent.MissingParamError no longer accepts :expected_key, use :key instead
  • Assent.HTTPAdapter.Mint removed
  • Assent.Config removed
Changes
  • Assent.Strategy.Auth0 now uses OIDC instead of OAuth 2.0 base strategy
  • Assent.Strategy.Gitlab now uses OIDC instead of OAuth 2.0 base strategy
  • Assent.Strategy.Google now uses OIDC instead of OAuth 2.0 base strategy
  • Assent.Strategy.normalize_userinfo/2 now casts the user claims per OpenID specification

v0.2.13

Compare Source

  • Assent.Strategy.Auth0 deprecated :domain config option in favor of :base_url #​177

v0.2.12

Compare Source

  • Assent now has a module doc #​176

v0.2.11

Compare Source

  • Default to using JSON instead of Jason for JSON parsing on Elixir 1.18 #​161
  • Assent.Strategy.OAuth2 now supports :state config option #​162
  • Assent.Strategy.OAuth2 :state override in :authorization_parms has been deprecated #​162
  • Assent.Strategy.OIDC now supports none authentication method #​163 (thanks @​tommasop)
  • Assent.Strategy.Bitbucket added #​160 (thanks @​djgoku)
  • Assent.Strategy.Twitch added #​159 (thanks @​s0er3n)
  • Assent.Strategy.Telegram added #​152 (thanks @​vheathen)
  • Assent.Strategy.Zitadel added #​154 (thanks @​tommasop)
  • Assent.Strategy.Facebook.fetch_user/2 fixed bug with user not being decoded #​168 (thanks @​JohnDoneth)
  • Assent.Strategy.OAuth2 now supports PKCE #​164 (thanks @​tommasop)
  • Assent.Strategy.OAuth2.Base.authorize_url/2 incomplete typespec fixed #​166 (thanks @​diogomrts)
  • Assent.Strategy.decode_response/2 deprecated accepting result tuples and now accepts Assent.HTTPAdapter.HTTPResponse structs #​172
  • Assent.Strategy.request/5 deprecated in favor of Assent.Strategy.http_request/5 #​175
  • Assent.Strategy.decode_response/2 deprecated in favor of Assent.HTTPAdapter.decode_response/2 #​175
  • Assent.Config.get/3 deprecated in favor of Keyword.get/3 #​175
  • Assent.Config.put/3 deprecated in favor of Keyword.put/3 #​175
  • Assent.Config.merge/2 deprecated in favor of Keyword.merge/2 #​175
  • Assent.Config.t() type deprecated in favor of Keyword.t() type #​175
  • Assent.Config.fetch/2 deprecated in favor of Assent.fetch_config/2 #​175
mtrudel/bandit (bandit)

v1.8.0

Compare Source

Enhancements
  • If the user has set a content-length header when calling send_chunked/3,
    the response is streamed via content-length delimited framing and not chunked (#​510)

v1.7.0

Compare Source

Enhancements
  • Add support for new get_sock_data/1 and get_ssl_data/1 callbacks from Plug 1.18 (#​497)
  • Honour server-sent Connection: close headers (#​495, thanks @​ruslandoga!)
Fixes
  • Don't overwrite non-default HTTP/2 settings when receiving HTTP/2 settings (#​494, thanks @​ns-blee!)
  • Fix handling of early-connection error handling in HTTP/2 (#​486)

v1.6.11

Compare Source

Changes
  • Ensure that HTTP/1 request headers are sent to the Plug in the order they're
    sent (#​482)
  • Do not populate the cookies header with an empty string if no cookies were
    sent in HTTP/2 (#​483)

v1.6.10

Compare Source

Fixes
  • Fix bug introduced when closing compressed websock connections in certain circumstances (#​478)
Enhancements
  • Standardize & document the format of messages sent to HTTP/2 Stream processes (#​481)

v1.6.9

Compare Source

Fixes

v1.6.8

Compare Source

Fixes
  • Do not send stream WINDOW_UPDATEs on the last data frame of a stream
Enhancements
  • Add status to the telemetry metadata emitted on WebSocket upgrades (#​466)

v1.6.7

Compare Source

Changes
  • Consider timeouts when reading HTTP/1 headers as a connection error and not an HTTP error
  • Enhance logging for WebSocket deflation errors

v1.6.6

Compare Source

Fixes
  • Consider closures during HTTP/1 header reading as a socket error to silence them by default via log_client_closures config flag
  • Send connection: close when closing connection on error per RFC9112§9.6
Enhancements
  • Add experimental opt-in trace logging to help diagnose hard to reproduce errors
  • Move CI to 1.18 & improve tests (#​459, #​461, thanks @​grzuy!)

v1.6.5

Compare Source

Fixes
  • Fix regression introduced in 1.6.1 where we would not send headers set by the Plug during WebSocket upgrades (#​458)
Enhancements
  • Properly normalize Erlang errors before emitting telemetry and logged crash_reason (#​455, thanks @​grzuy!)

v1.6.4

Compare Source

Fixes
  • Fix error in socket setup error handling introduced in 1.6.2 (thanks @​danielspofford!)

v1.6.3

Compare Source

Fixes
  • Always close HTTP/1 connection in any case where an error comes out of the plug (#​452, thanks @​zookzook!)
  • Fix dialyzer warning introduced by Thousand Island 1.3.9

v1.6.2

Compare Source

Enhancements
  • Send telemetry events on Plugs that throw or exit (#​443)
  • Improve test robustness & speed (#​446)
  • Read a minimal number of bytes when sniffing for protocol (#​449)
  • Add plug and websock to logging metadata whenever possible (#​448)
  • Add plug and websock to telemetry metadata whenever possible (#​447)
  • Silently eat Bandit.TransportError errors during HTTP/1 error fallback handling
Fixes
Changes
  • Unwrap Plug.Conn.WrapperErrors raised by Plug and handle the wrapped error per policy
  • Surface socket setup errors as Bandit.TransportError for consistency in logging

v1.6.1

Compare Source

Changes
  • Ensure that HTTP/1 request headers are sent to the Plug in the order they're
    sent (#​482)
  • Do not populate the cookies header with an empty string if no cookies were
    sent in HTTP/2 (#​483)

v1.6.0

Compare Source

Enhancements
Fixes
  • Improve content-length send logic per RFC9110§8.6/8.7
  • Explicitly signal keepalives in HTTP/1.0 requests
Changes
  • Fix typo & clarify docs
  • Update security policy

v1.5.7

Compare Source

Changes
  • Timeouts encountered while reading a request body will now result in a 408 Request Timeout being returned to the client by way of a Bandit.HTTPError
    being raised. Previously, a :more tuple was returned (#​385, thanks
    @​martosaur!)

v1.5.6

Compare Source

Fixes
  • Improve handling of the end of stream condition for HTTP/2 requests that send
    a body which isn't read by the Plug (#​387, thanks @​fekle!)

v1.5.5

Compare Source

Changes
  • Add domain: [:bandit] to the metadata of all logger calls
  • Bring logging of early-connect HTTP2 errors under the log_protocol_errors umbrella

v1.5.4

Compare Source

Changes
  • Raise HTTP/2 send window timeouts as stream errors so that they're logged as
    protocol errors (thanks @​hunterboerner!)

v1.5.3

Compare Source

Changes
  • Add :short and :verbose options to log_protocol_errors configuration
    option. Change default value to :short, which will log protocol
    errors as a single summary line instead of a full stack trace
  • Raise Bandit.HTTPError errors when attempting to write to a closed client
    connection (except for chunk/2 calls, which now return {:error, reason}).
    Unless otherwise caught by the user, these errors will bubble out past the
    configured plug and terminate the plug process. This closely mimics the
    behaviour of Cowboy in this regard (#​359)
  • Respect the plug-provided content-length on HEAD responses (#​353, thanks
    @​meeq!)
  • Minor changes to how 'non-system process dictionary entries' are identified
Fixes
  • No longer closes on HTTP/1 requests smaller than the size of the HTTP/2
    preamble
  • Close deflate contexts more eagerly for reduced memory use

v1.5.2

Compare Source

Fixes

v1.5.1

Compare Source

Enhancements
  • Process dictionary is now cleared of all non-system process dictionary entries
    between keepalive requests (#​349)
  • Explicitly run a GC before upgrading a connection to websocket (#​348)
  • Improve docs around deflate options (thanks @​kotsius!)

v1.5.0

Compare Source

Enhancements
  • Bandit now respects an exception's conformance to Plug.Exception when
    determining which status code to return to the client (if the plug did not
    already send one). Previously they were always returned as 500 (for HTTP/1)
    or an 'internal error' stream error (for HTTP/2)
  • Bandit now only logs the stacktrace of plug-generated exceptions whose status
    code (as determined by Plug.Exception.status/1) is contained within the new
    log_exceptions_with_status_codes configuration option (defaulting to
    500..599)
  • As a corollary to the above, Bandit request handler processes no longer exit
    abnormally in the case of plug-generated exceptions
Changes
  • HTTP semantic errors encountered in an HTTP/2 request are returned to the
    client using their proper status code instead of as a 'protocol error' stream
    error
riverrun/bcrypt_elixir (bcrypt_elixir)

v3.3.2

Compare Source

v3.3.1

Compare Source

v3.3.0

Compare Source

  • Changes
    • Updated blowfish C libs (minor updates)

v3.2.1

Compare Source

v3.2.0

Compare Source

  • Changes
    • Updated dependencies and made changes to silence warnings in Elixir 1.17
dashbitco/broadway (broadway)

v1.2.1

Compare Source

  • Run setup callback on Broadway startup

v1.2.0

Compare Source

  • Do not clean up persistent terms on shutdown
  • Add format_discarded callback
  • Allow different config storages

v1.1.0

Compare Source

Bug fix
  • No longer set demand to :accumulate when draining, for compatibility with GenStage v1.2+. This means that any polling implementation must implement the prepare_for_draining callback and stop polling messages. You can check how BroadwaySQS tackles this problem as an example
Enhancements
  • Log leaked trapped exits
elixir-mint/castore (castore)

v1.0.15

Compare Source

v1.0.14

Compare Source

v1.0.13

Compare Source

v1.0.12

Compare Source

v1.0.11

Compare Source

v1.0.10

Compare Source

v1.0.9

Compare Source

v1.0.8

Compare Source

rrrene/credo (credo)

v1.7.12

Compare Source

  • Fix compatibility & compiler warnings with Elixir 1.19 (dev)
  • Provide :column on all checks
  • Fix check docs in other project's documentation
  • Credo.Check.Refactor.DoubleBooleanNegation fixed false positive
  • Credo.Check.Readability.NestedFunctionCalls fixed false positive
  • Credo.Check.Consistency.UnusedVariableNames fixed duplicate issues

v1.7.11

Compare Source

  • Fix compatibility & compiler warnings with Elixir 1.18
  • Fix crashing for invalid strings in issue messages
  • Show required Elixir version for skipped checks
  • Add options :exit_status and :category to format_issue/2 when using Credo.Check
  • Credo.Check.Readability.ModuleDoc fixed false positive
  • Credo.Check.Warning.UnusedEnumOperation fixed false positive
  • Credo.Check.Refactor.ABCSize fixed false positive for tuples and underscored matches (_foo)

v1.7.10

Compare Source

  • Maintenance release

v1.7.9

Compare Source

  • Credo.Check.Refactor.ABCSize fixed false positive for pin operator (^)
  • Credo.Check.Readability.FunctionNames fixed false positive for pow operator (**)
  • Fixed a bug in Credo.Code.Parameters when couting parameters for functions with guards

v1.7.8

Compare Source

  • Credo.Check.Refactor.Apply fixed false positive
  • Credo.Check.Warning.IoInspect fixed false positive
  • Credo.Check.Warning.UnsafeToAtom fixed false positive
  • Credo.Check.Readability.FunctionNames fixed false positive

v1.7.7

Compare Source

  • Fix compatibility & compiler warnings with Elixir 1.17
  • Credo.Check.Design.SkipTestWithoutComment, Credo.Check.Refactor.PassAsyncInTestCases and Credo.Check.Warning.WrongTestFileExtension now work for umbrella apps

v1.7.6

Compare Source

  • Credo.Check.Consistency.MultiAliasImportRequireUse fixed false positive
  • Credo.Check.Readability.PredicateFunctionNames now ignores functions that implement a behaviour
  • Credo.Check.Readability.FunctionName now supports multi-letter sigils
  • Credo.Check.Readability.Specs fixed false positive
  • Credo.Check.Warning.UnusedKeywordOperation fixed false positive
  • Fix column information on several checks in case there are two offending calls on the same line
  • Fix some deprecation warnings for upcoming Elixir 1.17
elixir-ecto/ecto_sql (ecto_sql)

v3.13.2

Compare Source

Enhancements
  • [sandbox] Allow passing through opts in Ecto.Adapters.SQL.Sandbox.allow/4 calls
  • [sql] Add support for ON DELETE SET DEFAULT
Bug fixes
  • [postgres] Fix nested array generated time columns

v3.13.1

Compare Source

Bug fixes
  • [postgres] Fix nested array generated columns

v3.13.0

Compare Source

Enhancements
  • [Ecto.Migration] Add support for index directions
  • [sql] Support :log_stacktrace_mfa for filtering or modifying stacktrace-derived info in query logs
  • [mysql] Support arrays using JSON for MariaDB
  • [mysql] Allow to specify :prepare per operation
  • [postgres] Add support for collations in Postgres
  • [postgres] Allow source fields in json_extract_path

v3.12.1

Compare Source

Enhancements
  • [sql] Support :pool_count option

v3.12.0

Compare Source

Enhancements
  • [Ecto.Migration] Add Ecto.Migration.remove_if_exists/1
  • [Ecto.Migrator] Warn for migration files that end in .ex
  • [sql] Support for subqueries in order_bys and group_bys
  • [mysql] Add check constraints for MySQL
  • [postgres] Add native bitstring support to Postgres
  • [postgres] Add support for :duration type
  • [postgres] Add :plan explain option for Postgres
  • [tds] Allow passing %Tds.Parameter structs as params for named parameter usage in query
Bug fix
  • [mysql] Type cast of integers in MySQL should use signed integers
phoenixframework/esbuild (esbuild)

v0.10.0

Compare Source

  • Automatically join environment variables specified as lists using the
    correct PATH separator. For example:
    config :esbuild,
      my_profile: [
        ...
        env: %{
          "NODE_PATH" => [Path.expand("../deps", __DIR__), Mix.Project.build_path()]
        }
      ]
    

v0.9.0

Compare Source

This release requires Elixir v1.14+ and Erlang/OTP 25+.

  • Update PGP keys to support latest esbuild versions
  • Update esbuild to version 0.25.0
  • Remove dependency on CAStore in favor of using Erlang certificates

v0.8.2

Compare Source

  • Fallback to ipv4/ipv6 for unreachable hosts
sneako/finch (finch)

v0.20.0

Compare Source

Enhancements
  • Support manual pool termination #​299
  • Refactor HTTP1 pool state for better maintainability #​308
  • Add :supported_groups to list of TLS options #​307
  • Be more explicit about the :default pool in documentation #​314
  • Upgrade nimble_options to document deprecations #​315
Bug Fixes
  • Fix Finch.stream_while/5 on halt for both HTTP/1 and HTTP/2 #​320
  • Return accumulator when Finch.stream/5 and Finch.stream_while/5 fail #​295
  • Fix documentation reference for get_pool_status/2 #​301
Other
  • Upgrade CI VM to Ubuntu 24 #​321
  • CI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps #​303
  • Update GitHub CI badge URL #​304

v0.19.0

Compare Source

Enhancements
  • Update @​mint_tls_opts in pool_manager.ex #​266
  • Document there is no backpressure on HTTP2 #​283
  • Fix test: compare file size instead of map #​284
  • Finch.request/3: Use improper list and avoid Enum.reverse #​286
  • Require Mint 1.6 #​287
  • Remove castore dependency #​274
  • Fix typos and improve language in docs and comments #​285
  • fix logo size in README #​275
Bug Fixes
  • Tweak Finch supervisor children startup order #​289, fixes #​277
  • implement handle_cancelled/2 pool callback #​268, fixes #​257
  • type Finch.request_opt() was missing the :request_timeout option #​278
philss/floki (floki)

v0.38.0

Compare Source

Added
  • This version adds initial support for the :has pseudo-selector.
    It is a great addition that enables finding elements containing
    matching children.

    Examples for selectors:

    • "div:has(h1)"
    • "div:has(h1, p, span)"
    • "div:has(p.foo)"
    • "div:has(img[src='https://example.com'])"
    • "tr:has(*:fl-contains('TEST'))"

    Note that combinators like ">" are not allowed yet.

    Thank you @​bvobart for this feature!

Fixed
  • Add :style option documentation to Floki.text/2.
    Thanks @​s3cur3 for the fix.

  • Fix deprecation warnings for upcoming Elixir 1.19.

  • Prevent from crashing when selector is an empty string.

Removed
  • Remove support for Elixir 1.14 and OTP 23.

  • Remove deprecated functions and function clauses
    that were accepting strings (binaries).

    Affected functions:

    • parse/1 - removed function
    • map/2 - removed function
    • attr/4 - removed clause
    • find/2 - removed clause
    • text/3 - removed clause
    • text/3 - removed clause
    • attribute/2 - removed clause
    • filter_out/2 - removed clause
  • HTML must be parsed before searching. Functions like Floki.find/2,
    Floki.attribute/2, and other HTML manipulation functions no longer work
    directly with HTML strings
    . The HTML must be parsed first using
    Floki.parse_fragment/2 or Floki.parse_document/2.

    Before:

    html = "<div class='foobar'><p>Hello</p></div>"
    Floki.find(html, "p")
    Floki.attribute(html, "div", "class")
    

    After:

    html = "<div class='foobar'><p>Hello</p></div>"
    parsed_html = Floki.parse_fragment!(html)
    Floki.find(parsed_html, "p")
    Floki.attribute(parsed_html, "div", "class")
    

v0.37.1

Compare Source

Fixed
  • Move regex declaration from module tag to inside function.
    This is a fix to be compatible with the upcoming OTP 28.

v0.37.0

Compare Source

Added
Fixed
  • Fix bug propagating identity encoder in raw_html/2 - thanks @​andyleclair.
Removed
  • Remove support for Elixir 1.13 and OTP 22.

v0.36.3

Compare Source

This release contains some performance improvements, thanks to @​ypconstante.

Fixed
  • Stop Floki.get_by_id/2 traversal on first match. Thanks @​ypconstante.

  • Remove extra whitespaces from nodes without attributes on Floki.raw_html/1.
    Thank you @​ypconstante.

  • Fix Floki.raw_html/1 typespecs. Thanks @​davydog187.

v0.36.2

Compare Source

Added
  • Implement the Inspect protocol for the Floki.HTMLTree struct.
    This struct is currently private. Thank you @​vittoriabitton.
Fixed
  • Fix regression to respect config option :encode in Floki.raw_html/2.
    Thanks @​Sgoettschkes.

  • Make the Floki.raw_html/2 treat the contents of the <title> tag as plain text.
    The idea is to align with parse_document/2.
    Thank you @​aymanosman.

elixir-gettext/gettext (gettext)

v0.26.2

Compare Source

  • Introduces warning if plural messages are defined with the same singular
    message and conflicting plural messages.
    • Improves performance by striping not required metadata when compiling the
      Gettext backend.

v0.26.1

Compare Source

  • Address backwards incompatible changes in previous release

v0.26.0

Compare Source

This release changes the way you use Gettext. We're not crazy: it does so because doing so makes it a lot faster to compile projects that use Gettext.
The changes you have to make to your code are minimal, and the old behavior is deprecated so that you will be guided on how to update.

The reason for this change is that it removes compile-time dependencies from modules that used to import a Gettext backend. In applications such as Phoenix applications, where every view and controller imports the Gettext backend, this change means a lot less compilation when you make translation changes!

Here's the new API. Now, instead of defining a Gettext backend (use Gettext) and then importing that to use its macros, you need to:

  1. Define a Gettext backend with use Gettext.Backend
  2. Import and use its macros with use Gettext, backend: MyApp.Gettext.
Before and After

Before this release, code using Gettext used to look something like this:

defmodule MyApp.Gettext do
  use Gettext, otp_app: :my_app
end

defmodule MyAppWeb.Controller do
  import MyApp.Gettext
end

This creates a compile-time dependency for every module that imports the Gettext backend.

With this release, the above turns into:

defmodule MyApp.Gettext do
  use Gettext.Backend, otp_app: :my_app
end

defmodule MyAppWeb.Controller do
  use Gettext, backend: MyApp.Gettext
end

We are also updating Phoenix generators to use the new API.

If you update Gettext and still use use Gettext, otp_app: :my_app to define a backend, Gettext will emit a warning now.

Migration with Igniter

If your project is using igniter, you can run
mix igniter.update_gettext
to automatically migrate to the new API.

Detailed Changelog

This is a detailed list of the new things introduced in this release:

  • Add Gettext.Macros, which contains all the macros you know and love (*gettext). It also contains *gettext_with_backend variants to explicitly pass a backend at compile time and keep extraction working.
  • Document lgettext/5 and lngettext/7 callbacks in Gettext.Backend. These get generated in every Gettext backend.
  • Add the Gettext.domain/0 type.

v0.25.0

Compare Source

  • Run merging for mix gettext.extract's POT files even if they are unchanged.
    • Allow Expo 1.0+.
tailwindlabs/heroicons (heroicons)

v2.2.0

Compare Source

Added
  • Everything!

v2.1.5

Compare Source

Added
  • Everything!
michalmuskala/jason (jason)

v1.4.4

Compare Source

oban-bg/oban (oban)

v2.20.1

Compare Source

Bug Fixes
  • [Worker] Handle missing fields in unique Worker validation.

    Workers that specified keys without fields would fail validation at compile time. Now
    default values are considered for use Oban.Worker as well as Job.new/2.

v2.20.0

Compare Source

Enhancements
  • Migration Add V13 migration for indexing cancelled and discarded states.

    A new V13 migration adds compound indexes to significantly improve Oban.Plugins.Pruner
    performance when cleaning up discarded and cancelled jobs. This is especially beneficial for
    applications that process large volumes of jobs and retain them for extended periods.

  • Repo Expose dynamic repo switching as with_dynamic_repo/2

    The function was previously internal, which made impossible to use in external modules or extend
    upon. Now custom plugins and extensions can use Repo.with_dynamic_repo/2 to use the configured
    dynamic repo options.

Bug Fixes
  • [Oban] Allow insert_all/1,3 via Oban facade

    The insert_all/1 and insert_all/3 function variants were missing from the generated Oban
    facade functions when using a named instance.

  • [Testing] Generate correct perform_job/1,2,3 clauses.

    The perform_job/2,3 clauses generated by use Oban.Testing didn't handle the perform_job/2
    variant designed to run jobs created with build_job/3. This caused test failures when trying
    to execute jobs built using the build_job/3 helper function.

    The fix generates the missing perform_job/2 clause along with a convenient perform_job/1
    variant, ensuring all testing scenarios work seamlessly regardless of how jobs are constructed.

  • [Testing] Restrict inline execution to available and scheduled states.

    Jobs in the completed state or other non-runnable states were incorrectly attempted by the
    inline engine, potentially causing errors or unexpected behavior during testing.

  • [Worker] Disallow :keys when :fields doesn't contain :args or :meta

    Unique job configurations using :keys were allowed even when :fields didn't include :args
    or :meta, which would result in runtime errors since keys can only extract values from these
    keyable fields.

  • [Cron] Fix error message when the crontab has an invalid range.

    Cron validation errors for invalid ranges were returning exception structs instead of readable
    error messages, making it difficult to understand and fix crontab configuration issues.

v2.19.4

Compare Source

v2.19.3

Compare Source

v2.19.2

Compare Source

Enhancements
  • [Oban] Allow setting a MFA in :get_dynamic_repo

    Anonymous functions don't work with OTP releases, as anonymous functions cannot be used in configuration. Now a MFA tuple can be passed instead of a fun, and the scaling guide recommends a function instead.

  • [Cron] Include configured timezone in cron job metadata

    Along with the cron expression, stored as cron_expr, the configured timezone is also recorded as cron_tz in cron job metadata.

  • [Cron] Add next_at/2 and last_at/2 for cron time calculations

    This implements jumping functions for cron expressions. Rather than naively iterating through minutes, it uses the expression values to efficiently jump to the next or last cron run time.

  • [Executor] Always convert queue_time to native time unit

    The telemetry docs state that measurements are recorded in native time units. However, that hasn't been the case for queue_time for a while now. It usually worked anyway native and nanosecond is of the same resolution, but now it is guaranteed.

Bug Fixes
  • [Peer] Correct leadership elections for the Dolphin engine

    MySQL always returns the number of entries attempted, even when nothing was added. The previous match caused all nodes to believe they were the leader. This uses a secondary query within the same transaction to detect if the current instance is the leader.

  • [Reindexer] Drop invalid indexes concurrently when reindexing.

    The DROP INDEX query would lock the whole table with an ACCESS EXCLUSIVE lock and could cause queries to fail unexpectedly.

  • [Testing] Use Ecto.Type.cast/2 for backward compatibility

    The cast!/2 function wasn't added until Ecto 3.12. This reverts time casting to use cast/2 for compatibility with earlier Ecto versions.

  • [Worker] Validate that the unique option isn't an empty list.

    An empty list was accepted at compile time, but wouldn't be valid later at runtime. Now the two validations match for greater parity.

v2.19.1

Compare Source

Bug Fixes
  • [Mix] Improve igniter installer idempotency and compatibility.

    The installer now uses on_exists: :skip when generating a migration, so it composes safely with other igniter installers. It also removes unnecessary add_dep calls that would overwrite a previously specified Oban version with ~> 2.18.

v2.19.0: v2.19

Compare Source

The minimum Elixir version is now v1.15. The official policy is to only support the three latest versions of Elixir.

🐬 MySQL Support

Oban officially supports MySQL with the new Dolphin engine. Oban supports modern (read "with full JSON support") MySQL versions from 8.4 on, and has been tested on the highly scalable Plantescale database.

Running on MySQL is as simple as specifying the Dolphin engine in your configuration:

config :my_app, Oban,
  engine: Oban.Engines.Dolphin,
  queues: [default: 10],
  repo: MyApp.Repo

With this addition, Oban can run in estimated 10% more Elixir applications!

⚗️ Automated Installer

Installing Oban into a new application is simplified with a new igniter powered mix task. The new oban.install task handles installing and configuring a standard Oban installation, and it will deduce the correct engine and notifier automatically based on the database adapter.

mix igniter.install oban

This oban.install task is currently the recommended way to install Oban. As a bonus, the task composes together with other igniter installers, making it possible to install phoenix, ash, oban, and other packages with a single command:

mix igniter.install phoenix ash_phoenix ash_postgres ash_oban

Look at the Mix.Oban.Install docs for full usage and options.

📔 Logging Enhancements

Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. A new events option for attach_default_logger/1 allows selective event logging, so it's possible to receive important notices such as notifier connectivity issues, without logging all job activity:

Oban.Telemetry.attach_default_logger(events: ~w(notifier peer stager)a)

Along with filtering, there are new events to make diagnosing operational problems easier.

A peer:election events logs leadership changes to indicate when nodes gain or lose leadership. Leadership issues are rare, but insidious, and make diagnosing production problems especially tricky.

[
  message: "peer became leader",
  source: "oban",
  event: "peer:election",
  node: "worker.1",
  leader: true,
  was_leader: false
]

Helpfully, plugin:stop events are now logged for all core plugins via an optional callback, and plugin:exception events are logged for all plugins regardless of whether they implement the callback. Runtime information is logged for Cron, Lifeline, Pruner, Stager, and Reindexer plugins.

For example, every time Cron runs successfully it will output details about the execution time and all of the inserted job ids:

[
  source: "oban",
  duration: 103,
  event: "plugin:stop",
  plugin: "Oban.Plugins.Cron",
  jobs: [1, 2, 3]
]

️ Official JSON

Oban will default to using the official JSON module built into Elixir v1.18+ when available.

A new Oban.JSON module detects whether the official Elixir JSON module is available at compile time. If it isn't available, then it falls back to Jason, and if Jason isn't available (which is extremely rare) then it warns about a missing module.

This approach was chosen over a config option for backward compatibility because Oban will only support the JSON module once the minimum supported Elixir version is v1.18.

v2.19.0 — 2025-01-16

Enhancements
  • [Oban] Start all queues in parallel on initialization.

    The midwife now starts queues using an async stream to parallelize startup and minimize boot time for applications with many queues. Previously,

  • [Oban] Safely return nil from check_queue/2 when checking queues that aren't running.

    Checking on a queue that wasn't currently running on the local node now returns nil rather than causing a crash. This makes it safer to check the whether a queue is running at all without a try/catch clause.

  • [Oban] Add check_all_queues/1 to gather all queue status in a single function.

    This new helper gathers the "check" details from all running queues on the local node. While it was previously possible to pull the queues list from config and call check_queue/2 on each entry, this more accurately pulls from the registry and checks each producer concurrently.

  • [Oban] Add delete_job/2 and delete_all_jobs/2 operations.

    This adds Oban.delete_job/2, Oban.delete_all_jobs/2, Engine callbacks, and associated operations for all native engines. Deleting jobs is now easier and safer, due to automatic state protections.

  • [Engine] Record when a queue starts shutting down

    Queue producer metadata now includes a shutdown_started_at field to indicate that a queue isn't just paused, but is actually shutting down as well.

  • [Engine] Add rescue_jobs/3 callback for all engines.

    The Lifeline plugin formerly used two queries to rescue jobs—one to mark jobs with remaining attempts as available and another that discarded the remaining stuck jobs. Those are now combined into a single callback, with the base definition in the Basic engine.

    MySQL won't accept a select in an update statement. The Dolphin implementation of rescue_jobs/3 uses multiple queries to return the relevant telemetry data and make multiple updates.

  • [Cron] Introduce Oban.Cron with schedule_interval/4

    The new Cron module allows processes, namely plugins, to get cron-like scheduled functionality with a single function call. This will allow plugins to removes boilerplate around parsing, scheduling, and evaluating for cron behavior.

  • [Registry] Add select/1 to simplify querying for registered modules.

  • [Testing] Add build_job/3 helper for easier testing.

    Extract the mechanism for verifying and building jobs out of perform_job/3 so that it's usable in isolation. This also introduces perform_job/2 for executing built jobs.

  • [Telemetry] Add information on leadership changes to oban.peer.election event.

    An additional was_leader? field is included in [:oban, :peer, :election | _] event metadata to make hooking into leadership change events simpler.

  • [Telemetry] Add callback powered logging for plugin events.

    Events are now logged for plugins that implement the a new optional callback, and exceptions are logged for all plugins regardless of whether they implement the callback.

    This adds logging for Cron, Lifeline, Pruner, Stager, and Reindexer.

  • [Telemetry] Add peer election logging to default logger.

    The default logger now includes leadership events to make identifying the leader, and leadership changes between nodes, easier.

  • [Telemetry] Add option to restrict logging to certain events.

    Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. This adds an events option to attach_default_logger/1 to allow selective event logging.

  • [Telemetry] Expose default_handler_id/0 for telemetry testing.

    Simplifies testing whether the default logger is attached or detached in application code.

Chores
  • [Peer] The default database-backed peer was renamed from Postgres to Database because it is also used for MySQL databases.
Bug Fixes
  • [Oban] Allow overwriting all insert/* functions arities after use Oban.

  • [Node] Correctly handle :node option for scale_queue/2

    Scoping scale_queue/2 calls to a single node didn't work as advertised due to some extra validation for producer meta compatibility.

  • [Migration] Fix version query for databases with non-unique oid

    Use pg_catalog.obj_description(object_oid, catalog_name), introduced in PostgreSQL 7.2, to specify the pg_class catalog so only the oban_jobs description is returned.

  • [Pruner] Use state specific fields when querying for prunable jobs.

    Using scheduled_at is not correct in all situations. Depending on job state, one of cancelled_at, discarded_at, or scheduled_at should be used.

  • [Peer] Conditionally return the current node as leader for isolated peers.

    Prevents returning the current node name when leadership is disabled.

  • [Testing] Retain time as microseconds for scheduled_at tests.

    Include microseconds in the begin and until times used for scheduled_at tests with a delta. The prior version would truncate, which rounded the until down and broke microsecond level checks.

  • [Telemetry] Correct spelling of "elapsed" in oban.queue.shutdown metadata.

v2.18.3

Compare Source

Enhancements
  • [Basic] Use the shared concat operator when appending errors.

    The standard push operation for updates is designed for arrays and uses array_append internally. This replaces all use of push with a fragment that uses the || operator instead, which works for both arrays and jsonb.

    CockroachDB doesn't support arrays of jsonb, but they do support simple jsonb columns. Now we can append to the errors column in either format for CRDB compatibility.

Bug Fixes
  • [Queue] Link the dynamic queue supervisor and Midwife for automatic restarts.

    When a producer crashes it brings the queue's supervisor down with it. With enough database errors, the producer may crash repeatedly enough to exhaust restarts and bring down the DynamicSupervisor in charge of all queues.

    Now the supervisor is linked to the midwife to ensure that the midwife restarts as well, and it restarts all of the queues.

  • [Testing] Handle insert_all/3 with streams for the :inline testing engine.

    The inline engine's insert_all_jobs callback incorrectly expected changesets to always be a list rather and couldn't handle streams.

v2.18.2

Compare Source

Bug Fixes
  • [Repo] Prevent debug noise by ensuring default opts for standard transactions.

    Without default opts each transaction is logged. Many standard operations execute each second, which makes for noisy logs. Now transaction opts are passed as a third argument to ensure defaults are applied.

  • [Repo] Increase transaction retry delay and increase with each attempt.

    Bump the base transaction retry from 100ms to 500ms, and increase linearly between each successive attempt to provide deeper backoff. This alleviates pressure on smaller connection pools and gives more time to recover from contentions failures.

v2.18.1

Compare Source

Enhancements
  • [Repo] Automatically retry all transactions with backoff.

    Avoid both expected an unexpected database errors by automatically retrying transactions. Some operations, such as serialization and lock not available errors, are likely to occur during standard use depending on how a database is configured. Other errors happen infrequently due to pool contention or flickering connections, and those should also be retried for increased safety.

    This change is applied to Oban.Repo.transaction/3 itself, so it will apply to every location that uses transactions.

  • [Migration] Declare tags as an array of text rather than varchar.

    We don't provide a limit on the size of tags and they could conceivably be larger than 256 characters. Externally the types are interchangeable, but internally there are minor advantages to using the text type.

    There isn't a new migration; this change is only for new tables.

Bug Fixes
  • [Repo] Correctly dispatch query!/4 to query! rather than query without a bang.

v2.18.0

Compare Source

🔭 Queue Shutdown Telemetry

A new queue shutdown event, [:oban, :queue, :shutdown], is emitted by each queue when it terminates. The event originates from the watchman process, which tracks the total ellapsed time from when termination starts to when all jobs complete or the allotted period is exhausted.

Any jobs that take longer than the :shutdown_grace_period (by default 15 seconds) are brutally killed and left as orphans. The ids of jobs left in an executing state are listed in the event's orphaned meta.

This also adds queue:shutdown logging to the default logger. Only queues that shutdown with orphaned jobs are logged, which makes it easier to detect orphaned jobs and which jobs were affected:

[
  message: "jobs were orphaned because they didn't finish executing in the allotted time",
  queue: "alpha",
  source: "oban",
  event: "queue:shutdown",
  ellapsed: 500,
  orphaned: [101, 102, 103]
]

🚚 Distributed PostgreSQL Support

It's now possible to run Oban in distributed PostgreSQL databases such as Yugabyte. This is made possible by a few simple changes to the Basic engine, and a new unlogged migration option.

Some PostgreSQL compatible databases don't support unlogged tables. Making oban_peers unlogged isn't a requirement for Oban to operate, so it can be disabled with a migration flag:

defmodule MyApp.Repo.Migrations.AddObanTables do
  use Ecto.Migration

  def up do
    Oban.Migration.up(version: 12, unlogged: false)
  end
end

🧠 Job Observability

Job stop and exception telemetry now includes the reported memory and total reductions from the job's process. Values are pulled with Process.info/2 after the job executes and safely fall back to 0 in the event the process has crashed. Reductions are a rough proxy for CPU load, and the new measurements will make it easier to identify computationally expensive or memory hungry jobs.

In addition, thanks to the addition of Process.set_label in recent Elixir versions, the worker name is set as the job's process label. That makes it possible to identify which job is running in a pid via observer or live dashboard.

v2.18.0 — 2024-07-26

Enhancements
  • [Job] Support simple unique: true and unique: false declarations

    Uniqueness can now be enabled with unique: true and disabled with unique: false from job options or a worker definition. The unique: true option uses all the standard defaults, but sets the period to :infinity for compatibility with Oban Pro's new simple unique mode.

  • [Cron] Remove forced uniqueness when inserting scheduled jobs.

    Using uniqueness by default prevents being able to use the Cron plugin with databases that don't support uniqueness because of advisory locks. Luckily, uniqueness hasn't been necessary for safe cron insertion since leadership was introduced and scheduling changed to top-of-the-minute many versions ago.

  • [Engine] Introduce check_available/1 engine callback

    The check_available/1 callback allows engines to customize the query used to find jobs in the available state. That makes it possible for alternative engines, such Oban Pro's Smart engine, to check for available jobs in a fraction of the time with large queues.

  • [Peer] Add Oban.Peer.get_leader/2 for checking leadership

    The get_leader/2 function makes it possible to check which node is currently the leader regardless of the Peer implementation, and without having to query the database.

  • [Producer] Log a warning for unhandled producer messages.

    Some messages are falling through to the catch-all handle_info/2 clause. Previously, they were silently ignored and it degraded producer functionality because inactive jobs with dead pids were still tracked as running in the producer.

  • [Oban] Use structured messages for most logger warnings.

    A standard structure for warning logs makes it easier to search for errors or unhandled messages from Oban or a particular module.

Bug Fixes
  • [Job] Include all fields in the unique section of Job.t/0.

    The unique spec lacked types for both keys and timestamp keys.

  • [Basic] Remove materialized option from fetch_jobs/3.

    The MATERIALIZED clause for CTEs didn't make a meaningful difference in job fetching accuracy. In some situations it caused a performance regression (which is why it was removed from Pro's Smart engine a while ago).

v2.17.12

Compare Source

v2.17.11

Compare Source

Bug Fixes
  • [Oban] Handle deprecation warnings from Elixir 1.17

  • [Notifier] Prevent noisy logging about switching between modes.

    There's an apparent race condition in Sonar between pruning stale nodes on :ping and updating the status after a notification. This primarily happens in development for two reasons:

    1. Development laptops are most prone to time warp because of system sleep.
    2. Apps only run a single node in development.

    Using monotonic_time/1 instead of system_time/1 guards against clock drift/time warp effects.

  • [Stager] Prevent notification status timeouts from bubbling into the Stager.

    A clogged Ecto pool could cause cascading errors on startup due to a sequence of calls between the Notifier, Sonar, and Stager.

    1. Sonar sends a notification in handle_continue on startup.
    2. The notification is blocked while the Notifier waits for a connection from the Ecto pool.
    3. Stager checks for the connection status on startup, which would eventually time out because the Sonar hadn't finished initializing.
    4. The Stager crashes from the timeout error.

    This makes the following changes to prevent this sequence of events:

    1. The Stager no longer gets the sonar status during startup.
    2. The Notifier catches timeout errors from Sonar checks, warns about it, then returns an :unknown status.
  • [Engine] Defensively check the process dictionary during inline testing.

    Not all processes are guaranteed to return a value for the process dictionary. Sometimes a value was missing during inline testing, which would crash the test.

  • [Basic] Set conflict? flag when encountering a unique advisory lock.

    The conflict? flag wasn't set when inserting a unique job was blocked by an advisory lock. Now the flag is set on either a fetched duplicate, or when the advisory lock is set.

  • [Job] Correct replace_by_state_option type by switching from keyword to tuples.

  • [Config] Correctly type shutdown_grace_period as an integer rather than a timeout.

v2.17.10

Compare Source

Enhancements
  • [Oban] Make all generated functions from use Oban overridable.

    Now the functions generated by use Oban are all marked with defoverridable for extensibility.

Bug Fixes
  • [Testing] Use $callers rather than $ancestors for ancestry tree check.

    We care about Tasks for inline testing checks, not normal supervision tree ancestry. The $callers entry is the appropriate mechanism to find the trail of calling processes:

pgvector/pgvector-elixir (pgvector)

v0.3.1

Compare Source

  • Added support for Elixir 1.19
phoenixframework/phoenix (phoenix)

v1.8.1

Compare Source

Bug fixes
  • [phx.new] Fix AGENTS.md failing to include CSS and JavaScript sections

v1.8.0

Compare Source

Bug fixes
  • [phx.new] Don't include node_modules override in generated tsconfig.json
Enhancements
  • [phx.gen.live|html|json] - Make context argument optional. Defaults to the plural name.
  • [phx.new] Add mix precommit alias
  • [phx.new] Add AGENTS.md generation compatible with usage_rules
  • [phx.new] Add usage_rules folder to installer, allowing to sync generic Phoenix rules into new projects
  • [phx.new] Use LiveView 1.1 release in generated code
  • [phx.new] Ensure theme selector and flash closing works without LiveView

v1.7.21

Compare Source

v1.7.20

Compare Source

v1.7.19

Compare Source

v1.7.18

Compare Source

v1.7.17

Compare Source

v1.7.16

Compare Source

v1.7.15

Compare Source

v1.7.14

Compare Source

v1.7.13

Compare Source

phoenixframework/phoenix_ecto (phoenix_ecto)

v4.6.5

  • Bug fixes
    • Unallow existing allowances when attempting to allow a Plug to access a connection

v4.6.4

  • Enhancements
    • Wrap raised Ecto exceptions so context is not lost
    • Do not override changeset actions

v4.6.3

Compare Source

  • Enhancements

    • Add prefix option to check repo status plug
  • Bug fix

    • Fix map.field notation warning on Elixir 1.17

v4.6.2

Compare Source

  • Bug fix
    • Attach directories to Pending Migrations exception

v4.6.1

Compare Source

  • Bug fix
    • Ensure "Create database" action is shown when database is not available

v4.6.0

Compare Source

  • Enhancements
    • Return 400 for character encoding errors in Postgrex
    • Bump Elixir requirement to v1.11+
phoenixframework/phoenix_html (phoenix_html)

v4.2.1

Compare Source

  • Enhancements
    • Add type to Phoenix.HTML.FormField
    • Allow keyword lists in options to use nil as key/value

v4.2.0

Compare Source

  • Enhancements

    • Add Phoenix.HTML.css_escape/1 to escape strings for use inside CSS selectors
    • Add the ability to pass :hr to options_for_select/2 to render a horizontal rule
  • Bug fixes

    • Pass form action through in FormData implementation
phoenixframework/phoenix_live_dashboard (phoenix_live_dashboard)

v0.8.7

Compare Source

  • Fix warnings on Erlang/OTP 28
  • Fix metrics history not rendering on LiveView 1.0.2+
  • Fix colored logging in request logger

v0.8.6

Compare Source

  • Update Erlang docs url
  • Fix rendering of durations in Elixir v1.18+
  • Fix warnings on Elixir v1.18+
  • Remove img nonce which had no effect whatsoever

v0.8.5

Compare Source

  • Provide a mechanism for user extensible LiveView hooks
  • Add Erlang/OTP 27 Process label support

v0.8.4

Compare Source

  • Add immutable directive to cache-control header
  • Wrap log lines in request logger page
  • Fix deprecation warnings on LiveView release candidate
phoenixframework/phoenix_live_reload (phoenix_live_reload)

v1.6.1

Compare Source

  • Enhancements
    • Set :phoenix_live_reload private field to downstream instrumentation
    • Add @import directive support to CSS reload strategy

v1.6.0

Compare Source

  • Enhancements

    • Add support for __RELATIVEFILE__ when invoking editors
    • Change the default target window to :parent to not reload the whole page if a Phoenix app is shown inside an iframe. You can get the old behavior back by setting the :target_window option to :top:
      config :phoenix_live_reload, MyAppWeb.Endpoint,
        target_window: :top,
        ...
      
  • Bug fixes

    • Inject iframe if web console logger is enabled but there are no patterns
    • Allow web console to shutdown cleanly
phoenixframework/phoenix_live_view (phoenix_live_view)

v0.20.17

Compare Source

v0.20.16

Compare Source

v0.20.15

Compare Source

elixir-ecto/postgrex (postgrex)

v0.21.1

Compare Source

  • Bug fixes
    • Fix ssl: true with missing ssl_opts handling

v0.21.0

Compare Source

This release requires Erlang/OTP 25+

  • Enhancements

    • Add query timeout option on ReplicationConnection
  • Bug fixes

    • PGHOST option does not override explicitly given endpoint configuration
    • Add ltxtquery support

v0.20.0

Compare Source

  • Deprecations

    • Deprecate :search_path and use :parameters option instead
  • Bug fixes

    • Ensure Duration type returns same units as Postgrex.Interval
    • Call disconnect on protocol when reconnecting in Postgrex.ReplicationConnection
    • Call disconnect only if there is protocol in Postgrex.SimpleConnection

v0.19.3

Compare Source

  • Enhancements

    • Default params to in query APIs to []
    • Allow :comment as options to query APIs
  • Bug fixes

    • Call disconnect on protocol when reconnecting in Postgrex.SimpleConnection

v0.19.2

Compare Source

  • Bug fixes
    • Protect against message length overflow vulnerability

v0.19.1

Compare Source

  • Enhancements

    • Allow encoding/decoding of LSN
  • Bug fixes

    • Fix Dialyzer warnings on interval extension
    • Log error message if Postgrex.ReplicationConnection is reconnecting

v0.19.0

Compare Source

  • Enhancements

    • Respect precision for interval, time, timestamp, and timestamptz
    • Remove restriction on year 9999 on datetime columns
    • Support decoding and encoding Elixir's v1.17 Duration as interval
    • Allow starting one stream after the other in replication
  • Bug fixes

    • Return {:stop, state} from gen_statem connection callback
wojtekmach/req (req)

v0.5.15

Compare Source

  • [Req.Response]: Add [Req.Response.to_map/1].

v0.5.14

Compare Source

  • [run_plug]: Remove warning about into: fun with {:halt, acc} result.

    The warning never been particularly useful because it's not like users
    can do anything about it.

v0.5.13

Compare Source

  • [run_plug]: Ease transition to automatically parsing request body.

    Since v0.5.11, this code:

      plug = fn conn ->
        {:ok, body, conn} = Plug.Conn.read_body(conn)
        assert JSON.decode!(body) == %{"x" => 1}
        Plug.Conn.send_resp(conn, 200, "ok")
      end
    
      Req.put!(plug: plug, json: %{x: 1})
    

    Needed to be updated to:

      plug = fn conn ->
        assert conn.body_params == %{"x" => 1}
        Plug.Conn.send_resp(conn, 200, "ok")
      end
    
      Req.put!(plug: plug, json: %{x: 1})
    

    This change makes it so both work. The latter will be required, however.

v0.5.12

Compare Source

  • [run_plug]: Do not raise on unknown content types.

    • [Req.Test]: Improve Req.Test.transport_error/2 error message.

v0.5.11

Compare Source

  • [encode_body]: Fix leading newline before multipart body.

    • [run_finch]: Handle initial transport errors on into: :self.

    • [run_plug]: Automatically parse request body.

      Prior to this change, users would typically write:

      plug = fn conn ->
        {:ok, body, conn} = Plug.Conn.read_body(conn)
        assert JSON.decode!(body) == %{"x" => 1}
        Plug.Conn.send_resp(conn, 200, "ok")
      end
      
      Req.put!(plug: plug, json: %{x: 1})
      

      Now, it can be:

      plug = fn conn ->
        assert conn.params == %{"x" => 1}
        Plug.Conn.send_resp(conn, 200, "ok")
      end
      
      Req.put!(plug: plug, json: %{x: 1})
      

      This is a breaking change as Plug.Conn.read_body will now return "".

      It can be easily fixed by using [Req.Test.raw_body/1] which returns copy of
      the request raw body:

      - {:ok, body, conn} = Plug.Conn.read_body(conn)
      + body = Req.Test.raw_body(conn)
      

      Furthermore, prior to this change conn.body_params was unfetched:

      plug = fn conn ->
        Plug.Conn.send_resp(conn, 200, inspect(conn.body_params))
      end
      
      iex> Req.post!(json: %{a: 1}, plug: plug).body
      "%Plug.Conn.Unfetched{aspect: :body_params}"
      

      Now it is:

      iex> Req.post!(json: %{a: 1}, plug: plug).body
      "%{\"a\": 1}"
      

      If in your :plug usage you look at conn.params, it will
      now include conn.body_params as Plug always merges them.

    • [retry]: Use jitter by default

    • [Req.Request]: Add [Req.Request.put_option/3].

    • [Req.Request]: Add [Req.Request.put_new_option/3].

    • [Req.Request]: Add [Req.Request.merge_new_options/2].

    • [Req.Test]: Add [Req.Test.redirect/2].

v0.5.10

Compare Source

  • [Req]: Add [Req.get_headers_list/1].

v0.5.9

Compare Source

  • [encode_body]: Support any enumerable in :form_multipart

    • [Req.Test.expect/3]: Fix usage in shared mode

    • [retry]: Do not carry halt between retries

    • (Internal) Support custom headers in Req.Utils.aws_sigv4_url/1

    • (Internal) Support custom query params in Req.Utils.aws_sigv4_url/1

v0.5.8

Compare Source

  • [Req]: Check legacy headers when streaming headers

    • [Req]: Ignore :into collectable for non-200 responses

    • [put_aws_sigv4]: Fix encoding path

    • [run_finch]: Add option to configure Finch :pool_max_idle_time

    • [run_finch]: Prepare for upcoming Finch v0.20

v0.5.7

Compare Source

  • [put_aws_sigv4]: Fix signature when using custom port

    • [retry]: Do not call retry_delay fun twice

    • [auth]: Support passing a 0-arity function

v0.5.6

Compare Source

  • Fix compatibility with Elixir v1.13

v0.5.5

Compare Source

  • [put_aws_sigv4]: Fix detecting service

    • [put_aws_sigv4]: Raise on no :access_key_id/:secret_access_key/:service

    • [put_aws_sigv4]: Fix handling ?name (no value)

    • [handle_http_errors]: should run before verify_checksum

    • [encode_body]: Support %File.Stream{} in :form_multipart

    • [encode_body]: Support %File.Stream{} from other nodes in :form_multipart

v0.5.4

Compare Source

  • [run_finch], [Req.parse_message/2]: Gracefully handle process messages not meant
    for the asynchronous response. In that case, Req.parse_message/2 returns :unknown.

v0.5.3

Compare Source

  • [Req.Test]: Fix using shared mode

    • [encode_body]: Add :form_multipart option

    • [put_aws_sigv4]: Try detecting the service

    • [run_finch]: Fix setting :finch option

v0.5.2

Compare Source

  • [put_aws_sigv4]: Fix bug when using custom headers

    • [put_aws_sigv4]: Add :token option

    • [redirect]: Cancel async request before redirecting

    • [decode_body]: Support application/zstd and .zst

rusterlium/rustler (rustler)

v0.37.1

Compare Source

Fixed
  • Fix required Elixir version (>= 1.15) in rustler_mix
  • Fix missing chdir in rustler_mix when compiling in a subdirectory (#​706)

v0.37.0

Compare Source

Added
  • Add staticlib feature to compile without nif_init and add {pkg}_nif_init
    symbol (#​688)
  • Add IntoIterator to OwnedBinary (#​702, thanks aDifferentJT)
Fixed
  • Set ErlNifEntry.min_erts to a placeholder value (#​703)
Changed
  • Refactor build logic to remove TOML dependency (#​691)
  • Use inline on commonly used functions (#​475, thanks @​joshuataylor)
  • Make EnifAllocator available even if the allocator feature is not enabled

v0.36.2

Compare Source

Added
  • std::hash::Hash implementation for atoms (#​695)
Fixed

v0.36.1

Compare Source

No changes in the Rust code, only rustler_mix adjustments and dependency
updates.

Added
  • Support for Erlang-style NIF module names (:module_name) (#​682)
Fixed
  • Retrieve the newest Rustler version without additional dependencies
    (#​682, fixes #​680)
  • Adjust .gitignore handling to match the new workspace style
Changed
  • Only depend on libloading on non-Windows systems (#​677)

v0.36.0

Compare Source

Added
  • Create a workplace Cargo.toml file with mix rustler.new (#​672)
Fixed
  • Some derive macros failed when only decode was requested (#​676)
Removed
  • The linkage override for macOS is not needed anymore and has been removed from
    the template (#​672)

v0.35.1

Compare Source

Fixed
  • Fix clippy lints in rustler_codegen (#​671)
  • Adjust Rustler macros to not produce warnings on Elixir 1.18 (#​670)

v0.35.0

Compare Source

Added
  • The resource type name can be overridden with
    #[register_impl(name = "...")] (#​638)
  • Floats can be decoded from integers (#​641, fixes #​603)
  • Resource types can implement and use dynamic calls on NIF version 2.16 (#​635)
  • Encoder and Decoder implementations for Box<T> (#​644)
  • Reference type and env.make_ref() function (#​657)
Fixed
  • The optional register attribute on #[register_impl] works as advertised
    now (#​638)
  • API functions for Windows are correctly assigned for NIF version 2.15 and
    above (#​635)
  • Panics in encoding the result of NIF function are caught (#​656)
  • Reverted change to "recompile if the NIF library is changed/deleted" (#​654,
    fixes #​651)
Changed
  • The special ok/error handling for atoms in serde is now restricted to variant
    names (#​639)
  • rustler_sys as a separate library is merged into rustler::sys and will not
    be released independently of rustler anymore (#​653)

v0.34.0

Compare Source

Added
  • Resource type registration has been refactored to eventually remove the
    rustler::resource! macro (#​617, necessary due to a pending deprecation of a
    Rust feature, #​606)
  • Resources can (and should) now explicitly implement the new Resource trait
    and provide a custom destructor function that is run before drop and
    receives an Env parameter (#​617)
  • Process monitoring via resources can now be used on resource types that
    implement the Resource::down callback (#​617)
  • Resource implementation and registration helper attribute (#​627)
Fixed
  • Unwinding in the on_load callback is now caught and leads to a panic (#​617)
Changed
  • NIF implementations are now discovered automatically and the respective
    argument of rustler::init! is ignored (#​613)
  • The derive feature flag is now ignored and its functionality unconditionally
    enabled (#​621)
swoosh/swoosh (swoosh)

v1.19.6

Compare Source

Features

v1.19.5

Compare Source

🐛 Bug Fixes

v1.19.4

Compare Source

Features

v1.19.3

Compare Source

Features

v1.19.2

Compare Source

Features
🧰 Maintenance

v1.19.1

Compare Source

🐛 Bug Fixes

v1.19.0

Compare Source

Features
🐛 Bug Fixes

v1.18.4

Compare Source

Features

v1.18.3

Compare Source

🧰 Maintenance

v1.18.2

Compare Source

🐛 Bug Fixes

v1.18.1

Compare Source

Features

v1.18.0

Compare Source

Features

v1.17.10

Compare Source

🐛 Bug Fixes

v1.17.9

Compare Source

🐛 Bug Fixes
  • fix assets path prefix
  • improve static serving config

v1.17.8

Compare Source

🐛 Bug Fixes

v1.17.7

Compare Source

Feature
🧰 Maintenance

v1.17.6

Compare Source

Features
📝 Documentation

v1.17.5

Compare Source

This release fixes a bug introduced in 1.17.4

🐛 Bug Fixes
📝 Documentation
  • Adapters: Add documentation about setting the base_url for ZeptoMail … @​reimeri (#​981)

v1.17.4

Compare Source

🐛 Bug Fixes
🧰 Maintenance

v1.17.3

Compare Source

Features

v1.17.2

Compare Source

Features

v1.17.1

Compare Source

🐛 Bug Fixes

v1.17.0

Compare Source

A new adapter for Postal, thanks to @​onvlt

Features

v1.16.12

Compare Source

Features

v1.16.11

Compare Source

Features
📝 Documentation

v1.16.10

Compare Source

🐛 Bug Fixes
📝 Documentation

v1.16.9

Compare Source

🐛 Bug Fixes

v1.16.8

Compare Source

Breaking Change

Mua is bumped to 0.2.0, and brings some breaking changes. The change in v0.2.0 is splitting transport_opts into tcp and ssl specific ones since :gen_tcp.connect complains when it receives opts for :ssl.connect.

🧰 Maintenance

v1.16.7

Compare Source

Features

v1.16.6

Compare Source

Features
📝 Documentation

v1.16.5

Compare Source

Features

v1.16.4

Compare Source

Features
🧰 Maintenance
phoenixframework/tailwind (tailwind)

v0.4.0

Compare Source

  • No longer copy assets in mix tailwind.install
  • Discard empty proxy env vars
  • Ensure watcher picks up rule changes on Windows

v0.3.1

Compare Source

  • Support correct target for Linux MUSL with Tailwind v3.

v0.3.0

Compare Source

  • Support Tailwind v4+. This release assumes Tailwind v4 for new projects.

Note: v0.3.0 dropped target code for handling Linux MUSL with Tailwind v3. Use v0.3.1+ instead.

v0.2.4

Compare Source

  • Add version check flag
  • Fallback to ipv4/ipv6 for unreachable hosts

v0.2.3

Compare Source

  • Fix Elixir v1.15 deprecation warnings
beam-telemetry/telemetry_metrics (telemetry_metrics)

v1.1.0

Compare Source

Changed

Add support for measurements as second argument of keep/drop callback.

beam-telemetry/telemetry_poller (telemetry_poller)

v1.3.0

Compare Source

Added
  • Add atom_limit, process_limit, and port_limit measurements to the [vm, system_counts] event. (#​79)

v1.2.0

Compare Source

Added
  • Support persistent_term measurements.
  • Require Erlang/OTP 24+.
elixir-tesla/tesla (tesla)

v1.15.3

Compare Source

Bug Fixes

v1.15.2

Compare Source

Bug Fixes
  • suppress deprecation warning for :log_level option (#​794) (478c16e)
  • suppress deprecation warning for :log_level option based on configuration (478c16e)

v1.15.1

Compare Source

Bug Fixes
  • legacy log level handling to support atom values for backward compatibility (5029174)

v1.15.0

Compare Source

Features
  • add logging options to use :level instead of deprecated :log_level (#​779) (ffc3609)
Bug Fixes
  • Handle non-list term being emitted from Stream.chunk_while in SSE (#​788) (0e9cf8d)

v1.14.3

Compare Source

Bug Fixes
  • Handle carriage return \r line terminators in SSE (1efe6e3)
  • handle carriage return \r line terminators in SSE (#​772) (1efe6e3)
  • Handle named ancestors in Tesla.Mock (#​774) (6cf380e)

v1.14.2

Compare Source

Bug Fixes
  • bring back searching for mocks in ancestors (#​771) (601e7b6)
  • fix race condition in Tesla.Mock.agent_set (8cf7745)
  • handle HTTP response trailers when use Finch + stream (#​767) (727cb0f)
  • move regexes out of module attributes to fix compatibility with OTP 28 (#​763) (1196bc6)

v1.14.1

Compare Source

Bug Fixes

v1.14.0

Compare Source

Features
  • release-please and conventional commit (#​719) (c9f6a1c)
  • support retry-after header in retry middleware (#​639) (86ad37d)
  • Tesla.Middleware.JSON: Add support for Elixir 1.18's JSON module (#​747) (1413167)
Bug Fixes

v1.13.2

Compare Source

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.13.1...v1.13.2

v1.13.1

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.13.0...v1.13.1

v1.13.0

Compare Source

Feature

  • Added Tesla.Test module, please check the How-To Guides, and module documentation

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.3...v1.13.0

v1.12.3

Compare Source

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.2...v1.12.3

v1.12.2

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.1...v1.12.2

v1.12.1

Compare Source

Important

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.12.0...v1.12.1

v1.12.0

Compare Source

Important

  • :httpc enables SSL by default in OTP 25+ Please keep the eye on around the topic

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.11.2...v1.12.0

v1.11.2

Compare Source

What's Changed

Full Changelog: https://github.com/elixir-tesla/tesla/compare/v1.11.1...v1.11.2


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [assent](https://hex.pm/packages/assent) ([source](https://github.com/pow-auth/assent)) | prod | minor | `~> 0.2.9` -> `~> 0.3.0` | | [bandit](https://hex.pm/packages/bandit) ([source](https://github.com/mtrudel/bandit)) | prod | minor | `1.4.2` -> `1.8.0` | | [bcrypt_elixir](https://hex.pm/packages/bcrypt_elixir) ([source](https://github.com/riverrun/bcrypt_elixir)) | prod | minor | `3.1.0` -> `3.3.2` | | [broadway](https://hex.pm/packages/broadway) ([source](https://github.com/dashbitco/broadway)) | prod | minor | `1.0.7` -> `1.2.1` | | [castore](https://hex.pm/packages/castore) ([source](https://github.com/elixir-mint/castore)) | prod | patch | `1.0.7` -> `1.0.15` | | [credo](https://hex.pm/packages/credo) ([source](https://github.com/rrrene/credo)) | dev | patch | `1.7.5` -> `1.7.12` | | [ecto_psql_extras](https://hex.pm/packages/ecto_psql_extras) ([source](https://github.com/pawurb/ecto_psql_extras)) | prod | patch | `0.8.0` -> `0.8.8` | | [ecto_sql](https://hex.pm/packages/ecto_sql) ([source](https://github.com/elixir-ecto/ecto_sql)) | prod | minor | `3.11.3` -> `3.13.2` | | [esbuild](https://hex.pm/packages/esbuild) ([source](https://github.com/phoenixframework/esbuild)) | prod | minor | `~> 0.8` -> `~> 0.10` | | [finch](https://hex.pm/packages/finch) ([source](https://github.com/sneako/finch)) | prod | minor | `~> 0.18.0` -> `~> 0.20.0` | | [floki](https://hex.pm/packages/floki) ([source](https://github.com/philss/floki)) | prod | minor | `0.36.1` -> `0.38.0` | | [gettext](https://hex.pm/packages/gettext) ([source](https://github.com/elixir-gettext/gettext)) | prod | minor | `~> 0.24` -> `~> 0.26` | | [heroicons](https://github.com/tailwindlabs/heroicons) | prod | minor | `v2.1.4` -> `v2.2.0` | | [jason](https://hex.pm/packages/jason) ([source](https://github.com/michalmuskala/jason)) | prod | patch | `1.4.3` -> `1.4.4` | | [oban](https://hex.pm/packages/oban) ([source](https://github.com/oban-bg/oban)) | prod | minor | `2.17.9` -> `2.20.1` | | [pgvector](https://hex.pm/packages/pgvector) ([source](https://github.com/pgvector/pgvector-elixir)) | prod | patch | `0.3.0` -> `0.3.1` | | [phoenix](https://hex.pm/packages/phoenix) ([source](https://github.com/phoenixframework/phoenix)) | prod | minor | `1.7.12` -> `1.8.1` | | [phoenix_ecto](https://hex.pm/packages/phoenix_ecto) ([source](https://github.com/phoenixframework/phoenix_ecto)) | prod | minor | `4.5.1` -> `4.6.5` | | [phoenix_html](https://hex.pm/packages/phoenix_html) ([source](https://github.com/phoenixframework/phoenix_html)) | prod | minor | `4.1.1` -> `4.2.1` | | [phoenix_live_dashboard](https://hex.pm/packages/phoenix_live_dashboard) ([source](https://github.com/phoenixframework/phoenix_live_dashboard)) | prod | patch | `0.8.3` -> `0.8.7` | | [phoenix_live_reload](https://hex.pm/packages/phoenix_live_reload) ([source](https://github.com/phoenixframework/phoenix_live_reload)) | dev | minor | `1.5.3` -> `1.6.1` | | [phoenix_live_view](https://hex.pm/packages/phoenix_live_view) ([source](https://github.com/phoenixframework/phoenix_live_view)) | prod | patch | `0.20.14` -> `0.20.17` | | [postgrex](https://hex.pm/packages/postgrex) ([source](https://github.com/elixir-ecto/postgrex)) | prod | minor | `0.18.0` -> `0.21.1` | | [req](https://hex.pm/packages/req) ([source](https://github.com/wojtekmach/req)) | prod | patch | `0.5.1` -> `0.5.15` | | [rustler](https://hex.pm/packages/rustler) ([source](https://github.com/rusterlium/rustler)) | prod | minor | `~> 0.33.0` -> `~> 0.37.0` | | [swoosh](https://hex.pm/packages/swoosh) ([source](https://github.com/swoosh/swoosh)) | prod | minor | `1.16.3` -> `1.19.6` | | [tailwind](https://hex.pm/packages/tailwind) ([source](https://github.com/phoenixframework/tailwind)) | prod | minor | `~> 0.2.0` -> `~> 0.4.0` | | [telemetry_metrics](https://hex.pm/packages/telemetry_metrics) ([source](https://github.com/beam-telemetry/telemetry_metrics)) | prod | minor | `1.0.0` -> `1.1.0` | | [telemetry_poller](https://hex.pm/packages/telemetry_poller) ([source](https://github.com/beam-telemetry/telemetry_poller)) | prod | minor | `1.1.0` -> `1.3.0` | | [temp](https://hex.pm/packages/temp) ([source](https://github.com/tuvistavie/elixir-temp)) | prod | patch | `0.4.7` -> `0.4.9` | | [tesla](https://hex.pm/packages/tesla) ([source](https://github.com/elixir-tesla/tesla)) | prod | minor | `~> 1.11.0` -> `~> 1.15.0` | --- ### Release Notes <details> <summary>pow-auth/assent (assent)</summary> ### [`v0.3.1`](https://github.com/pow-auth/assent/blob/HEAD/CHANGELOG.md#v031-2025-06-20) [Compare Source](https://github.com/pow-auth/assent/compare/v0.3.0...v0.3.1) ##### Bug fixes - `Assent.JWTAdapter.AssentJWT` fixed padding issue with ECDSA that caused invalid signatures ### [`v0.3.0`](https://github.com/pow-auth/assent/blob/HEAD/CHANGELOG.md#v030-2025-01-06) [Compare Source](https://github.com/pow-auth/assent/compare/v0.2.13...v0.3.0) **This release consists of breaking changes.** Userinfo is now cast to the correct type per <https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.5.1>. When upgrading you must ensure that you do not depend on a specific type in the returned userinfo for any of the strategies listed below. ##### Breaking changes - `Assent.Strategy.Auth0.authorize_url/2` no longer accepts `:domain` config, use `:base_url` instead - `Assent.Strategy.Basecamp.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `Assent.Strategy.Github.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `Assent.Strategy.Google` now encodes `email_verified` as a `boolean()` instead of a `binary()` - `Assent.Strategy.Google` now return `hd` instead of `google_hd` - `Assent.Strategy.Strava.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `Assent.Strategy.Telegram.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `Assent.Strategy.Twitter.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `Assent.Strategy.VK.callback/2` now encodes `sub` as a `binary()` instead of an `integer()` - `:site` configuration option removed, use `:base_url` instead - `Assent.Strategy.OAuth2.authorize_url/2` no longer allows `:state` in `:authorization_params` - `Assent.Strategy.decode_response/2`removed, use `Assent.HTTPAdapter.decode_response/2` instead - `Assent.Strategy.request/5` removed, use `Assent.Strategy.http_request/5` instead - `Assent.Strategy.prune/1` removed - `Assent.MissingParamError` no longer accepts `:expected_key`, use `:key` instead - `Assent.HTTPAdapter.Mint` removed - `Assent.Config` removed ##### Changes - `Assent.Strategy.Auth0` now uses OIDC instead of OAuth 2.0 base strategy - `Assent.Strategy.Gitlab` now uses OIDC instead of OAuth 2.0 base strategy - `Assent.Strategy.Google` now uses OIDC instead of OAuth 2.0 base strategy - `Assent.Strategy.normalize_userinfo/2` now casts the user claims per OpenID specification ### [`v0.2.13`](https://github.com/pow-auth/assent/releases/tag/v0.2.13) [Compare Source](https://github.com/pow-auth/assent/compare/v0.2.12...v0.2.13) - `Assent.Strategy.Auth0` deprecated `:domain` config option in favor of `:base_url` [#&#8203;177](https://github.com/pow-auth/assent/issues/177) ### [`v0.2.12`](https://github.com/pow-auth/assent/releases/tag/v0.2.12) [Compare Source](https://github.com/pow-auth/assent/compare/v0.2.11...v0.2.12) - `Assent` now has a module doc [#&#8203;176](https://github.com/pow-auth/assent/issues/176) ### [`v0.2.11`](https://github.com/pow-auth/assent/releases/tag/v0.2.11) [Compare Source](https://github.com/pow-auth/assent/compare/v0.2.10...v0.2.11) - Default to using `JSON` instead of `Jason` for JSON parsing on Elixir 1.18 [#&#8203;161](https://github.com/pow-auth/assent/issues/161) - `Assent.Strategy.OAuth2` now supports `:state` config option [#&#8203;162](https://github.com/pow-auth/assent/issues/162) - `Assent.Strategy.OAuth2` `:state` override in `:authorization_parms` has been deprecated [#&#8203;162](https://github.com/pow-auth/assent/issues/162) - `Assent.Strategy.OIDC` now supports `none` authentication method [#&#8203;163](https://github.com/pow-auth/assent/issues/163) (thanks [@&#8203;tommasop](https://github.com/tommasop)) - `Assent.Strategy.Bitbucket` added [#&#8203;160](https://github.com/pow-auth/assent/issues/160) (thanks [@&#8203;djgoku](https://github.com/djgoku)) - `Assent.Strategy.Twitch` added [#&#8203;159](https://github.com/pow-auth/assent/issues/159) (thanks [@&#8203;s0er3n](https://github.com/s0er3n)) - `Assent.Strategy.Telegram` added [#&#8203;152](https://github.com/pow-auth/assent/issues/152) (thanks [@&#8203;vheathen](https://github.com/vheathen)) - `Assent.Strategy.Zitadel` added [#&#8203;154](https://github.com/pow-auth/assent/issues/154) (thanks [@&#8203;tommasop](https://github.com/tommasop)) - `Assent.Strategy.Facebook.fetch_user/2` fixed bug with user not being decoded [#&#8203;168](https://github.com/pow-auth/assent/issues/168) (thanks [@&#8203;JohnDoneth](https://github.com/JohnDoneth)) - `Assent.Strategy.OAuth2` now supports PKCE [#&#8203;164](https://github.com/pow-auth/assent/issues/164) (thanks [@&#8203;tommasop](https://github.com/tommasop)) - `Assent.Strategy.OAuth2.Base.authorize_url/2` incomplete typespec fixed [#&#8203;166](https://github.com/pow-auth/assent/issues/166) (thanks [@&#8203;diogomrts](https://github.com/diogomrts)) - `Assent.Strategy.decode_response/2` deprecated accepting result tuples and now accepts `Assent.HTTPAdapter.HTTPResponse` structs [#&#8203;172](https://github.com/pow-auth/assent/issues/172) - `Assent.Strategy.request/5` deprecated in favor of `Assent.Strategy.http_request/5` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Strategy.decode_response/2` deprecated in favor of `Assent.HTTPAdapter.decode_response/2` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Config.get/3` deprecated in favor of `Keyword.get/3` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Config.put/3` deprecated in favor of `Keyword.put/3` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Config.merge/2` deprecated in favor of `Keyword.merge/2` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Config.t()` type deprecated in favor of `Keyword.t()` type [#&#8203;175](https://github.com/pow-auth/assent/issues/175) - `Assent.Config.fetch/2` deprecated in favor of `Assent.fetch_config/2` [#&#8203;175](https://github.com/pow-auth/assent/issues/175) </details> <details> <summary>mtrudel/bandit (bandit)</summary> ### [`v1.8.0`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#180-18-Aug-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.7.0...1.8.0) ##### Enhancements - If the user has set a `content-length` header when calling `send_chunked/3`, the response is streamed via content-length delimited framing and not chunked ([#&#8203;510](https://github.com/mtrudel/bandit/issues/510)) ### [`v1.7.0`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#170-29-May-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.11...1.7.0) ##### Enhancements - Add support for new `get_sock_data/1` and `get_ssl_data/1` callbacks from Plug 1.18 ([#&#8203;497](https://github.com/mtrudel/bandit/issues/497)) - Honour server-sent `Connection: close` headers ([#&#8203;495](https://github.com/mtrudel/bandit/issues/495), thanks [@&#8203;ruslandoga](https://github.com/ruslandoga)!) ##### Fixes - Don't overwrite non-default HTTP/2 settings when receiving HTTP/2 settings ([#&#8203;494](https://github.com/mtrudel/bandit/issues/494), thanks [@&#8203;ns-blee](https://github.com/ns-blee)!) - Fix handling of early-connection error handling in HTTP/2 ([#&#8203;486](https://github.com/mtrudel/bandit/issues/486)) ### [`v1.6.11`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#1611-31-Mar-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.10...1.6.11) ##### Changes - Ensure that HTTP/1 request headers are sent to the Plug in the order they're sent ([#&#8203;482](https://github.com/mtrudel/bandit/issues/482)) - Do not populate the `cookies` header with an empty string if no cookies were sent in HTTP/2 ([#&#8203;483](https://github.com/mtrudel/bandit/issues/483)) ### [`v1.6.10`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#1610-25-Mar-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.9...1.6.10) ##### Fixes - Fix bug introduced when closing compressed websock connections in certain circumstances ([#&#8203;478](https://github.com/mtrudel/bandit/issues/478)) ##### Enhancements - Standardize & document the format of messages sent to HTTP/2 Stream processes ([#&#8203;481](https://github.com/mtrudel/bandit/issues/481)) ### [`v1.6.9`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#169-21-Mar-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.8...1.6.9) ##### Fixes - Do not close compression context before calling websock close callback ([#&#8203;462](https://github.com/mtrudel/bandit/issues/462), thanks [@&#8203;thiagopromano](https://github.com/thiagopromano)!) ### [`v1.6.8`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#168-5-Mar-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.7...1.6.8) ##### Fixes - Do not send stream WINDOW\_UPDATEs on the last data frame of a stream ##### Enhancements - Add `status` to the telemetry metadata emitted on WebSocket upgrades ([#&#8203;466](https://github.com/mtrudel/bandit/issues/466)) ### [`v1.6.7`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#167-30-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.6...1.6.7) ##### Changes - Consider timeouts when reading HTTP/1 headers as a connection error and not an HTTP error - Enhance logging for WebSocket deflation errors ### [`v1.6.6`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#166-25-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.5...1.6.6) ##### Fixes - Consider closures during HTTP/1 header reading as a socket error to silence them by default via `log_client_closures` config flag - Send `connection: close` when closing connection on error per RFC9112§9.6 ##### Enhancements - Add experimental opt-in trace logging to help diagnose hard to reproduce errors - Move CI to 1.18 & improve tests ([#&#8203;459](https://github.com/mtrudel/bandit/issues/459), [#&#8203;461](https://github.com/mtrudel/bandit/issues/461), thanks [@&#8203;grzuy](https://github.com/grzuy)!) ### [`v1.6.5`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#165-15-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.4...1.6.5) ##### Fixes - Fix regression introduced in 1.6.1 where we would not send headers set by the Plug during WebSocket upgrades ([#&#8203;458](https://github.com/mtrudel/bandit/issues/458)) ##### Enhancements - Properly normalize Erlang errors before emitting telemetry and logged crash\_reason ([#&#8203;455](https://github.com/mtrudel/bandit/issues/455), thanks [@&#8203;grzuy](https://github.com/grzuy)!) ### [`v1.6.4`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#164-11-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.3...1.6.4) ##### Fixes - Fix error in socket setup error handling introduced in 1.6.2 (thanks [@&#8203;danielspofford](https://github.com/danielspofford)!) ### [`v1.6.3`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#163-8-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.2...1.6.3) ##### Fixes - Always close HTTP/1 connection in any case where an error comes out of the plug ([#&#8203;452](https://github.com/mtrudel/bandit/issues/452), thanks [@&#8203;zookzook](https://github.com/zookzook)!) - Fix dialyzer warning introduced by Thousand Island 1.3.9 ### [`v1.6.2`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#162-4-Jan-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.1...1.6.2) ##### Enhancements - Send telemetry events on Plugs that throw or exit ([#&#8203;443](https://github.com/mtrudel/bandit/issues/443)) - Improve test robustness & speed ([#&#8203;446](https://github.com/mtrudel/bandit/issues/446)) - Read a minimal number of bytes when sniffing for protocol ([#&#8203;449](https://github.com/mtrudel/bandit/issues/449)) - Add `plug` and `websock` to logging metadata whenever possible ([#&#8203;448](https://github.com/mtrudel/bandit/issues/448)) - Add `plug` and `websock` to telemetry metadata whenever possible ([#&#8203;447](https://github.com/mtrudel/bandit/issues/447)) - Silently eat Bandit.TransportError errors during HTTP/1 error fallback handling ##### Fixes - Bump hpax to 1.0.2, fixes [phoenixframework/phoenix#6020](https://github.com/phoenixframework/phoenix/issues/6020) (thanks [@&#8203;krainboltgreene](https://github.com/krainboltgreene)!) - Fix cases where we would desync on pipelined POST requests ([#&#8203;442](https://github.com/mtrudel/bandit/issues/442)) ##### Changes - Unwrap Plug.Conn.WrapperErrors raised by Plug and handle the wrapped error per policy - Surface socket setup errors as Bandit.TransportError for consistency in logging ### [`v1.6.1`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#1611-31-Mar-2025) [Compare Source](https://github.com/mtrudel/bandit/compare/1.6.0...1.6.1) ##### Changes - Ensure that HTTP/1 request headers are sent to the Plug in the order they're sent ([#&#8203;482](https://github.com/mtrudel/bandit/issues/482)) - Do not populate the `cookies` header with an empty string if no cookies were sent in HTTP/2 ([#&#8203;483](https://github.com/mtrudel/bandit/issues/483)) ### [`v1.6.0`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#160-18-Nov-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.7...1.6.0) ##### Enhancements - Add framework for supporting optimized native code on various hot paths ([#&#8203;394](https://github.com/mtrudel/bandit/issues/394), thanks [@&#8203;alisinabh](https://github.com/alisinabh)!) - Pass conn and exception data as logger metadata ([#&#8203;417](https://github.com/mtrudel/bandit/issues/417) & [#&#8203;420](https://github.com/mtrudel/bandit/issues/420), thanks [@&#8203;grzuy](https://github.com/grzuy)!) - Loosen hpax dependency requirements - Add `log_client_closures` http option, defaulting to false ([#&#8203;397](https://github.com/mtrudel/bandit/issues/397), thanks [@&#8203;goncalotomas](https://github.com/goncalotomas)!) - Handle plugs that throw a result ([#&#8203;411](https://github.com/mtrudel/bandit/issues/411), thanks [@&#8203;grzuy](https://github.com/grzuy)!) ##### Fixes - Improve content-length send logic per RFC9110§8.6/8.7 - Explicitly signal keepalives in HTTP/1.0 requests ##### Changes - Fix typo & clarify docs - Update security policy ### [`v1.5.7`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#157-1-Aug-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.6...1.5.7) ##### Changes - Timeouts encountered while reading a request body will now result in a `408 Request Timeout` being returned to the client by way of a `Bandit.HTTPError` being raised. Previously, a `:more` tuple was returned ([#&#8203;385](https://github.com/mtrudel/bandit/issues/385), thanks [@&#8203;martosaur](https://github.com/martosaur)!) ### [`v1.5.6`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#156-1-Aug-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.5...1.5.6) ##### Fixes - Improve handling of the end of stream condition for HTTP/2 requests that send a body which isn't read by the Plug ([#&#8203;387](https://github.com/mtrudel/bandit/issues/387), thanks [@&#8203;fekle](https://github.com/fekle)!) ### [`v1.5.5`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#155-19-Jun-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.4...1.5.5) ##### Changes - Add `domain: [:bandit]` to the metadata of all logger calls - Bring logging of early-connect HTTP2 errors under the `log_protocol_errors` umbrella ### [`v1.5.4`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#154-14-Jun-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.3...1.5.4) ##### Changes - Raise HTTP/2 send window timeouts as stream errors so that they're logged as protocol errors (thanks [@&#8203;hunterboerner](https://github.com/hunterboerner)!) ### [`v1.5.3`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#153-7-Jun-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.2...1.5.3) ##### Changes - Add `:short` and `:verbose` options to `log_protocol_errors` configuration option. **Change default value to `:short`, which will log protocol errors as a single summary line instead of a full stack trace** - Raise `Bandit.HTTPError` errors when attempting to write to a closed client connection (except for chunk/2 calls, which now return `{:error, reason}`). Unless otherwise caught by the user, these errors will bubble out past the configured plug and terminate the plug process. This closely mimics the behaviour of Cowboy in this regard ([#&#8203;359](https://github.com/mtrudel/bandit/issues/359)) - Respect the plug-provided content-length on HEAD responses ([#&#8203;353](https://github.com/mtrudel/bandit/issues/353), thanks [@&#8203;meeq](https://github.com/meeq)!) - Minor changes to how 'non-system process dictionary entries' are identified ##### Fixes - No longer closes on HTTP/1 requests smaller than the size of the HTTP/2 preamble - Close deflate contexts more eagerly for reduced memory use ### [`v1.5.2`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#152-10-May-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.1...1.5.2) ##### Fixes - Don't crash on non-stringable process dictionary keys ([#&#8203;350](https://github.com/mtrudel/bandit/issues/350), thanks [@&#8203;ryanwinchester](https://github.com/ryanwinchester), [@&#8203;chrismccord](https://github.com/chrismccord)!) ### [`v1.5.1`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#151-10-May-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.5.0...1.5.1) ##### Enhancements - Process dictionary is now cleared of all non-system process dictionary entries between keepalive requests ([#&#8203;349](https://github.com/mtrudel/bandit/issues/349)) - Explicitly run a GC before upgrading a connection to websocket ([#&#8203;348](https://github.com/mtrudel/bandit/issues/348)) - Improve docs around deflate options (thanks [@&#8203;kotsius](https://github.com/kotsius)!) ### [`v1.5.0`](https://github.com/mtrudel/bandit/blob/HEAD/CHANGELOG.md#150-21-Apr-2024) [Compare Source](https://github.com/mtrudel/bandit/compare/1.4.2...1.5.0) ##### Enhancements - Bandit now respects an exception's conformance to `Plug.Exception` when determining which status code to return to the client (if the plug did not already send one). Previously they were always returned as 500 (for HTTP/1) or an 'internal error' stream error (for HTTP/2) - Bandit now only logs the stacktrace of plug-generated exceptions whose status code (as determined by `Plug.Exception.status/1`) is contained within the new `log_exceptions_with_status_codes` configuration option (defaulting to `500..599`) - As a corollary to the above, Bandit request handler processes no longer exit abnormally in the case of plug-generated exceptions ##### Changes - HTTP semantic errors encountered in an HTTP/2 request are returned to the client using their proper status code instead of as a 'protocol error' stream error </details> <details> <summary>riverrun/bcrypt_elixir (bcrypt_elixir)</summary> ### [`v3.3.2`](https://github.com/riverrun/bcrypt_elixir/compare/v3.3.1...v3.3.2) [Compare Source](https://github.com/riverrun/bcrypt_elixir/compare/v3.3.1...v3.3.2) ### [`v3.3.1`](https://github.com/riverrun/bcrypt_elixir/compare/v3.3.0...v3.3.1) [Compare Source](https://github.com/riverrun/bcrypt_elixir/compare/v3.3.0...v3.3.1) ### [`v3.3.0`](https://github.com/riverrun/bcrypt_elixir/blob/HEAD/CHANGELOG.md#v330-2025-04-27) [Compare Source](https://github.com/riverrun/bcrypt_elixir/compare/v3.2.1...v3.3.0) - Changes - Updated blowfish C libs (minor updates) ### [`v3.2.1`](https://github.com/riverrun/bcrypt_elixir/compare/v3.2.0...v3.2.1) [Compare Source](https://github.com/riverrun/bcrypt_elixir/compare/v3.2.0...v3.2.1) ### [`v3.2.0`](https://github.com/riverrun/bcrypt_elixir/blob/HEAD/CHANGELOG.md#v320-2024-10-04) [Compare Source](https://github.com/riverrun/bcrypt_elixir/compare/v3.1.0...v3.2.0) - Changes - Updated dependencies and made changes to silence warnings in Elixir 1.17 </details> <details> <summary>dashbitco/broadway (broadway)</summary> ### [`v1.2.1`](https://github.com/dashbitco/broadway/blob/HEAD/CHANGELOG.md#v121-2025-02-12) [Compare Source](https://github.com/dashbitco/broadway/compare/v1.2.0...v1.2.1) - Run `setup` callback on Broadway startup ### [`v1.2.0`](https://github.com/dashbitco/broadway/blob/HEAD/CHANGELOG.md#v120-2025-02-10) [Compare Source](https://github.com/dashbitco/broadway/compare/v1.1.0...v1.2.0) - Do not clean up persistent terms on shutdown - Add format\_discarded callback - Allow different config storages ### [`v1.1.0`](https://github.com/dashbitco/broadway/blob/HEAD/CHANGELOG.md#v110-2024-06-21) [Compare Source](https://github.com/dashbitco/broadway/compare/v1.0.7...v1.1.0) ##### Bug fix - No longer set demand to `:accumulate` when draining, for compatibility with GenStage v1.2+. This means that any polling implementation must implement the `prepare_for_draining` callback and stop polling messages. You can check how [BroadwaySQS](https://github.com/dashbitco/broadway_sqs/commit/5b8f18a78e4760b5fcc839ad576be8c63345add0) tackles this problem as an example ##### Enhancements - Log leaked trapped exits </details> <details> <summary>elixir-mint/castore (castore)</summary> ### [`v1.0.15`](https://github.com/elixir-mint/castore/compare/v1.0.14...v1.0.15) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.14...v1.0.15) ### [`v1.0.14`](https://github.com/elixir-mint/castore/compare/v1.0.13...v1.0.14) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.13...v1.0.14) ### [`v1.0.13`](https://github.com/elixir-mint/castore/compare/v1.0.12...v1.0.13) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.12...v1.0.13) ### [`v1.0.12`](https://github.com/elixir-mint/castore/compare/v1.0.11...v1.0.12) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.11...v1.0.12) ### [`v1.0.11`](https://github.com/elixir-mint/castore/compare/v1.0.10...v1.0.11) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.10...v1.0.11) ### [`v1.0.10`](https://github.com/elixir-mint/castore/compare/v1.0.9...v1.0.10) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.9...v1.0.10) ### [`v1.0.9`](https://github.com/elixir-mint/castore/compare/v1.0.8...v1.0.9) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.8...v1.0.9) ### [`v1.0.8`](https://github.com/elixir-mint/castore/compare/v1.0.7...v1.0.8) [Compare Source](https://github.com/elixir-mint/castore/compare/v1.0.7...v1.0.8) </details> <details> <summary>rrrene/credo (credo)</summary> ### [`v1.7.12`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#1712) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.11...v1.7.12) - Fix compatibility & compiler warnings with Elixir 1.19 (dev) - Provide `:column` on all checks - Fix check docs in other project's documentation - `Credo.Check.Refactor.DoubleBooleanNegation` fixed false positive - `Credo.Check.Readability.NestedFunctionCalls` fixed false positive - `Credo.Check.Consistency.UnusedVariableNames` fixed duplicate issues ### [`v1.7.11`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#1711) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.10...v1.7.11) - Fix compatibility & compiler warnings with Elixir 1.18 - Fix crashing for invalid strings in issue messages - Show required Elixir version for skipped checks - Add options `:exit_status` and `:category` to `format_issue/2` when using `Credo.Check` - `Credo.Check.Readability.ModuleDoc` fixed false positive - `Credo.Check.Warning.UnusedEnumOperation` fixed false positive - `Credo.Check.Refactor.ABCSize` fixed false positive for tuples and underscored matches (`_foo`) ### [`v1.7.10`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#1710) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.9...v1.7.10) - Maintenance release ### [`v1.7.9`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#179) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.8...v1.7.9) - `Credo.Check.Refactor.ABCSize` fixed false positive for pin operator (`^`) - `Credo.Check.Readability.FunctionNames` fixed false positive for pow operator (`**`) - Fixed a bug in `Credo.Code.Parameters` when couting parameters for functions with guards ### [`v1.7.8`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#178) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.7...v1.7.8) - `Credo.Check.Refactor.Apply` fixed false positive - `Credo.Check.Warning.IoInspect` fixed false positive - `Credo.Check.Warning.UnsafeToAtom` fixed false positive - `Credo.Check.Readability.FunctionNames` fixed false positive ### [`v1.7.7`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#177) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.6...v1.7.7) - Fix compatibility & compiler warnings with Elixir 1.17 - `Credo.Check.Design.SkipTestWithoutComment`, `Credo.Check.Refactor.PassAsyncInTestCases` and `Credo.Check.Warning.WrongTestFileExtension` now work for umbrella apps ### [`v1.7.6`](https://github.com/rrrene/credo/blob/HEAD/CHANGELOG.md#176) [Compare Source](https://github.com/rrrene/credo/compare/v1.7.5...v1.7.6) - `Credo.Check.Consistency.MultiAliasImportRequireUse` fixed false positive - `Credo.Check.Readability.PredicateFunctionNames` now ignores functions that implement a behaviour - `Credo.Check.Readability.FunctionName` now supports multi-letter sigils - `Credo.Check.Readability.Specs` fixed false positive - `Credo.Check.Warning.UnusedKeywordOperation` fixed false positive - Fix `column` information on several checks in case there are two offending calls on the same line - Fix some deprecation warnings for upcoming Elixir 1.17 </details> <details> <summary>elixir-ecto/ecto_sql (ecto_sql)</summary> ### [`v3.13.2`](https://github.com/elixir-ecto/ecto_sql/blob/HEAD/CHANGELOG.md#v3132-2025-06-24) [Compare Source](https://github.com/elixir-ecto/ecto_sql/compare/v3.13.1...v3.13.2) ##### Enhancements - \[sandbox] Allow passing through opts in `Ecto.Adapters.SQL.Sandbox.allow/4` calls - \[sql] Add support for `ON DELETE SET DEFAULT` ##### Bug fixes - \[postgres] Fix nested array generated time columns ### [`v3.13.1`](https://github.com/elixir-ecto/ecto_sql/blob/HEAD/CHANGELOG.md#v3131-2025-06-20) [Compare Source](https://github.com/elixir-ecto/ecto_sql/compare/v3.13.0...v3.13.1) ##### Bug fixes - \[postgres] Fix nested array generated columns ### [`v3.13.0`](https://github.com/elixir-ecto/ecto_sql/blob/HEAD/CHANGELOG.md#v3130-2025-06-18) [Compare Source](https://github.com/elixir-ecto/ecto_sql/compare/v3.12.1...v3.13.0) ##### Enhancements - \[Ecto.Migration] Add support for index directions - \[sql] Support `:log_stacktrace_mfa` for filtering or modifying stacktrace-derived info in query logs - \[mysql] Support arrays using JSON for MariaDB - \[mysql] Allow to specify `:prepare` per operation - \[postgres] Add support for collations in Postgres - \[postgres] Allow source fields in `json_extract_path` ### [`v3.12.1`](https://github.com/elixir-ecto/ecto_sql/blob/HEAD/CHANGELOG.md#v3121-2024-10-07) [Compare Source](https://github.com/elixir-ecto/ecto_sql/compare/v3.12.0...v3.12.1) ##### Enhancements - \[sql] Support `:pool_count` option ### [`v3.12.0`](https://github.com/elixir-ecto/ecto_sql/blob/HEAD/CHANGELOG.md#v3120-2024-08-12) [Compare Source](https://github.com/elixir-ecto/ecto_sql/compare/v3.11.3...v3.12.0) ##### Enhancements - \[Ecto.Migration] Add `Ecto.Migration.remove_if_exists/1` - \[Ecto.Migrator] Warn for migration files that end in `.ex` - \[sql] Support for subqueries in order\_bys and group\_bys - \[mysql] Add check constraints for MySQL - \[postgres] Add native bitstring support to Postgres - \[postgres] Add support for `:duration` type - \[postgres] Add `:plan` explain option for Postgres - \[tds] Allow passing `%Tds.Parameter` structs as params for named parameter usage in `query` ##### Bug fix - \[mysql] Type cast of integers in MySQL should use signed integers </details> <details> <summary>phoenixframework/esbuild (esbuild)</summary> ### [`v0.10.0`](https://github.com/phoenixframework/esbuild/blob/HEAD/CHANGELOG.md#v0100-2025-05-27) [Compare Source](https://github.com/phoenixframework/esbuild/compare/v0.9.0...v0.10.0) - Automatically join environment variables specified as lists using the correct `PATH` separator. For example: ```elixir config :esbuild, my_profile: [ ... env: %{ "NODE_PATH" => [Path.expand("../deps", __DIR__), Mix.Project.build_path()] } ] ``` ### [`v0.9.0`](https://github.com/phoenixframework/esbuild/blob/HEAD/CHANGELOG.md#v090-2025-02-10) [Compare Source](https://github.com/phoenixframework/esbuild/compare/v0.8.2...v0.9.0) This release requires Elixir v1.14+ and Erlang/OTP 25+. - Update PGP keys to support latest `esbuild` versions - Update `esbuild` to version 0.25.0 - Remove dependency on `CAStore` in favor of using Erlang certificates ### [`v0.8.2`](https://github.com/phoenixframework/esbuild/blob/HEAD/CHANGELOG.md#v082-2024-10-18) [Compare Source](https://github.com/phoenixframework/esbuild/compare/v0.8.1...v0.8.2) - Fallback to ipv4/ipv6 for unreachable hosts </details> <details> <summary>sneako/finch (finch)</summary> ### [`v0.20.0`](https://github.com/sneako/finch/blob/HEAD/CHANGELOG.md#v0200-2025-07-04) [Compare Source](https://github.com/sneako/finch/compare/v0.19.0...v0.20.0) ##### Enhancements - Support manual pool termination [#&#8203;299](https://github.com/sneako/finch/issues/299) - Refactor HTTP1 pool state for better maintainability [#&#8203;308](https://github.com/sneako/finch/issues/308) - Add `:supported_groups` to list of TLS options [#&#8203;307](https://github.com/sneako/finch/issues/307) - Be more explicit about the `:default` pool in documentation [#&#8203;314](https://github.com/sneako/finch/issues/314) - Upgrade `nimble_options` to document deprecations [#&#8203;315](https://github.com/sneako/finch/issues/315) ##### Bug Fixes - Fix Finch.stream\_while/5 on halt for both HTTP/1 and HTTP/2 [#&#8203;320](https://github.com/sneako/finch/issues/320) - Return accumulator when Finch.stream/5 and Finch.stream\_while/5 fail [#&#8203;295](https://github.com/sneako/finch/issues/295) - Fix documentation reference for get\_pool\_status/2 [#&#8203;301](https://github.com/sneako/finch/issues/301) ##### Other - Upgrade CI VM to Ubuntu 24 [#&#8203;321](https://github.com/sneako/finch/issues/321) - CI housekeeping: support Elixir 1.17/Erlang OTP 27, bump Credo and deps [#&#8203;303](https://github.com/sneako/finch/issues/303) - Update GitHub CI badge URL [#&#8203;304](https://github.com/sneako/finch/issues/304) ### [`v0.19.0`](https://github.com/sneako/finch/blob/HEAD/CHANGELOG.md#v0190-2024-09-04) [Compare Source](https://github.com/sneako/finch/compare/v0.18.0...v0.19.0) ##### Enhancements - Update @&#8203;mint\_tls\_opts in pool\_manager.ex [#&#8203;266](https://github.com/sneako/finch/issues/266) - Document there is no backpressure on HTTP2 [#&#8203;283](https://github.com/sneako/finch/issues/283) - Fix test: compare file size instead of map [#&#8203;284](https://github.com/sneako/finch/issues/284) - Finch.request/3: Use improper list and avoid Enum.reverse [#&#8203;286](https://github.com/sneako/finch/issues/286) - Require Mint 1.6 [#&#8203;287](https://github.com/sneako/finch/issues/287) - Remove castore dependency [#&#8203;274](https://github.com/sneako/finch/issues/274) - Fix typos and improve language in docs and comments [#&#8203;285](https://github.com/sneako/finch/issues/285) - fix logo size in README [#&#8203;275](https://github.com/sneako/finch/issues/275) ##### Bug Fixes - Tweak Finch supervisor children startup order [#&#8203;289](https://github.com/sneako/finch/issues/289), fixes [#&#8203;277](https://github.com/sneako/finch/issues/277) - implement handle\_cancelled/2 pool callback [#&#8203;268](https://github.com/sneako/finch/issues/268), fixes [#&#8203;257](https://github.com/sneako/finch/issues/257) - type Finch.request\_opt() was missing the :request\_timeout option [#&#8203;278](https://github.com/sneako/finch/issues/278) </details> <details> <summary>philss/floki (floki)</summary> ### [`v0.38.0`](https://github.com/philss/floki/blob/HEAD/CHANGELOG.md#0380---2025-06-14) [Compare Source](https://github.com/philss/floki/compare/v0.37.1...v0.38.0) ##### Added - This version adds initial support for the `:has` pseudo-selector. It is a great addition that enables finding elements containing matching children. Examples for selectors: - `"div:has(h1)"` - `"div:has(h1, p, span)"` - `"div:has(p.foo)"` - `"div:has(img[src='https://example.com'])"` - `"tr:has(*:fl-contains('TEST'))"` Note that combinators like `">"` are not allowed yet. Thank you [@&#8203;bvobart](https://github.com/bvobart) for this feature! ##### Fixed - Add `:style` option documentation to `Floki.text/2`. Thanks [@&#8203;s3cur3](https://github.com/s3cur3) for the fix. - Fix deprecation warnings for upcoming Elixir 1.19. - Prevent from crashing when selector is an empty string. ##### Removed - Remove support for Elixir 1.14 and OTP 23. - Remove deprecated functions and function clauses that were accepting strings (binaries). Affected functions: - `parse/1` - removed function - `map/2` - removed function - `attr/4` - removed clause - `find/2` - removed clause - `text/3` - removed clause - `text/3` - removed clause - `attribute/2` - removed clause - `filter_out/2` - removed clause - HTML must be parsed before searching. Functions like `Floki.find/2`, `Floki.attribute/2`, and other HTML manipulation functions **no longer work directly with HTML strings**. The HTML must be parsed first using `Floki.parse_fragment/2` or `Floki.parse_document/2`. Before: ```elixir html = "<div class='foobar'><p>Hello</p></div>" Floki.find(html, "p") Floki.attribute(html, "div", "class") ``` After: ```elixir html = "<div class='foobar'><p>Hello</p></div>" parsed_html = Floki.parse_fragment!(html) Floki.find(parsed_html, "p") Floki.attribute(parsed_html, "div", "class") ``` ### [`v0.37.1`](https://github.com/philss/floki/blob/HEAD/CHANGELOG.md#0371---2025-03-22) [Compare Source](https://github.com/philss/floki/compare/v0.37.0...v0.37.1) ##### Fixed - Move regex declaration from module tag to inside function. This is a fix to be compatible with the upcoming OTP 28. ### [`v0.37.0`](https://github.com/philss/floki/blob/HEAD/CHANGELOG.md#0370---2024-12-06) [Compare Source](https://github.com/philss/floki/compare/v0.36.3...v0.37.0) ##### Added - Add `Floki.css_escape/1` - thanks [@&#8203;SteffenDE](https://github.com/SteffenDE). ##### Fixed - Fix bug propagating identity encoder in `raw_html/2` - thanks [@&#8203;andyleclair](https://github.com/andyleclair). ##### Removed - Remove support for Elixir 1.13 and OTP 22. ### [`v0.36.3`](https://github.com/philss/floki/blob/HEAD/CHANGELOG.md#0363---2024-10-21) [Compare Source](https://github.com/philss/floki/compare/v0.36.2...v0.36.3) This release contains some performance improvements, thanks to [@&#8203;ypconstante](https://github.com/ypconstante). ##### Fixed - Stop `Floki.get_by_id/2` traversal on first match. Thanks [@&#8203;ypconstante](https://github.com/ypconstante). - Remove extra whitespaces from nodes without attributes on `Floki.raw_html/1`. Thank you [@&#8203;ypconstante](https://github.com/ypconstante). - Fix `Floki.raw_html/1` typespecs. Thanks [@&#8203;davydog187](https://github.com/davydog187). ### [`v0.36.2`](https://github.com/philss/floki/blob/HEAD/CHANGELOG.md#0362---2024-04-26) [Compare Source](https://github.com/philss/floki/compare/v0.36.1...v0.36.2) ##### Added - Implement the `Inspect` protocol for the `Floki.HTMLTree` struct. This struct is currently private. Thank you [@&#8203;vittoriabitton](https://github.com/vittoriabitton). ##### Fixed - Fix regression to respect config option `:encode` in `Floki.raw_html/2`. Thanks [@&#8203;Sgoettschkes](https://github.com/Sgoettschkes). - Make the `Floki.raw_html/2` treat the contents of the `<title>` tag as plain text. The idea is to align with `parse_document/2`. Thank you [@&#8203;aymanosman](https://github.com/aymanosman). </details> <details> <summary>elixir-gettext/gettext (gettext)</summary> ### [`v0.26.2`](https://github.com/elixir-gettext/gettext/blob/HEAD/CHANGELOG.md#v0262) [Compare Source](https://github.com/elixir-gettext/gettext/compare/v0.26.1...v0.26.2) - Introduces warning if plural messages are defined with the same singular message and conflicting plural messages. - Improves performance by striping not required metadata when compiling the Gettext backend. ### [`v0.26.1`](https://github.com/elixir-gettext/gettext/blob/HEAD/CHANGELOG.md#v0261) [Compare Source](https://github.com/elixir-gettext/gettext/compare/v0.26.0...v0.26.1) - Address backwards incompatible changes in previous release ### [`v0.26.0`](https://github.com/elixir-gettext/gettext/blob/HEAD/CHANGELOG.md#v0260) [Compare Source](https://github.com/elixir-gettext/gettext/compare/v0.25.0...v0.26.0) This release changes the way you use Gettext. We're not crazy: it does so because doing so makes it a lot faster to compile projects that use Gettext. The changes *you* have to make to your code are minimal, and the old behavior is deprecated so that you will be guided on how to update. The reason for this change is that it removes compile-time dependencies from modules that used to `import` a Gettext backend. In applications such as Phoenix applications, where every view and controller `import`s the Gettext backend, this change means a lot less compilation when you make translation changes! Here's the new API. Now, instead of defining a Gettext backend (`use Gettext`) and then `import`ing that to use its macros, you need to: 1. Define a Gettext backend with `use Gettext.Backend` 2. Import and use its macros with `use Gettext, backend: MyApp.Gettext`. ##### Before and After Before this release, code using Gettext used to look something like this: ```elixir defmodule MyApp.Gettext do use Gettext, otp_app: :my_app end defmodule MyAppWeb.Controller do import MyApp.Gettext end ``` This creates a compile-time dependency for every module that `import`s the Gettext backend. With this release, the above turns into: ```elixir defmodule MyApp.Gettext do use Gettext.Backend, otp_app: :my_app end defmodule MyAppWeb.Controller do use Gettext, backend: MyApp.Gettext end ``` We are also updating [Phoenix](https://github.com/phoenixframework/phoenix) generators to use the new API. If you update Gettext and still use `use Gettext, otp_app: :my_app` to define a backend, Gettext will emit a warning now. ##### Migration with Igniter If your project is using [`igniter`](https://hex.pm/packages/igniter), you can run [`mix igniter.update_gettext`](https://hexdocs.pm/igniter/Mix.Tasks.Igniter.UpdateGettext.html) to automatically migrate to the new API. ##### Detailed Changelog This is a detailed list of the new things introduced in this release: - Add `Gettext.Macros`, which contains all the macros you know and love (`*gettext`). It also contains `*gettext_with_backend` variants to explicitly pass a backend at compile time and keep extraction working. - Document `lgettext/5` and `lngettext/7` callbacks in `Gettext.Backend`. These get generated in every Gettext backend. - Add the `Gettext.domain/0` type. ### [`v0.25.0`](https://github.com/elixir-gettext/gettext/blob/HEAD/CHANGELOG.md#v0250) [Compare Source](https://github.com/elixir-gettext/gettext/compare/v0.24.0...v0.25.0) - Run merging for `mix gettext.extract`'s POT files even if they are unchanged. - Allow Expo 1.0+. </details> <details> <summary>tailwindlabs/heroicons (heroicons)</summary> ### [`v2.2.0`](https://github.com/tailwindlabs/heroicons/blob/HEAD/CHANGELOG.md#020---2020-05-18) [Compare Source](https://github.com/tailwindlabs/heroicons/compare/v2.1.5...v2.2.0) ##### Added - Everything! [unreleased]: https://github.com/tailwindlabs/heroicons/compare/v2.2.0...HEAD [2.2.0]: https://github.com/tailwindlabs/heroicons/compare/v2.1.5...v2.2.0 [2.1.5]: https://github.com/tailwindlabs/heroicons/compare/v2.1.4...v2.1.5 [2.1.4]: https://github.com/tailwindlabs/heroicons/compare/v2.1.3...v2.1.4 [2.1.3]: https://github.com/tailwindlabs/heroicons/compare/v2.1.2...v2.1.3 [2.1.2]: https://github.com/tailwindlabs/heroicons/compare/v2.1.1...v2.1.2 [2.1.1]: https://github.com/tailwindlabs/heroicons/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/tailwindlabs/heroicons/compare/v2.0.18...v2.1.0 [2.0.18]: https://github.com/tailwindlabs/heroicons/compare/v2.0.17...v2.0.18 [2.0.17]: https://github.com/tailwindlabs/heroicons/compare/v2.0.16...v2.0.17 [2.0.16]: https://github.com/tailwindlabs/heroicons/compare/v2.0.15...v2.0.16 [2.0.15]: https://github.com/tailwindlabs/heroicons/compare/v2.0.14...v2.0.15 [2.0.14]: https://github.com/tailwindlabs/heroicons/compare/v2.0.13...v2.0.14 [2.0.13]: https://github.com/tailwindlabs/heroicons/compare/v2.0.12...v2.0.13 [2.0.12]: https://github.com/tailwindlabs/heroicons/compare/v2.0.11...v2.0.12 [2.0.11]: https://github.com/tailwindlabs/heroicons/compare/v2.0.10...v2.0.11 [2.0.10]: https://github.com/tailwindlabs/heroicons/compare/v2.0.9...v2.0.10 [2.0.9]: https://github.com/tailwindlabs/heroicons/compare/v2.0.8...v2.0.9 [2.0.8]: https://github.com/tailwindlabs/heroicons/compare/v2.0.7...v2.0.8 [2.0.7]: https://github.com/tailwindlabs/heroicons/compare/v2.0.6...v2.0.7 [2.0.6]: https://github.com/tailwindlabs/heroicons/compare/v2.0.5...v2.0.6 [2.0.5]: https://github.com/tailwindlabs/heroicons/compare/v2.0.4...v2.0.5 [2.0.4]: https://github.com/tailwindlabs/heroicons/compare/v2.0.3...v2.0.4 [2.0.3]: https://github.com/tailwindlabs/heroicons/compare/v2.0.2...v2.0.3 [2.0.2]: https://github.com/tailwindlabs/heroicons/compare/v2.0.1...v2.0.2 [2.0.1]: https://github.com/tailwindlabs/heroicons/compare/v2.0.0...v2.0.1 [2.0.0]: https://github.com/tailwindlabs/heroicons/compare/v1.0.6...v2.0.0 [1.0.6]: https://github.com/tailwindlabs/heroicons/compare/v1.0.5...v1.0.6 [1.0.5]: https://github.com/tailwindlabs/heroicons/compare/v1.0.4...v1.0.5 [1.0.4]: https://github.com/tailwindlabs/heroicons/compare/v1.0.3...v1.0.4 [1.0.3]: https://github.com/tailwindlabs/heroicons/compare/v1.0.2...v1.0.3 [1.0.2]: https://github.com/tailwindlabs/heroicons/compare/v1.0.1...v1.0.2 [1.0.1]: https://github.com/tailwindlabs/heroicons/compare/v1.0.0...v1.0.0 [1.0.0]: https://github.com/tailwindlabs/heroicons/compare/v0.4.2...v1.0.0 [0.4.2]: https://github.com/tailwindlabs/heroicons/compare/v0.4.1...v0.4.2 [0.4.1]: https://github.com/tailwindlabs/heroicons/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/tailwindlabs/heroicons/compare/v0.3.7...v0.4.0 [0.3.7]: https://github.com/tailwindlabs/heroicons/compare/v0.3.6...v0.3.7 [0.3.6]: https://github.com/tailwindlabs/heroicons/compare/v0.3.5...v0.3.6 [0.3.5]: https://github.com/tailwindlabs/heroicons/compare/v0.3.4...v0.3.5 [0.3.4]: https://github.com/tailwindlabs/heroicons/compare/v0.3.3...v0.3.4 [0.3.3]: https://github.com/tailwindlabs/heroicons/compare/v0.3.2...v0.3.3 [0.3.2]: https://github.com/tailwindlabs/heroicons/compare/v0.3.1...v0.3.2 [0.3.1]: https://github.com/tailwindlabs/heroicons/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/tailwindlabs/heroicons/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/tailwindlabs/heroicons/releases/tag/v0.2.0 ### [`v2.1.5`](https://github.com/tailwindlabs/heroicons/blob/HEAD/CHANGELOG.md#020---2020-05-18) [Compare Source](https://github.com/tailwindlabs/heroicons/compare/v2.1.4...v2.1.5) ##### Added - Everything! [unreleased]: https://github.com/tailwindlabs/heroicons/compare/v2.2.0...HEAD [2.2.0]: https://github.com/tailwindlabs/heroicons/compare/v2.1.5...v2.2.0 [2.1.5]: https://github.com/tailwindlabs/heroicons/compare/v2.1.4...v2.1.5 [2.1.4]: https://github.com/tailwindlabs/heroicons/compare/v2.1.3...v2.1.4 [2.1.3]: https://github.com/tailwindlabs/heroicons/compare/v2.1.2...v2.1.3 [2.1.2]: https://github.com/tailwindlabs/heroicons/compare/v2.1.1...v2.1.2 [2.1.1]: https://github.com/tailwindlabs/heroicons/compare/v2.1.0...v2.1.1 [2.1.0]: https://github.com/tailwindlabs/heroicons/compare/v2.0.18...v2.1.0 [2.0.18]: https://github.com/tailwindlabs/heroicons/compare/v2.0.17...v2.0.18 [2.0.17]: https://github.com/tailwindlabs/heroicons/compare/v2.0.16...v2.0.17 [2.0.16]: https://github.com/tailwindlabs/heroicons/compare/v2.0.15...v2.0.16 [2.0.15]: https://github.com/tailwindlabs/heroicons/compare/v2.0.14...v2.0.15 [2.0.14]: https://github.com/tailwindlabs/heroicons/compare/v2.0.13...v2.0.14 [2.0.13]: https://github.com/tailwindlabs/heroicons/compare/v2.0.12...v2.0.13 [2.0.12]: https://github.com/tailwindlabs/heroicons/compare/v2.0.11...v2.0.12 [2.0.11]: https://github.com/tailwindlabs/heroicons/compare/v2.0.10...v2.0.11 [2.0.10]: https://github.com/tailwindlabs/heroicons/compare/v2.0.9...v2.0.10 [2.0.9]: https://github.com/tailwindlabs/heroicons/compare/v2.0.8...v2.0.9 [2.0.8]: https://github.com/tailwindlabs/heroicons/compare/v2.0.7...v2.0.8 [2.0.7]: https://github.com/tailwindlabs/heroicons/compare/v2.0.6...v2.0.7 [2.0.6]: https://github.com/tailwindlabs/heroicons/compare/v2.0.5...v2.0.6 [2.0.5]: https://github.com/tailwindlabs/heroicons/compare/v2.0.4...v2.0.5 [2.0.4]: https://github.com/tailwindlabs/heroicons/compare/v2.0.3...v2.0.4 [2.0.3]: https://github.com/tailwindlabs/heroicons/compare/v2.0.2...v2.0.3 [2.0.2]: https://github.com/tailwindlabs/heroicons/compare/v2.0.1...v2.0.2 [2.0.1]: https://github.com/tailwindlabs/heroicons/compare/v2.0.0...v2.0.1 [2.0.0]: https://github.com/tailwindlabs/heroicons/compare/v1.0.6...v2.0.0 [1.0.6]: https://github.com/tailwindlabs/heroicons/compare/v1.0.5...v1.0.6 [1.0.5]: https://github.com/tailwindlabs/heroicons/compare/v1.0.4...v1.0.5 [1.0.4]: https://github.com/tailwindlabs/heroicons/compare/v1.0.3...v1.0.4 [1.0.3]: https://github.com/tailwindlabs/heroicons/compare/v1.0.2...v1.0.3 [1.0.2]: https://github.com/tailwindlabs/heroicons/compare/v1.0.1...v1.0.2 [1.0.1]: https://github.com/tailwindlabs/heroicons/compare/v1.0.0...v1.0.0 [1.0.0]: https://github.com/tailwindlabs/heroicons/compare/v0.4.2...v1.0.0 [0.4.2]: https://github.com/tailwindlabs/heroicons/compare/v0.4.1...v0.4.2 [0.4.1]: https://github.com/tailwindlabs/heroicons/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/tailwindlabs/heroicons/compare/v0.3.7...v0.4.0 [0.3.7]: https://github.com/tailwindlabs/heroicons/compare/v0.3.6...v0.3.7 [0.3.6]: https://github.com/tailwindlabs/heroicons/compare/v0.3.5...v0.3.6 [0.3.5]: https://github.com/tailwindlabs/heroicons/compare/v0.3.4...v0.3.5 [0.3.4]: https://github.com/tailwindlabs/heroicons/compare/v0.3.3...v0.3.4 [0.3.3]: https://github.com/tailwindlabs/heroicons/compare/v0.3.2...v0.3.3 [0.3.2]: https://github.com/tailwindlabs/heroicons/compare/v0.3.1...v0.3.2 [0.3.1]: https://github.com/tailwindlabs/heroicons/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/tailwindlabs/heroicons/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/tailwindlabs/heroicons/releases/tag/v0.2.0 </details> <details> <summary>michalmuskala/jason (jason)</summary> ### [`v1.4.4`](https://github.com/michalmuskala/jason/compare/v1.4.3...v1.4.4) [Compare Source](https://github.com/michalmuskala/jason/compare/v1.4.3...v1.4.4) </details> <details> <summary>oban-bg/oban (oban)</summary> ### [`v2.20.1`](https://github.com/oban-bg/oban/blob/HEAD/CHANGELOG.md#v2201--2025-08-15) [Compare Source](https://github.com/oban-bg/oban/compare/v2.20.0...v2.20.1) ##### Bug Fixes - \[Worker] Handle missing fields in unique Worker validation. Workers that specified `keys` without `fields` would fail validation at compile time. Now default values are considered for `use Oban.Worker` as well as `Job.new/2`. ### [`v2.20.0`](https://github.com/oban-bg/oban/blob/HEAD/CHANGELOG.md#v2200--2025-08-13) [Compare Source](https://github.com/oban-bg/oban/compare/v2.19.4...v2.20.0) ##### Enhancements - `Migration` Add V13 migration for indexing cancelled and discarded states. A new V13 migration adds compound indexes to significantly improve `Oban.Plugins.Pruner` performance when cleaning up `discarded` and `cancelled` jobs. This is especially beneficial for applications that process large volumes of jobs and retain them for extended periods. - `Repo` Expose dynamic repo switching as `with_dynamic_repo/2` The function was previously internal, which made impossible to use in external modules or extend upon. Now custom plugins and extensions can use `Repo.with_dynamic_repo/2` to use the configured dynamic repo options. ##### Bug Fixes - \[Oban] Allow `insert_all/1,3` via Oban facade The `insert_all/1` and `insert_all/3` function variants were missing from the generated Oban facade functions when using a named instance. - \[Testing] Generate correct `perform_job/1,2,3` clauses. The `perform_job/2,3` clauses generated by `use Oban.Testing` didn't handle the `perform_job/2` variant designed to run jobs created with `build_job/3`. This caused test failures when trying to execute jobs built using the `build_job/3` helper function. The fix generates the missing `perform_job/2` clause along with a convenient `perform_job/1` variant, ensuring all testing scenarios work seamlessly regardless of how jobs are constructed. - \[Testing] Restrict inline execution to `available` and `scheduled` states. Jobs in the `completed` state or other non-runnable states were incorrectly attempted by the inline engine, potentially causing errors or unexpected behavior during testing. - \[Worker] Disallow `:keys` when `:fields` doesn't contain `:args` or `:meta` Unique job configurations using `:keys` were allowed even when `:fields` didn't include `:args` or `:meta`, which would result in runtime errors since keys can only extract values from these keyable fields. - \[Cron] Fix error message when the crontab has an invalid range. Cron validation errors for invalid ranges were returning exception structs instead of readable error messages, making it difficult to understand and fix crontab configuration issues. [pro]: https://oban.pro [opc]: https://oban.pro/docs/pro/changelog.html ### [`v2.19.4`](https://github.com/oban-bg/oban/compare/v2.19.3...v2.19.4) [Compare Source](https://github.com/oban-bg/oban/compare/v2.19.3...v2.19.4) ### [`v2.19.3`](https://github.com/oban-bg/oban/compare/v2.19.2...v2.19.3) [Compare Source](https://github.com/oban-bg/oban/compare/v2.19.2...v2.19.3) ### [`v2.19.2`](https://github.com/oban-bg/oban/releases/tag/v2.19.2) [Compare Source](https://github.com/oban-bg/oban/compare/v2.19.1...v2.19.2) ##### Enhancements - \[Oban] Allow setting a MFA in `:get_dynamic_repo` Anonymous functions don't work with OTP releases, as anonymous functions cannot be used in configuration. Now a MFA tuple can be passed instead of a fun, and the scaling guide recommends a function instead. - \[Cron] Include configured timezone in cron job metadata Along with the cron expression, stored as `cron_expr`, the configured timezone is also recorded as `cron_tz` in cron job metadata. - \[Cron] Add `next_at/2` and `last_at/2` for cron time calculations This implements jumping functions for cron expressions. Rather than naively iterating through minutes, it uses the expression values to efficiently jump to the next or last cron run time. - \[Executor] Always convert `queue_time` to native time unit The telemetry docs state that measurements are recorded in `native` time units. However, that hasn't been the case for `queue_time` for a while now. It usually worked anyway native and nanosecond is of the same resolution, but now it is guaranteed. ##### Bug Fixes - \[Peer] Correct leadership elections for the `Dolphin` engine MySQL always returns the number of entries attempted, even when nothing was added. The previous match caused all nodes to believe they were the leader. This uses a secondary query within the same transaction to detect if the current instance is the leader. - \[Reindexer] Drop invalid indexes concurrently when reindexing. The `DROP INDEX` query would lock the whole table with an `ACCESS EXCLUSIVE` lock and could cause queries to fail unexpectedly. - \[Testing] Use `Ecto.Type.cast/2` for backward compatibility The `cast!/2` function wasn't added until Ecto 3.12. This reverts time casting to use `cast/2` for compatibility with earlier Ecto versions. - \[Worker] Validate that the `unique` option isn't an empty list. An empty list was accepted at compile time, but wouldn't be valid later at runtime. Now the two validations match for greater parity. ### [`v2.19.1`](https://github.com/oban-bg/oban/releases/tag/v2.19.1) [Compare Source](https://github.com/oban-bg/oban/compare/v2.19.0...v2.19.1) ##### Bug Fixes - \[Mix] Improve igniter installer idempotency and compatibility. The installer now uses `on_exists: :skip` when generating a migration, so it composes safely with other igniter installers. It also removes unnecessary `add_dep` calls that would overwrite a previously specified Oban version with `~> 2.18`. ### [`v2.19.0`](https://github.com/oban-bg/oban/releases/tag/v2.19.0): v2.19 [Compare Source](https://github.com/oban-bg/oban/compare/v2.18.3...v2.19.0) The minimum Elixir version is now v1.15. The official policy is to only support the three latest versions of Elixir. #### 🐬 MySQL Support Oban officially supports MySQL with the new `Dolphin` engine. Oban supports modern (read "with full JSON support") MySQL [versions from 8.4][m84] on, and has been tested on the highly scalable [Plantescale][pla] database. Running on MySQL is as simple as specifying the `Dolphin` engine in your configuration: ```elixir config :my_app, Oban, engine: Oban.Engines.Dolphin, queues: [default: 10], repo: MyApp.Repo ``` With this addition, Oban can run in [estimated 10% more][myx] Elixir applications! [m84]: https://dev.mysql.com/doc/relnotes/mysql/8.4/en/ [pla]: https://planetscale.com/ [myx]: https://hex.pm/packages/myxql #### ⚗️ Automated Installer Installing Oban into a new application is simplified with a new [igniter][ign] powered `mix` task. The new `oban.install` task handles installing and configuring a standard Oban installation, and it will deduce the correct `engine` and `notifier` automatically based on the database adapter. ```bash mix igniter.install oban ``` This `oban.install` task is currently the [recommended way to install][ins] Oban. As a bonus, the task composes together with other igniter installers, making it possible to install `phoenix`, `ash`, `oban`, and other packages with a single command: ```bash mix igniter.install phoenix ash_phoenix ash_postgres ash_oban ``` Look at the [`Mix.Oban.Install`][mio] docs for full usage and options. [ign]: https://hexdocs.pm/igniter/readme.html [ins]: installation.html [mio]: Mix.Tasks.Oban.Install.html #### 📔 Logging Enhancements Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. A new `events` option for `attach_default_logger/1` allows selective event logging, so it's possible to receive important notices such as notifier connectivity issues, without logging all job activity: ```elixir Oban.Telemetry.attach_default_logger(events: ~w(notifier peer stager)a) ``` Along with filtering, there are new events to make diagnosing operational problems easier. A `peer:election` events logs leadership changes to indicate when nodes gain or lose leadership. Leadership issues are rare, but insidious, and make diagnosing production problems especially tricky. ```elixir [ message: "peer became leader", source: "oban", event: "peer:election", node: "worker.1", leader: true, was_leader: false ] ``` Helpfully, `plugin:stop` events are now logged for all core plugins via an optional callback, and `plugin:exception` events are logged for all plugins regardless of whether they implement the callback. Runtime information is logged for `Cron`, `Lifeline`, `Pruner`, `Stager`, and `Reindexer` plugins. For example, every time `Cron` runs successfully it will output details about the execution time and all of the inserted job ids: ```elixir [ source: "oban", duration: 103, event: "plugin:stop", plugin: "Oban.Plugins.Cron", jobs: [1, 2, 3] ] ``` #### ⛵️ Official JSON Oban will default to using the official `JSON` module built into Elixir v1.18+ when available. A new `Oban.JSON` module detects whether the official Elixir `JSON` module is available at compile time. If it isn't available, then it falls back to `Jason`, and if `Jason` isn't available (which is extremely rare) then it warns about a missing module. This approach was chosen over a config option for backward compatibility because Oban will only support the JSON module once the minimum supported Elixir version is v1.18. #### v2.19.0 — 2025-01-16 ##### Enhancements - \[Oban] Start all queues in parallel on initialization. The midwife now starts queues using an async stream to parallelize startup and minimize boot time for applications with many queues. Previously, - \[Oban] Safely return `nil` from `check_queue/2` when checking queues that aren't running. Checking on a queue that wasn't currently running on the local node now returns `nil` rather than causing a crash. This makes it safer to check the whether a queue is running at all without a `try/catch` clause. - \[Oban] Add `check_all_queues/1` to gather all queue status in a single function. This new helper gathers the "check" details from all running queues on the local node. While it was previously possible to pull the queues list from config and call `check_queue/2` on each entry, this more accurately pulls from the registry and checks each producer concurrently. - \[Oban] Add `delete_job/2` and `delete_all_jobs/2` operations. This adds `Oban.delete_job/2`, `Oban.delete_all_jobs/2`, Engine callbacks, and associated operations for all native engines. Deleting jobs is now easier and safer, due to automatic state protections. - \[Engine] Record when a queue starts shutting down Queue producer metadata now includes a `shutdown_started_at` field to indicate that a queue isn't just paused, but is actually shutting down as well. - \[Engine] Add `rescue_jobs/3` callback for all engines. The `Lifeline` plugin formerly used two queries to rescue jobs—one to mark jobs with remaining attempts as `available` and another that `discarded` the remaining stuck jobs. Those are now combined into a single callback, with the base definition in the `Basic` engine. MySQL won't accept a select in an update statement. The Dolphin implementation of `rescue_jobs/3` uses multiple queries to return the relevant telemetry data and make multiple updates. - \[Cron] Introduce `Oban.Cron` with `schedule_interval/4` The new `Cron` module allows processes, namely plugins, to get cron-like scheduled functionality with a single function call. This will allow plugins to removes boilerplate around parsing, scheduling, and evaluating for cron behavior. - \[Registry] Add `select/1 ` to simplify querying for registered modules. - \[Testing] Add `build_job/3` helper for easier testing. Extract the mechanism for verifying and building jobs out of `perform_job/3` so that it's usable in isolation. This also introduces `perform_job/2` for executing built jobs. - \[Telemetry] Add information on leadership changes to `oban.peer.election` event. An additional `was_leader?` field is included in `[:oban, :peer, :election | _]` event metadata to make hooking into leadership change events simpler. - \[Telemetry] Add callback powered logging for plugin events. Events are now logged for plugins that implement the a new optional callback, and exceptions are logged for all plugins regardless of whether they implement the callback. This adds logging for `Cron`, `Lifeline`, `Pruner`, `Stager`, and `Reindexer`. - \[Telemetry] Add peer election logging to default logger. The default logger now includes leadership events to make identifying the leader, and leadership changes between nodes, easier. - \[Telemetry] Add option to restrict logging to certain events. Logging in a busy system may be noisy due to job events, but there are other events that are particularly useful for diagnosing issues. This adds an `events` option to `attach_default_logger/1` to allow selective event logging. - \[Telemetry] Expose `default_handler_id/0` for telemetry testing. Simplifies testing whether the default logger is attached or detached in application code. ##### Chores - \[Peer] The default database-backed peer was renamed from `Postgres` to `Database` because it is also used for MySQL databases. ##### Bug Fixes - \[Oban] Allow overwriting all `insert/*` functions arities after `use Oban`. - \[Node] Correctly handle `:node` option for `scale_queue/2` Scoping `scale_queue/2` calls to a single node didn't work as advertised due to some extra validation for producer meta compatibility. - \[Migration] Fix version query for databases with non-unique `oid` Use `pg_catalog.obj_description(object_oid, catalog_name)`, introduced in PostgreSQL 7.2, to specify the `pg_class` catalog so only the `oban_jobs` description is returned. - \[Pruner] Use state specific fields when querying for prunable jobs. Using `scheduled_at` is not correct in all situations. Depending on job state, one of `cancelled_at`, `discarded_at`, or `scheduled_at` should be used. - \[Peer] Conditionally return the current node as leader for isolated peers. Prevents returning the current node name when leadership is disabled. - \[Testing] Retain time as microseconds for `scheduled_at` tests. Include microseconds in the `begin` and `until` times used for scheduled\_at tests with a delta. The prior version would truncate, which rounded the `until` down and broke microsecond level checks. - \[Telemetry] Correct spelling of "elapsed" in `oban.queue.shutdown` metadata. ### [`v2.18.3`](https://github.com/oban-bg/oban/releases/tag/v2.18.3) [Compare Source](https://github.com/oban-bg/oban/compare/v2.18.2...v2.18.3) ##### Enhancements - \[Basic] Use the shared concat operator when appending errors. The standard `push` operation for updates is designed for arrays and uses `array_append` internally. This replaces all use of `push` with a fragment that uses the `||` operator instead, which works for both arrays and jsonb. CockroachDB doesn't support arrays of jsonb, but they do support simple jsonb columns. Now we can append to the errors column in either format for CRDB compatibility. ##### Bug Fixes - \[Queue] Link the dynamic queue supervisor and `Midwife` for automatic restarts. When a producer crashes it brings the queue's supervisor down with it. With enough database errors, the producer may crash repeatedly enough to exhaust restarts and bring down the DynamicSupervisor in charge of all queues. Now the supervisor is linked to the midwife to ensure that the midwife restarts as well, and it restarts all of the queues. - \[Testing] Handle `insert_all/3` with streams for the `:inline` testing engine. The inline engine's `insert_all_jobs` callback incorrectly expected changesets to always be a list rather and couldn't handle streams. ### [`v2.18.2`](https://github.com/oban-bg/oban/releases/tag/v2.18.2) [Compare Source](https://github.com/oban-bg/oban/compare/v2.18.1...v2.18.2) ##### Bug Fixes - \[Repo] Prevent debug noise by ensuring default opts for standard transactions. Without default opts each transaction is logged. Many standard operations execute each second, which makes for noisy logs. Now transaction opts are passed as a third argument to ensure defaults are applied. - \[Repo] Increase transaction retry delay and increase with each attempt. Bump the base transaction retry from 100ms to 500ms, and increase linearly between each successive attempt to provide deeper backoff. This alleviates pressure on smaller connection pools and gives more time to recover from contentions failures. ### [`v2.18.1`](https://github.com/oban-bg/oban/releases/tag/v2.18.1) [Compare Source](https://github.com/oban-bg/oban/compare/v2.18.0...v2.18.1) ##### Enhancements - \[Repo] Automatically retry all transactions with backoff. Avoid both expected an unexpected database errors by automatically retrying transactions. Some operations, such as serialization and lock not available errors, are likely to occur during standard use depending on how a database is configured. Other errors happen infrequently due to pool contention or flickering connections, and those should also be retried for increased safety. This change is applied to `Oban.Repo.transaction/3` itself, so it will apply to *every* location that uses transactions. - \[Migration] Declare `tags` as an array of `text` rather than `varchar`. We don't provide a limit on the size of tags and they could conceivably be larger than 256 characters. Externally the types are interchangeable, but internally there are minor advantages to using the text type. There isn't a new migration; this change is only for new tables. ##### Bug Fixes - \[Repo] Correctly dispatch `query!/4` to `query!` rather than `query` without a bang. ### [`v2.18.0`](https://github.com/oban-bg/oban/releases/tag/v2.18.0) [Compare Source](https://github.com/oban-bg/oban/compare/v2.17.12...v2.18.0) #### 🔭 Queue Shutdown Telemetry A new queue shutdown event, `[:oban, :queue, :shutdown]`, is emitted by each queue when it terminates. The event originates from the `watchman` process, which tracks the total ellapsed time from when termination starts to when all jobs complete or the allotted period is exhausted. Any jobs that take longer than the `:shutdown_grace_period` (by default 15 seconds) are brutally killed and left as orphans. The ids of jobs left in an executing state are listed in the event's `orphaned` meta. This also adds `queue:shutdown` logging to the default logger. Only queues that shutdown with orphaned jobs are logged, which makes it easier to detect orphaned jobs and which jobs were affected: ``` [ message: "jobs were orphaned because they didn't finish executing in the allotted time", queue: "alpha", source: "oban", event: "queue:shutdown", ellapsed: 500, orphaned: [101, 102, 103] ] ``` #### 🚚 Distributed PostgreSQL Support It's now possible to run Oban in distributed PostgreSQL databases such as [Yugabyte][yuga]. This is made possible by a few simple changes to the `Basic` engine, and a new `unlogged` migration option. Some PostgreSQL compatible databases don't support unlogged tables. Making `oban_peers` unlogged isn't a requirement for Oban to operate, so it can be disabled with a migration flag: ```elixir defmodule MyApp.Repo.Migrations.AddObanTables do use Ecto.Migration def up do Oban.Migration.up(version: 12, unlogged: false) end end ``` [yuga]: https://www.yugabyte.com/ #### 🧠 Job Observability Job `stop` and `exception` telemetry now includes the reported memory and total reductions from the job's process. Values are pulled with `Process.info/2` after the job executes and safely fall back to `0` in the event the process has crashed. Reductions are a rough proxy for CPU load, and the new measurements will make it easier to identify computationally expensive or memory hungry jobs. In addition, thanks to the addition of `Process.set_label` in recent Elixir versions, the worker name is set as the job's process label. That makes it possible to identify which job is running in a `pid` via observer or live dashboard. #### v2.18.0 — 2024-07-26 ##### Enhancements - \[Job] Support simple `unique: true` and `unique: false` declarations Uniqueness can now be enabled with `unique: true` and disabled with `unique: false` from job options or a worker definition. The `unique: true` option uses all the standard defaults, but sets the period to `:infinity` for compatibility with Oban Pro's new `simple` unique mode. - \[Cron] Remove forced uniqueness when inserting scheduled jobs. Using uniqueness by default prevents being able to use the Cron plugin with databases that don't support uniqueness because of advisory locks. Luckily, uniqueness hasn't been necessary for safe cron insertion since leadership was introduced and scheduling changed to top-of-the-minute *many* versions ago. - \[Engine] Introduce `check_available/1` engine callback The `check_available/1` callback allows engines to customize the query used to find jobs in the `available` state. That makes it possible for alternative engines, such Oban Pro's Smart engine, to check for available jobs in a fraction of the time with large queues. - \[Peer] Add `Oban.Peer.get_leader/2` for checking leadership The `get_leader/2` function makes it possible to check which node is currently the leader regardless of the Peer implementation, and without having to query the database. - \[Producer] Log a warning for unhandled producer messages. Some messages are falling through to the catch-all `handle_info/2` clause. Previously, they were silently ignored and it degraded producer functionality because inactive jobs with dead pids were still tracked as `running` in the producer. - \[Oban] Use structured messages for most logger warnings. A standard structure for warning logs makes it easier to search for errors or unhandled messages from Oban or a particular module. ##### Bug Fixes - \[Job] Include all fields in the unique section of `Job.t/0`. The unique spec lacked types for both `keys` and `timestamp` keys. - \[Basic] Remove `materialized` option from `fetch_jobs/3`. The `MATERIALIZED` clause for CTEs didn't make a meaningful difference in job fetching accuracy. In some situations it caused a performance regression (which is why it was removed from Pro's Smart engine a while ago). ### [`v2.17.12`](https://github.com/oban-bg/oban/compare/v2.17.11...v2.17.12) [Compare Source](https://github.com/oban-bg/oban/compare/v2.17.11...v2.17.12) ### [`v2.17.11`](https://github.com/oban-bg/oban/releases/tag/v2.17.11) [Compare Source](https://github.com/oban-bg/oban/compare/v2.17.10...v2.17.11) ##### Bug Fixes - \[Oban] Handle deprecation warnings from Elixir 1.17 - \[Notifier] Prevent noisy logging about switching between modes. There's an apparent race condition in Sonar between pruning stale nodes on `:ping` and updating the status after a notification. This primarily happens in development for two reasons: 1. Development laptops are most prone to time warp because of system sleep. 2. Apps only run a single node in development. Using `monotonic_time/1` instead of `system_time/1` guards against clock drift/time warp effects. - \[Stager] Prevent notification status timeouts from bubbling into the Stager. A clogged Ecto pool could cause cascading errors on startup due to a sequence of calls between the `Notifier`, `Sonar`, and `Stager`. 1. `Sonar` sends a notification in `handle_continue` on startup. 2. The notification is blocked while the `Notifier` waits for a connection from the Ecto pool. 3. `Stager` checks for the connection status on startup, which would eventually time out because the `Sonar` hadn't finished initializing. 4. The `Stager` crashes from the timeout error. This makes the following changes to prevent this sequence of events: 1. The `Stager` no longer gets the sonar status during startup. 2. The `Notifier` catches timeout errors from `Sonar` checks, warns about it, then returns an `:unknown` status. - \[Engine] Defensively check the process dictionary during inline testing. Not all processes are guaranteed to return a value for the process dictionary. Sometimes a value was missing during inline testing, which would crash the test. - \[Basic] Set `conflict?` flag when encountering a unique advisory lock. The `conflict?` flag wasn't set when inserting a unique job was blocked by an advisory lock. Now the flag is set on either a fetched duplicate, or when the advisory lock is set. - \[Job] Correct `replace_by_state_option` type by switching from keyword to tuples. - \[Config] Correctly type `shutdown_grace_period` as an `integer` rather than a `timeout`. ### [`v2.17.10`](https://github.com/oban-bg/oban/releases/tag/v2.17.10) [Compare Source](https://github.com/oban-bg/oban/compare/v2.17.9...v2.17.10) ##### Enhancements - \[Oban] Make all generated functions from `use Oban` overridable. Now the functions generated by `use Oban` are all marked with `defoverridable` for extensibility. ##### Bug Fixes - \[Testing] Use `$callers` rather than `$ancestors` for ancestry tree check. We care about Tasks for inline testing checks, not normal supervision tree ancestry. The `$callers` entry is the appropriate mechanism to find the [trail of calling processes][trail]: [trail]: https://hexdocs.pm/elixir/1.16.2/Task.html#module-ancestor-and-caller-tracking </details> <details> <summary>pgvector/pgvector-elixir (pgvector)</summary> ### [`v0.3.1`](https://github.com/pgvector/pgvector-elixir/blob/HEAD/CHANGELOG.md#031-2025-06-23) [Compare Source](https://github.com/pgvector/pgvector-elixir/compare/v0.3.0...v0.3.1) - Added support for Elixir 1.19 </details> <details> <summary>phoenixframework/phoenix (phoenix)</summary> ### [`v1.8.1`](https://github.com/phoenixframework/phoenix/blob/HEAD/CHANGELOG.md#181-2025-08-28) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.8.0...v1.8.1) ##### Bug fixes - \[phx.new] Fix AGENTS.md failing to include CSS and JavaScript sections ### [`v1.8.0`](https://github.com/phoenixframework/phoenix/blob/HEAD/CHANGELOG.md#180-2025-08-05) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.21...v1.8.0) ##### Bug fixes - \[phx.new] Don't include node\_modules override in generated `tsconfig.json` ##### Enhancements - \[phx.gen.live|html|json] - Make context argument optional. Defaults to the plural name. - \[phx.new] Add `mix precommit` alias - \[phx.new] Add `AGENTS.md` generation compatible with [`usage_rules`](https://hexdocs.pm/usage_rules/) - \[phx.new] Add `usage_rules` folder to installer, allowing to sync generic Phoenix rules into new projects - \[phx.new] Use LiveView 1.1 release in generated code - \[phx.new] Ensure theme selector and flash closing works without LiveView ### [`v1.7.21`](https://github.com/phoenixframework/phoenix/compare/v1.7.20...v1.7.21) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.20...v1.7.21) ### [`v1.7.20`](https://github.com/phoenixframework/phoenix/compare/v1.7.19...v1.7.20) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.19...v1.7.20) ### [`v1.7.19`](https://github.com/phoenixframework/phoenix/compare/v1.7.18...v1.7.19) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.18...v1.7.19) ### [`v1.7.18`](https://github.com/phoenixframework/phoenix/compare/v1.7.17...v1.7.18) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.17...v1.7.18) ### [`v1.7.17`](https://github.com/phoenixframework/phoenix/compare/v1.7.16...v1.7.17) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.16...v1.7.17) ### [`v1.7.16`](https://github.com/phoenixframework/phoenix/compare/v1.7.15...v1.7.16) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.15...v1.7.16) ### [`v1.7.15`](https://github.com/phoenixframework/phoenix/compare/v1.7.14...v1.7.15) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.14...v1.7.15) ### [`v1.7.14`](https://github.com/phoenixframework/phoenix/compare/v1.7.13...v1.7.14) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.13...v1.7.14) ### [`v1.7.13`](https://github.com/phoenixframework/phoenix/compare/v1.7.12...v1.7.13) [Compare Source](https://github.com/phoenixframework/phoenix/compare/v1.7.12...v1.7.13) </details> <details> <summary>phoenixframework/phoenix_ecto (phoenix_ecto)</summary> ### [`v4.6.5`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v465) - Bug fixes - Unallow existing allowances when attempting to allow a Plug to access a connection ### [`v4.6.4`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v464) - Enhancements - Wrap raised Ecto exceptions so context is not lost - Do not override changeset actions ### [`v4.6.3`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v463) [Compare Source](https://github.com/phoenixframework/phoenix_ecto/compare/v4.6.2...v4.6.3) - Enhancements - Add prefix option to check repo status plug - Bug fix - Fix map.field notation warning on Elixir 1.17 ### [`v4.6.2`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v462) [Compare Source](https://github.com/phoenixframework/phoenix_ecto/compare/v4.6.1...v4.6.2) - Bug fix - Attach directories to Pending Migrations exception ### [`v4.6.1`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v461) [Compare Source](https://github.com/phoenixframework/phoenix_ecto/compare/v4.6.0...v4.6.1) - Bug fix - Ensure "Create database" action is shown when database is not available ### [`v4.6.0`](https://github.com/phoenixframework/phoenix_ecto/blob/HEAD/CHANGELOG.md#v460) [Compare Source](https://github.com/phoenixframework/phoenix_ecto/compare/v4.5.1...v4.6.0) - Enhancements - Return 400 for character encoding errors in Postgrex - Bump Elixir requirement to v1.11+ </details> <details> <summary>phoenixframework/phoenix_html (phoenix_html)</summary> ### [`v4.2.1`](https://github.com/phoenixframework/phoenix_html/blob/HEAD/CHANGELOG.md#421-2025-02-21) [Compare Source](https://github.com/phoenixframework/phoenix_html/compare/v4.2.0...v4.2.1) - Enhancements - Add type to `Phoenix.HTML.FormField` - Allow keyword lists in options to use nil as key/value ### [`v4.2.0`](https://github.com/phoenixframework/phoenix_html/blob/HEAD/CHANGELOG.md#420-2024-12-28) [Compare Source](https://github.com/phoenixframework/phoenix_html/compare/v4.1.1...v4.2.0) - Enhancements - Add `Phoenix.HTML.css_escape/1` to escape strings for use inside CSS selectors - Add the ability to pass `:hr` to `options_for_select/2` to render a horizontal rule - Bug fixes - Pass form action through in FormData implementation </details> <details> <summary>phoenixframework/phoenix_live_dashboard (phoenix_live_dashboard)</summary> ### [`v0.8.7`](https://github.com/phoenixframework/phoenix_live_dashboard/blob/HEAD/CHANGELOG.md#v087-2025-04-28) [Compare Source](https://github.com/phoenixframework/phoenix_live_dashboard/compare/v0.8.6...v0.8.7) - Fix warnings on Erlang/OTP 28 - Fix metrics history not rendering on LiveView 1.0.2+ - Fix colored logging in request logger ### [`v0.8.6`](https://github.com/phoenixframework/phoenix_live_dashboard/blob/HEAD/CHANGELOG.md#v086-2024-12-30) [Compare Source](https://github.com/phoenixframework/phoenix_live_dashboard/compare/v0.8.5...v0.8.6) - Update Erlang docs url - Fix rendering of durations in Elixir v1.18+ - Fix warnings on Elixir v1.18+ - Remove img nonce which had no effect whatsoever ### [`v0.8.5`](https://github.com/phoenixframework/phoenix_live_dashboard/blob/HEAD/CHANGELOG.md#v085-2024-11-14) [Compare Source](https://github.com/phoenixframework/phoenix_live_dashboard/compare/v0.8.4...v0.8.5) - Provide a mechanism for user extensible LiveView hooks - Add Erlang/OTP 27 Process label support ### [`v0.8.4`](https://github.com/phoenixframework/phoenix_live_dashboard/blob/HEAD/CHANGELOG.md#v084-2024-06-21) [Compare Source](https://github.com/phoenixframework/phoenix_live_dashboard/compare/v0.8.3...v0.8.4) - Add immutable directive to cache-control header - Wrap log lines in request logger page - Fix deprecation warnings on LiveView release candidate </details> <details> <summary>phoenixframework/phoenix_live_reload (phoenix_live_reload)</summary> ### [`v1.6.1`](https://github.com/phoenixframework/phoenix_live_reload/blob/HEAD/CHANGELOG.md#161-2025-08-31) [Compare Source](https://github.com/phoenixframework/phoenix_live_reload/compare/v1.6.0...v1.6.1) - Enhancements - Set `:phoenix_live_reload` private field to downstream instrumentation - Add `@import` directive support to CSS reload strategy ### [`v1.6.0`](https://github.com/phoenixframework/phoenix_live_reload/blob/HEAD/CHANGELOG.md#160-2025-04-10) [Compare Source](https://github.com/phoenixframework/phoenix_live_reload/compare/v1.5.3...v1.6.0) - Enhancements - Add support for `__RELATIVEFILE__` when invoking editors - Change the default target window to `:parent` to not reload the whole page if a Phoenix app is shown inside an iframe. You can get the old behavior back by setting the `:target_window` option to `:top`: ```elixir config :phoenix_live_reload, MyAppWeb.Endpoint, target_window: :top, ... ``` - Bug fixes - Inject iframe if web console logger is enabled but there are no patterns - Allow web console to shutdown cleanly </details> <details> <summary>phoenixframework/phoenix_live_view (phoenix_live_view)</summary> ### [`v0.20.17`](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.16...v0.20.17) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.16...v0.20.17) ### [`v0.20.16`](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.15...v0.20.16) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.15...v0.20.16) ### [`v0.20.15`](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.14...v0.20.15) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v0.20.14...v0.20.15) </details> <details> <summary>elixir-ecto/postgrex (postgrex)</summary> ### [`v0.21.1`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0211-2025-08-03) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.21.0...v0.21.1) - Bug fixes - Fix `ssl: true` with missing ssl\_opts handling ### [`v0.21.0`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0210-2025-07-31) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.20.0...v0.21.0) This release requires Erlang/OTP 25+ - Enhancements - Add query timeout option on ReplicationConnection - Bug fixes - PGHOST option does not override explicitly given endpoint configuration - Add ltxtquery support ### [`v0.20.0`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0200-2025-02-05) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.19.3...v0.20.0) - Deprecations - Deprecate `:search_path` and use `:parameters` option instead - Bug fixes - Ensure `Duration` type returns same units as `Postgrex.Interval` - Call disconnect on protocol when reconnecting in `Postgrex.ReplicationConnection` - Call disconnect only if there is protocol in `Postgrex.SimpleConnection` ### [`v0.19.3`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0193-2024-11-12) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.19.2...v0.19.3) - Enhancements - Default params to in query APIs to `[]` - Allow `:comment` as options to query APIs - Bug fixes - Call disconnect on protocol when reconnecting in `Postgrex.SimpleConnection` ### [`v0.19.2`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0192-2024-10-23) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.19.1...v0.19.2) - Bug fixes - Protect against message length overflow vulnerability ### [`v0.19.1`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0191-2024-08-13) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.19.0...v0.19.1) - Enhancements - Allow encoding/decoding of LSN - Bug fixes - Fix Dialyzer warnings on interval extension - Log error message if Postgrex.ReplicationConnection is reconnecting ### [`v0.19.0`](https://github.com/elixir-ecto/postgrex/blob/HEAD/CHANGELOG.md#v0190-2024-08-03) [Compare Source](https://github.com/elixir-ecto/postgrex/compare/v0.18.0...v0.19.0) - Enhancements - Respect precision for interval, time, timestamp, and timestamptz - Remove restriction on year 9999 on datetime columns - Support decoding and encoding Elixir's v1.17 Duration as interval - Allow starting one stream after the other in replication - Bug fixes - Return `{:stop, state}` from `gen_statem` connection callback </details> <details> <summary>wojtekmach/req (req)</summary> ### [`v0.5.15`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0515-2025-07-14) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.14...v0.5.15) - \[`Req.Response`]: Add \[`Req.Response.to_map/1`]. ### [`v0.5.14`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0514-2025-07-02) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.13...v0.5.14) - \[`run_plug`]: Remove warning about `into: fun` with `{:halt, acc}` result. The warning never been particularly useful because it's not like users can do anything about it. ### [`v0.5.13`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0513-2025-07-02) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.12...v0.5.13) - \[`run_plug`]: Ease transition to automatically parsing request body. Since v0.5.11, this code: ``` plug = fn conn -> {:ok, body, conn} = Plug.Conn.read_body(conn) assert JSON.decode!(body) == %{"x" => 1} Plug.Conn.send_resp(conn, 200, "ok") end Req.put!(plug: plug, json: %{x: 1}) ``` Needed to be updated to: ``` plug = fn conn -> assert conn.body_params == %{"x" => 1} Plug.Conn.send_resp(conn, 200, "ok") end Req.put!(plug: plug, json: %{x: 1}) ``` This change makes it so both work. The latter will be required, however. ### [`v0.5.12`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0512-2025-06-24) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.11...v0.5.12) - \[`run_plug`]: Do not raise on unknown content types. - \[`Req.Test`]: Improve `Req.Test.transport_error/2` error message. ### [`v0.5.11`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0511-2025-06-23) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.10...v0.5.11) - \[`encode_body`]: Fix leading newline before multipart body. - \[`run_finch`]: Handle initial transport errors on `into: :self`. - \[`run_plug`]: Automatically parse request body. Prior to this change, users would typically write: ``` plug = fn conn -> {:ok, body, conn} = Plug.Conn.read_body(conn) assert JSON.decode!(body) == %{"x" => 1} Plug.Conn.send_resp(conn, 200, "ok") end Req.put!(plug: plug, json: %{x: 1}) ``` Now, it can be: ``` plug = fn conn -> assert conn.params == %{"x" => 1} Plug.Conn.send_resp(conn, 200, "ok") end Req.put!(plug: plug, json: %{x: 1}) ``` This is a **breaking change** as `Plug.Conn.read_body` will now return `""`. It can be easily fixed by using \[`Req.Test.raw_body/1`] which returns copy of the request raw body: ```diff - {:ok, body, conn} = Plug.Conn.read_body(conn) + body = Req.Test.raw_body(conn) ``` Furthermore, prior to this change `conn.body_params` was unfetched: ``` plug = fn conn -> Plug.Conn.send_resp(conn, 200, inspect(conn.body_params)) end iex> Req.post!(json: %{a: 1}, plug: plug).body "%Plug.Conn.Unfetched{aspect: :body_params}" ``` Now it is: ``` iex> Req.post!(json: %{a: 1}, plug: plug).body "%{\"a\": 1}" ``` If in your `:plug` usage you look at `conn.params`, it will now include `conn.body_params` as Plug always merges them. - \[`retry`]: Use jitter by default - \[`Req.Request`]: Add \[`Req.Request.put_option/3`]. - \[`Req.Request`]: Add \[`Req.Request.put_new_option/3`]. - \[`Req.Request`]: Add \[`Req.Request.merge_new_options/2`]. - \[`Req.Test`]: Add \[`Req.Test.redirect/2`]. ### [`v0.5.10`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v0510-2025-03-21) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.9...v0.5.10) - \[`Req`]: Add \[`Req.get_headers_list/1`]. ### [`v0.5.9`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v059-2025-03-17) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.8...v0.5.9) - \[`encode_body`]: Support any enumerable in `:form_multipart` - \[`Req.Test.expect/3`]: Fix usage in shared mode - \[`retry`]: Do not carry halt between retries - (Internal) Support custom headers in `Req.Utils.aws_sigv4_url/1` - (Internal) Support custom query params in `Req.Utils.aws_sigv4_url/1` ### [`v0.5.8`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v058-2024-11-29) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.7...v0.5.8) - \[`Req`]: Check legacy headers when streaming headers - \[`Req`]: Ignore :into collectable for non-200 responses - \[`put_aws_sigv4`]: Fix encoding path - \[`run_finch`]: Add option to configure Finch `:pool_max_idle_time` - \[`run_finch`]: Prepare for upcoming Finch v0.20 ### [`v0.5.7`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v057-2024-10-29) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.6...v0.5.7) - \[`put_aws_sigv4`]: Fix signature when using custom port - \[`retry`]: Do not call `retry_delay` fun twice - \[`auth`]: Support passing a 0-arity function ### [`v0.5.6`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v056-2024-08-01) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.5...v0.5.6) - Fix compatibility with Elixir v1.13 ### [`v0.5.5`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v055-2024-08-01) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.4...v0.5.5) - \[`put_aws_sigv4`]: Fix detecting service - \[`put_aws_sigv4`]: Raise on no `:access_key_id`/`:secret_access_key`/`:service` - \[`put_aws_sigv4`]: Fix handling `?name` (no value) - \[`handle_http_errors`]: should run before `verify_checksum` - \[`encode_body`]: Support `%File.Stream{}` in `:form_multipart` - \[`encode_body`]: Support `%File.Stream{}` from other nodes in `:form_multipart` ### [`v0.5.4`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v054-2024-07-18) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.3...v0.5.4) - \[`run_finch`], \[`Req.parse_message/2`]: Gracefully handle process messages not meant for the asynchronous response. In that case, `Req.parse_message/2` returns `:unknown`. ### [`v0.5.3`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v053-2024-07-18) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.2...v0.5.3) - \[`Req.Test`]: Fix using shared mode - \[`encode_body`]: Add `:form_multipart` option - \[`put_aws_sigv4`]: Try detecting the service - \[`run_finch`]: Fix setting `:finch` option ### [`v0.5.2`](https://github.com/wojtekmach/req/blob/HEAD/CHANGELOG.md#v052-2024-07-08) [Compare Source](https://github.com/wojtekmach/req/compare/v0.5.1...v0.5.2) - \[`put_aws_sigv4`]: Fix bug when using custom headers - \[`put_aws_sigv4`]: Add `:token` option - \[`redirect`]: Cancel async request before redirecting - \[`decode_body`]: Support `application/zstd` and `.zst` </details> <details> <summary>rusterlium/rustler (rustler)</summary> ### [`v0.37.1`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0371---2025-09-10) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.37.0...rustler-0.37.1) ##### Fixed - Fix required Elixir version (>= 1.15) in `rustler_mix` - Fix missing `chdir` in `rustler_mix` when compiling in a subdirectory ([#&#8203;706](https://github.com/rusterlium/rustler/issues/706)) ### [`v0.37.0`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0370---2025-09-09) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.36.2...rustler-0.37.0) ##### Added - Add `staticlib` feature to compile without `nif_init` and add `{pkg}_nif_init` symbol ([#&#8203;688](https://github.com/rusterlium/rustler/issues/688)) - Add `IntoIterator` to `OwnedBinary` ([#&#8203;702](https://github.com/rusterlium/rustler/issues/702), thanks aDifferentJT) ##### Fixed - Set `ErlNifEntry.min_erts` to a placeholder value ([#&#8203;703](https://github.com/rusterlium/rustler/issues/703)) ##### Changed - Refactor build logic to remove TOML dependency ([#&#8203;691](https://github.com/rusterlium/rustler/issues/691)) - Use `inline` on commonly used functions ([#&#8203;475](https://github.com/rusterlium/rustler/issues/475), thanks [@&#8203;joshuataylor](https://github.com/joshuataylor)) - Make `EnifAllocator` available even if the `allocator` feature is not enabled ### [`v0.36.2`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0362---2025-06-09) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.36.1...rustler-0.36.2) ##### Added - `std::hash::Hash` implementation for atoms ([#&#8203;695](https://github.com/rusterlium/rustler/issues/695)) ##### Fixed - Fix typing error in `rustler_mix` ([#&#8203;696](https://github.com/rusterlium/rustler/issues/696), thanks [@&#8203;dkuku](https://github.com/dkuku)) ### [`v0.36.1`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0361---2025-02-03) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.36.0...rustler-0.36.1) No changes in the Rust code, only `rustler_mix` adjustments and dependency updates. ##### Added - Support for Erlang-style NIF module names (`:module_name`) ([#&#8203;682](https://github.com/rusterlium/rustler/issues/682)) ##### Fixed - Retrieve the newest Rustler version without additional dependencies ([#&#8203;682](https://github.com/rusterlium/rustler/issues/682), fixes [#&#8203;680](https://github.com/rusterlium/rustler/issues/680)) - Adjust `.gitignore` handling to match the new workspace style ##### Changed - Only depend on `libloading` on non-Windows systems ([#&#8203;677](https://github.com/rusterlium/rustler/issues/677)) ### [`v0.36.0`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0360---2025-01-13) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.35.1...rustler-0.36.0) ##### Added - Create a workplace `Cargo.toml` file with `mix rustler.new` ([#&#8203;672](https://github.com/rusterlium/rustler/issues/672)) ##### Fixed - Some derive macros failed when only `decode` was requested ([#&#8203;676](https://github.com/rusterlium/rustler/issues/676)) ##### Removed - The linkage override for macOS is not needed anymore and has been removed from the template ([#&#8203;672](https://github.com/rusterlium/rustler/issues/672)) ### [`v0.35.1`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0351---2024-12-18) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.35.0...rustler-0.35.1) ##### Fixed - Fix clippy lints in `rustler_codegen` ([#&#8203;671](https://github.com/rusterlium/rustler/issues/671)) - Adjust `Rustler` macros to not produce warnings on Elixir 1.18 ([#&#8203;670](https://github.com/rusterlium/rustler/issues/670)) ### [`v0.35.0`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0350---2024-10-15) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.34.0...rustler-0.35.0) ##### Added - The resource type name can be overridden with `#[register_impl(name = "...")]` ([#&#8203;638](https://github.com/rusterlium/rustler/issues/638)) - Floats can be decoded from integers ([#&#8203;641](https://github.com/rusterlium/rustler/issues/641), fixes [#&#8203;603](https://github.com/rusterlium/rustler/issues/603)) - Resource types can implement and use dynamic calls on NIF version 2.16 ([#&#8203;635](https://github.com/rusterlium/rustler/issues/635)) - `Encoder` and `Decoder` implementations for `Box<T>` ([#&#8203;644](https://github.com/rusterlium/rustler/issues/644)) - `Reference` type and `env.make_ref()` function ([#&#8203;657](https://github.com/rusterlium/rustler/issues/657)) ##### Fixed - The optional `register` attribute on `#[register_impl]` works as advertised now ([#&#8203;638](https://github.com/rusterlium/rustler/issues/638)) - API functions for Windows are correctly assigned for NIF version 2.15 and above ([#&#8203;635](https://github.com/rusterlium/rustler/issues/635)) - Panics in encoding the result of NIF function are caught ([#&#8203;656](https://github.com/rusterlium/rustler/issues/656)) - Reverted change to "recompile if the NIF library is changed/deleted" ([#&#8203;654](https://github.com/rusterlium/rustler/issues/654), fixes [#&#8203;651](https://github.com/rusterlium/rustler/issues/651)) ##### Changed - The special ok/error handling for atoms in serde is now restricted to variant names ([#&#8203;639](https://github.com/rusterlium/rustler/issues/639)) - `rustler_sys` as a separate library is merged into `rustler::sys` and will not be released independently of `rustler` anymore ([#&#8203;653](https://github.com/rusterlium/rustler/issues/653)) ### [`v0.34.0`](https://github.com/rusterlium/rustler/blob/HEAD/CHANGELOG.md#0340---2024-07-09) [Compare Source](https://github.com/rusterlium/rustler/compare/rustler-0.33.0...rustler-0.34.0) ##### Added - Resource type registration has been refactored to eventually remove the `rustler::resource!` macro ([#&#8203;617](https://github.com/rusterlium/rustler/issues/617), necessary due to a pending deprecation of a Rust feature, [#&#8203;606](https://github.com/rusterlium/rustler/issues/606)) - Resources can (and should) now explicitly implement the new `Resource` trait and provide a custom `destructor` function that is run before `drop` and receives an `Env` parameter ([#&#8203;617](https://github.com/rusterlium/rustler/issues/617)) - Process monitoring via resources can now be used on resource types that implement the `Resource::down` callback ([#&#8203;617](https://github.com/rusterlium/rustler/issues/617)) - Resource implementation and registration helper attribute ([#&#8203;627](https://github.com/rusterlium/rustler/issues/627)) ##### Fixed - Unwinding in the `on_load` callback is now caught and leads to a panic ([#&#8203;617](https://github.com/rusterlium/rustler/issues/617)) ##### Changed - NIF implementations are now discovered automatically and the respective argument of `rustler::init!` is ignored ([#&#8203;613](https://github.com/rusterlium/rustler/issues/613)) - The `derive` feature flag is now ignored and its functionality unconditionally enabled ([#&#8203;621](https://github.com/rusterlium/rustler/issues/621)) </details> <details> <summary>swoosh/swoosh (swoosh)</summary> ### [`v1.19.6`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1196) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.5...v1.19.6) ##### ✨ Features - Add Lettermint adapter [@&#8203;olivermt](https://github.com/olivermt) ([#&#8203;1064](https://github.com/swoosh/swoosh/issues/1064)) ### [`v1.19.5`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1195) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.4...v1.19.5) ##### 🐛 Bug Fixes - Support rendering `"TEMPLATE"` in the mailbox [@&#8203;axelson](https://github.com/axelson) ([#&#8203;1059](https://github.com/swoosh/swoosh/issues/1059)) ### [`v1.19.4`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1194) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.3...v1.19.4) ##### ✨ Features - Allow Customer.io to use `"TEMPLATE"` for from [@&#8203;axelson](https://github.com/axelson) ([#&#8203;1058](https://github.com/swoosh/swoosh/issues/1058)) ### [`v1.19.3`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1193) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.2...v1.19.3) ##### ✨ Features - Add deliver\_many support to Brevo adapter [@&#8203;linusdm](https://github.com/linusdm) ([#&#8203;1049](https://github.com/swoosh/swoosh/issues/1049)) ### [`v1.19.2`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1192) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.1...v1.19.2) ##### ✨ Features - Escape quotes and backslashes in address names [@&#8203;jiegillet](https://github.com/jiegillet) ([#&#8203;1047](https://github.com/swoosh/swoosh/issues/1047)) - Add Accept header to all requests made by Sendgrid adapter [@&#8203;sergey-elkin](https://github.com/sergey-elkin) ([#&#8203;1046](https://github.com/swoosh/swoosh/issues/1046)) - Remove svg fill for dark mode [@&#8203;cmnstmntmn](https://github.com/cmnstmntmn) ([#&#8203;1044](https://github.com/swoosh/swoosh/issues/1044)) ##### 🧰 Maintenance - Fix unused variable warnings in CI - Gmail Test [@&#8203;DuldR](https://github.com/DuldR) ([#&#8203;1045](https://github.com/swoosh/swoosh/issues/1045)) ### [`v1.19.1`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1191) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.19.0...v1.19.1) ##### 🐛 Bug Fixes - Regenerate styles, fix [#&#8203;1030](https://github.com/swoosh/swoosh/issues/1030) ### [`v1.19.0`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1190) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.18.4...v1.19.0) ##### ✨ Features - Redirect to latest message in mailbox if one exists [@&#8203;chrismccord](https://github.com/chrismccord) ([#&#8203;1032](https://github.com/swoosh/swoosh/issues/1032)) - make links clickable in text email preview [@&#8203;SteffenDE](https://github.com/SteffenDE) ([#&#8203;1031](https://github.com/swoosh/swoosh/issues/1031)) ##### 🐛 Bug Fixes - Specify the correct content\_disposition and content\_id [@&#8203;Hermanverschooten](https://github.com/Hermanverschooten) ([#&#8203;901](https://github.com/swoosh/swoosh/issues/901)) - fixes Mua adapter when using inline attachments ### [`v1.18.4`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1184) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.18.3...v1.18.4) ##### ✨ Features - Support dark/light mode based on system theme in dev preview mailbox [@&#8203;chrismccord](https://github.com/chrismccord) ([#&#8203;1027](https://github.com/swoosh/swoosh/issues/1027)) ### [`v1.18.3`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1183) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.18.2...v1.18.3) ##### 🧰 Maintenance - Update Req usage, preparing for v1.0 [@&#8203;wojtekmach](https://github.com/wojtekmach) ([#&#8203;1022](https://github.com/swoosh/swoosh/issues/1022)) ### [`v1.18.2`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1182) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.18.1...v1.18.2) ##### 🐛 Bug Fixes - Fix: Prevent zeptomail error when receiving non json response body on 500 [@&#8203;atoncetti](https://github.com/atoncetti) ([#&#8203;1017](https://github.com/swoosh/swoosh/issues/1017)) ### [`v1.18.1`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1181) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.18.0...v1.18.1) ##### ✨ Features - Add PostUp adapter [@&#8203;zatchheems](https://github.com/zatchheems) ([#&#8203;1015](https://github.com/swoosh/swoosh/issues/1015)) ### [`v1.18.0`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1180) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.10...v1.18.0) ##### ✨ Features - Implement loops.so adapter [@&#8203;caioaao](https://github.com/caioaao) ([#&#8203;1012](https://github.com/swoosh/swoosh/issues/1012)) ### [`v1.17.10`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#11710) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.9...v1.17.10) ##### 🐛 Bug Fixes - Fix broken attachments on Scaleway adapter [@&#8203;olivermt](https://github.com/olivermt) ([#&#8203;1003](https://github.com/swoosh/swoosh/issues/1003)) ### [`v1.17.9`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1179) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.8...v1.17.9) ##### 🐛 Bug Fixes - fix assets path prefix - improve static serving config ### [`v1.17.8`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1178-deprecated-broken-css-priv-path-fixed-in-1179) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.7...v1.17.8) ##### 🐛 Bug Fixes - fix priv path for css file [@&#8203;princemaple](https://github.com/princemaple) ([#&#8203;1001](https://github.com/swoosh/swoosh/issues/1001)) ### [`v1.17.7`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1177-deprecated-broken-css-priv-path-fixed-in-1179) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.6...v1.17.7) ##### ✨ Feature - fix: add csp nonce [@&#8203;yordis](https://github.com/yordis) ([#&#8203;996](https://github.com/swoosh/swoosh/issues/996)) ##### 🧰 Maintenance - Compile tailwind instead of using cdn [@&#8203;princemaple](https://github.com/princemaple) ([#&#8203;998](https://github.com/swoosh/swoosh/issues/998)) ### [`v1.17.6`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1176) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.5...v1.17.6) ##### ✨ Features - Sendgrid: Support Mail Body Compression [@&#8203;luhagel](https://github.com/luhagel) ([#&#8203;971](https://github.com/swoosh/swoosh/issues/971)) ##### 📝 Documentation - Document how to change base\_url for CustomerIO adapter [@&#8203;sheharyarn](https://github.com/sheharyarn) ([#&#8203;987](https://github.com/swoosh/swoosh/issues/987)) - Add JSON section to README [@&#8203;princemaple](https://github.com/princemaple) ([#&#8203;985](https://github.com/swoosh/swoosh/issues/985)) - Fix doc typo in test\_assertions.ex [@&#8203;sevab](https://github.com/sevab) ([#&#8203;983](https://github.com/swoosh/swoosh/issues/983)) ### [`v1.17.5`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1175) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.4...v1.17.5) This release fixes a bug introduced in 1.17.4 ##### 🐛 Bug Fixes - mua: fix mail.from [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;982](https://github.com/swoosh/swoosh/issues/982)) ##### 📝 Documentation - Adapters: Add documentation about setting the base\_url for ZeptoMail … [@&#8203;reimeri](https://github.com/reimeri) ([#&#8203;981](https://github.com/swoosh/swoosh/issues/981)) ### [`v1.17.4`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1174) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.3...v1.17.4) ##### 🐛 Bug Fixes - mua: fix default message-id [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;978](https://github.com/swoosh/swoosh/issues/978)) ##### 🧰 Maintenance - mua: cleanup test [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;938](https://github.com/swoosh/swoosh/issues/938)) ### [`v1.17.3`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1173) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.2...v1.17.3) ##### ✨ Features - feat(mailjet): add event\_payload to provider options [@&#8203;mrdotb](https://github.com/mrdotb) ([#&#8203;965](https://github.com/swoosh/swoosh/issues/965)) - Handle direct URL specification on MSGraph.deliver [@&#8203;LetThereBeDwight](https://github.com/LetThereBeDwight) ([#&#8203;967](https://github.com/swoosh/swoosh/issues/967)) - Complete Swoosh.X.TestAssertions [@&#8203;edgarlatorre](https://github.com/edgarlatorre) ([#&#8203;924](https://github.com/swoosh/swoosh/issues/924)) - Add CSS labels to email detail elements [@&#8203;alexslade](https://github.com/alexslade) ([#&#8203;956](https://github.com/swoosh/swoosh/issues/956)) ### [`v1.17.2`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1172) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.1...v1.17.2) ##### ✨ Features - fix: download attachment with the filename [@&#8203;RETFU](https://github.com/RETFU) ([#&#8203;957](https://github.com/swoosh/swoosh/issues/957)) ### [`v1.17.1`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#11710) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.17.0...v1.17.1) ##### 🐛 Bug Fixes - Fix broken attachments on Scaleway adapter [@&#8203;olivermt](https://github.com/olivermt) ([#&#8203;1003](https://github.com/swoosh/swoosh/issues/1003)) ### [`v1.17.0`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1170) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.12...v1.17.0) A new adapter for Postal, thanks to [@&#8203;onvlt](https://github.com/onvlt) ##### ✨ Features - Implement Postal adapter [@&#8203;onvlt](https://github.com/onvlt) ([#&#8203;949](https://github.com/swoosh/swoosh/issues/949)) ### [`v1.16.12`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#11612) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.11...v1.16.12) ##### ✨ Features - Add toggle for text preview [@&#8203;andreicek](https://github.com/andreicek) ([#&#8203;947](https://github.com/swoosh/swoosh/issues/947)) ### [`v1.16.11`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#11611) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.10...v1.16.11) ##### ✨ Features - mua: add Date and Message-ID headers when missing [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;945](https://github.com/swoosh/swoosh/issues/945)) ##### 📝 Documentation - Write docs for functions in Mailer \_\_using\_\_ macro [@&#8203;ivanhercaz](https://github.com/ivanhercaz) ([#&#8203;946](https://github.com/swoosh/swoosh/issues/946)) - Explain how to recompile after installing gen\_smtp [@&#8203;aj-foster](https://github.com/aj-foster) ([#&#8203;944](https://github.com/swoosh/swoosh/issues/944)) - Fix typos and improve language [@&#8203;preciz](https://github.com/preciz) ([#&#8203;943](https://github.com/swoosh/swoosh/issues/943)) ### [`v1.16.10`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#11610) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.9...v1.16.10) ##### 🐛 Bug Fixes - mua: no mx when relay [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;934](https://github.com/swoosh/swoosh/issues/934)) ##### 📝 Documentation - mua: update docs [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;935](https://github.com/swoosh/swoosh/issues/935)) ### [`v1.16.9`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1169) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.8...v1.16.9) ##### 🐛 Bug Fixes - Fix ex\_aws region override [@&#8203;hellomika](https://github.com/hellomika) ([#&#8203;914](https://github.com/swoosh/swoosh/issues/914)) ### [`v1.16.8`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1168) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.7...v1.16.8) ##### Breaking Change `Mua` is bumped to `0.2.0`, and brings some breaking changes. The [change](https://github.com/ruslandoga/mua/pull/44) in v0.2.0 is splitting `transport_opts` into `tcp` and `ssl` specific ones since `:gen_tcp.connect` complains when it receives opts for `:ssl.connect`. ##### 🧰 Maintenance - update mua to v0.2.0 [@&#8203;ruslandoga](https://github.com/ruslandoga) ([#&#8203;911](https://github.com/swoosh/swoosh/issues/911)) ### [`v1.16.7`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1167) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.6...v1.16.7) ##### ✨ Features - Add support for tracking and return path domains for Mandrill [@&#8203;cenavarro](https://github.com/cenavarro) ([#&#8203;906](https://github.com/swoosh/swoosh/issues/906)) ### [`v1.16.6`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1166) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.5...v1.16.6) ##### ✨ Features - add Swoosh.Adapters.ZeptoMail [@&#8203;gBillal](https://github.com/gBillal) ([#&#8203;905](https://github.com/swoosh/swoosh/issues/905)) ##### 📝 Documentation - Fix typo in docs [@&#8203;pguillory](https://github.com/pguillory) ([#&#8203;898](https://github.com/swoosh/swoosh/issues/898)) ### [`v1.16.5`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1165) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.4...v1.16.5) ##### ✨ Features - Add config options for AmazonSES adapter [@&#8203;otlaitil](https://github.com/otlaitil) ([#&#8203;897](https://github.com/swoosh/swoosh/issues/897)) ### [`v1.16.4`](https://github.com/swoosh/swoosh/blob/HEAD/CHANGELOG.md#1164) [Compare Source](https://github.com/swoosh/swoosh/compare/v1.16.3...v1.16.4) ##### ✨ Features - Add support for allow\_nil\_from [@&#8203;bernardd](https://github.com/bernardd) ([#&#8203;895](https://github.com/swoosh/swoosh/issues/895)) ##### 🧰 Maintenance - remove unstable assertion [@&#8203;princemaple](https://github.com/princemaple) ([#&#8203;892](https://github.com/swoosh/swoosh/issues/892)) </details> <details> <summary>phoenixframework/tailwind (tailwind)</summary> ### [`v0.4.0`](https://github.com/phoenixframework/tailwind/blob/HEAD/CHANGELOG.md#v040-2025-09-10) [Compare Source](https://github.com/phoenixframework/tailwind/compare/v0.3.1...v0.4.0) - No longer copy assets in `mix tailwind.install` - Discard empty proxy env vars - Ensure watcher picks up rule changes on Windows ### [`v0.3.1`](https://github.com/phoenixframework/tailwind/blob/HEAD/CHANGELOG.md#v031-2025-02-28) [Compare Source](https://github.com/phoenixframework/tailwind/compare/v0.3.0...v0.3.1) - Support correct target for Linux MUSL with Tailwind v3. ### [`v0.3.0`](https://github.com/phoenixframework/tailwind/blob/HEAD/CHANGELOG.md#v030-2025-02-26) [Compare Source](https://github.com/phoenixframework/tailwind/compare/v0.2.4...v0.3.0) - Support Tailwind v4+. This release assumes Tailwind v4 for new projects. Note: v0.3.0 dropped target code for handling Linux MUSL with Tailwind v3. Use v0.3.1+ instead. ### [`v0.2.4`](https://github.com/phoenixframework/tailwind/blob/HEAD/CHANGELOG.md#v024-2024-10-18) [Compare Source](https://github.com/phoenixframework/tailwind/compare/v0.2.3...v0.2.4) - Add version check flag - Fallback to ipv4/ipv6 for unreachable hosts ### [`v0.2.3`](https://github.com/phoenixframework/tailwind/blob/HEAD/CHANGELOG.md#v023-2024-06-06) [Compare Source](https://github.com/phoenixframework/tailwind/compare/v0.2.2...v0.2.3) - Fix Elixir v1.15 deprecation warnings </details> <details> <summary>beam-telemetry/telemetry_metrics (telemetry_metrics)</summary> ### [`v1.1.0`](https://github.com/beam-telemetry/telemetry_metrics/blob/HEAD/CHANGELOG.md#110) [Compare Source](https://github.com/beam-telemetry/telemetry_metrics/compare/v1.0.0...v1.1.0) ##### Changed Add support for measurements as second argument of keep/drop callback. </details> <details> <summary>beam-telemetry/telemetry_poller (telemetry_poller)</summary> ### [`v1.3.0`](https://github.com/beam-telemetry/telemetry_poller/blob/HEAD/CHANGELOG.md#130) [Compare Source](https://github.com/beam-telemetry/telemetry_poller/compare/v1.2.0...v1.3.0) ##### Added - Add `atom_limit`, `process_limit`, and `port_limit` measurements to the `[vm, system_counts]` event. ([#&#8203;79](https://github.com/beam-telemetry/telemetry_poller/issues/79)) ### [`v1.2.0`](https://github.com/beam-telemetry/telemetry_poller/blob/HEAD/CHANGELOG.md#120) [Compare Source](https://github.com/beam-telemetry/telemetry_poller/compare/v1.1.0...v1.2.0) ##### Added - Support `persistent_term` measurements. - Require Erlang/OTP 24+. </details> <details> <summary>elixir-tesla/tesla (tesla)</summary> ### [`v1.15.3`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1153-2025-07-30) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.15.2...v1.15.3) ##### Bug Fixes - Avoid crash then gzip-decompressing empty body ([#&#8203;796](https://github.com/elixir-tesla/tesla/issues/796)) ([5bc9b82](https://github.com/elixir-tesla/tesla/commit/5bc9b82823b3238257619ea3d67f0985a3707d2b)) ### [`v1.15.2`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1152-2025-07-23) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.15.1...v1.15.2) ##### Bug Fixes - suppress deprecation warning for :log\_level option ([#&#8203;794](https://github.com/elixir-tesla/tesla/issues/794)) ([478c16e](https://github.com/elixir-tesla/tesla/commit/478c16e79c7bad32bd70ffe51f52ad9dae071af6)) - suppress deprecation warning for :log\_level option based on configuration ([478c16e](https://github.com/elixir-tesla/tesla/commit/478c16e79c7bad32bd70ffe51f52ad9dae071af6)) ### [`v1.15.1`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1151-2025-07-23) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.15.0...v1.15.1) ##### Bug Fixes - legacy log level handling to support atom values for backward compatibility ([5029174](https://github.com/elixir-tesla/tesla/commit/5029174d646a6f1d63088a8a947b4b44fb30b55f)) ### [`v1.15.0`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1150-2025-07-22) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.14.3...v1.15.0) ##### Features - add logging options to use `:level` instead of deprecated `:log_level` ([#&#8203;779](https://github.com/elixir-tesla/tesla/issues/779)) ([ffc3609](https://github.com/elixir-tesla/tesla/commit/ffc36097409175f2e9b15abaffde29e8c3b52fe7)) ##### Bug Fixes - Handle non-list term being emitted from Stream.chunk\_while in SSE ([#&#8203;788](https://github.com/elixir-tesla/tesla/issues/788)) ([0e9cf8d](https://github.com/elixir-tesla/tesla/commit/0e9cf8d30a8b3a4431bc69d2382afde2903f2499)) ### [`v1.14.3`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1143-2025-06-02) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.14.2...v1.14.3) ##### Bug Fixes - Handle carriage return \r line terminators in SSE ([1efe6e3](https://github.com/elixir-tesla/tesla/commit/1efe6e3fb426950697f4fcd7cda2bf9197ea4477)) - handle carriage return \r line terminators in SSE ([#&#8203;772](https://github.com/elixir-tesla/tesla/issues/772)) ([1efe6e3](https://github.com/elixir-tesla/tesla/commit/1efe6e3fb426950697f4fcd7cda2bf9197ea4477)) - Handle named ancestors in Tesla.Mock ([#&#8203;774](https://github.com/elixir-tesla/tesla/issues/774)) ([6cf380e](https://github.com/elixir-tesla/tesla/commit/6cf380e56ce04308a96d94c814e211aef063cf76)) ### [`v1.14.2`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1142-2025-05-02) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.14.1...v1.14.2) ##### Bug Fixes - bring back searching for mocks in ancestors ([#&#8203;771](https://github.com/elixir-tesla/tesla/issues/771)) ([601e7b6](https://github.com/elixir-tesla/tesla/commit/601e7b69714acf63a6800945f66fa79a21d7d823)) - fix race condition in Tesla.Mock.agent\_set ([8cf7745](https://github.com/elixir-tesla/tesla/commit/8cf7745179088ea96f5b4c7f2f05b2b7046b5677)) - handle HTTP response trailers when use Finch + stream ([#&#8203;767](https://github.com/elixir-tesla/tesla/issues/767)) ([727cb0f](https://github.com/elixir-tesla/tesla/commit/727cb0f18369e7d307df5c051b2060c07477586a)) - move regexes out of module attributes to fix compatibility with OTP 28 ([#&#8203;763](https://github.com/elixir-tesla/tesla/issues/763)) ([1196bc6](https://github.com/elixir-tesla/tesla/commit/1196bc600e30d0d9e38d72fcc6ccf1863054bb33)) ### [`v1.14.1`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1141-2025-02-22) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.14.0...v1.14.1) ##### Bug Fixes - add basic Hackney 1.22 support: {:connect\_error, \_} ([#&#8203;754](https://github.com/elixir-tesla/tesla/issues/754)) ([127db9f](https://github.com/elixir-tesla/tesla/commit/127db9f0f4632cf290ce76d61bd1407367676266)), closes [#&#8203;753](https://github.com/elixir-tesla/tesla/issues/753) ### [`v1.14.0`](https://github.com/elixir-tesla/tesla/blob/HEAD/CHANGELOG.md#1140-2025-02-03) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.13.2...v1.14.0) ##### Features - release-please and conventional commit ([#&#8203;719](https://github.com/elixir-tesla/tesla/issues/719)) ([c9f6a1c](https://github.com/elixir-tesla/tesla/commit/c9f6a1c917d707e849d51a09557b453a8f9f012f)) - support retry-after header in retry middleware ([#&#8203;639](https://github.com/elixir-tesla/tesla/issues/639)) ([86ad37d](https://github.com/elixir-tesla/tesla/commit/86ad37dec511ca00047a2640510a4c6c92acf636)) - Tesla.Middleware.JSON: Add support for Elixir 1.18's JSON module ([#&#8203;747](https://github.com/elixir-tesla/tesla/issues/747)) ([1413167](https://github.com/elixir-tesla/tesla/commit/1413167f5408585405b8812f307897a6501b693a)) ##### Bug Fixes - mocks for supervised tasks ([#&#8203;750](https://github.com/elixir-tesla/tesla/issues/750)) ([2f6b2a6](https://github.com/elixir-tesla/tesla/commit/2f6b2a646c9bff3888b7aa0f4fc4440a2b5c97ee)) ### [`v1.13.2`](https://github.com/elixir-tesla/tesla/releases/tag/v1.13.2) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.13.1...v1.13.2) #### What's Changed - fix: dialyzer typespec issue with partial env by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;727](https://github.com/elixir-tesla/tesla/pull/727) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.13.1...v1.13.2> ### [`v1.13.1`](https://github.com/elixir-tesla/tesla/releases/tag/v1.13.1) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.13.0...v1.13.1) #### What's Changed - chore: improve docs about telemetry middleware by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;720](https://github.com/elixir-tesla/tesla/pull/720) - chore: improve middleware docs by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;721](https://github.com/elixir-tesla/tesla/pull/721) - chore: improve adapters docs by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;722](https://github.com/elixir-tesla/tesla/pull/722) - chore: fixing example and removing reminder use Tesla showcasing by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;723](https://github.com/elixir-tesla/tesla/pull/723) - feat: allow to specify encoding strategy for query params by [@&#8203;RudolfMan](https://github.com/RudolfMan) in [#&#8203;558](https://github.com/elixir-tesla/tesla/pull/558) - fix: typespec for test module by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;726](https://github.com/elixir-tesla/tesla/pull/726) #### New Contributors - [@&#8203;RudolfMan](https://github.com/RudolfMan) made their first contribution in [#&#8203;558](https://github.com/elixir-tesla/tesla/pull/558) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.13.0...v1.13.1> ### [`v1.13.0`](https://github.com/elixir-tesla/tesla/releases/tag/v1.13.0) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.12.3...v1.13.0) #### Feature - Added `Tesla.Test` module, please check the How-To Guides, and module documentation #### What's Changed - feat: add mox integration test support by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;718](https://github.com/elixir-tesla/tesla/pull/718) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.12.3...v1.13.0> ### [`v1.12.3`](https://github.com/elixir-tesla/tesla/releases/tag/v1.12.3) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.12.2...v1.12.3) #### What's Changed - fix: ensure adapter is set by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;717](https://github.com/elixir-tesla/tesla/pull/717) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.12.2...v1.12.3> ### [`v1.12.2`](https://github.com/elixir-tesla/tesla/releases/tag/v1.12.2) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.12.1...v1.12.2) #### What's Changed - Fix typos and improve language by [@&#8203;preciz](https://github.com/preciz) in [#&#8203;705](https://github.com/elixir-tesla/tesla/pull/705) - docs: fix typos again by [@&#8203;kianmeng](https://github.com/kianmeng) in [#&#8203;706](https://github.com/elixir-tesla/tesla/pull/706) - chore: update ci badge by [@&#8203;kianmeng](https://github.com/kianmeng) in [#&#8203;707](https://github.com/elixir-tesla/tesla/pull/707) - fix broken link by [@&#8203;lbellomo](https://github.com/lbellomo) in [#&#8203;711](https://github.com/elixir-tesla/tesla/pull/711) - chore(deps-dev): bump the dev group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;712](https://github.com/elixir-tesla/tesla/pull/712) - chore(deps): bump the prod group across 1 directory with 3 updates by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;713](https://github.com/elixir-tesla/tesla/pull/713) - chore: improve readme and docs by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;716](https://github.com/elixir-tesla/tesla/pull/716) #### New Contributors - [@&#8203;preciz](https://github.com/preciz) made their first contribution in [#&#8203;705](https://github.com/elixir-tesla/tesla/pull/705) - [@&#8203;lbellomo](https://github.com/lbellomo) made their first contribution in [#&#8203;711](https://github.com/elixir-tesla/tesla/pull/711) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.12.1...v1.12.2> ### [`v1.12.1`](https://github.com/elixir-tesla/tesla/releases/tag/v1.12.1) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.12.0...v1.12.1) #### Important - This is reverting the changes from <https://github.com/elixir-tesla/tesla/releases/tag/v1.12.0> please check [#&#8203;700](https://github.com/elixir-tesla/tesla/issues/700) #### What's Changed - Revert "feat: add ssl opt to httpc by default" by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;702](https://github.com/elixir-tesla/tesla/pull/702) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.12.0...v1.12.1> ### [`v1.12.0`](https://github.com/elixir-tesla/tesla/releases/tag/v1.12.0) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.11.2...v1.12.0) #### Important - `:httpc` enables SSL by default in OTP 25+ Please keep the eye on around the topic #### What's Changed - chore(deps-dev): bump the dev group with 2 updates by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;698](https://github.com/elixir-tesla/tesla/pull/698) - chore(deps): bump the prod group across 1 directory with 2 updates by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;699](https://github.com/elixir-tesla/tesla/pull/699) - feat: add ssl opt to httpc by default by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;626](https://github.com/elixir-tesla/tesla/pull/626) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.11.2...v1.12.0> ### [`v1.11.2`](https://github.com/elixir-tesla/tesla/releases/tag/v1.11.2) [Compare Source](https://github.com/elixir-tesla/tesla/compare/v1.11.1...v1.11.2) #### What's Changed - chore(deps): bump actions/cache from 2 to 4 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;693](https://github.com/elixir-tesla/tesla/pull/693) - chore(deps): bump jason from 1.4.1 to 1.4.3 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;692](https://github.com/elixir-tesla/tesla/pull/692) - chore(deps): bump mint from 1.6.0 to 1.6.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;689](https://github.com/elixir-tesla/tesla/pull/689) - chore(deps-dev): bump ex\_doc from 0.34.0 to 0.34.1 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;691](https://github.com/elixir-tesla/tesla/pull/691) - chore(deps): bump poison from 5.0.0 to 6.0.0 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;690](https://github.com/elixir-tesla/tesla/pull/690) - fix: bump elixir version compatibility by [@&#8203;yordis](https://github.com/yordis) in [#&#8203;695](https://github.com/elixir-tesla/tesla/pull/695) **Full Changelog**: <https://github.com/elixir-tesla/tesla/compare/v1.11.1...v1.11.2> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjYuNSIsInVwZGF0ZWRJblZlciI6IjQxLjEyMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
pv changed title from Update dependency rustler to ~> 0.34.0 to Update mix non-major dependencies 2024-07-11 10:03:41 +02:00
pv force-pushed renovate/mix-minor-patch from 4bd30462ab to 110e17670d 2024-07-11 10:03:41 +02:00 Compare
pv changed title from Update mix non-major dependencies to Update dependency rustler to ~> 0.34.0 2024-07-12 10:02:44 +02:00
pv changed title from Update dependency rustler to ~> 0.34.0 to Update mix non-major dependencies 2024-08-02 10:04:38 +02:00
pv force-pushed renovate/mix-minor-patch from 110e17670d to 18bfd7383e 2024-08-02 10:04:39 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 18bfd7383e to 23b15f5764 2024-08-06 10:03:02 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 23b15f5764 to 9cfa73565d 2024-08-20 10:03:01 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 9cfa73565d to 6efbb928cd 2024-09-05 10:10:47 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 6efbb928cd to 4fa620d861 2024-09-14 22:17:26 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 4fa620d861 to 952ba0c823 2024-10-16 10:26:01 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 952ba0c823 to 8ce0ddbad9 2024-10-24 10:24:35 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 8ce0ddbad9 to a3dc60b2f5 2024-11-19 09:24:32 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from a3dc60b2f5 to 8f55aa9723 2024-11-30 09:08:27 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from 8f55aa9723 to cfa8beacc2 2025-01-07 09:05:44 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from cfa8beacc2 to e93b4d67b4 2025-01-14 09:05:14 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from e93b4d67b4 to 8c11260461 2025-02-06 09:05:06 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from 8c11260461 to 86df2c59c9 2025-02-11 09:05:15 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from 86df2c59c9 to a04adf0bda 2025-02-27 09:04:47 +01:00 Compare
pv force-pushed renovate/mix-minor-patch from a04adf0bda to d09f07d07f 2025-05-28 10:14:38 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from d09f07d07f to db2ff6da27 2025-07-05 10:14:24 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from db2ff6da27 to 6e4e2f2d22 2025-07-23 10:14:44 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 6e4e2f2d22 to d77a375769 2025-09-02 09:12:52 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from d77a375769 to 1936354b06 2025-09-05 10:08:06 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 1936354b06 to b3f2c2ece7 2025-09-09 10:09:29 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from b3f2c2ece7 to dddcf23010 2025-09-10 10:08:00 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from dddcf23010 to a87210c9e2 2025-09-11 10:08:24 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from a87210c9e2 to 48a4e6437e 2025-09-20 10:08:09 +02:00 Compare
pv force-pushed renovate/mix-minor-patch from 48a4e6437e to ea63abd618 2025-09-21 10:07:55 +02:00 Compare
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/mix-minor-patch:renovate/mix-minor-patch
git switch renovate/mix-minor-patch

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/mix-minor-patch
git switch renovate/mix-minor-patch
git rebase master
git switch master
git merge --ff-only renovate/mix-minor-patch
git switch renovate/mix-minor-patch
git rebase master
git switch master
git merge --no-ff renovate/mix-minor-patch
git switch master
git merge --squash renovate/mix-minor-patch
git switch master
git merge --ff-only renovate/mix-minor-patch
git switch master
git merge renovate/mix-minor-patch
git push origin master
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: pv/sloan#51
No description provided.