Skip to content

Release - #2848

Merged
abaicus merged 231 commits into
masterfrom
development
Jul 6, 2026
Merged

Release#2848
abaicus merged 231 commits into
masterfrom
development

Conversation

@abaicus

@abaicus abaicus commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

New Features

  • Modernized AI backend: Otter's AI features work with the native AI adapters in the WordPress 7.0 release with backwards compatibility for older versions.
  • AI content toolbar: Rewrite, summarize, expand, shorten, translate, change tone, fix grammar, and simplify from a new modal, plus custom user-defined actions.
  • AI page generation: Generate a section or full page from a prompt and insert it into the editor.
  • AI form autoresponders: Enrich autoresponder messages with personalized, AI-generated content.
  • New block patterns and page templates: 50 new free & 100+ premium block patterns plus 3 new free & 10 premium template packages for the Otter Design Library.
  • Smarter design library search: Better search over the Design Library, powered by rich descriptions and fuzzt search.
  • Better pattern categorization and tagging: Otter Design Library is now better categorized and tagged, making patterns easier to find.
  • Accent color selector for Design Library: Preview and insert patterns in your accent color, so they arrive on-brand.
  • Content Slider block: A lightweight slider that accepts any inner blocks as slides, not just images.
  • ACF Repeater support: Pull dynamic values from ACF Repeater fields, including sub-fields like images.
  • Archive title prefix toggle: Show a category name without the "Category:" prefix.
  • Cloudflare Turnstile: An alternative to reCAPTCHA for Form block spam protection.
  • Form reply-to: Set a configurable Reply-To address on the Form block.
  • Reworked Block Conditions design: Cleaner, less cluttered visibility Conditions panel.

Fixes

  • Slider duplication: No more error when duplicating a Slider block.
  • Maps block: Toggle scroll-zoom, plus fixes for duplicate markers, placement, and popups.
  • Button Group global options: Appearance, Letter case, and Line height now properly apply on the front end.
  • Custom CSS panel: No longer shows duplicated CSS textarea boxes on WP 7.0.
  • Keyboard navigation: Arrow-key navigation between blocks works again on WP 7.0.
  • Live Search warning: Fixed the "Undefined array key 'cat'" PHP warning when no category is selected.
  • Required fields in emails: Multiple-choice values no longer show a stray asterisk.
  • Image alt text: Blocks with images now support alt attributes for EU accessibility compliance.
  • Modal close button: Added aria-labels for screen-reader users.
  • WooCommerce Builder: Hide placeholders to users that can't edit the product template if no user-facing content can be displayed.

Changes

  • Block API v3: Migrated all blocks to apiVersion: 3, removing editor deprecation warnings and fixing iframe compatibility.
  • Resilient form submissions: Entries save to the database before email, so mail failures no longer lose leads; errors are logged.
  • Removed CSS saving notice: Dropped noisy "Saving CSS" notices while still surfacing real errors.
  • Performance: Audited block loading and caching for editor and front-end speed.
  • Atomic Wind block names: Show meaningful names for Atomic Wind blocks in List View.
  • Atomic Wind icons: New icons for Atomic Wind blocks.
  • Atomic Wind CSS warmup: Added CSS generator warmup so the styles are already generated before the page is visited.
  • Uprefixed dynamic category name: Users can now display the category name dynamic value without a prefix.
  • Dependencies: Updated internal dependencies.
  • Security: General security improvements.
  • English typos: Corrected several English typos in form messages.
Old content

Comment thread src/blocks/test/e2e/blocks/form.spec.js Fixed
Comment thread src/blocks/test/e2e/blocks/form.spec.js Fixed
Comment thread src/blocks/test/e2e/blocks/section.spec.js Fixed
Comment thread src/blocks/test/e2e/blocks/section.spec.js Fixed
@pirate-bot

pirate-bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Diff

Package Old Size New Size Diff
Animations 276.77 KB 178.27 KB -98.51 KB (-35.59%)
Blocks 1.55 MB 1.65 MB 102.91 KB (6.49%)
CSS 105.9 KB 7.83 KB -98.06 KB (-92.60%)
Dashboard 204.08 KB 172.49 KB -31.59 KB (-15.48%)
Onboarding 166.59 KB 68.14 KB -98.45 KB (-59.10%)
Export Import 102.86 KB 4.73 KB -98.14 KB (-95.41%)
Pro 412.66 KB 439.82 KB 27.16 KB (6.58%)

@pirate-bot

pirate-bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Plugin build for 055c87a is ready 🛎️!

@pirate-bot

pirate-bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

E2E Tests

Playwright Test Status: See serial and parallel matrix jobs

Performance Results serverResponse: {"q25":425.3,"q50":446.35,"q75":466.7,"cnt":10}, firstPaint: {"q25":1295.6,"q50":1353.95,"q75":1490,"cnt":10}, domContentLoaded: {"q25":3730.5,"q50":3776.4,"q75":3794.1,"cnt":10}, loaded: {"q25":3732.6,"q50":3778.3,"q75":3795.9,"cnt":10}, firstContentfulPaint: {"q25":4276.5,"q50":4309.45,"q75":4326.4,"cnt":10}, firstBlock: {"q25":14892.1,"q50":14952.95,"q75":15010.8,"cnt":10}, type: {"q25":27.23,"q50":29.13,"q75":31.82,"cnt":10}, typeWithoutInspector: {"q25":25.72,"q50":27.01,"q75":37.68,"cnt":10}, typeWithTopToolbar: {"q25":39.27,"q50":40.02,"q75":42.94,"cnt":10}, typeContainer: {"q25":18.73,"q50":20.51,"q75":21.7,"cnt":10}, focus: {"q25":152.78,"q50":159.7,"q75":163.7,"cnt":10}, inserterOpen: {"q25":43.53,"q50":48.31,"q75":53.66,"cnt":10}, inserterSearch: {"q25":17.16,"q50":19.33,"q75":19.96,"cnt":10}, inserterHover: {"q25":5.66,"q50":6.16,"q75":7.08,"cnt":20}, loadPatterns: {"q25":1820.45,"q50":1847.71,"q75":1877.59,"cnt":10}, listViewOpen: {"q25":257.4,"q50":267.73,"q75":274.53,"cnt":10}

