Skip to content

Commit 3457af6

Browse files
authored
release(minor): v3.2.0
### 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.
2 parents 1a3f151 + 055c87a commit 3457af6

661 files changed

Lines changed: 71306 additions & 22170 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.distignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,5 @@ tsconfig.json
4242
/plugins
4343
/docs
4444
/build/pro/
45+
*.map
4546
AGENTS.md

.eslintrc

Lines changed: 0 additions & 94 deletions
This file was deleted.

.github/workflows/build-size.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Check out source files
14-
uses: actions/checkout@v4
14+
uses: actions/checkout@v6
1515
with:
1616
ref: ${{ github.base_ref }}
1717
- name: Install composer deps
@@ -21,7 +21,7 @@ jobs:
2121
- name: Build files
2222
run: npm run analyzer
2323
- name: Upload base stats.json
24-
uses: actions/upload-artifact@v4
24+
uses: actions/upload-artifact@v7
2525
with:
2626
name: base
2727
path: ./build/**/stats.json
@@ -33,15 +33,15 @@ jobs:
3333
runs-on: ubuntu-latest
3434
steps:
3535
- name: Check out source files
36-
uses: actions/checkout@v4
36+
uses: actions/checkout@v6
3737
- name: Install composer deps
3838
run: composer install --no-dev --prefer-dist --no-progress --no-suggest
3939
- name: Install npm deps
4040
run: npm ci
4141
- name: Build files
4242
run: npm run analyzer
4343
- name: Upload base stats.json
44-
uses: actions/upload-artifact@v4
44+
uses: actions/upload-artifact@v7
4545
with:
4646
name: pr
4747
path: ./build/**/stats.json
@@ -54,14 +54,14 @@ jobs:
5454

5555
steps:
5656
- name: Checkout PR
57-
uses: actions/checkout@v2
57+
uses: actions/checkout@v6
5858
- name: Download base stats
59-
uses: actions/download-artifact@v4
59+
uses: actions/download-artifact@v8
6060
with:
6161
name: base
6262
path: base
6363
- name: Download PR stats
64-
uses: actions/download-artifact@v4
64+
uses: actions/download-artifact@v8
6565
with:
6666
name: pr
6767
path: pr

.github/workflows/create-build-url.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
git-sha-8: ${{ steps.retrieve-git-sha-8.outputs.sha8 }}
1616
steps:
1717
- name: Check out source files
18-
uses: actions/checkout@v4
19-
- uses: actions/setup-node@v4
18+
uses: actions/checkout@v6
19+
- uses: actions/setup-node@v6
2020
with:
2121
node-version: 20
2222
cache: "npm"

.github/workflows/create-tag.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
with:
1414
persist-credentials: false
1515
- name: Build files using Node
16-
uses: actions/setup-node@v4
16+
uses: actions/setup-node@v6
1717
with:
1818
node-version: 20
1919
cache: "npm"

.github/workflows/deploy-stagging.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ jobs:
1717
SSH_PATH: ${{ secrets.SSH_PATH }}
1818
steps:
1919
- name: Check out source files
20-
uses: actions/checkout@v4
21-
- uses: actions/setup-node@v4
20+
uses: actions/checkout@v6
21+
- uses: actions/setup-node@v6
2222
with:
2323
node-version: 20
2424
cache: "npm"

.github/workflows/deploy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- uses: actions/checkout@master
12-
- uses: actions/setup-node@v4
12+
- uses: actions/setup-node@v6
1313
with:
1414
node-version: 20
1515
cache: "npm"

.github/workflows/e2e-js.yml

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,28 @@ jobs:
1010
e2e:
1111
runs-on: ubuntu-latest
1212
if: github.event.pull_request.draft == false && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
13+
name: ${{ matrix.name }}
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
include:
18+
- name: Playwright Blocks Serial
19+
suite: e2e-serial
20+
command: npm run test:e2e:playwright:serial
21+
artifact: artifacts-e2e-serial
22+
- name: Playwright Blocks Parallel
23+
suite: e2e-parallel
24+
command: npm run test:e2e:playwright:parallel
25+
artifact: artifacts-e2e-parallel
26+
- name: Performance
27+
suite: performance
28+
command: npm run test:performance
29+
artifact: artifacts-performance
1330

