Repository navigation
Added
- New Experiment: Content Verification, that adds read-only detection of C2PA Content Credentials in uploaded JPEG/PNG/WebP images (#459).
- New Experiment: Text to Speech, that allows you to generate audio for a specific post and then render audio controls on the frontend (#888).
- New Experiment: MCP Access, that installs and activates the MCP Adapter plugin from WordPress.org when enabled, and adds a
Tools → MCP Accessscreen to control which abilities are exposed to AI agents over MCP (#992). - New Experiment: WebMCP, that lets an agent browser work in the block editor through
document.modelContext, with tools that set the title, insert and edit blocks, save and publish, with every change visible on the page as it happens (#1081). - New Experiment: Revision Change Summary, that summarizes what changed between two revisions of a post on the visual and classic revisions screens (#1159).
- New Experiment: Block Container Label Generation, that generates concise block container labels in List View and the block Rename modal (#1175, (#1218).
- A post's Markdown document (
?output_format=markdown) has approved comments appended (#1121). - New background sync processing to handle generating embeddings for posts and terms (#1135).
- "Generate title" button in the post Rename modal (#1140).
- Learn WordPress AI course links to the plugin readmes and the AI settings header for easier access to course resources (#1154).
- A neutral badge icon to thumbnails of images with C2PA data detected in the Media Library grid view (#1164).
- An
ai.abilitiesExplorer.fieldsJavaScript filter for adding read-only table columns to the Abilities Explorer page (#1181). - Clarified which parts of the plugin are stable Features vs Experiments, flag Experiments that run automatically in
Settings > AI, and show when each runs, what it sends to your AI provider, and how many requests it makes from an info icon, the readme, and docs (#1190). - Featured Connector plugins (Mistral and Vercel AI Gateway) on
Settings > Connectors, sorted by name, plus awpai_featured_connectorsfilter to change the list (#1212).
Changed
- Update the wording in our capability check notice and change that from an error to a warning (#935).
- Content Translation now translates any block that has rich text instead of just paragraphs and headings (#1009).
- Move the Key Encryption experiment onto the new Secrets API feature plugin with backward-compatible fallback and migration (#1107).
- The
/<post>/feed/markdown/no longer works and serves a 404 (#1121). - The
core/content-query,core/settings-get, andcore/users-queryabilities now set thepublicmeta flag added in WordPress 7.1 (#1122). - Summarize enabled and disabled experiments in the AI Status dashboard widget to keep it compact as more experiments are added (#1155).
- Rebuilt the Abilities Explorer on DataViews and added three
ai/v1REST routes to retrieve and run abilities (#1181). - Replace the "Purge All Logs" button in the AI Request Logs screen with a control to delete logs older than 30 days, 90 days or 1 year, or all logs, and add a
before_daysargument toDELETE /ai/v1/logs(#1182). - The
core/settings-getability now matches WordPress core. Settings use their REST API names (for example,titleinstead ofblogname), and a value that does not match its schema is left out. Breaking changes: Some schema fields have changed so ensure you are using the correct field names in your ability calls; thecore/read-settingsalias was also removed (#1206). - The
core/users-queryability now matches WordPress core. The input is nowwhere,fields, andpagination, and the output is alwaysitemsandpagination. Users are looked up through theids,slugs, orusernameslists inwhere, and lookup by email is no longer supported. Results are ordered by username, a filter that cannot be used is rejected, and a page after the last one returns an error. Breaking changes: Some schema fields have changed so ensure you are using the correct field names in your ability calls; thecore/read-usersalias was also removed (#1207). - The
core/content-queryability now matches WordPress core. The input is nowwhere,fields, andpagination, and the output is alwaysitemsandpagination. Posts are looked up through theidsorslugslists inwhere, which also requires the post type intype. Posts are filtered by author throughwhere.author, with the authoridorslug. Fields are nested, such astitle.rendered. A filter that cannot be used is rejected, and a page after the last one returns an error. The author name and slug are only returned to users who may see the author. Only ashow_in_abilitiesvalue oftrueexposes a post type. Breaking changes: Some schema fields have changed so ensure you are using the correct field names in your ability calls; thecore/read-contentalias was also removed (#1208). - The
dateandmodifiedfields ofcore/content-queryreturnsiteandgmtdates instead oflocalandgmt. Breaking change: Ensure you are using the correct field names in your ability calls (#1235). - The
registered_datefield ofcore/users-queryis replaced by aregisteredobject withsiteandgmtdates. Note that all 3 core abilities have now identical shape like these shipping in WordPress 7.2. Breaking change: Ensure you are using the correct field names in your ability calls (#1237).
Removed
- The deprecated
core/read-settingsability alias. Usecore/settings-getwith REST API field names (for example,titleinstead ofblogname). The alias could not keep the old field names or response shape after the sync with WordPress core (#1206). - The deprecated
core/read-usersability alias. Usecore/users-querywith the newwhere,fields, andpaginationinput. The alias could not keep the old input and response shape after the sync with WordPress core (#1207). - The deprecated
core/read-contentability alias. Usecore/content-querywith the newwhere,fields, andpaginationinput. The alias could not keep the old input and response shape after the sync with WordPress core (#1208).
Fixed
- AI Request Logging now captures successful generations from providers that use a custom transport, not only those routed through the SDK HTTP transporter (#757).
- Display a clear, context-aware error notice during Ability execution when the configured AI connector is pending approval (#759).
- Remove the text generation capability check from the alt text generation WP-CLI command (#935).
- Feature toggles are loaded with one database query instead of one per feature on sites without a persistent object cache (#1113).
- Content Translation: Translate the blocks inside Post Content when "Show template" is enabled (#1116).
- On multisite, network deactivation restores API keys on every site, and uninstall no longer deletes keys that were still encrypted (#1118).
- The Markdown Feeds and Key Encryption flags are loaded together with the feature toggles instead of with one query each on every request (#1119).
- The site-wide comment markdown feed lists comments instead of the post list (#1121).
- Feed requests are no longer served the post's Markdown by Accept negotiation or
?output_format=markdown(#1121). - Accept-header negotiation now follows the header's quality values and order, so a request that prefers HTML gets HTML and one that prefers Markdown gets Markdown (#1125).
- Ensure canceling meta description generation stops the loading state. Note the actual request won't be cancelled but the result from that will be discarded (#1128).
- Show an error when a Note fails to save, in place of a "suggestions added" message, and keep reviewing the other blocks when one fails (#1131).
- Skip blocks that are removed, replaced or edited mid-translation (#1137).
- Ensure all strings can be translated in the Abilities Explorer pages (#1146).
- Ensure all strings can be translated in the Content Classification experiment (#1147).
- A comment reply suggestion is no longer inserted into the reply form of a different comment (#1158).
- Match existing terms whose names contain "&" or non-ASCII letters, and add them from suggestions (#1168).
- A non-string term or parent in the AI response no longer fails the whole request when running content classification (#1171).
- Add missing title attribute to singular alternate Markdown discovery link (#1177).
- Show “Regenerate Reply” after a reply suggestion has been generated (#1179).
- Checkbox icon color on the AI settings page (#1183).
- Ensure success and error notices show on the AI Request Logs screen (#1184).
- Key Encryption no longer causes a fatal error when stored API keys can't be decrypted (#1186).
- Suggest Reply no longer sends the title or excerpt of private or password-protected posts to the AI provider (#1192).
- Comment Moderation no longer automatically analyzes pingbacks, trackbacks or block editor notes (#1192).
- Uninstalling the plugin now removes Comment Moderation analysis data (#1192).
- Omit Author meta line in Markdown feeds when a post has no assigned author (#1210).
- Preserve line-level diff granularity for multi-line blocks like tables and quotes in Revision Change Summary (#1216).
- Markdown Feeds now apply the core
the_content_feedandthe_excerpt_rssfilters, matching RSS and Atom feed output (#1224). - Ensure the "Serve Markdown via the Accept header" setting can now be saved (#1229).
- The Guidelines prompt no longer contains the HTML entity
'(#1230). - The permission error for a post now mentions image prompts instead of excerpts when running image prompt generation (#1234).
Security
- Resolved GHSA-7mwf-4ppp-cxmp (GHSA-7mwf-4ppp-cxmp).
- Resolved GHSA-g94j-h78j-rr2j (GHSA-g94j-h78j-rr2j).
Developer
- Sync the
core/content-queryability with the fixes from its core review (#1123). - Added unit and integration test coverage for Connector Approval
Admin_Pageand extendedAdmin_Noticetests (#1134). - Fixed PHPUnit test failures in
Show_In_AbilitiesTeston WordPress trunk (#1165). - Fixed PHPUnit test failures in
Image_GenerationTeston WordPress trunk (#1172). - Added a post-release step to update the AI plugin handbook page (#1189).
- Fix PHPUnit tests failing when WordPress core natively declares
show_in_abilities(#1204). - Bump
actions/setup-nodefrom 7.0.0 to 7.1.0 (#1198). - Bump
actions/upload-artifactfrom 7.0.1 to 7.0.2 (#1198). - Bump
compressionfrom 1.8.1 to 1.8.2 (#1152). - Bump
concurrentlyfrom 10.0.5 to 10.0.6 (#1151). - Bump
launch-editorfrom 2.14.1 to 2.14.2 (#1225). - Bump
markdown-itfrom 14.3.2 to 14.3.3 (#1226). - Bump
momentfrom 2.30.1 to 2.31.0 (#1114). - Bump
phpstan/phpstanfrom 2.2.15 to 2.3.1 (#1141). - Bump
phpstan/phpstan-phpunitfrom 2.0.18 to 2.1.1 (#1141, #1197). - Bump
@playwright/testfrom 1.63.0 to 1.64.1 (#1199, #1217). - Bump
proxy-addrfrom 2.0.7 to 2.0.8 (#1149). - Bump
serovalfrom 1.5.5 to 1.6.9 (#1148). - Bump
shell-quotefrom 1.9.0 to 1.12.0 (#1151). - Bump
shivammathur/setup-phpfrom 2.37.2 to 2.40.0 (#1198). - Bump
source-map-jsfrom 1.2.1 to 1.2.2 (#1150). - Bump
@wordpress/admin-uifrom 2.10.0 to 2.12.0 (#1142, #1205). - Bump
@wordpress/block-libraryfrom 9.48.1 to 11.2.0 (#1143, #1201, #1205). - Bump
@wordpress/buildfrom 0.24.0 to 0.25.0 (#1199). - Bump
@wordpress/e2e-test-utils-playwrightfrom 1.54.0 to 2.1.0 (#1202, #1217). - Bump
@wordpress/prettier-configfrom 4.56.0 to 4.57.0 (#1199). - Bump
@wordpress/scriptsfrom 36.0.0 to 36.1.0 (#1199). - Bump
@wordpress/uifrom 0.22.0 to 0.24.0 (#1142, #1205).
New Contributors
- @lnispel made their first contribution in #459
- @maheshbohara made their first contribution in #1146
- @shubhambhar007 made their first contribution in #1154
- @himanshupathak95 made their first contribution in #1179
- @i-am-chitti made their first contribution in #1164
- @SainathPoojary made their first contribution in #1183
- @DevMahbubHussain made their first contribution in #1159
- @andreilupu made their first contribution in #992
- @dugyen made their first contribution in #1009
- @webmyc made their first contribution in #1081
Full Changelog: 1.4.0...1.5.0.
View all items closed in the milestone.