Changelogs

Follow the improvements and fixes in each product release.

GT Page Blocks Builder

A free WordPress page builder plugin for HTML, CSS and JavaScript, with optional AI, live previews, reusable sections and theme regions.

Explore Product

Release History

Historical releasePermalink

2.7.0

  • Dropin migration: wp gt-pb migrate-library [--dry-run] [--overwrite] (or Settings -> Tools -> Import from dropin) copies the Marketers Delight md_page_blocks table into this plugin preserving block IDs, so existing [page_block id="N"] shortcodes and blockId block references keep resolving.
  • Blocks can reference the library again: blockId is a registered attribute and renders the library row server-side. Editing one library block updates every placement, instead of each block carrying its own copy.
  • The block editor understands the reference: a linked block shows the library block’s title, ID, and badges, previews through the library’s own render route (so PHP, shortcodes, and wpautop match the front end), and hides the inline HTML/CSS/JS editors that render_block() would ignore. Missing and unpublished targets are called out instead of silently rendering nothing.
  • Library modal offers Link alongside Copy code, so a placement can follow the library or take a one-off copy, deliberately.
  • Unlink detaches a copy: the library code is written into the block’s own attributes and the reference is dropped.
  • Fixed two paths that silently unlinked migrated blocks. The editor’s client-side block registration did not declare blockId, so re-saving a page dropped it; the visual builder normalized it away on load and reserialized every section without it. Both now round-trip the link, and the builder locks a linked section’s editors instead of accepting edits that never render.
  • marketers-delight/inline-page-block is now covered by the block-name migration alongside marketers-delight/page-block.
  • Security: PHP execution now requires two independent gates — a site constant (GT_PB_ALLOW_PHP, or MD_ALLOW_PHP_SNIPPETS for sites coming from the dropin) and a save-time content checksum. Content mutated directly in the database no longer executes; it falls back to stripping PHP tags. Inline blocks need a further opt-in (GT_PB_ALLOW_INLINE_PHP / MD_ALLOW_INLINE_PHP) because post_content carries no separate checksum.
  • Display conditions work: they are saved from the block edit screen and evaluated when rendering positioned blocks (post types, page types, specific post IDs). Previously the UI existed but nothing was stored or checked.
  • Dropin md_hook_* positions are remapped to plugin positions and theme regions on import; anything with no equivalent is cleared to shortcode/block only and reported, rather than silently never rendering.
  • Schema: adds php_checksum (table version 1.1), back-filled for existing PHP-enabled blocks on upgrade.
  • Render parity with the dropin, from diffing real output on live sites: library CSS is emitted once per request and hoisted into <head> rather than inlined at every placement; library HTML is minified like the inline path already was.
  • Fixed minify_css() collapsing the whitespace around + inside calc(), clamp(), min() and max(). The space is required there, so clamp(6.75rem, 6rem + 2.2vw, 9rem) became invalid and the whole declaration was dropped — section padding computed to 0 and clamped font sizes fell back to inherited. + is still collapsed in sibling selectors, where that is correct.
  • Fixed minify_css() corrupting quoted strings. [style*="font-weight: 300"] and [style*="font-weight:300"] are different selectors, and collapsing the space merged them so one stopped matching. Quoted strings and url() payloads are now preserved verbatim.
Historical releasePermalink

2.5.0

  • REST API (pbb/v1): full CRUD for library blocks plus /duplicate and /render endpoints — list filtering, search, pagination, and status counts via headers.
  • New library admin panel: card grid with live preview thumbnails (lazy-loaded), search, status filter tabs, duplicate / trash / restore / delete, and copy-shortcode — the classic list table remains at ?view=list.
  • Block editor: the Page Block defaults to a rendered live preview (auto-sizing iframe with theme styles) when it has content; toggle Preview/Code from the block toolbar.
  • Block editor: Browse library — search the library in a modal and insert a copy of any saved block into the current Page Block.
  • Responsive preview: desktop / tablet (768px) / mobile (390px) viewport presets, plus a dark-scheme toggle (data-theme=”dark”).
  • Collapsible live preview pane under the code editor — re-renders as you type (server-rendered when PHP/wpautop is on).
  • Copy button for the active code tab.
  • Save to library: promote an inline block to a reusable library Page Block (admins) straight from the editor.
