== Changelog ==
= 5.0.0 (22-08-2026) =

**Breaking:**
- The MetForm form styler has been removed. MetForm builds its forms for Elementor rather than Divi: a MetForm form placed in a Divi page is an Elementor document rendered by Elementor, which writes its own CSS for each field scoped to that page and widget — four classes deep, with ids that differ per form — so the styler's colours and fonts lost to it every time and could not be made to win. Its fields are Elementor widgets too, which left the select-field settings with nothing to style. The module had also stopped registering: the class it detects MetForm by does not exist in current MetForm, so it was unreachable in the builder. A page still using the module will show it missing; the module was off by default, so this reaches only sites that turned it on and built with it.

**New:**
- A button icon can be kept out of sight until the button is hovered in Divi 5, on Flip Box's two slide buttons, Dual Button's pair and Post Grid's Load More, with the choice of revealing it on its own or letting the text move with it. Both settings exist in the classic builder and had nothing to convert to.
- A button can show an image in place of its icon in Divi 5, on Flip Box's two slide buttons, Dual Button's pair and Post Grid's Load More. All three offer the choice in the classic builder and rendered only the icon, so an image chosen there arrived with nothing to show it.
- Post Carousel can space the parts inside each slide and align their text in Divi 5. The spacing settings the classic builder offers for a slide's element wrapper and its individual elements had no counterpart, and a converted page dropped them.
- Seven more form stylers can style the message shown against a field that failed validation: WPForms, SureForms, Fluent Forms, Formidable, Everest Forms, Happyforms and weForms. Only Gravity Forms and Ninja Forms had settings for it, so on the others the classic builder's spacing for that message arrived with nowhere to go.
- Business Hours can draw its divider between each day and its hours in Divi 5. The line's colour, style, thickness, length and corner rounding are settings the classic builder has; the Divi 5 module styled the line but never rendered it.
- Post Reading Time can draw its divider line in Divi 5. The line's colour, style, thickness, length, corner rounding and position are all settings the classic builder has; the Divi 5 module styled the line but never rendered it, so none of them had anything to apply to.
- Three last settings from the classic builder now work in Divi 5: the spacing around a Flip Box slide's icon, the colour of a label beside a checked Gravity Forms choice, and the space above and below a Gravity Forms footer. Each needed writing directly — a checked label is a state rather than an element, and the footer's spacing comes from the form plugin's own variables.
- The Load More button on Post Grid can be styled in Divi 5: the icon's colour and size, the gap between icon and text, a width of the button's own, how its contents sit within it, where it sits across the grid, and the colour and size of the spinner shown while the next set loads. Divi styled the button but none of what is inside it.
- The Ninja Forms styler gained its form title, its per-field validation message and its field heights in Divi 5. The title and the validation message had no settings of their own, and the height of a field could not be set at all — Divi styles these fields natively, which covers everything about them except how tall they are. All three are settings the classic builder has.
- The Divider can fill, outline and clip its own text in Divi 5, the same way Typing Text now can: a fill colour inside the letters, a stroke around them, and the module's background showing through them rather than behind. The classic builder has offered this on the divider's text since it shipped.
- Every form styler can colour and size its checkboxes and radios in Divi 5. All eleven offered both settings and neither did anything: browsers draw these two controls themselves and honour only one colour property, which Divi has no setting for, and the size had to be applied to the inputs alone rather than to the labels beside them. Both work now, in all eleven, and a page converted from the classic builder keeps what it set.
- Typing Text can fill, outline and clip each piece of its text in Divi 5. The prefix, the typed text and the suffix each take a fill colour inside the letters and a stroke around them, and can show the module's background through the letters rather than behind them. The classic builder has offered all of this on all three pieces; Divi 5 had none of it, so a heading built this way converted to plain text.
- Each button in a Dual Button can be styled on its own in Divi 5: the icon's colour and size, the gap between icon and text, whether the icon leads or follows, a width of the button's own rather than one that fits its text, and how its contents sit within it. The separator between them has offered all of this since it shipped; the two buttons had only their text, link and icon, so a page that styled them in the classic builder arrived unstyled.
- A Flip Box button can be laid out and given its own icon styling in Divi 5, on each side independently: the icon's colour and size, the gap between icon and text, whether the icon leads or follows, a width of the button's own rather than one that fits its text, how its contents sit within it, and where the button sits across the slide. All eight are settings the classic builder has, and a converted page keeps them.
- A Flip Box slide can arrange what it holds in Divi 5: where the icon sits relative to the text and how much room it takes, how the icon lines up within that room, how large an image used in place of an icon is, how the text is aligned, and the space between the slide's parts — each side on its own. All nine have been in the classic builder since it shipped and a converted page keeps them.
- Flip Box slides can be arranged, layered and timed in Divi 5. The parts of a slide — icon, title, sub-title, body and button — can be reordered within it and lifted above one another where they overlap, on each side independently, and the flip's own duration, delay and speed curve are settable rather than whatever the stylesheet happened to say. All three have been in the classic builder since it shipped, and a converted page now keeps the arrangement it had.
- Each side of a Flip Box can be styled on its own in Divi 5. The module carried no per-element design settings at all, so a background, a title colour or a button style applied to both faces at once or to neither — an odd limitation for a module whose whole point is two different faces, and the reason 91 of the classic builder's settings had nowhere to go. The slide, icon, title, sub-title, body and button are now separately styleable on each side, and a page converted from the classic builder keeps the typography, icon colour and size, and slide spacing it already had.
- Post Grid and Post Carousel let you pick categories and tags from a list in Divi 5. Both settings were text boxes asking for comma-separated term ids, which meant looking each one up by hand, and the classic builder's "All Categories" and "Current Category" choices could not be expressed at all — they are words rather than ids. Both now show the site's own terms as a checkbox list, with those two choices at the top of the categories one, and start on All Categories rather than on nothing. The terms come from the list Divi already publishes to the builder, so no extra request is made for them.
- A form styler for **weForms**, in both builders. weForms is the one form plugin the big Elementor add-on packs style that this library did not — Essential Addons and Happy Addons both ship a widget for it — and it renders in PHP through `[weforms id="…"]`, so the same twelve design groups apply. It is built on WP User Frontend and keeps that vocabulary: the form is a `<ul class="wpuf-form">` of `<li class="wpuf-el">` items, each holding a `.wpuf-label` and a `.wpuf-fields`, with help text in `span.wpuf-help` and the submit button in its own `<li class="wpuf-submit">`. The submit button is matched by position rather than class, because weForms swaps its classes depending on the form's "use theme CSS" setting and the only stable one carries the form id.
- A form styler for **Happyforms**, in both builders. Happyforms renders in PHP through `[happyforms id="…"]`, so the same twelve design groups apply as on the other stylers — wrapper, fields, select, labels, description, placeholder, checkbox and radio, footer, submit button and the error and success notices. Its markup is its own: parts rather than fields, with the label text in a nested span and the submit button living inside its own part. Happyforms is also the first styled plugin that marks its own CSS `!important` — the submit button's border and radius, and the radius on a prefixed or suffixed input — and no selector, at any length, beats `!important`. Those groups answer with `important` of their own through Divi's style engine, which is the only thing that can win.
- A form styler for **Everest Forms**, in both builders. It joins the eight that were already here, and with Happyforms and weForms behind it the free library is 67 modules and eleven of the form plugins a Divi site is likely to be running can be styled from the builder rather than from a stylesheet. Everest Forms renders its form in PHP through the `[everest_form]` shortcode, which is what makes it stylable at all — the design groups target the markup its own renderer emits, so they hold for a form built out of any field types. Alongside the wrapper, fields, labels, placeholder, checkbox and radio, submit button and the error and success notices, it adds a Field Description group: Everest Forms renders per-field help text that none of the sibling stylers has an equivalent for. Everest Forms also ships an opt-in per-form theme stylesheet whose rules run seven classes deep, so the field, label, checkbox, footer and submit-button styles are marked important through Divi's own style engine rather than answered with a longer selector that a markup change would break.
- Charts are now authored in a data table rather than three text boxes that had to agree with each other. Categories, values and series are typed into a grid, each row and column can carry its own colour, and the module reads it the same way Divi's own Charts module reads its table — so a chart set up in one is understood by the other. Five chart types join the original four: Area, Radar, Polar Area, Scatter and Bubble. Scatter and Bubble are Divi 5 only, because they plot two or three numbers per row and the classic builder's text boxes cannot express that. Charts saved before this release keep rendering from their text boxes until the table is filled in.
- Every module now carries an icon drawn for it. The eleven form stylers show their plugin's own brand mark — Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable, Ninja Forms, SureForms, Forminator, Everest Forms, Happyforms and weForms — and the rest have a glyph drawn to depict what the module actually does rather than the nearest generic shape from a stock icon library: the data table has sortable columns, Image Hotspots has pins on an image, Pricing Table has tiers. The same drawing is used everywhere a module appears, so the module palette, the classic builder and the Visual Builder no longer show three different pictures of the same thing.
- Divi 5 modules gained four option groups they had never offered, all of which Divi provides for its own modules: Interactions, so a module can respond to a click or hover; Custom HTML Attributes, for adding your own `data-` or `aria-` attributes; the wrapper Element Type together with the HTML Before and HTML After fields; and the Loop option. Each of these is something Divi implements centrally and offers to any module that asks for it — ours never asked, so the panels simply were not there. Available on all 68 parent modules. Post Grid and Post Carousel do not take the Loop option, for the same reason Divi withholds it from its own Blog and Portfolio: those modules already run a query of their own.
- Divi 5 modules gained the module-level Link option, which turns the whole module into a link. It is offered on 39 modules. The ones left out are those that already carry a link of their own — Advanced Button, Dual Button, Icon Box, Video Popup and the like — along with the form stylers, where an outer link would swallow the form's own submit, and Breadcrumbs and Table of Contents, which are lists of links already. Divi makes the same exclusions for the same reasons.
- Post Grid and Post Carousel now show real posts while you edit. The builder used to draw one placeholder item whose parts were labelled with their own names — "Post Title", "Featured Image", "Post Content" — so columns, gaps, image ratios and excerpt lengths could not be judged against anything. Up to four of your own posts are now drawn by the same code that renders them on the page, and they update as you change the query or the layout.
- The form stylers now show the real form in the Visual Builder, drawn by the same code that renders it on the page. The builder previously took the markup from an internal value Divi keeps for shortcode modules, which is why a preview could disagree with the published page.
- The Checkbox and Radio size setting now actually resizes the control. Browsers draw native checkboxes and radios themselves and ignore width and height, so the field appeared to work and did nothing on every form styler. The control is now taken over when a size is set — which also means this plugin draws the tick and the dot the browser stops drawing, and carries the chosen colour through to the border and the checked state, so a form styled with both fields looks the way it did.
- The classic builder gained design fields for parts of a Gravity Forms form that only Divi 5 could style: the section break and its title and description, list fields and their column headers and cells, the buttons that add and remove a list row, field sub-labels, and the required marker. The selectors for these had been in place since 3.2.0 with no fields behind them.
- The Forgot Password and Reset Password switches on the Extensions page now do something. They have always been listed there, but nothing was wired to them: with Login Experience enabled, the lost-password and reset-password screens were replaced by your Divi pages whether those two switches were on or off. Each now decides its own screen, so you can hand either flow back to WordPress's own form while keeping your custom login and register pages. Sites already using Login Experience keep every screen they had — both switches are turned on for them, so nothing changes until you decide otherwise.

