Skip to content

Commit f9587d2

Browse files
committed
Merge branch 'develop' into trunk
2 parents f282114 + 844e8b7 commit f9587d2

File tree

23 files changed

+198
-157
lines changed

23 files changed

+198
-157
lines changed

CHANGELOG.md

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,39 @@ All notable changes to this project will be documented in this file, per [the Ke
44

55
## [Unreleased] - TBD
66

7+
## [0.4.1] - 2026-03-06
8+
### Fixed
9+
- Issues with 0.4.0 release merge and deploy ([#266](https://github.com/WordPress/ai/pull/266)).
10+
11+
### Developer
12+
- Bump `immutable` from 5.1.4 to 5.1.5 ([#273](https://github.com/WordPress/ai/pull/273)).
13+
- Bump `svgo` from 3.3.2 to 3.3.3 ([#274](https://github.com/WordPress/ai/pull/274)).
14+
- Updated Release Instructions documentation ([#277](https://github.com/WordPress/ai/pull/277)).
15+
16+
## [0.4.0] - 2026-03-05
17+
### Added
18+
- Inline Image Generation directly in the post editor, enabling users to generate images without leaving authoring/editing flows ([#235](https://github.com/WordPress/ai/pull/235)).
19+
- Generate Image within the Media Library with prompt-based image generation workflows ([#258](https://github.com/WordPress/ai/pull/258)).
20+
- Generate Review Notes experiment to analyze post content or individual blocks and suggest refinements via Notes comments in the editor ([#260](https://github.com/WordPress/ai/pull/260), [#267](https://github.com/WordPress/ai/pull/267)).
21+
- Split editor and admin experiments within the settings page ([#232](https://github.com/WordPress/ai/pull/232)).
22+
- Contextual help text to the Abilities Explorer screen to assist users in understanding what Abilities are and how to use them ([#243](https://github.com/WordPress/ai/pull/243)).
23+
24+
### Changed
25+
- Update “Generate Summary” button style to use consistent UI with other buttons in the ediot ([#253](https://github.com/WordPress/ai/pull/253)).
26+
- Standardize Abilities invocation using the `runAbility` helper to improve consistency across API calls ([#228](https://github.com/WordPress/ai/pull/228)).
27+
- Make provider labels in the Abilities Explorer translatable and adjust badge styling for clarity ([#247](https://github.com/WordPress/ai/pull/247)).
28+
- Improve Abilities Explorer table layout by aligning spacing and styles with WordPress admin table conventions ([#248](https://github.com/WordPress/ai/pull/248)).
29+
- Improve the Ability test page with better internationalization and add copy-to-clipboard functionality ([#256](https://github.com/WordPress/ai/pull/256)).
30+
31+
### Removed
32+
- Remove unused checkbox column from the Abilities Explorer table, as it was not tied to any bulk actions ([#246](https://github.com/WordPress/ai/pull/246)).
33+
34+
### Fixed
35+
- Fix the position and behavior of the “Copy” button in code blocks within the Abilities Explorer ([#245](https://github.com/WordPress/ai/pull/245)).
36+
37+
### Developer
38+
- Bump `basic-ftp` from 5.1.0 to 5.2.0 ([#259](https://github.com/WordPress/ai/pull/259)).
39+
740
## [0.3.1] - 2026-02-18
841
### Fixed
942
- Increased image generation request timeout from 30s to 90s to reduce failed generations on slower providers/models ([#226](https://github.com/WordPress/ai/pull/226)).
@@ -45,6 +78,8 @@ All notable changes to this project will be documented in this file, per [the Ke
4578

4679
### Security
4780
- Change our user permission checks to use `edit_post` instead of `read_post` ([GHSA-mxf5-gp98-93wv](https://github.com/WordPress/ai/security/advisories/GHSA-mxf5-gp98-93wv)).
81+
82+
### Developer
4883
- Bumped `diff` from 4.0.2 to 4.0.4 ([#196](https://github.com/WordPress/ai/pull/196)).
4984
- Bumped `lodash-es` from 4.17.22 to 4.17.23 ([#198](https://github.com/WordPress/ai/pull/198)).
5085
- Bumped `lodash` from 4.17.21 to 4.17.23 ([#199](https://github.com/WordPress/ai/pull/199)).
@@ -89,10 +124,8 @@ All notable changes to this project will be documented in this file, per [the Ke
89124
### Fixed
90125
- Bug in asset loader causing missing dependencies ([#113](https://github.com/WordPress/ai/pull/113)).
91126

92-
### Security
93-
- Bumped `js-yaml` from 3.14.1 to 3.14.2 ([#105](https://github.com/WordPress/ai/pull/105)).
94-
95127
### Developer
128+
- Bumped `js-yaml` from 3.14.1 to 3.14.2 ([#105](https://github.com/WordPress/ai/pull/105)).
96129
- Updated format script to only format JS to avoid random JSON file changes ([#114](https://github.com/WordPress/ai/pull/114)).
97130
- Updated documentation ([#108](https://github.com/WordPress/ai/pull/108), [#112](https://github.com/WordPress/ai/pull/112)).
98131

@@ -108,6 +141,8 @@ First public release of the AI Experiments plugin, introducing a framework for e
108141
- Utilities Ability for common AI tasks and testing
109142

110143
[Unreleased]: https://github.com/WordPress/ai/compare/trunk...develop
144+
[0.4.1]: https://github.com/WordPress/ai/compare/0.4.0...0.4.1
145+
[0.4.0]: https://github.com/WordPress/ai/compare/0.3.1...0.4.0
111146
[0.3.1]: https://github.com/WordPress/ai/compare/0.3.0...0.3.1
112147
[0.3.0]: https://github.com/WordPress/ai/compare/0.2.1...0.3.0
113148
[0.2.1]: https://github.com/WordPress/ai/compare/0.2.0...0.2.1

CREDITS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ The following individuals are responsible for curating the list of issues, respo
1212

1313
Thank you to all the people who have already contributed to this repository via bug reports, code, design, ideas, project management, translation, testing, etc.
1414

15-
[Darin Kotter (@dkotter)](https://github.com/dkotter), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Jason Adams (@JasonTheAdams)](https://github.com/JasonTheAdams), [Dovid Levine (@justlevine)](https://github.com/justlevine),[Md Aminul Islam (@theaminuli)](https://github.com/theaminuli), [Felix Arntz (@felixarntz)](https://github.com/felixarntz), [Jonathan Desrosiers (@desrosj)](https://github.com/desrosj), [Mohamed Khaled (@Ref34t)](https://github.com/Ref34t), [Iqbal Hossain (iqbal-web)](https://github.com/iqbal-web), [Lina Wiezkowiak (@linawiezkowiak)](https://github.com/linawiezkowiak), [Rachael Cortellessa (@rachaelcortellessa)](https://github.com/rachaelcortellessa), [James LePage (@Jameswlepage)](https://github.com/Jameswlepage), [Tammie Lister (@karmatosed)](https://github.com/karmatosed), [Aki Hamano (@t-hamano)](https://github.com/t-hamano), [Blake Bertuccelli-Booth (@bbertucc)](https://github.com/bbertucc), [Mujeebu Rahman (@mujuonly)](https://github.com/mujuonly), [Mukesh Panchal (@mukeshpanchal27)](https://github.com/mukeshpanchal27), [Pascal Birchler (@swissspidy)](https://github.com/swissspidy), [Dhruvang Shah (@dhruvang21)](https://github.com/dhruvang21), [Aslam Doctor (@aslamdoctor)](https://github.com/aslamdoctor), [John Parris (@mindctrl)](https://github.com/mindctrl), [James Morrison (@jamesmorrison)](https://github.com/jamesmorrison), [Paul Bearne (@pbearne)](https://github.com/pbearne), [Matt Cromwell (@mathetos)](https://github.com/mathetos), [Huzaifa Al Mesbah (@huzaifaalmesbah)](https://github.com/huzaifaalmesbah), [Mehraz Morshed (@mehrazmorshed)](https://github.com/mehrazmorshed), [JuanMa Garrido (@juanmaguitar)](https://github.com/juanmaguitar), [Adam Zieliński (@adamziel)](https://github.com/adamziel), [Weston Ruter (@westonruter)](https://github.com/westonruter), [Jonathan Bossenger (@jonathanbossenger)](https://github.com/jonathanbossenger), [Juan Aldasoro (@juanfra)](https://github.com/juanfra), [Casey Manos (@caseymanos)](https://github.com/caseymanos), [Stephanie Walters (@PypWalters)](https://github.com/PypWalters), [prabinjha (@prabinjha)](https://github.com/prabinjha), [Kurt Rank (@kurtrank)](https://github.com/kurtrank), [Lauren Woodmansee (@lwoodmansee)](https://github.com/lwoodmansee), [Andrew Palmer (@hellobertha)](https://github.com/hellobertha), [Md Aminul Islam (@theaminulai)](https://github.com/theaminulai), [Joe Dolson (@joedolson)](https://github.com/joedolson), [Andrei Zanouski (@andreizanik)](https://github.com/andreizanik), [Om vataliya (@Omcodes23)](https://github.com/Omcodes23).
15+
[Darin Kotter (@dkotter)](https://github.com/dkotter), [Jeffrey Paul (@jeffpaul)](https://github.com/jeffpaul), [Jason Adams (@JasonTheAdams)](https://github.com/JasonTheAdams), [Dovid Levine (@justlevine)](https://github.com/justlevine),[Md Aminul Islam (@theaminuli)](https://github.com/theaminuli), [Felix Arntz (@felixarntz)](https://github.com/felixarntz), [Jonathan Desrosiers (@desrosj)](https://github.com/desrosj), [Mohamed Khaled (@Ref34t)](https://github.com/Ref34t), [Iqbal Hossain (iqbal-web)](https://github.com/iqbal-web), [Lina Wiezkowiak (@linawiezkowiak)](https://github.com/linawiezkowiak), [Rachael Cortellessa (@rachaelcortellessa)](https://github.com/rachaelcortellessa), [James LePage (@Jameswlepage)](https://github.com/Jameswlepage), [Tammie Lister (@karmatosed)](https://github.com/karmatosed), [Aki Hamano (@t-hamano)](https://github.com/t-hamano), [Blake Bertuccelli-Booth (@bbertucc)](https://github.com/bbertucc), [Mujeebu Rahman (@mujuonly)](https://github.com/mujuonly), [Mukesh Panchal (@mukeshpanchal27)](https://github.com/mukeshpanchal27), [Pascal Birchler (@swissspidy)](https://github.com/swissspidy), [Dhruvang Shah (@dhruvang21)](https://github.com/dhruvang21), [Aslam Doctor (@aslamdoctor)](https://github.com/aslamdoctor), [John Parris (@mindctrl)](https://github.com/mindctrl), [James Morrison (@jamesmorrison)](https://github.com/jamesmorrison), [Paul Bearne (@pbearne)](https://github.com/pbearne), [Matt Cromwell (@mathetos)](https://github.com/mathetos), [Huzaifa Al Mesbah (@huzaifaalmesbah)](https://github.com/huzaifaalmesbah), [Mehraz Morshed (@mehrazmorshed)](https://github.com/mehrazmorshed), [JuanMa Garrido (@juanmaguitar)](https://github.com/juanmaguitar), [Adam Zieliński (@adamziel)](https://github.com/adamziel), [Weston Ruter (@westonruter)](https://github.com/westonruter), [Jonathan Bossenger (@jonathanbossenger)](https://github.com/jonathanbossenger), [Juan Aldasoro (@juanfra)](https://github.com/juanfra), [Casey Manos (@caseymanos)](https://github.com/caseymanos), [Stephanie Walters (@PypWalters)](https://github.com/PypWalters), [prabinjha (@prabinjha)](https://github.com/prabinjha), [Kurt Rank (@kurtrank)](https://github.com/kurtrank), [Lauren Woodmansee (@lwoodmansee)](https://github.com/lwoodmansee), [Andrew Palmer (@hellobertha)](https://github.com/hellobertha), [Md Aminul Islam (@theaminulai)](https://github.com/theaminulai), [Joe Dolson (@joedolson)](https://github.com/joedolson), [Andrei Zanouski (@andreizanik)](https://github.com/andreizanik), [Om vataliya (@Omcodes23)](https://github.com/Omcodes23), [Greg Ziółkowski (@gziolo)](https://github.com/gziolo), [Sapayth Hossain (@sapayth)](https://github.com/sapayth), [Ryuji Yasukochi (@Ryujiyasu)](https://github.com/Ryujiyasu), [Nischay (@zeus2611)](https://github.com/zeus2611).
1616

1717
## Libraries
1818

README.md

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@ This [Canonical Plugin](https://make.wordpress.org/core/2022/09/11/canonical-plu
3333

3434
## Current Features
3535

36-
* **[Abilities Explorer](docs/experiments/abilities-explorer.md)**Browse and interact with registered AI abilities from a dedicated admin screen.
37-
* * **[Alt Text Generation](docs/experiments/alt-text-generation.md)** - Generate descriptive alt text for images to improve accessibility.
36+
* **[Abilities Explorer](docs/experiments/abilities-explorer.md)**Discover, inspect, test, and document all abilities registered via the WordPress Abilities API.
37+
* * **[Alt Text Generation](docs/experiments/alt-text-generation.md)** - Generates descriptive alt text for images using AI vision models.
3838
* **[Content Summarization](docs/experiments/summarization.md)** - Summarizes long-form content into digestible overviews.
39-
* **[Excerpt Generation](docs/experiments/excerpt-generation.md)** - Automatically create concise summaries for your posts.
39+
* **[Excerpt Generation](docs/experiments/excerpt-generation.md)** - Generates excerpt suggestions from content.
4040
* **Experiment Framework** - Opt-in system that lets you enable only the AI features you want to use.
41-
* **[Image Generation](docs/experiments/image-generation.md)** - Create feature image from post content directly in the block editor.
41+
* **[Image Generation](docs/experiments/image-generation.md)** - Create images from post content in the editor, also via the Media Library.
4242
* **Multi-Provider Support** - Works with popular AI providers like OpenAI, Google, and Anthropic.
43-
* **Title Generation** - Generate title suggestions for your posts with a single click. Perfect for brainstorming headlines or finding the right tone for your content.
43+
* **Review Notes** - Reviews post content block-by-block and adds Notes with suggestions for Accessibility, Readability, Grammar, and SEO.
44+
* **Title Generation** - Generates title suggestions from content.
4445

4546
## Roadmap
4647

@@ -52,28 +53,22 @@ Overview of planned features:
5253
* **Content Assistant** – AI-powered writing and editing in Gutenberg
5354
* **Site Agent** – Natural language WordPress administration
5455
* **Workflow Automation** – AI-driven task automation
55-
* Title Generation / Rewriting – Suggests alternative post titles for better clarity, tone, or engagement.
56-
* Excerpt Generation – Creates concise summaries for post excerpts.
57-
* Content Summarization – Summarizes long-form content into digestible overviews.
5856
* Contextual Tagging – Suggests relevant tags and categories to organize content.
59-
* **Media Enhancement** – Auto-captioning and intelligent organization
60-
* Alt Text Generation – Auto-generates descriptive alt text for images.
61-
* Image Generation – Produces inline or featured images from text prompts.
6257

6358
## Developer Experience
6459

6560
The AI Experiments plugin is meant to be studied, forked, and extended. If you’re a host or agency, you can configure AI providers on behalf of your users so they don’t need to bring their own API keys.
6661

6762
If you’re a plugin developer, you’ll be able to:
6863

69-
* Read the [Contributing Guide](CONTRIBUTING.md) for detailed development information.
70-
* Register new AI abilities
71-
* Override default behavior with custom filters
72-
* Reuse the same building blocks in your own plugins
64+
* Read the [Contributing Guide](CONTRIBUTING.md) for detailed development information.
65+
* Register new AI abilities
66+
* Override default behavior with custom filters
67+
* Reuse the same building blocks in your own plugins
7368

7469
## How to Get Involved
7570

76-
We want everyone's input! Whether you're an author, editor, educator, researcher, accessibility expert, user, or just someone with strong feelings about AI, all are welcome.
71+
We want everyone's input! Whether you're an author, editor, educator, researcher, accessibility expert, user, or someone with strong feelings about AI, all are welcome.
7772

7873
Anyone contributing to the AI Experiments plugin is expected to conduct themselves in accordance with the WordPress project's [Code of Conduct](https://github.com/WordPress/.github/blob/trunk/CODE_OF_CONDUCT.md).
7974

ai.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* Plugin Name: AI Experiments
1212
* Plugin URI: https://github.com/WordPress/ai
1313
* Description: AI experiments and capabilities for WordPress.
14-
* Version: 0.3.1
14+
* Version: 0.4.1
1515
* Requires at least: 6.9
1616
* Requires PHP: 7.4
1717
* Author: WordPress.org Contributors

docs/RELEASE_INSTRUCTIONS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ This issue is for tracking changes for the X.Y.Z release. Target release date:
1919
- [ ] Props: update `CREDITS.md` file with any new contributors, confirm maintainers are accurate.
2020
- [ ] Readme updates: Make any other readme changes as necessary in `README.md` and `readme.txt`.
2121
- [ ] New files: Check to be sure any new files/paths that are unnecessary in the production version are included in `.gitattributes`.
22-
- [ ] Merge: Make a non-fast-forward merge from your release branch to `develop` (or merge the pull request), then do the same for `develop` into `trunk` (`git checkout trunk && git merge --no-ff develop`). `trunk` now contains the stable development version.
22+
- [ ] Merge release PR: Make a non-fast-forward merge from your release branch to `develop` (or merge the pull request).
23+
- [ ] Merge develop to trunk: Do the same for `develop` into `trunk` (`git checkout trunk && git merge --no-ff develop`). `trunk` now contains the stable development version.
2324
- [ ] Push: Push your trunk branch to GitHub (e.g. `git push origin trunk`).
2425
- [ ] [Wait for build](https://xkcd.com/303/): Head to the [Actions](https://github.com/WordPress/ai/actions) tab in the repo and wait for it to finish if it hasn't already. If it doesn't succeed, figure out why and start over.
2526
- [ ] Check the build: Check out the `trunk` branch and test for functionality locally.

includes/Abilities/Review_Notes/Review_Notes.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,14 @@
2727
* Reviews a single block's content and returns suggestions for the specified
2828
* review types (Accessibility, Readability, Grammar, SEO, etc.).
2929
*
30-
* @since x.x.x
30+
* @since 0.4.0
3131
*/
3232
class Review_Notes extends Abstract_Ability {
3333

3434
/**
3535
* Review types supported by this Ability.
3636
*
37-
* @since x.x.x
37+
* @since 0.4.0
3838
*
3939
* @var list<string>
4040
*/
@@ -44,7 +44,7 @@ class Review_Notes extends Abstract_Ability {
4444
/**
4545
* {@inheritDoc}
4646
*
47-
* @since x.x.x
47+
* @since 0.4.0
4848
*
4949
* @return array<string, mixed> The input schema of the ability.
5050
*/
@@ -95,7 +95,7 @@ protected function input_schema(): array {
9595
/**
9696
* {@inheritDoc}
9797
*
98-
* @since x.x.x
98+
* @since 0.4.0
9999
*
100100
* @return array<string, mixed> The output schema of the ability.
101101
*/
@@ -127,7 +127,7 @@ protected function output_schema(): array {
127127
/**
128128
* {@inheritDoc}
129129
*
130-
* @since x.x.x
130+
* @since 0.4.0
131131
*
132132
* @param mixed $input The input arguments to the ability.
133133
* @return array{suggestions: list<array{review_type: string, text: string}>}|\WP_Error
@@ -180,7 +180,7 @@ protected function execute_callback( $input ) {
180180
/**
181181
* {@inheritDoc}
182182
*
183-
* @since x.x.x
183+
* @since 0.4.0
184184
*
185185
* @param mixed $input The input arguments to the ability.
186186
* @return bool|\WP_Error True if the user has permission, WP_Error otherwise.
@@ -234,7 +234,7 @@ protected function permission_callback( $input ) {
234234
/**
235235
* {@inheritDoc}
236236
*
237-
* @since x.x.x
237+
* @since 0.4.0
238238
*/
239239
protected function meta(): array {
240240
return array(
@@ -245,7 +245,7 @@ protected function meta(): array {
245245
/**
246246
* Returns the JSON schema used for structured output generation.
247247
*
248-
* @since x.x.x
248+
* @since 0.4.0
249249
*
250250
* @return array<string, mixed> JSON schema for an array of suggestions.
251251
*/
@@ -279,7 +279,7 @@ protected function suggestions_schema(): array {
279279
/**
280280
* Generates review suggestions for a single block.
281281
*
282-
* @since x.x.x
282+
* @since 0.4.0
283283
*
284284
* @param string $block_type The block type identifier.
285285
* @param string $block_content The plain-text block content.
@@ -357,7 +357,7 @@ protected function generate_review(
357357
/**
358358
* Creates the prompt for the review.
359359
*
360-
* @since x.x.x
360+
* @since 0.4.0
361361
*
362362
* @param string $block_type The block type identifier.
363363
* @param string $block_content The plain-text block content.
@@ -392,7 +392,7 @@ private function create_prompt( string $block_type, string $block_content, strin
392392
* Notes use format [REVIEW_TYPE] text. Returns lowercase keys
393393
* for case-insensitive comparison.
394394
*
395-
* @since x.x.x
395+
* @since 0.4.0
396396
*
397397
* @param list<string> $existing_notes Note content strings.
398398
* @return array<string, true> Map of existing review types to true.

includes/Abstracts/Abstract_Experiment.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ abstract class Abstract_Experiment implements Experiment {
4949
/**
5050
* Experiment category.
5151
*
52-
* @since x.x.x
52+
* @since 0.4.0
5353
* @var string
5454
*/
5555
protected string $category;
@@ -149,7 +149,7 @@ public function get_description(): string {
149149
/**
150150
* Gets the experiment category.
151151
*
152-
* @since x.x.x
152+
* @since 0.4.0
153153
*
154154
* @return string The experiment category.
155155
*/

includes/Contracts/Experiment.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function get_description(): string;
5555
*
5656
* Determines where the experiment appears in the settings UI.
5757
*
58-
* @since x.x.x
58+
* @since 0.4.0
5959
*
6060
* @return string The experiment category.
6161
*/

0 commit comments

Comments
 (0)