#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

Merge request reports

Loading
Loading