**Bug fixes:**
- Both carousels drew none of their own controls in the Visual Builder — the arrows, the pagination and its bullets, the Image Carousel's progress bar and the Logo Carousel's slide wrapper. Each carries a design group, so each had nothing to style there while a saved page styled it. The bullets are drawn statically: Swiper builds the real ones and does not run in the builder, and running it there would have it fighting the builder for control of the markup.
- Seventeen more modules styled every one of their design groups on a published page and only some of them in the Visual Builder — the builder half of the same split that left thirteen modules' settings off the page, further down this list: Chat Button's panel, Data Table's rows, Timeline's track, the four auth forms' inputs and labels, Skill Bar's title, Pricing Table's, Team Member's and Testimonial's containers, Image Hotspots' pins and Step Flow's marker. Post Grid's Load More button is also drawn on the canvas now, so its design group has something to style there.
- Advanced Button and Hover Box could not be used in the Visual Builder at all. Both rendered a `ScriptDataContainer` that Divi does not export, so the module was replaced by Divi's "Oops! An Error Has Occurred" and could not be placed, selected or edited — while a saved page rendered both correctly.
- A form styler's Visual Builder preview ignored the Content tab's display settings. The builder asked the server for the form by id alone, so every styler previewed with the form plugin's own defaults — a Gravity Forms title and description switched on appeared on a saved page and not on the canvas.
- Every form styler's Design tab did nothing in the Visual Builder. The canvas and a saved page render their CSS through separate code paths, and the canvas rendered only the module's own group — so of Gravity Forms' 33 groups the builder drew 1, and field colours, label typography, placeholders, buttons and messages were visible only after saving. Also fixed: a Gravity Forms field-grid gap silently gated the checked-label colour and the footer's spacing, and Glitch Text and Scrolling Text were each a group short on the canvas.
- Four Divi 5 style rules never reached a published page: the button images on Flip Box's two slides and on Post Grid's Load More had no width or height, and the divider between Post Reading Time's text pieces was not drawn. Each was declared inside another rule rather than beside it, so Divi never saw it — while the builder, which draws its own preview, showed all four working.
- A form styler showed a form in its settings panel that the page did not render. The form picker filled itself in with the first form it had been given whenever nothing was chosen, so a module added to a page read "Contact form 1" while its own setting was still empty and the canvas drew no form at all. That first form could not be selected either: the picker already displayed it, so choosing it changed nothing, and it took selecting a second form and coming back. Nothing chosen is now a state of its own — the picker says "Select a form" until one is, offers to clear the selection afterwards, and says which of loading, none installed, or nothing chosen is actually true rather than reporting no forms found while the list is still on its way.
- The Ninja Forms styler showed an empty box in the Divi 5 builder, so its design settings had nothing to be judged against while editing. Ninja Forms is the one styled plugin that builds its form in the browser: what its shortcode returns is a container and a block of form data, with none of the fields, labels or buttons a styler exists to style. The Divi 5 builder now draws the form from that data, the way the classic builder always has — the two share one renderer, so a form previews the same in both. Where the data cannot be read, the builder shows what the server sent rather than nothing. Nothing changed for visitors.
- A form styler previewed as an empty box in the Divi 5 builder whenever its form plugin ships the form's data as an inline `<script>` inside the markup its shortcode returns. React inserts a `<script>` written that way into the page without ever running it, so the assignment the form needs never happened, and a form that builds itself in the browser had nothing to build from. All eleven stylers now share one preview that re-creates each inline script so the browser runs it. A script with a `src` is left alone: the module's own render has already enqueued those bundles, and re-fetching one would at best duplicate work. The markup still comes from this plugin's own preview route, which is gated on `edit_posts` and renders the same shortcode the published page renders, so nothing runs in the builder that does not already run for every visitor.
- Seven settings changed nothing on the published page in either builder: Table of Contents' nested indent and link spacing, Number Counter's media size, media spacing and content alignment, and Post Reading Time's alignment and gap between its text pieces. All seven were drawn on the builder canvas and had no frontend CSS behind them, so a page looked right while being edited and ignored the settings once visited.
- Thirteen Divi 5 modules offered design settings that did nothing. Chat Button's panel and toggle, Data Table's header and rows, Pricing Table's container, Skill Bar's title and bar, Team Member's and Testimonial's containers, Timeline's track and line, Step Flow's and Timeline's item markers, and Image Hotspots' image and pins each had a full set of colour, border, spacing and typography fields in the Design tab, and none of it reached the page. The settings looked correct while editing, because the builder draws its own preview rather than reading the stylesheet the page is served with.
- Forms styled by this plugin reached visitors unstyled. The form plugin's own stylesheet was loaded only while the Visual Builder was open, so a Contact Form 7 or WPForms embed looked right to whoever built the page and broken to everyone who visited it. The stylesheet now loads whenever a styled form renders, in the builder and on the page alike.
- A form styler that hit an error vanished from the Visual Builder with no explanation, leaving an empty space where the module had been. It now reports what went wrong while you are editing; on the published page it still renders nothing rather than taking the page down.
- Four modules drew something other than their content on the Visual Builder canvas: Before After Image Slider appeared as an empty box because both images were hidden, Countdown Timer showed 00:00:00:00 whatever date was chosen, Charts showed a placeholder card rather than the authored series, and Breadcrumbs left out the Before Text the frontend prepends to the trail. All four now draw what the page will show.
- Dynamic content set on a Divi 5 module — a post title in a button, an author name in a heading — printed its raw placeholder text instead of the value, both on the Visual Builder canvas and anywhere the page was rendered outside the normal front-end path. Divi resolves these placeholders for the document as a whole while a page is being displayed, which is why the published page always looked right; nothing resolved them for a module drawn in the builder or produced through the builder's own preview route. Both paths now resolve them, and they resolve per post, so a module repeated across a loop or an archive shows each entry's own values rather than the first one's.
- Dynamic content in a Divi 5 module still showed its raw placeholder while you were editing, even after the page itself rendered correctly. Modules are drawn in the builder by their own editing components, which read the stored value directly, so the placeholder was printed as written. The value is now resolved for the canvas too — the field appears briefly empty and then filled, rather than showing the placeholder text.
- "Checkbox & Radio Checked Color" is no longer offered by the ten form stylers that cannot apply it. It colours the label beside a checked choice and only the Gravity Forms styler defines a selector for that state, so in the other ten it was a colour picker that changed nothing.
- Five of the eleven form stylers rendered a Divi 4 form with no base styling. The shared stylesheet applies its form normalisation per plugin, and Formidable, SureForms, Everest Forms, Happyforms and weForms had no entry — they picked up the shared colour and spacing variables and none of the field, label, button, error or success rules those variables feed. The Divi 5 stylesheet had been extended each time a styler was added and the Divi 4 one had not.
- Several design settings emitted their rule, carried the right value, and lost the cascade — which looks the same as a setting that does nothing until you ask the browser which declaration won. The Submit Button colour on the WPForms styler, the wrapper background and field label colours on WPForms and SureForms, Post Carousel's pagination dots, Post Grid's Load More button, and the Author Box "view all posts" and website link colours all reached the page as whatever the form plugin, Swiper or the module's own stylesheet had set. The Author Box links could not be won by a selector at all, because the shared module stylesheet marked links `color: inherit !important` — a sensible default and an impossible ceiling. That reset has since been scoped to links typed into content, so the ceiling is gone and the two groups win with a plain selector.
- Ninja Forms' Submit Button settings had no element to style. Ninja Forms builds its form in the browser and renders `input[type="submit"]`; the module looked only for `input[type="button"]`, so nothing matched. Both are matched now, since older Ninja Forms did render a button.
- The Submit Button colour set on the Gravity Forms and Fluent Forms stylers never appeared on the page. Both form plugins style their own submit button — Gravity Forms through its theme framework, Fluent Forms through a stylesheet written per form — and both outranked the setting, so the button kept the plugin's colour however the Design tab was filled in. The setting now wins.
- Twenty-two of the Gravity Forms styler's thirty-one design sections produced no CSS at all. Section breaks, list fields, the required marker, consent text, the page-step and progress-bar controls, and every button except Submit had a full set of controls in the Design tab that changed nothing on the page. The same fault affected the Login, Register, Lost Password and Reset Password forms, where six of seven sections were similarly inert. Every declared section now emits its styling.
- Design settings on the form stylers were being overruled by the plugin's own default styling. A colour set on a field description, a sub-label, a select or the required marker was generated correctly and then lost to a more specific default, so the setting appeared to do nothing. The defaults now sit below anything you set, on all nine stylers and in both builders.
- Two Gravity Forms design sections painted elements belonging to other sections: Field Description also coloured the section-break and consent descriptions, and Field Label also coloured sub-labels. Setting one colour silently changed another.
- Gravity Forms labels sat on their own line above the field in the classic builder's styler, ignoring the inline layout the form asked for. They now sit beside the field.
- Eight of the nine form stylers that existed at the time offered an "Enable AJAX Submission" switch that could not do anything. Only Gravity Forms accepts that instruction from a module; the rest are embedded by a shortcode that takes nothing but a form id, so the switch has been removed from them rather than left there implying it works. The three stylers added since were built without it. AJAX submission is still available in those plugins' own settings.
- A preset saved from a form styler applied its button styling twice, so a preset could come back with heavier borders, padding and shadows than it was saved with.
- Converting a Divi 4 page kept which form a styler showed and dropped every design choice made about it. The conversion outline mapped two fields and nothing else, so field and label typography, the placeholder, the error and success message styling, and the borders and box-shadows on the field, the submit button and both messages all arrived in Divi 5 unset — the module looked freshly added. 373 mappings across the eleven stylers close it, covering typography, borders, box-shadows, backgrounds and spacing. The two Divi 4 fields with no Divi 5 equivalent are deliberately left alone rather than mapped to a destination that does not exist.
- Post Grid and Post Carousel filtered by one tag when several were chosen, and showed every post on the site when set to the current category. Both modules keep the selection as a list of term ids and handed it to WordPress in a shape it reads differently: a list of tags arrived as a single value and was rounded down to the first one, and the classic builder's "All Categories" and "Current Category" options — which are words rather than ids — were read as zero and dropped the filter altogether, so the module ignored the setting instead of honouring it. A page converted to Divi 5 carried the same words into the same gap. Every chosen tag now counts, "All Categories" means no filtering, and "Current Category" means the category archive being viewed or the categories of the post being viewed.
- Seventeen modules offered far less in Divi 5 than in the classic builder. Advanced Divider was the worst of it: line style, multiple lines, per-side colours and widths, max width, corner radius, the element's placement and spacing, icon and image colour, size and spacing, and all sixteen Lottie settings existed in the classic builder and simply were not there in Divi 5 — and Line Colour and Divider Weight, which the Divi 5 module did offer, produced no CSS at all. Star Rating regained its title tag, stars size, gap and alignment, the gap between title and stars, and its schema.org support, so a converted rating keeps the structured data search engines were reading. Post Element regained the whole element-icon feature — the icon can be a glyph, an image or text again, with its own colour, background, size, spacing and alignment, a second icon beside the title, and the reveal-on-hover behaviour — plus per-element text alignment, full-width featured images, and the choice to sit outside the element wrapper. Post Grid regained its pagination design entirely: alignment, gaps, arrow colour and size, and the spacing of the row, each link and the current one. Video Popup regained its play-icon and text-box styling, the popup backdrop and close-button colours, the overlay image height and the trigger's accessible name. Typing Text regained its custom cursor icon with colour, size and gap, its alignment and text gaps, and the display type of each of its three text pieces. Dual Button regained its separator image, icon colour and size, custom width and content alignment, and its wrapper alignment, layout and gap. Also restored: Business Hours' row and title spacing, day and time column widths and gaps; Breadcrumbs' before-icon; Drop Cap Text's letter margin and padding; Business Day's row alignment, margin and padding; Number Counter's image alt text, media size and spacing and content alignment; Table of Contents' nested indent and link spacing; Step Flow's marker size, glyph colour and background; and Post Reading Time's alignment, the gap between its text pieces, and the margin and padding of the time itself.
- Converting a page from the classic builder dropped settings the modules already had. A conversion outline maps each classic-builder field onto its Divi 5 counterpart, and more than two hundred of them were never listed, so the value was read off the page and then thrown away — Post Grid's column count, column gap and its whole pagination and load-more setup among them. Every classic-builder field on every module is now accounted for: either mapped, or recorded as deliberately retired where Divi 5 has genuinely moved on.
- Icons and spacings converted into a shape Divi 5 does not read. An icon is a packed `&#x4e;||divi||400` string in the classic builder and a `{ unicode, type, weight }` value in Divi 5; a margin or padding is a packed `top|right|bottom|left` string against an object of the same four sides. Both were being copied across verbatim, so a converted icon silently fell back to its module's default glyph and a converted margin was ignored outright. Both are now translated on the way across, on the server and in the browser alike.
- A converted Star Rating could come back showing the wrong number. The classic builder keeps a separate rating for the 0-5 and 0-10 scales, and a separate title position for the inline and stacked layouts; Divi 5 keeps one of each. Both classic-builder fields were being written to the same Divi 5 setting, so whichever was processed last won — often the scale or layout the page was not using, which is how a 4.2 out of 5 arrived as 10. Only the field the page actually renders is converted now.
- A converted Glitch Text came back in the wrong colours unless it was using the first effect. The classic builder stores a primary and secondary colour for each of its five glitch effects; only the first pair was ever mapped, so a layout on effects two through five arrived with defaults. All ten now convert, with the nine belonging to effects the layout does not render skipped rather than overwriting the pair it does.
- A converted Flip Box could face the wrong way. The classic builder offers a different set of directions per animation type and stores each set separately; only the rotate/slide set was mapped, so a Diagonal or Open flip box lost its direction. Each set now converts under the animation type that owns it.
- A converted Breadcrumbs lost its separator icon and fell back to the default chevron, because the icon was copied across as text rather than translated into the value the Divi 5 icon picker reads.
- A module's own links ignored every typography and colour setting. A shared reset marked the font family, size, weight, line height, colour, text transform and text shadow of every `<a>` inside a module as `!important`, which beats specificity — so on the 13 modules that use it, any setting for a link-based element did nothing. The reset now applies only to links typed into content, which is what it was for.
- Post Grid's Load More button never appeared, whatever the setting said, because the module read the load-more options from the wrong attribute group.
- Divi 5 never drew the element wrapper the classic builder puts around a post's parts, so every design setting aimed at it — background, border, spacing — was pointed at an element that did not exist, and the Place Outside The Wrapper switch had nothing to mean. The wrapper is now drawn, and an element set to sit outside it does.
- Ninety-nine design settings across twenty-nine modules were filed as content rather than design, so a style preset and Divi's Copy Module Styles carried everything about the module except the design settings being copied. Colours, sizes, gaps and alignments are now filed by what they actually drive — the page's CSS, its markup, or the frontend script — matching how Divi files its own.
- Eight classic-builder modules — Before After Image Slider, Business Hours, Divider, Drop Cap Text, Dual Button, Flip Box, Post Reading Time and Typing Text — rebuilt Divi's entire module registry every time they drew a background, once per background style per render. On a page with several of them this was enough to exhaust memory outright. They now hand Divi the module they already have.
- Images, Lottie files, videos and icons chosen in a Divi 5 module could render as the literal word "Array" — a broken image, a missing icon, a video that would not load — and left a warning in the log. Seven modules read those pickers as plain text when Divi stores each as a set of values. Affected the Icon Box image and Lottie source, the Inline Content icon, the Advanced Video file and poster, the Team Member image, the Testimonial avatar, the Text Effects mask image, and all three Comparison List status icons.
- Font Awesome icons chosen in a Divi 5 module never loaded their font, so the icon was missing or fell back to another glyph. The check that decides whether a Font Awesome stylesheet is needed only understood how Divi 4 stores an icon, so every Divi 5 icon failed it. Divi 4 modules were never affected.
- Applying a saved preset to a Divi 5 module could overwrite text, links and images on the module you applied it to. Divi sorts a module's settings into groups so that a style preset carries only styling — but a setting that does not say which group it belongs to is treated as styling, and none of ours said. All 852 content settings across 76 modules now declare themselves, so a style preset carries styling alone.
- Uploading an SVG that consists only of a DOCTYPE declaration reached the XML parser as an empty string. The sanitiser checks for empty input before stripping DOCTYPE and ENTITY declarations, and that strip can empty a file that had content a moment earlier.
- The Divi 5 Star Rating ignored the Title Tag setting and always wrote an `<h2>`, so a rating placed inside a page's content broke the heading order screen readers and search engines rely on.
- The Divi 5 Number Counter gave its image an empty alt attribute with no way to set one, leaving the image unannounced to screen readers even when the classic builder had alt text for it.
- Duplicating a post kept only the first value of any meta field stored across several rows — a repeater, a gallery, anything WordPress saves as more than one row under the same key. The copy still succeeded, so the loss was silent: the duplicate came back with one item where the original had several. Every row is copied now.
- An error raised while the JSON, SVG, Font Upload or Divi Library Shortcode extension was starting up escaped instead of being recorded, so the only symptom was a feature quietly not working with nothing in the log to say why. Each now reports the failure against the extension that caused it, matching how the other extensions already behaved.
- The Divi 5 Advanced Divider read the wrong setting for its element placement, so choosing "Top" or "Bottom" for the line position moved the text or icon sideways instead. It also ignored every Lottie playback setting — interaction, loop, speed, delay, direction, renderer and the rest were fixed at their defaults — and used an uploaded Lottie file's raw attribute rather than its URL, so a locally uploaded animation never loaded.
- Two REST methods on the v2 dashboard controller instantiated a class that has never existed in this plugin. Neither is reachable through a registered route, so nothing has hit it, but anything that called them — the filter the controller offers for adding routes, or third-party code — would have stopped with a fatal error. Both are gone.
- Sites or third-party code still using the old `Base\DiviBuilder\Utils` helpers hit a "class not found" error, and the plugin logged one on every page load. Two of those helpers, breadcrumbs and mask shapes, had been moved to a shared location without updating the compatibility layer that points at them, so it referenced classes that no longer existed. Reading the breadcrumbs helper through the old name failed outright rather than forwarding to the new one.

