Added — Numeric indexing on Collections: {{ posts[0].title }}, {{ featured[2].author.email }}.
Added — Arbitrary expressions inside bracket access: {{ posts[loop.index] }}, {{ items[i + 1].title }}, {{ map[user.role] }}.
Added — Editor placeholders for {{ post.* }} when no post is in context (FSE templates).
Added — Conditional HTML attributes via null: disabled="{{ cond ? true : null }}" omits the attribute.
Added — WooCommerce product fields expanded (attributes, variations, shipping, tax, sale dates, catalog visibility, etc.); product_variation exposes the same fields as product.
Added — Inline data:image/* URIs (PNG, JPEG, GIF, WebP, AVIF, SVG) on <img>, <video poster>, <source>, and <track>.
Added — Editors and Authors can now use Unblock without manage_options. Settings moved to a dedicated unblock/v1/settings REST endpoint, filterable via unblock/settings/can_read and unblock/settings/can_write.
Fixed — SVG content and expression operators (>, <) preserved on save.
Fixed — Twig expressions ({{ ... }}) in block content no longer corrupted on save.
Fixed — SVG attribute casing (viewBox, preserveAspectRatio, etc.) and MathML's definitionURL preserved on save.
Fixed — CSS selector normalizer mangling spaces around * and combinators inside parentheses (e.g., :has(~ * iframe)).
Fixed — HTML attributes always rendered in lowercase, breaking case-sensitive SVG attributes like viewBox.
Improved — Attributes panel normalizes attribute names on blur (lowercase + SVG case correction per HTML5 spec).
Added — Temperature control in AI chat — presets (Precise, Balanced, Creative) with per-agent defaults and unblock/ai/temperature filter.
Added — unblock/form/send_email filter to skip the default email notification (for CRM/webhook integrations).
Added — Form ID support via data-unbk-form attribute value, accessible through $context->form_id().
Improved — CSS import directives now work inside nested at-rules (@media, @supports, etc.).
Improved — CSS importer clears the code editor after import and auto-selects the first parsed item.
Added — unblock/form/client_ip filter for overriding the client IP used in form rate limiting (proxy support).
Added — Security regression tests for PostQuery type filtering and Processor timestamp validation.
Improved — AI chat shows a notice with a link to Settings → Connectors when no AI provider is configured, instead of letting the user send a message and get an error.
Improved — AI image generation errors are now reported to the model so it can explain the failure to the user.
Improved — Form rate limiting uses REMOTE_ADDR only; proxy setups use the new unblock/form/client_ip filter.
Improved — MCP sessions now store user_id and enforce ownership on register/deregister.
Improved — MCP command IDs use cryptographically secure UUIDs (wp_generate_uuid4) instead of uniqid.
Improved — File write permissions use FS_CHMOD_FILE (default 0644) instead of hardcoded 0755.
Improved — License update check uses POST instead of GET to keep license keys out of URLs and server logs.
Improved — unblock/ai/model_preference filter now receives the user-selected model and can always override.
Improved — AI tool continuation prompt extracted to dedicated prompt file.
Improved — AI tool continuation history builder extracted to separate method for clarity.
Fixed — AI continuation calls rejected by Anthropic due to missing tool_result for client-side tool calls.
Fixed — AI continuation calls failing with Google due to multiple consecutive user-role messages.
Fixed — AI continuation function response IDs mismatching provider's original call IDs.
Improved — AI builder prompt with collection directive and class reuse instructions for create_styles.
Improved — AI context for unused CSS selectors with compact property-name summaries grouped by collection.
Improved — AI error messages now include verbose provider details for easier diagnostics.
Fixed — Build script zip exclusion pattern dropping includes/ai/tools/ and class-tools.php.
Fixed — AI tool calls dropped with OpenAI Responses API (only first candidate was processed).
Fixed — AI continuation calls failing with OpenAI when tool call history was incomplete.
Added — Key argument to request get and post providers for direct parameter access.
Added — Twig loop variable in loops: index, index0, revindex, revindex0, first, last, length.
Added — CSS importer collection directive to organize imports into named collections.
Added — AI prompt support for CSS collection directive and existing CSS reuse guidelines.
Improved — CSS importer with two-mode UI: Parse CSS to review categorized tree, then import.
Improved — CSS importer tree with selection preview, item deletion, and filtered import.
Improved — AI chat stream loader timer format from "1min 20s" to compact "1m20s".
Improved — AI chat request timeout increased from 5 to 10 minutes for complex page generation.
Fixed — AI chat stream loader message pushing timer outside container on long image messages.
Fixed — AI chat assistant messages with leading/trailing whitespace causing floating content.
Fixed — MCP bridge surviving MySQL restarts/timeouts with automatic reconnection.
Fixed — MCP bridge result POST retrying on transient DB failures to prevent lost responses.
Added — WooCommerce integration: product data provider, currency filter, and AI prompt guidance.
Added — CPT-aware provider routing with automatic post field inheritance.
Added — Editor support for nested loops over Reference arrays (gallery, upsells, cross-sells).
Added — unblock/ai/prompts filter for integrations to extend AI system prompts.
Fixed — Font families crash when store properties are null instead of undefined.
Fixed — CSS purge crash when style options are updated via REST API.
Added — Form submission with REST endpoint, anti-spam protection, and email delivery.
Added — Image preview thumbnails in AI chat stream loader.
Updated — MCP session UI with tooltips, updated icons, and styling.
Updated — Translations: add ai-chat to JSON map, translate new strings, use _n() for plurals.
Improved — Scope editor fallback CSS to only global and block-referenced selectors instead of all selectors.
Improved — Remove confirm dialog when switching AI agents.
Added — AI chat sidebar with SSE streaming and tool system.
Added — MCP server integration with SSE-based bridge for external AI tools.
Added — Twig-compatible expression parser with filters, operators, and functions.
Added — Loop block with query system and pagination.
Added — CSS comment directives for global scope selectors.
Added — License SDK with external key support.
Improved — Automatically wrap image block inside figure element.
Fixed — CSS variables generator error when no folders.
Fixed — CSS variables not properly rendered in editor when no folders.
Fixed — CSS variables not properly rendered in editor when selector empty.