Gatilab Products

Changelogs

Improvements, fixes, and the details behind each release.

GT Page Blocks Builder

Custom HTML, CSS, and JavaScript sections with previews and reusable blocks.

View Product
Stable

GT Page Blocks Builder 2.6.0

Read release notes

What's Changed

Theme building

  • Library blocks can be assigned to theme regions — header, hero, before/after content, sidebar, footer, 404 — and rendered by any theme via gt_pb_region( 'header' ) / gt_pb_has_region(). A blank hybrid theme can be little more than region calls.
  • Hook positions now actually render: wp_head, wp_body_open, wp_footer, loop_start/loop_end, get_header/footer/sidebar, and before/after the content — priority-ordered.

Block rename + migration

  • The block is now gt-page-block/page-block (category: Page Blocks). The legacy marketers-delight/page-block stays registered (hidden from the inserter) so existing content keeps rendering, with a one-click transform to the new block.
  • Migration tool: Settings → Tools → Migrate blocks (with dry run), or WP-CLI wp gt-pb migrate-blocks [--dry-run] — rewrites stored content without touching post modified dates.

REST API (pbb/v1)

  • GET/POST /blocks, GET/PUT/DELETE /blocks/<id> (trash or ?force=true), POST /blocks/<id>/duplicate, GET /blocks/<id>/render — search, status filtering, pagination, and status-count headers. Read = edit_posts, write = manage_options.

Library admin panel

  • New card-grid library with lazy live-preview thumbnails, search, status filter tabs, duplicate / trash / restore / delete-forever, copy-shortcode, and position chips. Classic list table remains at ?view=list.

Block editor

  • Preview-first Page Block: rendered live preview (auto-sizing iframe with theme styles) by default; Preview/Code toggles in the block toolbar.
  • Responsive viewport presets (desktop / 768px / 390px) + dark-scheme preview toggle.
  • Collapsible live preview pane under the CodeMirror editor — server-rendered when PHP/wpautop is enabled.
  • Copy button, Save to library, and a Browse library modal to insert saved blocks.
Stable

GT Page Blocks Builder 2.4.0

Read release notes

Bundles v2.1.0 through v2.4.0 — major feature release.

Emmet HTML Expansion (NEW)

Type an abbreviation in the HTML editor, press Tab, get expanded HTML: - div.hero>h1{Title}+p{Body} → nested section with heading and paragraph - ul.menu>li.item\$*4>a[href="#"]{Link} → 4-item menu with auto-numbered classes - img.avatar[alt=""] → self-closing void tag

Supported: tags, .class, #id, [attr="val"], {text}, > child, + sibling, *N multiply, \$ numbering. Cursor auto-jumps to the first empty slot.

Removed: Unreliable HTML class autocomplete (replaced by Emmet).

Frontend CSS Layers (NEW)

Three independent toggles under Page Blocks → Settings → Frontend CSS:

  • Semantic Reset (~1KB) — modern reset, accessible images, prefers-reduced-motion
  • Typography (~3KB) — system-font stack (zero external requests), responsive headings via clamp(), 65ch measure, styled lists / blockquotes / code / kbd / tables
  • Utility Classes — ~330 Tailwind-inspired classes (grid, flex, spacing, typography, colors, borders, shadows, transitions) + sm: md: lg: responsive variants. Frontend inlines ONLY the classes actually used on the page — no bloat. Builder loads the full set for autocomplete.

Top-Level Page Blocks Admin (NEW)

Moved out of Settings to its own top-level menu: - All Page Blocks — list table with bulk actions, search, status filter - Add New — full edit form with Monaco editors, live preview, position picker - Settings — existing settings page - License — license management

Shortcode Library (NEW)

Reusable blocks stored in a custom database table (wp_gt_page_blocks): - [page_block id="123"] — embed by ID - [page_block slug="hero-section"] — embed by slug - Theme-independent position hooks via gt_pb_get_positions() filter (wp_head, wp_footer, the_content, loop_start, etc.)

Bug Fixes

  • Fixed cssClasses config being serialized as JSON object (array_unique key gaps) — Array.isArray() now passes on the JS side.

