Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
1.0.0 - 2026-08-11
Added
- Added
TailwindCompilerZig.candidates/1for extracting candidate tokens from source text, iodata, and lazy streams. - Added
TailwindCompilerZig.compile_source/2and its bang variant. - Added Tailwind v4
@custom-variantsupport, including selector, at-rule, block, built-in override, and stacked variant forms. - Added Hex package metadata and explicit BeaconCMS upstream attribution.
Changed
- Forked and namespaced the package as
tailwind_compiler_zig, the OTP application as:tailwind_compiler_zig, and public modules underTailwindCompilerZig. - Renamed NIF, WASM, environment-variable, and release artifact identifiers to avoid collisions with the upstream project.
- Switched the optional source-build dependency to the Hex release of Zigler 0.16.
- Incorporated BeaconCMS upstream CI fixes for ARM Linux and Windows runners.
Fixed
- Preserve
:rootplugin theme colors when later[data-theme]blocks define the same color names. - Emit a clear source-build instruction when no precompiled NIF is available and Zigler is not installed.
The entries for 0.0.7 and earlier are inherited from the upstream BeaconCMS project and therefore use the original package, module, artifact, and environment-variable names.
0.0.7 - 2026-04-18
Added
- WASM binary included in release artifacts and downloadable via
TailwindCompiler.wasm_path/0 - Automatic WASM install during
mix compilewhenTAILWIND_COMPILER_WASM=trueis set - Explicit
@layerorder declarations for correct CSS cascade priority @supportsfallback block in@layer propertiesfor older browsers- CSS nesting for all pseudo-class, aria, data, and compound variants (matching official Tailwind v4 output)
has-[:checked]variant with proper&:has(*:is(:checked))wrapping- Named group variants (
group-hover/mega) with correct selectors @media (hover: hover)guard ongroup-hoverandhovervariantsselection:variant descendant propagation (& *::selection)- Shadow DOM support via
:root, :hostin theme layer
Changed
theme()opacity now usescolor-mix(in oklab, ...)instead ofoklch(... / opacity)theme()inline resolution no longer pollutes the theme layer with unused variables- Shadow arbitrary values with
theme()colors now wrapped invar(--tw-shadow-color, ...) divide-xuses logical properties (border-inline-*) instead of physical- Opacity values use percentage notation (
30%not.3) - Duration values use
msnotation (300msnot.3s) text-transparentusestransparentkeyword instead of#0000bg-clip-textno longer emits-webkit-prefixaspect-squareoutputs1 / 1instead of1leading-noneoutputs literal1instead ofvar(--leading-none)- Spaces added after commas in
color-mix(),var(), and@supportsvalues
0.0.6 - 2026-04-15
Added
plugin_cssoption for importing Tailwind plugin CSS (e.g., DaisyUI, @tailwindcss/forms). Parses--color-*variable definitions from:rootand[data-theme]blocks, registers them as theme colors for utility generation (bg-*,text-*,border-*), and includes all plugin CSS in output.
0.0.5 - 2026-04-11
Added
- Windows x86_64 precompiled NIF binary support
- Windows platform detection and
.dllNIF loading
Fixed
- Zigler Windows NIF compilation by providing missing
erl_nif_win.hheaders
0.0.4 - 2026-04-10
Fixed
- Underscore-to-space conversion in arbitrary variant selectors
Changed
- Added peak RSS memory comparison to benchmark
- Added pure Zig compile vs Tailwind v4 JS compile API benchmark
- Updated release process documentation and README installation section
0.0.3 - 2025-05-22
Added
- Initial public release
- Tailwind CSS v4-compatible compiler written in Zig
- Elixir NIF integration via Zigler
- Precompiled NIF binaries for x86_64-linux, aarch64-linux, and aarch64-macos
- ~565 static utilities, ~85 functional utility roots, 77+ variants
- JSON theme overrides, custom CSS passthrough, preflight toggle
- Arena allocator for efficient memory management