v0.2.4

  • PhoenixMountable.RawBody: one body reader for Plug.Parsers, for the routes that check a signature of their request's body (a provider's webhooks). It asks the host's router which plug a request will reach (Phoenix.Router.route_info/4, through forwards) and keeps the body as it was sent for the plugs that use PhoenixMountable.RawBody, so the host can move and rename those routes freely; fetch/2 reads it. Until now each library shipped a reader of its own, matched by path, and an endpoint takes only one.
  • use PhoenixMountable.Install, raw_body: true and PhoenixMountable.Igniter.add_raw_body/2 add that reader to the host's endpoint, and leave a reader of the host's own as it is, with a warning.

v0.2.3

  • use PhoenixMountable.Install compiles in an app without Igniter, as a plain Mix task. It chose the task with an if in the code it generated, and Elixir expands both branches, so use Igniter.Mix.Task failed to expand without Igniter: a library with an installer did not compile at all in such an app.

v0.2.2

  • A library's callbacks are found while its modules are not loaded yet, as in development and tests, where a module loads when first called: the definition's session/3 (until then, the first library page after boot had no session, and an admin could get a 404), repo/1 of the schema check, an assets strategy's inject/2, a migration's down/1, a host router's mounts and an installer's install/1.

v0.2.1

v0.2.0

  • use PhoenixMountable.Install declares a library's installer in one use: mounts, the migration, a LiveView hook, style sheets, Tailwind sources and the supervisor, then the library's own install/1. It is an Igniter task (mix igniter.install my_lib) and, in a host without Igniter, says how to get it.
  • PhoenixMountable.Igniter.mount/4 mounts in any scope, with its pipelines, options ({web} is the host's web module) and a re-exported macro (:import), and imports the library's formatter, so the host writes the mount without parentheses.
  • PhoenixMountable.Igniter.add_hook/4 and add_css_imports/4 edit the host's app.js and app.css (PhoenixMountable.Igniter.HostAssets), or give the lines to add where they cannot.
  • TypeScript types for the browser helper.
  • A pending upgrade under pending_migrations: :raise is checked again on each use, so running the migration takes effect without a restart.
  • The migration generator compiles without warnings on Elixir 1.19 and 1.20.

v0.1.0

The first release.