=== Sidcraft Page Builder: full changelog ===
= 0.14.3 =
* Fixed: Right-clicking a unit in the Units panel shows "Add to Favorites" again. The menu no longer depends on the panel finishing its refresh, and the canvas no longer throws errors when its frame has no head yet.

= 0.14.2 =
* Fixed: Opening the WordPress block editor no longer crashes with "Class SidcraftPageBuilder\Settings\AdminSettings not found" when an add-on such as Sidcraft Builder Pro is active and Safe Mode is on. Add-ons can check the SIDCRAFT_PAGE_BUILDER_NATIVE_EDITOR_SCREEN constant to skip their boot on that screen.

= 0.14.1 =
* Changed: Every PHP action and filter now starts with the plugin prefix, for example `sidcraft_page_builder_unit_render_html` instead of `sidcraft-page-builder/unit/render_html`. Add-ons must use the new names; Sidcraft Builder Pro 0.11.3 does.
* Fixed: Template import and export work again, and imported templates keep their text intact.
* Fixed: A container's background, height and width no longer spill into the containers inside it, and container backgrounds follow rounded corners.
* Changed: The editor's copy and paste source file is renamed so it is not mistaken for the WordPress core clipboard library.

= 0.14.0 =
* Changed: Renamed to Sidcraft Page Builder (slug and text domain sidcraft-page-builder) after the WordPress.org plugin review.
* Removed: Custom CSS fields on pages and units, and the Global Classes manager. Use XEditor classes instead. Custom CSS saved by earlier versions is no longer printed.
* Security: The theme header and footer capture no longer forwards visitor cookies. Inline CSS is printed through WordPress's style functions, and rendered pages, template blocks and template shortcodes are escaped with wp_kses before output.
* Security: Settings screens now read and sanitize only their own form fields instead of handing the whole request to add-ons.
* Changed: `wp sidcraft-page-builder export` always writes the kit ZIP to wp-content/uploads/sidcraft-page-builder/kits/; the optional argument is now just a file name.
* Changed: The editor top bar shows icons for Mobile, Tablet and Desktop (and any extra breakpoints) instead of text labels, and the logo mark and browser tab icon read S.
* Changed: The Sidebar and WordPress Widget units show the real widgets in the editor canvas instead of a label. A sidebar with no widgets prints nothing for visitors and tells editors to add widgets under Appearance > Widgets.
* Developers: Works with the Sidcraft Builder Pro add-on (renamed from Sidcraft Pro). New `custom_css/*` filters let an add-on provide custom CSS (off unless an add-on enables it), and the `kses/trusted_scripts` filter keeps registered inline scripts. JSON data scripts in rendered pages are kept.
* Docs: The readme now lists every external service, what it receives and when, and where the editor source and build tools are.

= 0.13.3 =
* Fixed: With WP-Optimize page caching on, visitors kept seeing the old version of a page after it was saved in Sidcraft Page Builder (for example, a newly added Form did not appear). Sidcraft Page Builder now clears that page from the WP-Optimize cache on every save, as it already did for WP Super Cache, W3 Total Cache, WP Rocket, LiteSpeed, SiteGround, Breeze and others.

= 0.13.2 =
* New: "Require Cloudflare Turnstile" on the Login unit (Security section). The Log In button stays disabled until the visitor completes the Turnstile check, and the login is rejected without a valid token.
* New: Submit gate for every Turnstile-protected form. The Form unit (Spam protection → Require Cloudflare Turnstile), the Login unit, and the WordPress login and comment forms keep their Submit / Log In button disabled until the check passes, lock it again when the token expires, errors, or is used, and block Enter-key submits while locked.
* New: Turnstile verification for Sidcraft Page Builder login, register and lost-password forms that post to wp-login.php, used by the Login unit and by Sidcraft Builder Pro's Login & Register unit.
* New: Turnstile widgets inside hidden tabs render when the tab opens.
* Changed: If Settings → Integrations → WordPress forms → Login form is on, the Login unit now shows the Turnstile check automatically so its logins are not rejected.
* Docs: readme rewritten with the full feature list, Turnstile setup steps and new FAQ entries.

= 0.13.1 =
* Plugin Check: documented why the Cloudflare Turnstile script and Siteverify endpoint are loaded from Cloudflare (required by the service, only after keys are entered), marked loop "exclude" settings as editor settings, shortened the readme Description and Changelog (full history now in changelog.txt), and added an "external services" FAQ entry.

