v0.2.3
use PhoenixMountable.Installcompiles in an app without Igniter, as a plain Mix task. It chose the task with anifin the code it generated, and Elixir expands both branches, souse Igniter.Mix.Taskfailed 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/1of the schema check, an assets strategy'sinject/2, a migration'sdown/1, a host router's mounts and an installer'sinstall/1.
v0.2.1
PhoenixMountable.Path.path/3andPhoenixMountable.Mount.sibling/2: paths under another mount of the same router, by its name, for a library whose definitions link to each other (an admin to its public page).
v0.2.0
use PhoenixMountable.Installdeclares a library's installer in oneuse: mounts, the migration, a LiveView hook, style sheets, Tailwind sources and the supervisor, then the library's owninstall/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/4mounts 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/4andadd_css_imports/4edit the host'sapp.jsandapp.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: :raiseis 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.
- Definition modules (
use PhoenixMountable) and generated mount macros that insert routes, live sessions, controllers and plugs into a host router, with or without LiveView. - Options validated with NimbleOptions when the host compiles,
:verifychecks after the host router compiles, andnormalize_options/1. PhoenixMountable.Mountin LiveViews, controllers and plugs, with the request's CSP nonces.- Assets:
Embedded,Static(with Vite manifests) andHoststrategies, layout components, a browser helper, and reloads of pages running a previous build. ~m, paths relative to the mount, verified after compilation.- Processes per mount (lazy or with
PhoenixMountable.Supervisor),PhoenixMountable.Singleton,PhoenixMountable.PubSuband telemetry. PhoenixMountable.Migrations: versioned migrations on PostgreSQL, MySQL and SQLite with a tracking table, install options, legacy adoption, baselines, expand and contract versions, concurrent index builds, lock timeouts, SQLite table rebuilds that keep the host's columns, batched backfills, schema checks and a test kit.mix phoenix_mountable.gen.migration,mix phoenix_mountable.check,mix phoenix_mountable.backfill, andPhoenixMountable.Igniter.PhoenixMountable.TestHostandPhoenixMountable.Test.