3.0.2
- Render image placeholders at 80% opacity
3.0.1
- Preserve updated adapter state after sending 103 Early Hints
3.0.0
- Extract, obfuscate, and format component attributes ending in
_classlike standardclassattributes - Require Rust 1.98 and use buffered integer formatting for CSS marker generation
- Compress high-density AVIF variants more aggressively while preserving 1x quality
- Serve monotone light-gray image placeholders as content-addressed PNG assets with inset masks that preserve transparency
- Remove generated placeholder CSS and
data:from the default image CSP
2.1.1
- Generate monotone light-gray image placeholders constrained to the solid inset silhouette of transparent masters
- Remove the image placeholder cleanup runtime from generated JavaScript bundles
2.1.0
- Upgrade the managed Bun runtime to 1.4.0.
- Accept JPEG image masters, auto-orient them, enforce a configurable pixel limit, and generate configurable density variants.
- Generate obfuscated Bun ThumbHash placeholders, render them through a configured stylesheet and the
manifest-backed
picturecomponent, and remove their backgrounds after images load.
2.0.2
- Include non-hidden files under the root
.well-knownstatic directory automatically.
2.0.1
- Add Hex package links and README badges for the changelog and documentation.
2.0.0
Breaking changes
- Require Elixir 1.18+ and Erlang/OTP 28+.
- Use
PhoenixAssetPipeline.HTML.Enginefor HEEx templates. - Add
:phoenix_asset_pipeline_preparebefore Elixir and:phoenix_asset_pipelineafter:app. - Replace the previous asset tasks and storage with the manifest pipeline.
- Remove
phoenix_asset_pipeline.assets.build,phoenix_asset_pipeline.assets.deploy, and packaged image/SVG scripts. - Move development rebuilds from endpoint watchers to
PhoenixAssetPipeline.Watcher. - Default
:manifest_modeto:cached; production builds must select:precompiledand provide an exact:bun_versionplusassets/bun.lock.
Highlights
- Build JS, Tailwind CSS, SVG sprites, optimized images, static files, and the manifest in one pipeline.
- Namespace internal sprite IDs by default and support cache-aware root metadata from
metadata_file. - Minify module-scope classes before Elixir compilation and reserve identical mappings during CSS rewriting.
- Resolve function and HEEx class expressions from the current manifest at runtime.
- Rewrite CSS selectors and Tailwind custom properties in native passes without Elixir byte scanning.
- Deduplicate content, cache build outputs, and compress production assets with four bounded workers.
- Serve sparse Brotli, gzip, deflate, and Zstandard representations with range and conditional request support.
- Store dynamic manifests in indexed ETS generations and generate precompiled production manifests.
- Provide manifest-backed HTML helpers, components, CSP helpers, early hints, LiveView integration, and static plugs.