**Internal:**
- The Author Box's two link groups no longer mark their own typography `!important`, nor raise their selector with a `body` prefix and a doubled class. Both were there to beat the module's own link reset; with that reset scoped to unclassed links, keeping them would have meant these two groups outranking a site's theme where Divi's own modules do not.
- Third-party deprecation notices no longer fail the test suite. Two suites run each test in its own process, and anything those processes print is treated as a failure — so a single `(double)` cast deprecated by PHP 8.5, in the Divi theme's own code, produced 56 errors on every run and stopped 55 tests before they finished asserting. A handler installed before WordPress loads now ignores deprecations and leaves every other error alone: a real warning still fails. `SQUAD_TESTS_SHOW_DEPRECATIONS=1` puts them back. The suite reports no errors for the first time, and 69 more assertions than before, because those tests now run to the end.
- `Modules::enable_module()` could not enable anything. It looked a module up by name in a list that is keyed by position, so the lookup never matched and the method returned false for every module ever passed to it; `get_module_info()` returned null for the same reason, and the enable and disable actions fired with no module data. The dashboard was unaffected — it writes the settings directly — so this was public API that no internal caller used, which is exactly the kind a pro add-on reaches for. The annotation that described the list as a map is corrected too, which is what had kept static analysis quiet about it.
- The static analyser was told to ignore every "class not found" and "constant not found" result, and one of the things that hid was real: the two v2 dashboard methods recorded under Bug fixes, calling a class that does not exist. The constant rule now names the three runtime constants it is there for — Fluent Forms' version, and WordPress's own `DB_NAME` and `WPINC` — so a mistyped constant fails again, and the class rule is gone entirely.
- Fluent Forms is the one form integration with no WordPress API behind it, so its form list is read straight from the plugin's own table — the only direct query in the plugin without a note saying why. It now carries that note. It stays uncached on purpose: the caller already holds the result for the request, and Fluent Forms offers no hook to invalidate on, so a longer-lived cache would leave a newly created form missing from the picker with no way to clear it.
- The builder-parity helper script read each module's `edit.tsx` alone and reported fields as undrawn that the canvas does draw one file over — Charts resolves its palette in `chart-data.ts`. It now reads the whole module directory, matching what the test beside it already did, and reports nothing where there is nothing to report.
- One classic-builder field can now convert into a Divi 5 field it shares with a sibling. Star Rating keeps a rating per scale, Glitch Text a colour pair per effect, and Flip Box a direction per animation type, while Divi 5 keeps one of each — so every member of a set converted to the same destination and the last one processed won, whichever the page was actually using. A small conversion class decides which member owns the destination for the layout being converted and tells Divi to skip the rest. It is written twice on purpose: Divi runs the server-side conversion from a JSON file that cannot hold a function, and the browser-side one from a module's registration, which cannot hold a name. Twenty-seven tests pin the choice for every scale, effect and animation type, including the case where the deciding field was left at its default and so is absent from the layout altogether.
- Four places in the Divi 5 code caught an error, carried on without the value, and recorded nothing. Dropping one field rather than the whole module is the right thing to do — but done silently, a broken custom-field integration looked exactly like an empty field, and a failed icon looked like an icon nobody chose. All four now leave a record. The one that mattered most decodes every module's icons, so a failure there meant icons disappearing site-wide with nothing to explain it.
- Building a Divi 5 form styler on PHP 7.4 stopped the page with an undefined-function error. A PHP 8 string function had been introduced into a file the plugin loads on 7.4 earlier in this same release, so no published version carried it. It is recorded here because the rule added to stop it happening again is what remains.
- Five rules now hold this work in place rather than five fixes: no module may read an image or icon picker as plain text; no error may be caught without a record; every content setting must declare its group; every parent module must offer the option groups Divi offers; and dynamic content must resolve per post. Three read the module definitions as shipped, so a module added later is covered from the day it is written.
- The Divi Library Shortcode extension answered to three different names — one in the code, another in the extensions registry, and a third in its own label and shortcodes. It is now Library Shortcode throughout. The stored on/off state is keyed by that name, so the rename ships with a translation step: whichever way you had it set is carried over, and no site has to re-enable it.
- The TypeScript check had been passing while examining no code at all. The project listed the build-tooling files twice, in its own configuration and in the referenced one that owns them, which made the compiler stop before it reached any application code — and the failure was reported in a form the check script did not recognise, so it read the empty result as a clean run. The 358 errors it had recently declared fixed were never fixed; they had stopped being looked for. The overlap is removed, the script now refuses to pass when the compiler exits without checking anything, and the real backlog of 1059 errors is recorded so that new ones fail the check.
- Fifteen JavaScript test suites had been failing to compile rather than failing to pass, because one of the interface libraries they load uses a syntax the build was not configured to read. The 73 tests inside them had not been running at all. The suite now compiles in full: 681 tests across 79 suites.
- The build toolchain had been straddling two major versions of Babel since the revert in 4.6.2: the plugins and presets moved back to 7.x while three packages stayed on 8. One of those was pulling a duplicate compiler into the install, another could not be reached at all, and the third supplies the helper functions compiled into the shipped JavaScript — it happened to still work only because the two versions share a file layout. All three are back in step with the rest of the toolchain.
- Fifty development dependencies are gone from the install, most of them left over from an older build setup or superseded when the linter configuration was rewritten. None reach the shipped plugin; this only shrinks what a contributor downloads.
- Module icons have a single authored source. One generator reads the hand-drawn SVGs and emits all three artifacts from them — the palette icons, the admin registry and the Visual Builder components — so the three can no longer disagree, and no icon is pulled from a third-party library at build time any more. A follow-up repointed the six files still naming the directory the icons had moved out of, including the module-development notes that tell the next person where to put one.
- Five suites now render the modules rather than reading their metadata. Every Divi 5 module is rendered in PHP and its values checked against the markup; every one is rendered again in Jest and in a real browser; the builder canvas is compared against the frontend for the same settings; the frontend scripts are run against the markup the modules actually serve; and all 67 classic-builder modules are rendered both on the page and on the canvas. One spec and one fixture per module, so a failure names the module rather than the suite.
- The design suites ask the browser which rule won rather than trusting the CSS was emitted. Sixty-seven end-to-end specs open a page per module and read back the winning value for each design group, and eleven more do the same for the form stylers, so a setting that emits its rule and loses the cascade now fails where it used to pass — which is how most of the cascade bugs in this release were found. The fixtures they read are generated rather than kept: a page per registered module, a form provisioned in each of the eleven supported form plugins carrying the fields its styler styles, fixtures removed once their module is no longer registered, and Divi's generated CSS cleared and then re-requested so the first test is not the request that rebuilds it. What the suites still do not check is written down in `docs/testing/coverage-gaps.md` rather than left to be rediscovered.
- Composer falls back to git clones when GitHub rate-limits its zipball downloads, which had been failing dependency updates outright, and the static-analysis stubs for the form plugins are current again.
- The classic-builder render suite had been checking the modules against values Divi would never give them. Where a field declares one default for the builder and another for the front end, only the builder's was applied — Divi uses the front-end one and stops looking, so a module such as Lottie was rendered with no source type at all and returned nothing. Twenty-six modules were being measured in a state no visitor sees. Alongside that, several modules were rendered without the one thing they need before they will output anything: an image, a user to describe, a video the parser accepts, a switch that ships off, or in the case of the register and reset-password forms, registration being open and a reset link being followed. Divi also hands a module its shortcode attributes, which the suite was passing as an empty list. Every one of these is now supplied and recorded next to the module it belongs to, so the check renders what a visitor would get: 466 values verified against real markup, up from 440, across the same 65 modules. Fields that a check like this cannot speak to — a CSS length, an image-size name, a date format, a user id — now say so by name instead of looking like values that had stopped appearing.
- An empty error-message box could appear under a file upload on a Gravity Forms form nobody had submitted. Gravity Forms prints the container up front and fills it from JavaScript when validation fails, and hides it in the meantime; the styling this plugin applies to error messages was more specific than that, so the empty container was shown instead — and grew a background and a border as soon as anyone styled the error message. Error styling now applies only to a message that has something to say, which leaves the form plugin's own rule to hide the empty one. The same applies to the eight other form plugins, several of which print their message containers the same way.
- Divi sorts a module's settings into preset buckets — content, markup, script and style — and a preset only writes the settings in its own bucket. Twenty-four settings were in the wrong one: the Lottie playback controls (interaction, loop, speed, mode and direction) and, on all nine form stylers, the two builder-preview switches and Gravity Forms' AJAX switch were all filed as content. Divi files the equivalent settings on its own modules as markup, and its AJAX-style switches as script, so these now match. Applying a preset carries the settings you would expect it to.
- Eight tests of the Divi 5 form-styler base class failed rather than skipping on a site running Divi 4. The class declares itself only when Divi 5 is present, so it was absent and the tests errored with "class not found" instead of standing aside the way the rest of the Divi-dependent tests do.
- The compatibility layer kept for the class names retired in 3.3.3 is gone — seventy-nine files that existed only so code written against the old names kept working. Squad Modules Pro 2.2 and later target the current names and refuse to run against a release old enough to need the old ones, so nothing supported still reaches them. This removes about 600KB from the download. Anyone running a Pro older than 2.2 should update it alongside this release.
- A resized checkbox or radio could show two marks at once. Several form plugins draw their own tick or dot with a pseudo-element rather than letting the browser do it, and that survives the takeover needed to make the size setting work — so the plugin's mark and this plugin's sat on top of each other. The plugin's own is now suppressed while the control is resized, and left alone when it is not.
- The WordPress.org listing artwork understated the plugin. Its banner advertised "50+ modules" and "5+ extensions" against an actual 67 and 8, because those figures had been copied from a marketing page years ago rather than counted. The banners and icon are regenerated, the numbers are counted from the module and extension registries and kept in one place so a banner and a social card cannot disagree, and a right-to-left version is included for the first time — Arabic, Hebrew, Persian and Urdu listings were being shown a banner anchored to the wrong side. The banner now leads with the module count and carries a row of the module icons themselves, and its one sentence names the two builders rather than saying "both builders" — the layout that ships hides the supporting line, so that sentence is all a listing shows, and it was assuming the reader already knew Divi has two.