abaicus and others added 14 commits June 4, 2026 14:05
Fixed button group global settings
- Add isset() check before accessing otterSearchQuery['cat']
- Store cat value in variable before using it
- Add test case for missing cat key scenario
- Fix PHPCS alignment issue

Agent-Logs-Url: https://github.com/Codeinwp/otter-blocks/sessions/170e8ebd-3fea-4925-ada5-97d494c13734

Co-authored-by: abaicus <15010186+abaicus@users.noreply.github.com>
Co-authored-by: abaicus <15010186+abaicus@users.noreply.github.com>
…-editors

[WIP] Fix duplicated editor areas in custom CSS panel
…-cat-warning

Fix undefined array key 'cat' warning in Live Search
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
dashboard: route active pro users to pro support link
dependabot Bot and others added 3 commits July 2, 2026 16:51
Bumps [codeinwp/themeisle-sdk](https://github.com/Codeinwp/themeisle-sdk) from 3.3.52 to 3.3.54.
- [Release notes](https://github.com/Codeinwp/themeisle-sdk/releases)
- [Changelog](https://github.com/Codeinwp/themeisle-sdk/blob/v3.3.54/CHANGELOG.md)
- [Commits](Codeinwp/themeisle-sdk@v3.3.52...v3.3.54)

---
updated-dependencies:
- dependency-name: codeinwp/themeisle-sdk
  dependency-version: 3.3.54
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
)

Bumps [@automattic/babel-plugin-replace-textdomain](https://github.com/Automattic/babel-plugin-replace-textdomain) from 1.1.2 to 1.1.6.
- [Changelog](https://github.com/Automattic/babel-plugin-replace-textdomain/blob/trunk/CHANGELOG.md)
- [Commits](Automattic/babel-plugin-replace-textdomain@v1.1.2...v1.1.6)

---
updated-dependencies:
- dependency-name: "@automattic/babel-plugin-replace-textdomain"
  dependency-version: 1.1.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Comment thread src/blocks/plugins/ai-content/page-style.ts Fixed
Comment thread src/blocks/test/unit/mocks/wordpress-blocks.js Fixed
Soare-Robert-Daniel and others added 16 commits July 3, 2026 11:28
Ports the telemetry from #2865 onto the post-#2860 AI modal flow:
consent-gated outcome events (insert/replace/discard) per mode plus a
bucketed regenerate-count, with a minimal outcome-form signal for the
legacy form path. Adds a stub-backed Playwright spec for apply/discard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…elper

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: add unified consent-gated editor telemetry
getByText('Font Family') without exact matched both the label and
the 'Select Font Family' button, causing a strict-mode violation.
@poonam279

poonam279 commented Jul 3, 2026

Copy link
Copy Markdown

@Soare-Robert-Daniel,

Update: Please disregard my below comment. I can't reproduce this anymore. The dark overlay is rendering correctly now in both the editor and the frontend. It may have been caused by a temporary caching or build issue on my end.

While checking the build, I noticed that the templates under the Glass category look a bit off. Specifically, the dark overlay doesn't seem to render at the correct place.

image

The same thing happens in the editor, as shown in the below screenshot

image

while the templates look fine on the frontend.

image Is this expected behavior in the editor, or should the overlay appear the same as it does on the frontend?

Soare-Robert-Daniel and others added 8 commits July 6, 2026 09:11
…mic content, form server/submissions and patterns

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…x rendering

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…CodeQL sanitization alerts

Regex strip-tags on innerHTML can leave markup fragments behind
(js/incomplete-multi-character-sanitization). Use textContent for DOM
reads and an inert DOMParser document for HTML strings instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…bels test

Covers the two remaining CodeQL sanitization alerts (AI page-style
digest, Jest block mock) and the single-quote lint error that failed
the JS Test job.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…pts, add review block tests

- permissions: contents: read on the five CodeQL-flagged workflows (all
  write steps use BOT_TOKEN, unaffected)
- remove test:unit:php:multisite scripts pointing at a nonexistent config
- unit tests for Review_Block ratings math, star markup, JSON-LD schema,
  offers variants, currency fallback and footer schema dedupe

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
test: expand PHP unit test coverage
Drop the real license.json from the e2e workflow: development.php
re-activates Pro from it on every request, so any "without Otter Pro"
assertion could only pass when the live activation call failed.

Restore the active-Pro stub baseline in form-retention's afterEach
(the previous deactivatePro leaked into later Pro-gated form.spec
tests, which only passed on CI because of that re-activation), and
set the required Pro state inline in the upsell and legacy
save-location tests instead of relying on suite order.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@abaicus
abaicus merged commit 3457af6 into master Jul 6, 2026
20 of 21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.