Compatibility

  • WordPress 6.0+
  • PHP 8.1+
  • Works with any WordPress theme
  • PHPStan level 5: 0 errors
Stable

GT Page Blocks Builder 2.0.2

Read release notes

Critical fix for v2.0.0/v2.0.1.

The builder was stuck on "Loading Page Blocks Builder..." with no errors. Root cause: the v2.0.0 release ported the dropin's JS which expects the app element ID md-pb-builder-app, but the template HTML still used the old ID md-page-block-builder-app. The JS bailed out silently at the missing-element check.

Fix

  • templates/builder-shell.php: Updated app element ID to md-pb-builder-app
  • Updated wrapper class to md-pb-builder-root and loading class to md-pb-builder-loading to match the new CSS naming

Upgrading from v2.0.x

Just update — clear browser cache to reload the new template.

Stable

GT Page Blocks Builder 2.0.1

Read release notes

Internal hardening release. No functional changes.

Fixes

  • Fix block_categories_all filter signature mismatch (callback registered with accepted_args=2 but only declares 1 parameter)
  • Fix esc_attr() type errors when emitting external asset tags — cast int post_id and int|false filemtime result to string before passing
  • Properly escape stylesheet id attribute in external file output
  • Remove redundant is_array() / is_string() checks against already-narrowed types

Verification

  • PHPStan level 5 passes with 0 errors on the entire plugin
  • All previously broken features verified working
Stable

GT Page Blocks Builder 2.0.0

Read release notes

Major refactor bringing the standalone plugin to production parity with the MD theme dropin.

Major Features

  • AI Chat Sidebar — Multi-turn conversation replaces the inline AI bar. Persistent context, "+ New Chat" button, message history. OpenAI, Anthropic, Gemini supported. Theme CSS variables sent as system prompt context.
  • Inline Text Editing in Preview — Click any heading, paragraph, link, or list item directly in the preview iframe to edit. Enter commits, Escape cancels.
  • Live Preview Patching — No more flicker on every keystroke. CSS/content edits patch iframe DOM in place; only structural changes trigger full reload.
  • HTML Snippet Buttons — Quick-insert buttons on the HTML editor title bar: sec, div, h1-h3, p, a, img, ul, ol, span, b, i. Wraps selection or inserts empty.
  • Section Renaming — Double-click any section name in the sidebar to rename it inline.
  • SVG Icons — Replaces unicode glyphs for hide/duplicate/delete buttons.
  • Keyboard Shortcuts Overlay — ? button shows all shortcuts.
  • Export/Import — Download/upload sections as JSON, append or replace modes.

Settings

  • Preview Customization — New admin fields for custom CSS, head HTML, and footer JS injected into the preview iframe. No PHP filter needed for common cases.
  • AI default model changed from gpt-5.2 to claude-sonnet-4-6.

Fixes

  • Script injection in preview iframe: Now injected post-load via contentDocument.createElement('script') instead of inline <script> in srcdoc. Fixes SyntaxError: Unexpected token '<' errors caused by </script> parsing in srcdoc HTML.
  • SVG icon click delegation: Uses closest('[data-action]') to traverse up from clicked SVG to the button.
  • HTTPS enforcement: All preview style URLs forced to https:// to eliminate mixed content warnings.
  • AI conversation history: All three providers (OpenAI, Anthropic, Gemini) properly send the message array.

Removed

  • Terminal feature (was beta) — removed for production safety.

Compatibility

  • WordPress 6.0+
  • PHP 8.1+
  • Works with any WordPress theme (no theme dependencies)
StableDate not recorded

GT Page Blocks Builder 3.0.4

Read release notes
  • Added a per-section Defer CSS option beside Load CSS from a file in both the visual builder and Block Editor. Off by default.
  • Deferred files use non-blocking print media and switch to all media on load, with a noscript stylesheet fallback for visitors without JavaScript.
  • Preserve deferred loading through saves and draft recovery. Builder previews continue to apply section CSS immediately, and failed file generation retains the inline fallback.
  • Added regression coverage for mixed loading modes, duplicate CSS, head/body deduplication, preview behavior, and editor save payloads.