= 4.6.2 (15-08-2026) =

**New:**
- Every form styler can now style three areas that previously had no settings at all: the grid that spaces the fields apart, the footer holding the submit button, and select fields on their own. The gap between fields belongs to the grid containing them and the space above the submit button belongs to the footer, so neither could be reached by adjusting the fields themselves — the only way to change them was to write CSS by hand. Select fields are kept separate from the shared field padding because a dropdown carries an indicator glyph and rarely suits the same padding as a text input. The controls are available across all nine stylers — Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, Forminator, Formidable, MetForm and SureForms — in both builders and the Visual Builder preview. Only the areas a plugin actually renders are offered: the field grid appears where the plugin lays fields out on a grid (Gravity Forms, Formidable), the footer where there is a container holding the submit button (all but Contact Form 7), and select fields everywhere.
- Gravity Forms gained controls for elements that were previously unstyleable: the next, previous, save-and-continue and file-upload buttons used by multi-page, draft-saving and file-upload forms, the image-choice field, and the per-field validation message (kept separate from the form-level summary).
- Contact Form 7, WPForms, Fluent Forms, Formidable, Forminator, MetForm, SureForms and Ninja Forms gained a per-field validation message background, margin and padding, so the error text under a field can be styled independently of the form-level error box.
- Divi 5's Gravity Forms styler gained the design controls the Divi 4 one already had: form title, form description, field descriptions, sub-labels, the required indicator, section breaks with their titles and descriptions, and complex fields such as name and address.

