Version 5.0.1
May 14, 2026
Changed
- Renamed the main plugin class from
craftpulse\tailwind\Plugintocraftpulse\tailwind\Tailwind(andsrc/Plugin.phptosrc/Tailwind.php), aligning with the Craft ecosystem convention of naming the entry class after the plugin. Third-party code that imported the old class name will need to update itsusestatement. - Extracted plugin scaffolding into
base\PluginTrait(event and URL registration, settings response overrides) andservices\ServicesTrait(typed service getters andstatic config()for component registration), matching thePluginTrait/ServicesTraitsplit used across the other CraftPulse plugins. composer.jsonlicense declaration switched fromMITtoproprietaryto match the LICENSE.md commercial terms.
Fixed
- LICENSE.md now uses the canonical Craft License text (added the
# The Craft Licenseheading and straight quotes throughout). Required for Craft Plugin Store submission.
Version 5.0.0
May 13, 2026
Initial public release for Craft CMS 5.
Added
- Server-side Tailwind CSS class merging via
craft.tailwind.merge(), wrappingmichtio/tailwind-merge-v3andmichtio/tailwind-merge-v4(drop-in forks ofgehrisandro/tailwind-merge-phpandtales-from-a-dev/tailwind-merge-php— see the Commerce-compatibility note below). - Named-slot
ClassListbuilder viacraft.tailwind.classes({ slot: '...' }), with immutable.override(),.extend(),.without(),.merge(),.get(), and.toArray(). - Automatic Tailwind v3/v4 detection from project files. Scans for
@import "tailwindcss"/@theme(v4) andtailwind.config.{js,ts,cjs,mjs}(v3). ConfigurablebuildchainPathandcssPath; manual override viatailwindVersion. Exposed ascraft.tailwind.version. - CSS custom properties container via
craft.tailwind.cssVariables(.get(),.has(),.all(),.isEmpty(),.asCss()), with save-time validation against a safe-character whitelist and render-time silent drop of unsafe values. <style>tag rendering viacraft.tailwind.include({ nonce, media, title })— returnsTwig\Markupso no|rawis required.- Auto-inject mode (
autoInject+autoInjectAttributes) that registers the CSS variables style block on every site request viaView::registerCss(). Skips console and CP requests. - O(1) LRU merge cache, request-scoped, with configurable
cacheSize(set to0to disable). Hit/miss counters surfaced through the debug panel. - Yii debug toolbar panel showing total calls, unique inputs, cache hit rate, and per-merge detail (input, output, resolved/passthrough, count, originating template + line). Zero overhead when the debug module isn't loaded.
- CP settings page organized into Detection / Output / Typography tabs, with editable tables for
cssVariablesandautoInjectAttributes, per-field override warnings when shadowed byconfig/tailwind.php, a conditional CSS-path field shown only when version detection includes v4, and a read-only render in production (whenallowAdminChangesis disabled) so editors can still inspect configured values without being able to modify them. - Multi-environment configuration support in
config/tailwind.php(Craft's standard'*' + envpattern). - Compatible with Craft Commerce — both merger dependencies are forks (
michtio/tailwind-merge-v3,michtio/tailwind-merge-v4) with a widenedpsr/simple-cacheconstraint (^1.0 || ^2.0 || ^3.0) so installations resolve cleanly when Commerce'sibericode/vatchain transitively requirespsr/simple-cache ^1.0. The forksreplacethe upstream package names — any other dependency requiring the originals is satisfied transparently. - Tailwind class prefix support (bare-form value, e.g.
prefix: 'tw') wired into both v3 and v4 engines — v3 emitstw-px-4, v4 emitstw:px-4, matching each version's native prefix syntax. Validation rejects trailing-hyphen input on explicit v4 to surface the v3-vs-v4 syntax difference at save time. - Opt-in
@tailwindcss/typographyconflict resolution. Enable thetypographysetting to haveprose-{size}andprose-{theme}classes merge as mutually-exclusive utilities (sizes among themselves, colors among themselves, size and color stay orthogonal). Defaults cover the suffixes shipped by@tailwindcss/typography0.5.x;typographyExtraSizes/typographyExtraColorsregister custom suffixes for your ownprose-*themes. - Debug toolbar row showing the active typography config — whether resolution is enabled and which custom suffixes are loaded.