1431
steps:
1532
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
16-
- uses: actions/checkout@v4
17-
- uses: actions/setup-node@v4
33+
- uses: actions/checkout@v6
34+
- uses: actions/setup-node@v6
1835
with:
1936
node-version: 20
2037
cache: "npm"
@@ -30,46 +47,45 @@ jobs:
3047
run: |
3148
npm run build-dev
3249
33-
- name: Create License File
34-
run: |
35-
printf "{\"key\":\"${{ secrets.OTTER_PRO_LICENSE }}\"}" > license.json
36-
3750
- name: Setup WP Env
3851
run: |
3952
npm run wp-env start
4053
4154
- name: Install Playwright
4255
run: |
4356
npm install -g playwright-cli
44-
npx playwright install
57+
npx playwright install --with-deps chromium
4558
46-
- name: Playwright Blocks
59+
- name: Run ${{ matrix.name }}
60+
env:
61+
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true
4762
run: |
48-
npm run test:e2e:playwright && echo "PLAYWRIGHT_SUCCESS=true" >> $GITHUB_ENV || echo "PLAYWRIGHT_SUCCESS=false" >> $GITHUB_EN
49-
continue-on-error: true
63+
${{ matrix.command }}
5064
51-
- name: Performance check
65+
- name: Print performance results
66+
if: matrix.suite == 'performance'
5267
run: |
53-
npm run test:performance
5468
cat artifacts/post-editor.performance-results.json
5569
5670
- name: Upload tests artifacts
5771
if: always()
58-
uses: actions/upload-artifact@v4
72+
uses: actions/upload-artifact@v7
5973
with:
60-
name: artifact
74+
name: ${{ matrix.artifact }}
6175
path: ./artifacts
6276
retention-days: 1
6377

6478
- name: Print the results
79+
if: matrix.suite == 'performance'
6580
run: |
6681
RESULTS=$(jq -r 'to_entries|map("\(.key): \(.value)")|join(", ")' artifacts/post-editor.performance-results.json)
67-
FLAKY_TEST_STATUS="Playwright Test Status: $PLAYWRIGHT_SUCCESS"
82+
FLAKY_TEST_STATUS="Playwright Test Status: See serial and parallel matrix jobs"
6883
echo "::set-output name=PERFORMANCE_OUTPUT::$RESULTS"
6984
echo "::set-output name=FLAKY_TEST_STATUS::$FLAKY_TEST_STATUS"
7085
id: summary
7186

7287
- name: Comment
88+
if: matrix.suite == 'performance'
7389
uses: NejcZdovc/comment-pr@v2
7490
with:
7591
file: "e2e-summary.md"

.github/workflows/plugin-check.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,22 @@ concurrency:
88
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
99
cancel-in-progress: true
1010

11+
permissions:
12+
contents: read
13+
1114
jobs:
1215
plugin-check:
1316
name: WordPress.org Guidelines Check
1417
runs-on: ubuntu-latest
1518
steps:
16-
- uses: actions/checkout@v4
19+
- uses: actions/checkout@v6
1720

1821
- name: Neutralize wp-env override
1922
run: |
2023
echo '{}' > .wp-env.override.json
2124
2225
- name: Setup Node.js
23-
uses: actions/setup-node@v4
26+
uses: actions/setup-node@v6
2427
with:
2528
node-version: 20
2629
cache: 'npm'

.github/workflows/tastewp.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on:
55
tags:
66
- "*"
77

8+
permissions:
9+
contents: read
10+
811
jobs:
912
create-wp-for-testing:
1013
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)