**Bug fixes:**
- Gravity Forms styler: none of the design settings had any effect on most forms. Every selector required the class set Gravity Forms applies only to its Orbital theme, so on a form using the Gravity Forms theme — which is what a form gets unless its theme was changed — the button colour, typography, spacing and borders all silently did nothing. The selectors no longer depend on which form theme is active.
- The form pickers in the Divi 5 builder listed no forms, and could show "Oops, an error has occurred" in place of the field, leaving no way to choose a form for any styler. Divi 5 ships its own copies of the libraries the builder is built on, and ours were compiled against WordPress's copies instead. That caused the two failures together: the picker searched for the form list in a data store that never held it, and a second copy of the interface library loaded alongside Divi's, which crashes any field that Divi renders. The builder now uses Divi's copies throughout, as Divi's own fields do.
- The list of available forms was also sent to the builder too late to be seen. It was assembled during a later request than the one that delivers the builder's initial data, so the pickers had already looked for it and found nothing. It is now ready before that data is sent.
- The Divi 5 form pickers opened with the "Select a form" placeholder — the option intended for the Divi 4 frontend — auto-selected as if it were a real form, which then rendered nothing. The placeholder no longer reaches the builder's form list.
- Most of the Divi 5 design sections for the Gravity Forms styler did not appear in the builder. The settings existed but were never registered as panel sections, so there was nowhere to show them. All twenty now appear, ordered outwards from the form: form and field grid, footer, titles, fields, sections, submit button, then messages.
- Gravity Forms: the Field Elements toggle appeared in the builder with its sub-tabs duplicated, because the module redefined a toggle the base form styler already provides and the two definitions were merged instead of one replacing the other.
- Ninja Forms: the submit button's design settings only matched an `<input>` submit. Form plugins have been moving to `<button>` for accessibility — Gravity Forms did so in 3.0 — and the settings would have silently stopped applying. Both are matched now.
- MetForm and SureForms: the validation and error message controls pointed at the same element, so one could not be styled separately from the other. They are now split into the per-field message and the form-level response.
- The Divi 5 modules disappeared from the Visual Builder module library. A stale build had baked a module-parsing error into the Divi 5 bundle, so the script that registers the modules threw as soon as it ran and none of them appeared. The bundle is rebuilt cleanly, so the modules load again.
- The Divi 5 modules loaded in the builder with none of their styles. No Divi 5 module imported its stylesheet, so the styles were never compiled and the bundle's stylesheet never existed — the builder silently served the modules unstyled. Every module's stylesheet is now part of the build and loads in the builder and frontend.
- The Divi 5 bundle could fail to build at all after a tooling update. The TypeScript compiler used for the build stopped removing type-only imports, so a package that ships raw TypeScript got pulled into the bundle and broke it. The imports are now written in a form that is always removed, and the compiler is pinned to the version the build works with.

= 4.6.1 (14-08-2026) =

**Bug fixes:**
- Hover Box produced a fatal error instead of rendering in the classic Divi builder. It referenced one of Divi's own classes without importing it, so PHP looked for that class inside the module's own namespace and stopped with "Class not found" as soon as the module tried to output its overlay styles, which happens on every render.
- The Gravity Forms styler could stop the Divi 5 builder loading a form, showing "Oops! An Error Has Occurred. This content could not be displayed." It captured the form with an output buffer, and if Gravity Forms failed while producing the form the buffer was left open, so stray output reached the builder and it could not read the response. The form is now requested directly, the way the Divi 4 module has always done it.
- Post Grid could take a page down. Its post-element filters passed the post object where the markup belonged, so any other plugin hooking them received the wrong type and crashed the page — WordPress's own text formatting was enough to trigger it. The filters now pass the markup, with the post alongside it as context.
- With both Post Grid and Post Carousel enabled, every post element was rendered twice, once by each module. Each module now renders only its own output.

**Improvements:**
- The gallery image helper was duplicated once per builder; it is now a single shared class.
- Documentation accuracy: several files still said Post Carousel was Divi 5 only and that 64 of the 65 modules ran in Divi 4. All 65 have run in both builders since 4.6.0.
- Post Carousel was missing from the WPML configuration, so its attributes were invisible to translation tooling.

**Internal:**
- The code quality checks that had been switched off in CI are running again. PHP coding standards, static analysis and the PHP test suite were all disabled, so none of them had run against any change.
- Style and script linting could not report problems without also rewriting files, because both commands had the fix flag built in. Each now has a separate check and fix command. Turning checking on surfaced 958 stylesheet problems and 320 script problems that had been passing silently; all of them are resolved, and several were rules configured to contradict each other rather than faults in the code.
- Divi 4 preview components no longer nest conditional expressions several levels deep, and three of them declared their render method after private helpers. A shadowed variable and a stale module path in the type declarations are also fixed.

= 4.6.0 (09-08-2026) =

**New:**
- Post Carousel is now available in the classic Divi builder. It previously existed only for the Divi 5 Visual Builder, so enabling it in Divi 4 appeared to do nothing. It shares Post Grid's query and post elements, so every element type, icon and design option carries over.

**Bug fixes:**
- Converting a Divi 4 layout to Divi 5 silently changed heading tags: Business Hours became a `span`, Flip Box titles became `h3`, Flip Box subtitles became a `div`, and the Advanced Divider's text became a `span`. Those modules now expose the same heading-tag control in both builders, and a converted layout keeps the tag you chose.
- The uninstall routine has never run for anyone: `uninstall.php` was excluded from the released package, so removing the plugin left its options, transients and custom table behind.
- Modules that only work in one builder are now labelled, and the switch is disabled when your site cannot use them, instead of turning on with no visible effect.
- Button settings on Flip Box and the nine form stylers exposed a stray control created by a mis-nested field definition.
- The packager rewrote a date inside the changelog on every build.

**Improvements:**
- Builder detection now asks Divi directly whether Divi 5 is enabled, so sites that deliberately run the classic builder are treated correctly.
- Accuracy pass over the bundled documentation: several files still described the previous release, and one told contributors to edit a generated file.

**Internal:**
- Coding standards now check the module code. A pattern intended to skip `node_modules` was also skipping every Divi module, leaving 189 of 327 PHP files unchecked; the 522 issues that surfaced are fixed, including two double-escaped values in the login and lost-password forms.
- Divi modules can now be built inside the test suite, so field definitions are actually executed rather than only inspected. This immediately caught the button-field defect above.

= 4.5.0 (08-08-2026) =

**Bug fixes:**
- Divi 4 parent modules now render their child shortcodes correctly under the latest Divi, fixing timelines and other nested modules that showed raw `[disq_*]` text on the front end and in preview.
- Inline Content: the Divi 4 item module had no settings and produced no output, so the whole module was blank. It now renders all five content types (text, icon, image, button, divider) and matches the Divi 5 output exactly.
- Logo Grid and Logo Carousel: column count, gap, logo sizing and every hover effect (grayscale, opacity, zoom) never reached the page in Divi 5. They now apply.
- Image Mask: the Divi 5 decoration layers rendered with no fill colour.
- Social Share: every share button linked to an empty target, "Icon + Text" never showed labels, and a second module on the page inherited the first one's link.
- Heading level controls in Social Share, Step Flow and Team Member changed the text size but never the heading tag, producing a document outline the author did not choose.
- Post Grid: the Advanced Custom Field element bypassed ACF's own value formatting; the Comments "Before Text" setting was permanently empty; pagination labels containing `&` were double-escaped.
- Dual Button: the alignment control did nothing in vertical layout.
- Star Rating: the default star size was ignored, and the review schema markup was malformed.
- Author Box: choosing the SPAN tag silently rendered an H4; avatar alt text was double-escaped.
- Divider, Business Hours, Flip Box: heading tag settings could resolve to an empty value and remove the element entirely.
- Timeline Item and Logo Carousel Item: border and radius settings never appeared in the builder.
- Lottie, Business Hours, Post Reading Time, Image Mask: several settings targeted elements the modules never output, so they had no effect.
- Google Maps (Divi 5): the module script was not enqueued and errors were silent.
- Contact Form 7, Fluent Forms, Formidable, Forminator, Gravity Forms, Ninja Forms, MetForm, SureForms, WPForms: a module added without a form selected produced a PHP warning; the Field Label typography control had no effect; Ninja Forms fired the wrong hook.

**Security:**
- Gradient Text and Glitch Text now validate the wrapper tag and effect name against a strict allowlist instead of trusting the stored value.
- Flip Box buttons that open in a new tab include `rel="noopener"`.
- REST endpoints no longer return raw exception messages.
- Extensions that are disabled can no longer load because of a faulty guard.

**Improvements:**
- Divi 5 modules now register their per-instance CSS through Divi's native style pipeline instead of writing an inline `<style>` tag per module, so the CSS takes part in Divi's critical-CSS and deduplication.
- Design settings that are marked responsive now work on tablet and phone, where previously only the desktop value was ever used.
- New v4 plugin icon and icon set.
- Accessibility: decorative icons are hidden from screen readers, icon-only video triggers have labels, and empty avatar wrappers are no longer emitted.

= 4.4.1 (14-07-2026) =

**Security:**
- Breadcrumbs schema output now escapes the home URL with `esc_url()`.
- Visual Builder button previews add `rel="noopener noreferrer"` to links that open in a new tab.
- Hardened admin-script JSON parsing against malformed data.

**Bug fixes:**
- Fixed a fatal error that could leave WordPress admin pages blank when another plugin passed a non-string value through the admin footer text filter (a strict return-type mismatch on PHP 8).

**Improvements:**
- Confirmed compatibility with Divi 5.9.0.
- Network-aware uninstall now removes plugin data across all sites when the plugin is uninstalled on a multisite network.

= 4.4.0 (03-07-2026) =

**New Modules — (Wave 3: breadth fill, native in both builders):**
- **Image Accordion** — horizontal and vertical expanding image panels, hover or click triggers, responsive collapse, and free-form nested-module content per panel; repeatable child items.
- **Step Flow** — numbered process steps with icon / image / number markers, vertical or horizontal orientation, connector styling, and scroll-triggered reveal; repeatable child steps.
- **Text Effects** — trendy typography effects: image-mask (image-fill) text, text stroke / outline, and animated gradient fill; reuses the existing gradient/glitch text-effect infrastructure.
- **Comparison List** — feature checklist with three per-row states (included / excluded / neutral), each state's icon set via a Divi icon-picker plus colour; responsive columns, row divider and zebra rows, and nested content per row; repeatable child rows. Completes the "comparison" trio with the shipped Pricing Table and Data Table.