Historical releasePermalink

2.3.1

  • FIX: CSS class autocomplete was broken because PHP sent cssClasses as a JSON object (due to array_unique key gaps) instead of a JSON array. Added array_values() wrapper so Array.isArray() passes on the JS side.
Historical releasePermalink

2.3.0

  • NEW: Typography.min.css toggle — system-font-based typography defaults with responsive heading sizes via clamp(), proper measure (65ch), styled lists, blockquotes, code, kbd, tables. ~3KB inlined when enabled.
  • Three independent toggles under Settings → Page Blocks → Frontend CSS: Semantic Reset, Typography, Utility Classes.
Historical releasePermalink

2.2.0

  • NEW: Semantic Reset CSS (~1KB) — modern reset with box-sizing, list defaults, accessible images, prefers-reduced-motion support. Inlined in <head> when enabled.
  • NEW: Utility Classes — ~330 Tailwind-inspired utilities (grid, flex, spacing, typography, colors, borders, shadows, etc. + sm:/md:/lg: responsive variants). Frontend inlines ONLY the rules actually used on the page (parses post_content for class names). Builder loads the full set for autocomplete.
Historical releasePermalink

2.1.0

  • NEW: Top-level “Page Blocks” admin menu (moved out of Settings) with sub-pages: All Page Blocks (list table), Add New, Settings, License.
  • NEW: Database-backed reusable blocks with [page_block id="123"] and [page_block slug="hero-section"] shortcodes.
  • NEW: Admin list table with bulk actions (trash/restore/delete), search, status filtering.
  • NEW: Admin edit form with Monaco editors for HTML/CSS/JS, live preview, position picker.
  • NEW: gt_pb_get_positions() filter — theme-independent WP core hooks (wp_head, wp_footer, the_content, loop_start, etc.).
Historical releasePermalink

1.3.4

  • Fix OpenAI GPT-5 model compatibility by omitting custom temperature for gpt-5* models
  • Add provider debug diagnostics (finish reason, refusal summary, usage) for AI responses
  • Add optional raw payload logging via filters for AI troubleshooting
Historical releasePermalink

1.3.2

  • Lock AI Generate to HTML mode in visual builder and ignore non-HTML text selections
  • Prevent HTML from being emptied when AI returns only bundled <style id="ai-generated"> / <script id="ai-generated"> tags
Historical releasePermalink

1.3.1

  • Default AI generation target to the HTML tab in the visual builder
  • Add HTML AI bundle support with <style id="ai-generated"> and <script id="ai-generated">
  • Move bundled AI CSS/JS out of HTML and into the CSS/JS editors automatically
Historical releasePermalink

1.2.1

  • Add “Preview on Frontend” button in the visual builder topbar to open the live page in a new tab
  • Make “Add Section” button more prominent with a full-width dashed button below the section list
  • Fix “Invalid page template” error when saving on block themes (TT4, etc.)
Historical releasePermalink

1.2.0

  • Add CSS-in-head collection: all Page Block CSS is combined into a single <style> tag in <head>, preventing FOUC
  • Add external file output (output: file): CSS/JS written to cacheable files in uploads directory
  • Add output block attribute (inline or file)
  • Add save_post/delete_post hooks to regenerate and clean up external asset files
  • Add JS file collection at template_redirect for external JS serving
  • Add transient caching for theme class suggestions
  • Combine footer scripts into a single <script> tag
  • Fix CSS minification breaking >= in media query range syntax
  • Fix sanitize_css stripping <= operators via CSS-safe sanitization