= 0.13.0 =
* New: XEditor — a unified, CSS-first editing layer. The broken "Atomic" menu is replaced by an XEditor button in the top bar that inserts working elements (click into the selected container or drag onto the canvas).
* New: XEditor Atomic Elements — Div Block, Flexbox, Grid, Heading, Paragraph, Image and Button. Each prints ONE HTML element on the live page (no wrapper divs); aria-label, role and custom attributes go on that element.
* New: XEditor Classes & Variables Manager. Variables are global tokens printed as `--xe-var-*` custom properties (colors, fonts, sizes, spacing, per-breakpoint values). Classes are reusable utility presets printed as `.xe-class-*`, with Normal/Hover/Focus/Active states and per-breakpoint values; use `$name` in any value to reference a variable. Class priority is set by the order in the manager.
* New: Class stacking on every unit (XEditor and classic): add, create or remove classes from the Classes bar at the top of the settings panel. Element "Local Style" values use zero-specificity selectors, so a stacked class always wins.
* New: XEditor Loop data model (Loop > Loop Layout > Loop Item) with dynamic tokens such as {{post.title}}, {{post.url}}, {{post.featured_image}}, {{term.name}} and {{loop.number}}. Rendering and editor preview come from Sidcraft Builder Pro; without a Pro license loops are locked in the editor, not rendered, and kept in the page data.
* New: Cloudflare Turnstile. Sidcraft Page Builder → Settings → Integrations: site key, secret key, optional Cloudflare API token (Verify, or Create a Turnstile widget with your Account ID), Cloudflare test keys, default look, and optional protection for all Sidcraft Page Builder forms, the WordPress login form and comments. New "Cloudflare Turnstile" unit protects the form in the same container; the Form unit has a new "Spam protection" option. Tokens are verified server-side (Siteverify) and reset after each submission.
* Fixed: ARIA Label had no effect on most units because it was printed on a generic wrapper <div>. It is now placed on the unit's link, button, field, form or image; containers and multi-link units get role="group" so the name is announced.
* Fixed: Form errors now show the server's message (for example a failed security check) instead of a generic error.

= 0.12.113 =
* Fixed: A container (or any group background, border, or shadow) set to a Global Color showed in the editor but not on the live page: the page stylesheet printed the raw binding (`background-color:{{var:colors.primary}}`), which browsers ignore. Global Color bindings are now turned into their CSS variables (`var(--lb-color-primary)`) in group controls and, as a safety net, in the compiled page and global CSS. Existing pages pick up the fix on their next view; no re-save needed. This also brings back shape dividers that were drawn in a contrasting colour on top of that background.

= 0.12.112 =
* Changed: Autosave now runs silently in the background. The "An autosave is newer than the last save. Restore it?" browser dialog is gone; when a newer autosave exists, a small bar under the top menu offers Restore or dismiss, and it is not shown when the autosave matches the page or after you dismiss it in that session.