**Improvements:**
- The free module library grows to 65 modules — 64 run in both Divi 5 and Divi 4 (Post Carousel remains Divi 5-only), completing Wave 3 of the free-module roadmap.
- Every new module loads its assets per-page (no global bloat) and is pure CSS with no added frontend JavaScript.
- Extended WPML String Translation config to cover every module's translatable attributes, backfilling 18 modules (Wave 3 plus the Wave 2 set) that were missing entries.

= 4.3.1 (30-06-2026) =

**Improvements:**
- All 61 modules now display their correct icon in the Divi 5 Visual Builder module palette.
- Improved stability and consistency of all modules in the Divi 5 Visual Builder.

**Bug fixes:**
- Fixed several Divi 5 module settings panels that could show blank or incorrect controls in the Visual Builder.
- Fixed module decoration settings (fonts, background, design) for modules where they were not applying correctly in Divi 5.
- Fixed a packaging issue where required plugin files could be missing from the downloaded zip in some environments.
- Hardened all PHP files against edge-case loading issues on non-standard WordPress setups.

= 4.3.0 (24-06-2026) =

**New Modules — (modules other Divi packs charge for):**
- **Countdown Timer** — evergreen and fixed-date modes, on-expiry actions (hide/redirect/show message), timezone-aware, no external JS.
- **Timeline** — vertical and horizontal orientation, alternating/one-side layouts, scroll-triggered reveal, icon/image/number markers; repeatable child items.
- **Data / Comparison Table** — responsive (stack/scroll), highlight column/row, sticky header, optional client-side sort, ribbon and CSV-style paste; repeatable child rows.
- **Charts** — Bar / Line / Pie / Doughnut in one module (Chart.js), multi-dataset, animate-on-scroll, accessible canvas. Chart.js loads only when a chart is present.
- **Floating Chat Button** — WhatsApp / Telegram / Messenger / phone / email / custom deep links, online-hours scheduling, prefilled messages; GDPR-friendly, no third-party script; repeatable child channels.
- **Reading Progress Bar** — top/bottom bar or corner ring, per-content-area target, color/gradient, hide-on-complete. Tiny footprint.
- **Image Hotspots** — unlimited percentage-positioned pins with tooltips, dot/icon/number markers, hover or click trigger, keyboard-accessible; repeatable child pins.

**Improvements:**
- The free module library grows to 61 modules — 60 run in both Divi 5 and Divi 4 (Post Carousel remains Divi 5-only).
- Adds Chart.js as a per-page vendor dependency, enqueued only when a Charts module renders.
- Extended WPML String Translation config for every new module's translatable attributes.

= 4.2.0 (20-06-2026) =

**New Modules:**
- **Team Member** — team/staff cards with photo, role, bio, social links and schema.org `Person` markup; repeatable child items.
- **Testimonial** — customer reviews with avatar, rating, name/role and schema.org `Review` markup; repeatable child items.
- **Pricing Table** — responsive pricing plans with featured-column highlight, ribbon, tick/cross feature lists, CTA button and per-plan accent + button text colours; repeatable child items.
- **Icon Box** — blurb-style box pairing an icon, image or Lottie animation with a title, content, optional badge and a clickable box link, with top/left/right layouts.
- **Advanced Tabs** — tabbed content with horizontal / vertical layouts, mobile-accordion mode, icon tabs, URL-hash deep-linking and full keyboard/ARIA support; repeatable child Tab items.

**Improvements:**
- The free module library grows to 54 modules — the largest of any free Divi pack — with 53 running in both Divi 5 and Divi 4 (Post Carousel remains Divi 5-only).
- Extended WPML String Translation config for every new module's translatable attributes.

= 4.1.1 (19-06-2026) =

**Security:**
- Fixed XSS in Typing Text (D4) — `text_element_tag` prop was used as a raw HTML tag name without allowlist validation; `wp_kses_post()` on a plain string like `script` does not strip it.
- Fixed CSS injection in Image Gallery (D4) — `esc_attr()` on CSS custom-property values does not strip `;`; replaced with `absint()` and `sanitize_css_length()`.
- Fixed CSS injection in Image Mask (D5) — decoration layer fill color written into a `<style>` block via `esc_attr()` instead of `sanitize_css_background()`.
- Fixed CSS injection in Post Grid (D5) — gap CSS custom property value not length-validated before insertion.
- Fixed CSS injection in Video Popup, Image Mask (D4) — color and transform values interpolated into `set_style()` declarations without sanitization.
- Fixed CSS injection in Gradient Text, Skill Bar, Divider (D5) — missing semicolons in declarations and wrong escape function in class attributes.
- Fixed XSS across 9 D4 modules (Scrolling Text, Dual Button, Drop Cap Text, Advanced Button, Table of Contents, Text Highlighter, Drop Cap Text, Lottie, Glitch Text) — prop values used in HTML output without proper escaping.

**Bug fixes:**
- Fixed output-buffer leaks in all 4 Auth form modules (D4) — catch blocks returned without calling `ob_get_clean()`, leaking the open buffer on exceptions.
- Fixed Forminator form condition (D4) — inverted `'' !== $form_html` meant the form never rendered; corrected to `'' === $form_html`.
- Fixed Post Reading Time wrong toggle slug and broken CSS selector (D4).
- Fixed Flip Box front button border applying to wrong slide (D4) and missing leading dots in several CSS selectors.
- Fixed Video Popup icon opacity selector and wrong `use_overlay` default (D4).
- Fixed Star Rating display type default and wrong font transition group (D4).
- Fixed Post Grid Child `prop()` fallback typo `' off'` → `'off'` (D4).
- Fixed ob_start leak in Post Grid and Ninja Forms catch blocks (D4).
- Added missing `aria-hidden` on decorative elements in Breadcrumbs and Hover Box (D4).
- Added missing image alt field to Number Counter (D4).
- Added missing root CSS classes and fixed VB preview styles for 24 Divi 5 modules.
- Fixed Skill Bar spacing selector and Post Grid load-more button style (D5).

**Refactor:**
- Consolidated `sanitize_css_background()` and `sanitize_css_length()` into the D4 and D5 abstract base classes — removed 43 identical private static copies across module files (-6,087 lines).

= 4.1.0 (09-06-2026) =

**New Modules:**
- **Social Share** — share buttons for popular networks, fully server-rendered and CSS-only.
- **Table of Contents** — auto-generated, anchor-linked contents from page headings.
- **Number Counter** — animated count-up numbers with prefix/suffix and styling controls.
- **Advanced Button** — richer button with dual icons, hover styles, and states.
- **Text Highlighter** — animated highlight/underline effects for emphasis text.
- **Inline Content** — mix text, icons, images, buttons, and dividers in a single flowing line.
- **Hover Box** — reveal content on hover with CSS-only transitions.
- **Animated Heading** — headlines with rotating/animated phrases.
- **Floating Images** — decorative images with parallax-style floating motion.
- **Image Reveal** — images that reveal on scroll or hover.
- **Advanced Video** — styled video player with custom poster and overlay controls.
- **Image Carousel** — touch-friendly image carousel with autoplay, loop, and effects.
- **Logo Grid** — responsive grid/marquee of brand logos.
- **Skill Bar** — animated progress/skill bars with labels and percentages.
- **Author Box** — author bio block with avatar, social links, and layouts.

**Admin Dashboard Redesign:**
- Rebuilt the admin area as a modern React single-page app (Tailwind + shadcn) with a light/dark theme.
- Live dashboard stats and a modules-by-category library breakdown.
- Modules and Extensions management with search, category filters, bulk actions, and an unsaved-changes save bar.
- What's New changelog timeline, real Freemius affiliate program terms and application status, and an Account screen with license activation and an anonymous-usage-sharing toggle.
- Brand-aligned Freemius account, pricing, and affiliation pages.

**Changes:**
- Renamed the admin page slug from `divi_squad_dashboard` to `divi_squad`. Existing links and bookmarks to the old slug (including Freemius sub-pages) are permanently redirected to the new slug automatically.

**Improvements:**
- Reorganized the Divi 4 and Divi 5 builder source into a shared structure, consolidating cross-version Supports/Module helpers and the build shell.
- Standardized PHP interface and class naming, and added per-module brand icons for the Divi 4 builder.
- Generated an inline module-icon registry at build time for the admin app.
- Expanded automated test coverage for the core and builder layers.

**Bug Fixes:**
- Fixed two fatal errors in the Inline Content module caused by method overrides incompatible with `ET_Builder_Element` (`render_button`, `render_image`).
- Fixed the Modules/Extensions batch enable/disable save path and URL-unsafe category routes in the REST API.
- Corrected the admin REST namespace, dashboard live-data mapping, and several admin styling regressions against wp-admin core CSS.

= 4.0.0 (30-05-2026) =

**Major: Native Divi 5 (Block API) support**
- All Squad modules now run as native Divi 5 block modules in the new Visual Builder, alongside continued support for the classic Divi 4 builder.
- Ported the Content, Creative, and Media modules to Divi 5 (Dual Button, Flip Box, Drop Cap Text, Glitch Text, Gradient Text, Scrolling Text, Typing Text, Star Rating, Breadcrumbs, Divider, Google Map, Business Hours, Image Mask, Image Gallery, Before & After Image Slider, Lottie, Video Popup, and more).
- Ported all Form Styler modules to Divi 5 — Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, and Forminator — and added new stylers for Formidable Forms, MetForm, and SureForms.
- Ported Post Grid and Post Element to Divi 5 with full parity: query options (recent/category/tag, exclude, current-loop/related posts), 16 element types, per-element icons and separators, numbered pagination, and AJAX load more.

**New Features:**
- New **Post Carousel** module — showcase posts in a touch-friendly Swiper carousel with responsive slides-per-view, gap, transition speed, autoplay (with pause-on-hover), loop, navigation arrows, pagination dots, and slide/fade/coverflow effects.
- New **Post Reading Time** dynamic-content module for Divi 5.

**Improvements:**
- Sub-element style controls now nest cleanly under named design groups (e.g. Slide Item, Form, Field, Submit Button) across all Divi 5 modules.
- Added a base style layer and brand-aligned icons to the Divi 5 modules.
- Expanded automated test coverage for the core and builder.

**Bug Fixes:**
- Fixed Divi 5 module frontend rendering (module registration timing and upload/gallery field handling).
- Fixed admin dashboard issues: version badges always showing "Nightly", incorrect Pro lifecycle detection, notice auto-slide timer, feature-list state handling, and removed dead navigation code.
- Numerous Divi 5 form-styler, asset-loading, and CSS-grouping fixes.

