Loading
#3620424: Fix Tailwind JS fallback and rule serving, add CKEditor 5 integration
- Extract classes from class, data-class and Alpine attributes, decoding entities and keeping leading digits (2xl:), and look up every class.
- Treat unmatched classes as missing only when they look like Tailwind utilities, skipping BEM names and safelist globs.
- Serve rules in dictionary order, unescape hex-escaped selectors and reload the dictionary when the file changes.
- Embed Tailwind JS on any page with missing classes, strip comments from the local config and copy compiled rules out of their cascade layers.
- Developer mode renders like production and logs class diagnostics to the console instead of loading Tailwind JS on every page.
- Fix the rule finder for current browsers, drop layers from stored rules and require POST with a CSRF token on the rules endpoint.
- Add an opt-in CKEditor 5 integration loading Tailwind JS for editor content.
- Add RuleStorage::deleteShadowingCustomRules() for upgrade deploy hooks.
- Remove the temporary CDN debug route and the tailwindcss.cdn library.
- Add a README and unit, kernel, functional and JavaScript tests.
Closes #3620424