= 0.12.111 =
* Added: Sidcraft Page Builder colour picker for every colour control, replacing the browser / Windows colour dialog (the one with the "Define Custom Colors >>" button). It has a saturation area, hue and opacity sliders, HEX / RGB / HSL format switch, a value box, Global Colors, preset and recent swatches, Clear and Eyedropper.
* Added: Colour values can be typed as HEX (#rgb, #rrggbb, #rrggbbaa), rgb()/rgba(), hsl()/hsla() or CSS colour names (tomato, transparent). The value is saved as typed, and Global Colors accept the same formats.

= 0.12.110 =
* Added: Style > Items on the Container and on every widget - Direction, Justify Content, Align Items, Gaps (column/row, linked, with unit) and Wrap, drawn as icon button groups like Elementor. All five are responsive; the device icon beside each label steps through breakpoints. Justify and Align icons turn with the chosen direction.
* Changed: Container Direction, Justify, Align, Wrap and Gap moved from Content > Layout to Style > Items. Saved pages keep their values; a Gaps value set in Items overrides the old Gap.
* Note: On widgets, Items makes the widget box a flex box and shows while Advanced > Display is Default or Flex.

= 0.12.109 =
* Removed: Leftover development files (tmp-slider-check.html, tmp-slider-check.png, html_docs/_build_seo.py) from the release package.

= 0.12.108 =
* Fixed: WordPress Plugin Check errors — editor document JSON is printed with wp_print_inline_script_tag(), Elementor source badges are passed through wp_kses(), shortcode and Elementor frontend stylesheets are printed by core's WP_Styles printer instead of hand-built link tags, and strip_tags() is replaced with wp_strip_all_tags().

= 0.12.107 =
* Changed: A unit border with a Border Style but no Border Color now defaults to white instead of the text colour (which drew a thick dark box). Set Border Color to choose another colour. The Button unit keeps its existing behaviour.

= 0.12.106 =
* Added: Site Menu > Style > Menu Button: Text, Border, Hover Text, Hover Background and Hover Border for the menu (dropdown / hamburger) button. Blank hover values fall back to the menu Hover colour and the button Background.
* Added: Style > Button and Button Hover colours (text, background, border) for Form, Login and Link in Bio buttons, and Hover Color / Hover Background / Hover Border for Collection Loop pagination and Load More. Themes can no longer recolour these buttons on hover.
* Fixed: Sliders showed a value of 0 at the far-left (minimum) position. On Text Shadow X/Y and similar sliders that start at -50, the thumb sat at -50 while the value was 0, so a small nudge saved -50 by accident (this caused a faded duplicate of Site Menu text). A 0 value now sits at 0.

= 0.12.105 =
* Fixed: Site Menu button turned the theme's button colour (for example red) on hover and after a click, instead of keeping its Background colour and switching the text to the Hover colour. Themes that style every button on hover/focus no longer override it, in the editor or on the saved page.
* Fixed: The same theme override affected other Sidcraft Page Builder buttons on hover/focus: Tabs and Nested Tabs titles, the Alert close button, the Video play button, Image Carousel arrows and dots, and Loop Grid arrows and dots. They now keep their own colours.

= 0.12.104 =
* Fixed: Hover colours did not show in the editor canvas for Button, Heading, Text Editor, Price Table and other units. The canvas draws these units with inline colours, which outranked every :hover rule. Hover and focus rules now win in the canvas; the saved page was not affected.
* Fixed: Site Menu "Hover" colour now also applies to the menu button (the "My Menu" dropdown button and the mobile hamburger), in the editor and on the saved page.
* Fixed: Social Icons "Hover Background" had no effect on the saved page or in the editor; a more specific base rule kept the normal background.
* Fixed: When a container or unit was selected in the editor, its resize strips sat on top of the content along its edges (menu links, an open dropdown, child units) and blocked hover there. The strips now let the pointer through while it is over content; the outer half of each strip and the corner squares still resize.

= 0.12.103 =
* Fixed: Site Menu "Hover" colour (Style > Site Menu > Hover) had no effect in the editor canvas or on the saved page; links always used the Site Settings link hover colour (e.g. red). The global link colour rule outranked the Site Menu's own rules. Site Menu, Icon, Icon Box and Image Box titles, Icon List, Heading links, Testimonial names and Menu Anchor links now keep their own colours, and a chosen Hover/Text colour is applied with node-level priority. Plain links in text still use the Site Settings link colours.
* Fixed: Site Menu "Text" colour did not reach its links, and the open dropdown list in the editor ignored it.
* Fixed: Site Menu colours given as rgba() or a global colour were dropped from the saved page.
* Fixed: Heading "Text Color" now also colours a linked heading; Icon List "Text Color/Hover" now reach linked items; Testimonial name colour reaches a linked name.

= 0.12.102 =
* Fixed: "Reset to Default" in Effects sections worked only once. After the first reset the button stayed greyed out and could not be clicked again until the page was saved and reloaded, because the button state was set when the panel was drawn and editing a value does not redraw the panel. The button is now always active, and its "modified" look updates live as you change any Effects value. Reset can be used any number of times, and each reset is its own undo step.

= 0.12.101 =
* New: every Effects section in a unit's settings (Advanced > Effects, Motion Effects, Transform, Layout & Effects, Border & Effects) has a "Reset to Default" button in its header. It returns only that section's settings to the unit's defaults, for all devices, in one undoable step. The button is greyed out while the section is already at its defaults.

= 0.12.100 =
* Fixed: Advanced > Effects settings (Transform: Translate, Rotate, Scale, Skew, Origin; CSS Filter; Transition; Blend Mode) now update the canvas live while you drag or type. Previously they only appeared on the page after saving.
* Fixed: Effects are painted on the unit wrapper in the canvas, the same element the live page styles, so the canvas matches the published page. Opacity is no longer applied twice in the canvas.
* Fixed: a Translate value typed without a unit is read as px in the canvas, as on the live page.

= 0.12.99 =
* Fixed: corrupted symbols in the editor. Icons such as the repeater drag handle, duplicate and remove buttons, and the close button on the A11y, Assets, Lock, Breakpoints and other popups showed mojibake (garbled letters instead of the close "x"). The editor bundle had stored these symbols in a double-encoded form. All 30 affected symbols are restored and stored as ASCII-safe escape codes.
* Fixed: text encoding hardening. Every PHP, JS and CSS file stores symbols as ASCII-safe escape codes or HTML entities, so no layer that guesses the wrong encoding can corrupt them. Canvas and maintenance templates and all Sidcraft Page Builder REST responses send an explicit UTF-8 charset. Text shortening uses UTF-8 aware helpers so accented and non-Latin characters are never cut in half. A documentation image that was saved in the wrong encoding is fixed.
* Fixed: Image Carousel canvas preview is now WYSIWYG. Arrows, dots, autoplay, the Slide and Fade effects, animation speed, infinite loop and right-to-left direction all work in the editor canvas, just as on the published page. Autoplay pauses while the pointer is over the carousel so it can be edited.
* Fixed: Image Carousel showed only part of the first image, with the next slide bleeding in. The carousel wrapper used the same CSS class as each slide, so it picked up slide sizing.
* Fixed: after adding an image to the Image Carousel, the canvas now moves to the new slide so it is visible right away.
* Fixed: Image Carousel slides show the saved image immediately in the canvas instead of a grey placeholder.
* Fixed: on sites using Plain permalinks, the editor could not load media details (image previews stayed grey) and some other editor requests failed with 404, because query strings were added with a second "?".
* Fixed: the Image Carousel Link option (None, Media File, Custom URL) was saved as a web address such as "http://none", so Media File links, the lightbox and custom slide links never worked. Pages saved with the old value are repaired automatically.
* Fixed: Image Carousel dots no longer cover the captions. With captions, the dots sit below them.
* Fixed: carousel images further along the slide track now preload once the carousel is on screen, so the next slide never appears blank. The slide offset is re-measured when images finish loading.
* Fixed: with "Pause on Hover" and "Pause on Interaction" both on, autoplay no longer restarts when the pointer leaves after you used the arrows or dots.
* Fixed: the Fade effect shows the first slide immediately on page load instead of starting blank.
* Fixed: the editor's brand menu shows the installed plugin version instead of a fixed old number.
* Slide position labels ("1 of 3") are translatable.

= 0.12.96 =
* Fixed: slider value boxes in widget settings (including Site Menu style controls, line height, letter spacing, and text shadow) no longer sit on top of their sliders.

= 0.12.95 =
* Fixed: an inherited theme header logo (including Header Footer Elementor site-logo widgets) could get clipped off the left edge of the canvas. The logo's column had no width constraint from a local capture, so it rendered at the source image's full size and pushed the header bar past the canvas.
* Fixed: a header logo using WordPress's native `loading="lazy"` attribute could stay blank in the canvas, because the browser's "is this near the viewport" check that native lazy-loading depends on never fires inside the canvas's offscreen iframe. Captured header and footer images now always load immediately.

= 0.12.93 =
* Publish from the editor. Saving a draft page (a converted Elementor copy, a page created with Add New Page, or any WordPress draft) now publishes it; the Save button reads Publish until it does. Page Settings gains a Status control to keep a page as a draft, submit it for review, or make it private.
* A save whose request body cannot be read (for example a payload the server dropped) is refused with an error instead of being stored as an empty page. Previously that emptied the document, so the editor fell back to previewing the Elementor source and units added after the import disappeared.
* Save errors returned by the server are shown in the editor status text.
* Revision snapshots keep escaped quotes in the document JSON, so restoring a revision with quoted text works.

= 0.12.86 =
* Converted Elementor pages open on the canvas. The editor no longer treats a toolbar element as the translator, so canvas sizing keeps running, and the page document is loaded from a JSON block instead of an attribute that large layouts truncate.

= 0.12.80 =
* Plugin header name matches the readme title: Sidcraft Page Builder.

= 0.12.77 =
* Styles and scripts load through WordPress enqueue APIs, and only on the screens that use them.

= 0.12.76 =
* The Sidcraft Page Builder dashboard shows the Sidcraft Builder Pro annual price table when Pro is active.

= 0.12.74 =
* Menu Anchor shows its target on the canvas and scrolls the page to that ID. A sticky header can clear the target with the `--lb-anchor-scroll-offset` custom property.

= 0.12.73 =
* Header & Footer theme templates open both regions on one canvas.

= 0.12.72 =
* Container and widget mouse resize: grab left, right, top, or bottom; adjacent columns share width; size tooltip while dragging.

= 0.12.71 =
* PHPUnit (wp-env) tests for DocumentManager sanitization/migration, Style CSS output and REST permissions, Playwright editor flows (add, drag, responsive, save, undo, template insert), and a GitHub Actions CI workflow (Roadmap 7.7).

= 0.12.70 =
* WP-CLI commands (`wp sidcraft-page-builder regenerate-css`, `flush-cache`, `replace-url`, `import`, `export`, `convert`) and an admin-bar Edit with Sidcraft Page Builder node on the frontend and back end (Roadmap 7.6).

= 0.12.69 =
* Versioned upgrade framework (`Upgrades::run()` on plugin version change) with background-batched document migrations, a rotating logger under uploads/sidcraft-page-builder/logs, and admin notices for failed upgrades (Roadmap 7.4).

= 0.12.68 =
* Maintenance / Coming Soon mode (saved template, role exclusions, HTTP 503 vs 200), per-user Safe Mode (editor loads without other plugins or the theme), System Info report + download, and plugin version rollback from stored ZIPs (Roadmap 7.3).

= 0.12.67 =
* Element Manager and Role Manager: enable or disable each element, restrict elements per role, usage counts, and role access of no access / content only / full. Design-system saves use `sidcraft_page_builder_design` instead of `manage_options` (Roadmap 7.2).

= 0.12.66 =
* Admin settings screens (General, Integrations, Advanced, Performance, Tools, Features) with a single sanitized settings API, capability checks, REST `/settings`, Maps/reCAPTCHA keys, experiments, and editor iframe loader (Roadmap 7.1).

= 0.12.65 =
* oEmbed via wp_oembed_get with a host allow-list and transient cache for Video and Audio fallbacks, lone-URL HTML widgets, and a new Embed element (Roadmap 6.5).

= 0.12.64 =
* Elements declare `scripts()`/`styles()` WordPress handles; the renderer enqueues only assets the page uses. `SidcraftPageBuilderFrontend.registerHandler(type, fn)` runs for first paint and AJAX-inserted content (Roadmap 6.4).

= 0.12.63 =
* Element fragment cache for non-dynamic widgets (TTL and invalidation), lazy-loaded background images below the first one, fetchpriority=high on the first image with loading=lazy after, and an optional optimized-markup mode that removes extra node wrappers (Roadmap 6.3).

= 0.12.62 =
* Weight-aware Google Fonts loading (only used weights and italic styles), a font-display setting, preconnect hints, and optional local font hosting under uploads/sidcraft-page-builder/fonts (Roadmap 6.2).

= 0.12.61 =
* External CSS files at uploads/sidcraft-page-builder/css (global.css and post-{id}.css) with hash cache busting, a css_print_method setting (external or inline), minification, and a Regenerate CSS tool (Roadmap 6.1).

= 0.12.60 =
* Replace URL tool on Sidcraft Page Builder → Tools (document JSON + CSS cache, dry run). WordPress importer/exporter keeps JSON meta valid, and post-duplication plugins copy Sidcraft Page Builder document data (Roadmap 5.4).

= 0.12.59 =
* Convert stored layout JSON into Sidcraft Page Builder documents: widget mapping table, sections/columns → containers, responsive breakpoint keys, global color binds, dry-run report, and a bulk tool on Sidcraft Page Builder → Tools (Roadmap 5.3).

= 0.12.58 =
* Template shortcode `[sidcraft_page_builder_template id=""]`, Gutenberg block (`sidcraft-page-builder/template`) with picker and preview, Template widget, and a WordPress sidebar widget (Roadmap 5.2).
* Embedded templates enqueue their CSS, fonts and frontend scripts, with recursion protection and scoped selectors.

= 0.12.57 =
* Counter Number, prefix and suffix now update the canvas digits live while editing settings.

= 0.12.56 =
* Interactions 2.0: about 50 CSS entrance/exit presets, custom keyframes, viewport/load/hover/click/scroll-progress triggers, timing, per-breakpoint exclusions, reduced-motion handling, and an editor preview (Roadmap 4.4).
* Schema 2.8 migrates the legacy single `interaction` setting into the per-node `interactions` list.

= 0.12.55 =
* Collection Loop widget: query builder for posts/CPTs and terms, inline or saved-template item layouts, grid/list, and numbers / previous-next / load-more pagination (Roadmap 4.3).
* Term dynamic tags (name, description, URL, count) resolve inside a term loop.

= 0.12.54 =
* Dynamic tags no longer fatal when `Tag` is missing; the registry loads `class-tag.php` from the same directory.
* The plugin no longer defines `SIDCRAFT_PAGE_BUILDER_DEV_MODE`, so a late `wp-config.php` define is not a PHP 9 error.

= 0.12.53 =
* Dynamic tags framework: extensible registry, per-control toggle with before/after/fallback, built-in post/site/user/archive tags, editor previews and frontend resolution (Roadmap 3.8).

= 0.12.52 =
* Action-level History panel with jump-to for add, move, edit, delete and related edits (Roadmap 3.5).
* Document snapshots are stored as WordPress revisions (legacy `_sidsyn_document_revisions` meta is migrated). Preview a revision on the canvas before restore. Autosave uses the WordPress autosave revision.

= 0.12.51 =
* Persistent editor clipboard in `localStorage` so Copy / Paste / Paste Style / Copy All / Paste All work across pages and tabs (Roadmap 3.4).
* Clipboard payloads are schema-tagged and migrated on paste. Reset Style remains on the context menu and shortcuts.

= 0.12.50 =
* Keyboard shortcuts are a complete, rebindable map (save, paste style, navigator, responsive, library, history, preview, delete, Escape) with a cheat-sheet dialog (`Ctrl+?`) (Roadmap 3.3).
* Finder (`Ctrl+E`) searches pages, templates, components, classes, settings panels and editor actions.

= 0.12.49 =
* Code editor control (`code`) using WordPress CodeMirror (`wp.codeEditor`) for HTML, CSS and JS (Roadmap 3.2).
* HTML and Code elements, element Custom CSS, page Custom CSS, and Global Class CSS use the code editor.

= 0.12.48 =
* Visual group controls: slider with unit switcher, typography, border, background (classic/gradient/video/slideshow + overlay), box/text shadow, CSS filters, transform, transition, linked dimensions, choose icon groups, and gaps (Roadmap 3.1).
* Free-text transform, filter, background gradient, text shadow and transition values migrate to structured objects (document schema 2.6).

= 0.12.47 =
* Site kit export/import: ZIP packages of site settings, design tokens, theme style, classes, components, saved templates and optional pages with media, using merge or replace (Roadmap 2.4).
* Tools screen under Sidcraft Page Builder and a Kit tab in Site Settings. REST endpoints at `/sidcraft-page-builder/v1/kit`.

= 0.12.46 =
* Site Settings Layout tab: content width, widgets space, page title selector, default template, site identity (WordPress title/tagline/logo/favicon), global lightbox, and site background (Roadmap 2.3).
* Identity fields read and write WordPress core options. Lightbox captions can use alt, caption, or title.

= 0.12.45 =
* Theme Style in Site Settings: site-wide defaults for body text, H1–H6, links (normal/hover), buttons, images and form fields, compiled into the global CSS and previewed live on the canvas (Roadmap 2.2).
* Color fields in Theme Style can bind to global color tokens.

= 0.12.44 =
* Custom post type support: an enabled-post-types setting (default Posts and Pages) replaces hard-coded `post`/`page` checks so any public CPT can be edited with Sidcraft Page Builder (Roadmap 1.4).
* "Edit with Sidcraft Page Builder" now appears on every enabled post type's list table and in the block editor.

= 0.12.43 =
* Editor JavaScript is now built from ES modules under `src/editor/` with esbuild (`npm run build`). The bundled `assets/js/editor.js` is still shipped so the plugin runs without Node.
* No editor behaviour change: this is a source split and build step only (Roadmap 0.5).

= 0.12.28 =
* Widget depth: Accordion / Toggle (multi-item, icons, FAQ schema), Tabs (vertical, alignment, styles), Alert (dismiss), Video (YouTube / Vimeo / Dailymotion / VideoPress / self-hosted, overlay, lightbox, aspect ratio), Counter (count-up animation), Progress (styles, inner text), Divider (patterns, text / icon), Icon and Icon Box (stacked / framed views), Image Box, Icon List (inline, dividers), Social Icons (brand colours, shapes, grid), Star Rating (SVG, half stars), Testimonial, Heading (link, size presets), Text (drop cap, columns), Button (sizes, icon placement, alignment), Image Carousel (slides-to-show, fade, autoplay, captions), Gallery (captions, hover effects), SoundCloud (visual mode, player toggles).
* Container: semantic HTML tag, whole-container link, background overlay with blend mode, top / bottom shape dividers, self-hosted background video.
* WordPress Widget: choose any registered widget from a list; Sidebar picks from registered widget areas.
* Editor: element-aware select options, icon picker for every icon control, media picker for every image control, live previews for all widgets, frontend stylesheet loaded in the canvas, legacy single-panel Accordion / Toggle documents migrate to the items list.
* Frontend: script now loads whenever a page uses a script-driven widget; button colours / borders apply to the button itself instead of its wrapper.
= 0.12.27 =
* Element library: right-click on an element card again shows Add to Favorites / Remove from Favorites (the panel re-binding layers were dropping the listener).
* Image: visible resize handles now sit on the picture itself (right edge, bottom edge, corner). The image resizes live while dragging, keeps its aspect ratio (Shift on the corner stretches freely), shows its size, and saves % of the container (or px if the width was already px) for the current device.

= 0.12.26 =
* Frontend: a saved image width is now applied once (it was applied to both the wrapper and the image); per-device {desktop,tablet,mobile} width/height values now output their desktop value, so resizing on Tablet/Mobile no longer drops the Desktop width.
* Grid: a plain number in Rows (e.g. 3) now produces that many rows on the frontend; responsive gap values no longer collapse to 1px.
* Asset cache-busting version now follows the plugin version.

= 0.10.0 =
* Production Feature Depth release: Atomic element library, responsive design controls, typography/design controls, dynamic content bindings, design-system import/export, template library improvements, native form element, richer accessibility and editor workflows, and expanded Grid/media/WordPress integration foundations.

= 0.9.6 =
* Fixed isolated-canvas navigation caused by Button/Link activation.
* Editor Buttons now render as non-navigating editing controls.
* Added capture-phase navigation guards for anchors and interactive elements.
* Prevented Enter/Space activation from navigating the editor iframe.


= 0.9.2 =
* Fixed isolated editor iframe mounting so the canvas is populated after each render.
* Restored drag-and-drop from the Elements panel into the iframe canvas.
* Restored node selection, nesting, reordering, duplicate/delete handles and context-menu behavior inside the iframe.
* Added element type metadata to canvas nodes for reliable drop targeting.



= 0.8.4 =
* Element library single-click no longer inserts elements. Double-click inserts an element by click, while drag-and-drop inserts exactly once.

= 0.9.1 =
* Added an isolated editor iframe canvas so theme/editor CSS cannot directly contaminate the editing surface.
* Expanded responsive sizing, spacing, visibility and breakpoint-aware frontend CSS.
* Expanded Grid with explicit tracks, dense auto-placement, auto rows/columns and per-child placement controls.
* Added a reusable universal control layer for layout, effects, interactions, accessibility and advanced attributes.
* Added registered WordPress sidebar discovery, Media Library metadata/srcset/sizes support and richer image delivery.
* Added component versioning, exposed-property metadata and instance override propagation.
* Expanded Global Classes with pseudo-state CSS and usage tracking; expanded Variables and Design System export.
* Expanded Template Library with duplicate/delete workflows and document schema 2.1 migrations.
* Added accessibility audit, context menu, element handles, icon manager, site navigation, performance/asset manager and collaboration lock heartbeat.
* Added server-side autosave recovery, revision restoration, import/export and asset cache invalidation foundations.

= 0.9.0 =
* Added deeper Image content, media, lightbox, caption, accessibility, styling and responsive controls.
* Added advanced CSS Grid tracks, dense auto-flow, grid outline, and per-child placement/span controls.
* Added document schema 2.0, JSON import/export, and recovery autosave snapshots.
* Added responsive breakpoint manager and registered WordPress sidebar selection.
* Improved reduced-motion behavior and frontend image rendering.

= 0.10.1 =
* Complete Font Awesome Free icon library integration with searchable family filters (Solid, Regular, Brands), SVG previews, and custom SVG support.
* Icon, Icon Box, Icon List, and Button icon rendering now use real SVG icon artwork instead of text identifiers.
* Google Fonts catalog integrated into Style > Typography & Design > Font Family with 1,600+ supported Google font names.
* Selected Google Fonts are loaded on demand in the editor and frontend.


= 0.10.2 =
* Fixed Style > Typography > Font Family so the Google Fonts selector is populated directly in the editor.
* Added a native dropdown containing the bundled Google font family catalog.
* Fixed Google Fonts CSS2 URL construction for selected fonts.


= 0.10.3 =
* Fixed Style > Typography > Font Family so the primary control is a native Google Fonts dropdown.
* Populates the selector from Sidcraft Page Builder's bundled Google Fonts catalog without requiring a network request to display the font list.
* Selecting a font updates the document and loads the selected Google Font for the editor preview.
* Added an explicit editor asset version bump to reduce stale browser/cache loading after upgrades.


= 0.10.4 =
* Fixed Font Family initialization so new Heading/Text elements immediately show Default in a real Google Fonts dropdown.
* Corrected plugin version constant and asset versioning to 0.10.4.

= 0.10.6 =
* Added a native WordPress-powered "TinyMCE Text Editor" element.
* Uses WordPress editor/TinyMCE assets via wp_enqueue_editor() and wp.editor.initialize().
* Double-clicking the element opens a stable TinyMCE editing dialog; single-click continues to select the element.
* Rich HTML is stored in the Sidcraft Page Builder document and rendered as frontend HTML after WordPress sanitization.
* Added a focused Content panel action, TinyMCE toolbar, and editor lifecycle cleanup.

= 0.11.0 =
* Added Atomic Design System 2.0 with richer Global Classes, Variables and Components workflows.
* Global Classes now support editable base/hover/focus/active/focus-visible declarations, inheritance, descriptions, assignment, usage visibility and reliable frontend propagation.
* Variables now support built-in design tokens plus custom token groups and CSS custom property output.
* Added CSS-first class assignment and token references such as {{var:colors.primary}}.
* Components now support source editing, structure editing, exposed properties, per-instance overrides, versioning, duplication, deletion and automatic propagation to all instances.
* Design System import/export now includes classes, variables, components, global settings and atomic metadata.
* Atomic metadata expanded and integrated into the document model and editor.

= 0.11.1 =
* Completed Atomic Design System 2.1 workflows for Classes, Variables, Components, exposed properties, propagation, inheritance, CSS-first styling and design-system import/export.
* Added editor-side component previews and synchronized component structure editing.
* Added custom variable deletion and typed exposed component properties.
* Improved TinyMCE Text Editor Duplicate/Delete controls for readability and accessibility.


= 0.11.4 =
* Fixed TinyMCE Text Editor initialization with a native TinyMCE fallback and clearer diagnostics.
* Added Page > Add New Page workflow that creates a draft and opens it directly in Sidcraft Page Builder instead of the WordPress block editor.

= 0.11.5 =
* Fixed TinyMCE Text Editor action binding after Settings panel re-renders.
* Fixed WordPress Dashboard Pages > Add New to open directly in Sidcraft Page Builder instead of the block editor.
* Added safe draft-page creation for dashboard page creation.

= 0.11.9 =
* Isolates native WordPress post/page Gutenberg screens from Sidcraft Page Builder runtime hooks.
* Adds a safe Edit with Sidcraft Page Builder launcher after the native editor renders.

= 0.8.1 =
* Core feature-depth and stabilization release.
* Expanded responsive controls, typography, spacing, borders, shadows, positioning and advanced attributes.
* Added Grid, global classes, variables, reusable components, favorites, icon library, template library UI and site navigation.
* Added revision browser/restore UI, interaction triggers, accessibility checks and frontend asset improvements.
* Expanded Gallery, Carousel, Button, Image, Heading, Text, Icon, Icon Box, Video, Accordion, Tabs and Social controls.
* Requires WordPress 6.9 or later and PHP 7.4 or later.

= 0.8.0 =
* Stabilization and feature-depth release toward Core feature parity.
* Expanded responsive controls, typography, spacing, sizing, borders, shadows, positioning, visibility and advanced attributes.
* Added Grid depth, legacy Inner Section compatibility, global classes, variables, components, favorites and site navigation.
* Expanded icon library, template library UI, revision browser, gallery lightbox, carousel controls and interaction behavior.
* Added accessibility helpers and performance-conscious frontend asset handling.