= 3.4.4 (24-08-2025) =

**New Features:**
- Enhanced ESLint configuration with WordPress coding standards support
- Improved build system stability with better error handling

**Improvements:**
- Simplified ESLint configuration for better performance and maintainability
- Enhanced code quality enforcement with proper TypeScript and React support
- Improved build process reliability and faster compilation times
- Optimized tab indentation and JSX support for WordPress coding standards

**Bug Fixes:**
- Fixed PHP sprintf format specifier error in Image_Mask module causing fatal errors
- Resolved ESLint maximum call stack size exceeded errors in multiple React components
- Fixed syntax errors in DualButton, FlipBox, Breadcrumbs, and PostGrid modules
- Removed problematic ESLint disable comments causing build failures
- Improved build process stability and eliminated infinite recursion issues

= 3.4.3 (22-07-2025) =

**New Features:**
- Added secondary mask shape option to Image Mask module for more creative designs
- Improved deprecated classes management with JSON-based caching system

**Improvements:**
- Simplified admin notice system with improved argument merging

**Bug Fixes:**
- Fixed admin notices not displaying properly in certain scenarios
- Resolved Image Mask module not rendering secondary shapes correctly
- Improved compatibility with latest WordPress standards
- Resolved deprecated classes loading conflicts

= 3.4.2 (20-06-2025) =

**New Features:**
- Added WPML compatibility for 8 new modules including Image Gallery, Video Popup, Forms modules, Google Map, and Gradient Text
- Updated wpml-config.xml with translatable attributes for all new modules

**Improvements:**
- Updated security policy with clear vulnerability reporting process
- Optimized module loading with improved performance for form modules

**Bug Fixes:**
- Fixed responsive issues in Flip Box module on mobile devices
- Fixed issues with Dual Button module not displaying correctly in the Frontend
- Fixed issues facing fatal errors in the admin area when try to update footer text
- Fixed issues with divider max-width default values
- Fixed issues to close notice banner in the admin area
- Resolved compatibility issues with WordPress 6.8

= 3.4.1 (01-05-2025) =

**New Features:**
- Added new SVG files for various components (banner, blog, feature, gallery, hero, logo, portfolio, product, service, square, team-member, and testimonial)

**Improvements:**
- Enhanced Divi detection system with improved theme and plugin identification
- Improved core initialization process with better error prevention

**Bug Fixes:**
- Fixed Ninja Forms compatibility with updated function name references
- Fixed circular dependency issues during plugin initialization
- Optimized plugin loading sequence for better performance


= 3.4.0 (21-04-2025) =

**Improvements:**
- Enhanced asset management system with additional filters for better extensibility
- Refactored admin notices system for better UI and React compatibility
- Added more extensibility points for developers
- Implemented Hookable interface and improved class loaders

**Bug Fixes:**
- Fixed "Call to undefined method" error in menu items localization
- Fixed modules loading issues
- Fixed extensions loading issues
- Fixed looping issues in notices system


= 3.3.5 (14-04-2025) =

**Bug Fixes:**
- Added error handling for style enqueuing in Assets.php
- Fixed missing periods in comments in Divi
- Updated theme and plugin version retrieval to use Divi::get_builder_version


= 3.3.4 (14-04-2025) =

**Bug Fixes:**
- Fixed an issue to load forms module not showing up in the visual builder and frontend.


= 3.3.3 (14-04-2025) =

**Improvements:**
- Enhanced Image Gallery module with improved type definitions, error handling, and styling
- Refactored PostGrid methods to improve type hinting and error handling


= 3.3.2 (05-04-2025) =

**Bug Fixes:**
- Fixed an issue in the modules management dashboard that pro modules were not showing up in the modules management dashboard.


= 3.3.1 (05-04-2025) =

**Bug Fixes:**
- Fixed an issue to resolve WordPress custom fields not displaying correctly in the Post Grid module.


= 3.3.0 (04-04-2025) =

**New Features:**
- Added new performance optimization framework for all modules
- Introduced improved module loading system for faster page rendering
- Enhanced developer API for better extensibility

**Bug Fixes:**
- Fixed inconsistent module behavior in certain edge cases
- Resolved compatibility issues with the latest Divi updates
- Fixed styling inconsistencies in form modules

**Improvements:**
- Enhanced code consistency and organization across multiple files
- Improved import order for better performance and maintainability
- Optimized core functionality for faster loading times
- Updated dependencies to latest compatible versions
- Improved compatibility with WordPress 6.7
- Reduced JavaScript bundle size for faster loading


= 3.2.5 (28-02-2025) =

**Bug Fixes:**
- Fixed: Resolve an issue in the Flip Box module where the front-end and back-end body text typography (paragraph) styles is not shown


= 3.2.4 (05-02-2025) =

**Bug Fixes:**
- Fixed: Resolve an issue to validate plugin requirements.

= 3.2.3 (03-02-2025) =

**Improvements:**
- Upgrade the publisher sdk to the latest version 2.11.0

= 3.2.2 (31-01-2025) =

**Bug Fixes:**
- Fixed a fatal error to activate the pro plugin

= 3.2.1 (20-01-2025) =

**Bug Fixes:**
- Fixed a fatal error in the SVG extension

= 3.2.0 (14-01-2025) =

**New Features:**
- Introduced requirements page when Divi or Divi plugin exists in the WordPress installation
- New Forminator Module added to form styler system

**Bug Fixes:**
- Fixed custom fields table missing issue in fresh setup
- Fixed admin menu icon display for Divi Squad menu
- Fixed Forms module not working with empty forms
- Fixed plugin activation and deactivation issues
- Fixed unwanted HTML markup rendering when icon is empty
- Fixed elements gap not working in Flipbox module
- Fixed Gradient Text module not working in Visual Builder
- Fixed image compare viewer in Before After Image Slider module
- Fixed type error in Star Rating module at Visual Builder
- Fixed Video Popup module frontend functionality
- Fixed render method requirement for Divi module components in JS
- Fixed admin menu background colors issue

**✨ Improvements:**
- Tested for compatibility with WordPress 6.7

= 3.1.9 (26-10-2024) =

**Bug Fixes:**
- Fixed an issue before after image slider is not working in the frontend

**Improvements:**
- Compatibility with wordpress 6.7

= 3.1.8 (26-10-2024) =

**New Features:**
– feat: linking option added to feature image in Divi Post Grid Module

= 3.1.7 (23-08-2024) =

**Bug Fixes:**
- Fixed an issue to save enable modules

= 3.1.6 (18-08-2024) =

**Bug Fixes:**
- Compatibility with pro plugin

= 3.1.5 (18-08-2024) =

**Bug Fixes:**
- Compatibility with pro plugin

= 3.1.4 (15-08-2024) =

**New Features:**
- feat: linking option added to title, author, avatar, categories and tags in Divi Post Grid Module
- New: Added compatibility with RankMath SEO plugin

= 3.1.3 (05-08-2024) =

**Bug Fixes:**
- Fix: Issues with advanced fields(border) in the latest Divi theme version
- Fix: An issue with custom fields for Divi Post Grid Module and Divi CPT Grid Module
- Fix: An issue with Pro plugin compatibility with the latest version of the Lite plugin


= 3.1.2 (04-08-2024) =

**Bug Fixes:**
- Bug fixing and compatibility with latest pro plugin


= 3.1.1 (04-08-2024) =

**Improvements:**

- feat(freemius): fixed an issue to receive update from freemius server
- feat(admin-app): update badges with nightly, lite and pro
- compatibility: ensure older version from 1.0.0 working with current version


= 3.1.0 (01-08-2024) =

**New Features:**

- New Elements (custom icon, custom fields, custom fields(acf)) Divi Post Grid Module
- New support for custom fields including acf with Divi Post Grid Module
- New languages (Arabic, Dutch, English (UK), French (Canada), French (France), German, German (Austria), Spanish (Peru), Spanish (Spain) ) for Divi Squad Modules Lite plugin
- Update languages (Bengali (Bangladesh), Portuguese (Brazil)) for Divi Squad Modules Lite plugin

**Bug Fixes:**

- Fix: Filter by tags is not working in frontend with Divi Post Grid Module
- Fix: An fatal errors issue when old vesion of Divi Squad Modules Pro is installed with Divi Squad Modules Lite

**Improvements:**

- Improved: Divi Squad Modules Admin UI (More flexible, more user-friendly)
- Improved: Security issues, Data sanitization and validation for all modules
- Improved: Squad Copy Extension.
- Tested for compatibility with WordPress (6.7 beta)
- Tested for compatibility with WordPress (6.6.1 stable)
- Tested for compatibility with Divi Theme (4.27.0)
- Tested for compatibility with Contact Form 7 (5.9.8)
- Tested for compatibility with Fluent Forms (5.1.20)
- Tested for compatibility with WPForms (1.8.9.6)
- Tested for compatibility with Gravity Forms (2.8.15)
- Tested for compatibility with Ninja Forms (3.8.9)


= 3.0.1 (16-07-2024) =

**Bug Fixes:**

- Fix: Fatal error when activating the pro plugin.


= 3.0.0 (23-06-2024) =

**New Features:**

- New Brand logo for Squad Modules Lite
- Load More Feature for Divi Post Grid Module
- New Issue or Feature request form through the GitHub repository

**Bug Fixes:**

- Fix: Icon Vertical alignment does not work properly in the Divi Advanced List Module (PRO)
- Fix: Item inner gap does working in builder for Advanced Blurb Module (PRO)
- Fix: Fatal error when show lightbox feature is enabled in the Divi Image Gallery Module
- Fix: The lightbox is not working in The Divi Image Gallery Module
- Fix: Unable to detect pro version installation from core plugin
- Fix: Separator and Before icon does not show properly in Breadcrumbs Module
- Fix: The plugin review banner is not closing properly in WordPress Playground.
- Fix: Pro plugin is not syncing with the lite plugin.
- Fix: Squad Module asset loaded by theme unexpectedly
- Fix: Fatal error when divi want to enqueue asset file out of squad page
- Fix: Affiliate page does not working in WordPress Playground due to a fatal error, currently it turn off here only.
- Fix: Uncaught Error: Call to undefined function DiviSquad\Utils\get_current_screen().
- Fix: Modules are not saved properly when use try to save particular modules.
- Fix: Divi Post Grid Module is not working properly.

**✨ Improvements:**

