Skip to main content

v1.0.0-beta.4

  • Added — At-rules manager: nested CSS layer names (e.g. theme.base) are now supported and declared in the @layer order statement.
  • Improved — Editor UI: all controls, panels and the AI chat now share one refreshed design system, for consistent spacing, colors and typography across the plugin.
  • Fixed — Nested CSS rules (e.g. a &:hover state or a descendant selector inside another selector) were dropped or merged into the base state on the frontend; they now render correctly and match the editor preview.
  • Fixed — Media queries written inside nested rules were hoisted out of order on the frontend; they now stay in place and keep their source order, while top-level breakpoints remain flat for browser compatibility.
  • Fixed — Loop block: editing the query (e.g. the number of items) briefly wiped and reloaded every item in the editor; existing items now stay in place while the results update.

Editor

  • Improved — Editor UI: all controls, panels and the AI chat now share one refreshed design system, for consistent spacing, colors and typography across the plugin.
  • Improved — Block icons now carry a small Unblock mark in the inserter and its search results, making them easy to tell apart from the look-alike core blocks (Image, Heading, Paragraph…).
  • Fixed — Segmented controls: the selected highlight no longer misaligns when options have different label widths.
  • Fixed — HTML inspector: content placed after a condition that contains a loop (another condition, markup, or plain text) is no longer dropped or inserted in the wrong place.
  • Fixed — Gradient picker: switching between color stops sometimes showed the previous stop's color or a slightly shifted color in the color picker.
  • Fixed — Color picker: moving the opacity slider with no color set now creates a color instead of doing nothing, and can no longer produce a broken gradient.
  • Fixed — Blocks styled with pointer-events: none (e.g. a modal overlay) captured clicks in the editor and prevented selecting the blocks underneath.
  • Fixed — Block inspector: flex and grid controls stayed hidden when display resolved to flex or grid without being set on the edited selector.
  • Fixed — Block inspector: selecting a selector list (e.g. *, *::before, *::after) showed the values of the last pseudo-element as placeholders instead of the element's own values.
  • Fixed — Loop block: editing the query (e.g. the number of items) briefly wiped and reloaded every item in the editor; existing items now stay in place while the results update.

CSS & Styling

  • Added — At-rules manager: nested CSS layer names (e.g. theme.base) are now supported and declared in the @layer order statement.
  • Improved — At-rules manager: the body editor (e.g. @keyframes) now auto-formats the CSS with proper indentation when opened, and stores a compact version when closed.
  • Improved — Variables and at-rules managers: new entries are saved with Enter, by clicking outside the row, or with the Add button (which chains into a fresh row); Escape or the cross cancels.
  • Improved — Variables and at-rules managers: an invalid or duplicate name highlights the field in red and focuses it.
  • Fixed — At-rules manager: body edits were lost when the popup was closed (Escape, click outside) without the code editor losing focus first.
  • Fixed — Nested CSS rules (e.g. a &:hover state or a descendant selector inside another selector) were dropped or merged into the base state on the frontend; they now render correctly and match the editor preview.
  • Fixed — Media queries written inside nested rules were hoisted out of order on the frontend; they now stay in place and keep their source order, while top-level breakpoints remain flat for browser compatibility.
  • Fixed — Combined CSS selectors whose escaped class names look like pseudo-classes (e.g. .card .md\:hover\:flex) silently failed to attach to blocks or matched the wrong elements.
  • Fixed — Variables manager: a new variable was rejected as a duplicate when a variable with the same name existed in another collection; names are now only checked within the target collection (also when renaming).
  • Fixed — Variables and at-rules managers: leaving a name field no longer erases the typed value when it is invalid or duplicated; an invalid rename restores the previous name.
  • Fixed — At-rules manager: invalid or duplicate @keyframes, @layer and @counter-style names were rejected silently — the Add button did nothing; a notice now explains the problem and duplicate names are detected.
  • Fixed — At-rules manager: @keyframes, @layer and @counter-style names starting with -- (valid in CSS) were rejected or silently renamed, including when importing CSS; they are now kept as typed.
  • Fixed — At-rules manager: at-rule names with accented or other non-ASCII characters (valid in CSS) were rejected, while reserved CSS keywords (none, inherit…) were wrongly accepted.
  • Fixed — At-rules manager: an at-rule named base (e.g. @layer base) was mistaken for the default base media rule: locked in the UI and missing from the generated CSS.
  • Fixed — At-rules manager: the Name column could be missing when adding a rule, making it impossible to confirm.
  • Fixed — CSS selectors: class/ID chips coming from the HTML attributes can now be removed with the Backspace key or by typing the same value again, not only with the chip's remove button.
  • Fixed — CSS selectors: pressing Escape in the selectors dropdown no longer removes every selector assigned to the block.
  • Fixed — CSS selectors: removing or renaming a class chip no longer corrupts a Twig expression present in the same class attribute.
  • Fixed — CSS selectors: renaming a selector no longer temporarily stores raw class/ID literals in the block's selector list.
  • Fixed — CSS selectors: assigning an auto-generated selector to a block had no effect — its class was removed right after being added, so its styles never applied.
  • Fixed — Styles assigned to a renamed or deleted @layer were hidden in the editor but still rendered on the frontend under the old layer name; both now behave the same, and the styles re-attach if an at-rule with the old name is created again.