- Improved: Squad Modules Pro Admin UI (Header, Error Page) (More flexible, more user-friendly)
- Improved: Data sanitization and validation for all modules
- Improved: Squad Copy Extension.
- Tested for compatibility with WordPress 6.6 (beta)
- Tested for compatibility with WordPress 6.5.4 (stable)
- Tested for compatibility with Divi Theme 4.25.2
- Tested for compatibility with Contact Form 7 5.9.6
- Tested for compatibility with Fluent Forms 5.1.19
- Tested for compatibility with WPForms 1.8.8.3
- Tested for compatibility with Gravity Forms 2.8.11
- Tested for compatibility with Ninja Forms 3.8.4


= 2.1.2 (24-04-2024) =

**New Features:**

- Introduced form field width feature for WPForms module
- Introduced new font extensions support for Font Extensions

**Bug Fixes:**

- Fixed: the post grid show all the posts instead of the selected category.

**✨ Improvements:**

* Tested for compatibility with Divi Theme 4.25.0
* Tested for compatibility with WordPress 6.5.2


= 2.1.1 (09-04-2024) =

**Bug Fixes:**

- Updated: Ninja Forms now properly displayed in the forms list.
- Resolved: Plugin review not closing properly.
- Resolved: Incorrect XHR URL for pro-activation, review, and license pages.
- Removed: Third-party asset from Squad pages for improved performance.
- Fixed: Issue with the feature lock button functionality.
- Fixed: Squad features (modules and extensions) not loading initially.
- Fixed: Background fields not functioning as expected.
- Fixed: Styles not applying correctly in the WP Forms Module.

= 2.1.0 (03-04-2024) =

**New Features:**

* Introduced loading preview for modules and extensions at the dashboard
* Introduced available professional modules in the lite version for preview
* Introduced upgrade to professional plan feature for the lite version
* Introduced Plugin localization support with JSON format.

**Bug Fixes:**

* Fixed the plugin name in the plugin dashboard at affiliate page.
* Fixed all dependent modules (Contact Form 7, Fluent Forms, Ninja Forms, WP Forms, Gravity Forms) is not loaded in the divi builder event when the module is active.
* Fixed the issue with the Fluent Form Styler module where the form is not styled properly.
* Fixed the issue with the Contact Form 7 Styler module where the form button is not styled properly.
* Fixed the issue with the WP Form Styler module where the module will be crashed when user selects a form.
* Fixed the issue with Third-party plugin break the ui of the Divi Squad Dashboard.


**✨ Improvements:**

* Tested for compatibility with Divi Theme 4.24.3
* Tested for compatibility with WordPress 6.2.

= 2.0.0 (01-02-2024) =

**New Features:**

* Introduce Squad Modules Pro
* Introduce the Author Avatar element for Post Grid
* Loco translate support

**✨ Improvements:**

* WordPress 6.5.0 compatible
* Support for performant translation files in PHP format


= 1.4.11 (15-01-2023) =

**New Features:**

* **Special Character support:** Character support for Special alphabet (Post Grid Module)

**✨ Improvements:**

* **Elements direction:** Improved elements direction on Post Element (Post Grid Module)

= 1.4.10 (13-01-2023) =

**✨ Improvements:**

* **Module: Post Grid:** Improve the post-content support with special character

= 1.4.9 (11-01-2023) =

**✨ Improvements:**

* **Extension: Copy:** Improved the Copy Extension
* **Modules locales support:** Enhanced localization support for modules.
* **Managers (Modules & Extensions):** Improved the managers for Modules and Extensions
* **Spacing Generation:** Improved the spacing generation for all form stylers.

= 1.4.8 (06-01-2023) =

**New Features:**

* **Extension: Copy Post or Page (Multisite Supported):** The best extension to easily make duplicates of your posts & pages them in one go.
* **Image Gallery Module: Overlay Feature with lightbox:** Create captivating image displays with the new Overlay Feature, complete with lightbox functionality for immersive viewing experiences.
* **Image Gallery Module: Image orientation and Count:** Take control of your gallery's visual layout with Image Orientation and Count Features align images perfectly and showcase the exact number you desire.

**✨ Improvements:**

* **Compatibility with Divi 4.23.3 & 4.23.4:** Rest assured, Squad Modules plays nice with the latest Divi update.
* **Modules locales support:** Enhanced localization support for modules.
* **Plugin Preview Banner:** We've made it user-friendly for yours.

= 1.4.7 (21-12-2023) =

**New Features:**

* **Preview Button support in the WP Plugin Directory:** Now you can see your modules in action right from the plugin page!
* **Portuguese (Brazil) locales:** Grande abraço to Gianni Marinho for contributing this! 🇧🇷
* **Divi Google Map Module:** Add beautiful and interactive Google Maps to your Divi pages with ease.
* **Divi Form Styler: Ninja Forms & Fluent Forms:** Style your **Ninja Forms**, and **Fluent Forms** forms effortlessly with Squad's powerful styling tools.

**✨ Improvements:**

* **Compatibility with Divi 4.23.2:** Rest assured, Squad Modules plays nice with the latest Divi update.
* **Squad Admin UI:** We've made managing your modules even smoother and more intuitive.
* **Checkbox & radio field styles for Contact Form 7, Gravity Forms, WPForms:** Style your forms like a pro, no matter which plugin you use.
* **Simplified locales for all languages:** We've streamlined translations for a better user experience in every language.

**Bug Fixes:**

* **Video Popup Module translation issue:** Say goodbye to garbled translations!
* **Star Rating Module ratings not showing:** Your star ratings will shine bright again!
* **Improved memory usage and loading time:** Squad Modules now runs even faster and lighter.
* **Improved plugin review actions:** We've made it easier to leave us a review (with stunning screenshots, of course ).

= 1.4.6 (13-11-2023) =
* Fixed: Squad Dashboard is broken
* Fixed: PHP Log for the Star Rating Module
* Improved: Breadcrumbs, Star Rating, Typed Text Modules

= 1.4.5 (12-11-2023) =
* Fixed: External url cors origin issue in the lottie module
* Fixed: Browser console log when light box not enabled in gallery module
* Fixed: WordPress Playground issue
* Compatibility: Tested up to WordPress 6.4.1

= 1.4.4 (04-11-2023) =
* Improved: Performance and Optimization
* Improved: Post Grid, Video Popup Modules

= 1.4.3 (28-10-2023) =
* Improved: Admin UI with new floating control buttons (More flexible, more user-friendly)

= 1.4.2 (26-10-2023) =
* Improved: Squad Modules Lite Admin UI (More flexible, more user-friendly)
* Compatibility: Tested up to WordPress 6.4

= 1.4.1 (23-10-2023) =
* New: Introduced the Divi Video Popup Module
* Improved: Divider module
* Compatibility: Tested up to Divi 4.23.0

= 1.4.0 (14-10-2023) =
* New: Introduced the Divi Star Rating Module
* New: Introduced the Divi Breadcrumbs Module
* New: Introduced the Divi Drop Cap Text Module
* Improved: Dual Button, Post Grid, WPForms Styler, Gravity Form Styler, Contact Form 7 Styler, Flip Box, Before After Image Slider modules
* Improved: Squad Modules Lite Admin UI (More flexible, more user-friendly)

= 1.3.2 (05-10-2023) =
* Added: Admin footer text at Squad Modules Lite Dashboard area
* Fixed: Compatibility with Multi-site and WordPress Playground
* Fixed: Review banner is not close properly in some wp installations

= 1.3.1 (01-10-2023) =
* Improved: Squad Modules Lite Admin UI (More flexible, more user-friendly)

= 1.3.0 (30-09-2023) =
* New: Introduced: Divi Scrolling Text Module
* Improved: Divi Image Gallery Module, Divi Glitch Text Module
* Improved: Squad Modules Lite Admin UI (More flexible, more user-friendly)

= 1.2.6 (23-09-2023) =
* New: Introduced the Divi Gradient Text module
* Added Support systems in Squad Modules Lite pages at admin area
* Improved: Review Banner
* Improved: Divi Advanced Divider Module

= 1.2.5 (22-09-2023) =
* Fixed: Feedback banner does not close properly.

= 1.2.4 (16-09-2023) =
* Improved: WordPress and PHP compatibility check

= 1.2.3 (15-09-2023) =
* New: Introduced the Divi Glitch Text module
* Improved all modules
* Improved: Modules management dashboard

= 1.2.2 (08-09-2023) =
* New: Introduced the Post Reading Time Module
* Improved: Divi Advanced Divider, Divi Image Gallery, Divi Post Grid modules
* Improved: Admin Panel

= 1.2.1 (01-09-2023) =
* Fixed: Plugin Actions links are not added.

= 1.2.0 (01-09-2023) =
* New: Introduced the Divi Image Gallery Module
* New: Introduced the Divi Form Styler: Contact Form 7
* New: Introduced the Divi Form Styler: WPForms
* New: Introduced the Divi Form Styler: Gravity Forms
* New: Introduced the Extensions: Divi Library Shortcode, Font Upload, JSON Upload and SVG Upload
* Improved: Business Hours, Post Grid modules

= 1.1.0 (22-07-2023) =
* Compatibility: Tested up to WordPress 6.3
* Improved: Divi Business Hours, Divi Post Grid, Divi Dual Button modules

= 1.0.5 (12-07-2023) =
* Improved: Icon feature for all modules
* Improved: Divi Lottie Module and Divi Typing Text module

= 1.0.4 (11-07-2023) =
* Added: Multi Language support for all modules.
* Added: Translation ready for Bangla (Bangladesh), English (US).
* Improved: Divi Post Grid Module.
* Improved: Plugin readme file.

= 1.0.3 (24-06-2023) =
* Locked: Premium features inclusion and Pro with ads.

= 1.0.2 (21-06-2023) =
* Improved: Divi Post Grid, Divi Dual-Button Modules.

= 1.0.1 (20-06-2023) =
* Added Assets for wp plugin directory.
* Improved: Divi Typing Text, Divi Before After Image Slider, Divi Lottie, Divi Advanced Divider Modules.

= 1.0.0 (19-06-2023) =
* Initial release of Squad Modules Lite.
* Added 9 elegant Divi modules including Divi Advanced Divider Module, Divi Before After Image Slider Module, Divi Business Hours Module, Divi Dual Button Module, Divi Flip Box Module, Divi Image Mask Module, Divi Lottie Module, Divi Typing Text Module and Divi Post Grid Module.
* Basic customization options.
* Tested for compatibility with Divi 4.9.2.
* Tested for compatibility with WordPress 6.2.
