close
Skip to content

Latest commit

 

History

History
856 lines (754 loc) · 93.2 KB

CHANGELOG.md

File metadata and controls

856 lines (754 loc) · 93.2 KB

Changelog

All notable changes to this project will be documented in this file, per the Keep a Changelog standard, and will adhere to Semantic Versioning.

1.5.0 - 2026-10-29

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 Access screen 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.fields JavaScript 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 a wpai_featured_connectors filter 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, and core/users-query abilities now set the public meta 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/v1 REST 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_days argument to DELETE /ai/v1/logs (#1182).
  • The core/settings-get ability now matches WordPress core. Settings use their REST API names (for example, title instead of blogname), 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; the core/read-settings alias was also removed (#1206).
  • The core/users-query ability now matches WordPress core. The input is now where, fields, and pagination, and the output is always items and pagination. Users are looked up through the ids, slugs, or usernames lists in where, 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; the core/read-users alias was also removed (#1207).
  • The core/content-query ability now matches WordPress core. The input is now where, fields, and pagination, and the output is always items and pagination. Posts are looked up through the ids or slugs lists in where, which also requires the post type in type. Posts are filtered by author through where.author, with the author id or slug. Fields are nested, such as title.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 a show_in_abilities value of true exposes a post type. Breaking changes: Some schema fields have changed so ensure you are using the correct field names in your ability calls; the core/read-content alias was also removed (#1208).
  • The date and modified fields of core/content-query return site and gmt dates instead of local and gmt. Breaking change: Ensure you are using the correct field names in your ability calls (#1235).
  • The registered_date field of core/users-query is replaced by a registered object with site and gmt dates. 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-settings ability alias. Use core/settings-get with REST API field names (for example, title instead of blogname). The alias could not keep the old field names or response shape after the sync with WordPress core (#1206).
  • The deprecated core/read-users ability alias. Use core/users-query with the new where, fields, and pagination input. The alias could not keep the old input and response shape after the sync with WordPress core (#1207).
  • The deprecated core/read-content ability alias. Use core/content-query with the new where, fields, and pagination input. 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_feed and the_excerpt_rss filters, 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 &#39; (#1230).
  • The permission error for a post now mentions image prompts instead of excerpts when running image prompt generation (#1234).

Security

Developer

  • Sync the core/content-query ability with the fixes from its core review (#1123).
  • Added unit and integration test coverage for Connector Approval Admin_Page and extended Admin_Notice tests (#1134).
  • Fixed PHPUnit test failures in Show_In_AbilitiesTest on WordPress trunk (#1165).
  • Fixed PHPUnit test failures in Image_GenerationTest on 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-node from 7.0.0 to 7.1.0 (#1198).
  • Bump actions/upload-artifact from 7.0.1 to 7.0.2 (#1198).
  • Bump compression from 1.8.1 to 1.8.2 (#1152).
  • Bump concurrently from 10.0.5 to 10.0.6 (#1151).
  • Bump launch-editor from 2.14.1 to 2.14.2 (#1225).
  • Bump markdown-it from 14.3.2 to 14.3.3 (#1226).
  • Bump moment from 2.30.1 to 2.31.0 (#1114).
  • Bump phpstan/phpstan from 2.2.15 to 2.3.1 (#1141).
  • Bump phpstan/phpstan-phpunit from 2.0.18 to 2.1.1 (#1141, #1197).
  • Bump @playwright/test from 1.63.0 to 1.64.1 (#1199, #1217).
  • Bump proxy-addr from 2.0.7 to 2.0.8 (#1149).
  • Bump seroval from 1.5.5 to 1.6.9 (#1148).
  • Bump shell-quote from 1.9.0 to 1.12.0 (#1151).
  • Bump shivammathur/setup-php from 2.37.2 to 2.40.0 (#1198).
  • Bump source-map-js from 1.2.1 to 1.2.2 (#1150).
  • Bump @wordpress/admin-ui from 2.10.0 to 2.12.0 (#1142, #1205).
  • Bump @wordpress/block-library from 9.48.1 to 11.2.0 (#1143, #1201, #1205).
  • Bump @wordpress/build from 0.24.0 to 0.25.0 (#1199).
  • Bump @wordpress/e2e-test-utils-playwright from 1.54.0 to 2.1.0 (#1202, #1217).
  • Bump @wordpress/prettier-config from 4.56.0 to 4.57.0 (#1199).
  • Bump @wordpress/scripts from 36.0.0 to 36.1.0 (#1199).
  • Bump @wordpress/ui from 0.22.0 to 0.24.0 (#1142, #1205).

1.4.0 - 2026-10-05

Added

  • When comment moderation is run, calculate a value score, providing a relevance signal (0–1) for each comment based on how substantive and on-topic it is relative to the post it was left on. Show this score in a new column on the comment screen (#681).
  • New experiment, Markdown Feeds, that creates markdown feeds at /feed/markdown/ (available in every feed context) and of individual posts and pages via ?output_format=markdown (#855).
  • User-triggered retry for Content Translation if it fails (#941).
  • Limit comment moderation bulk analysis queue size (#972).
  • Storage and CRUD layer for embedding vectors (new wpai_embeddings table) that can be used to recording the provider and model alongside every vector (#976).
  • 9 new default target languages to the Content Translation experiment (#986).
  • Guideline categories support to the Content Translation Ability (#987).
  • New Vector_Math and Vector_Ranker classes, allowing users to run similarity and ranking queries against vectors (#993).
  • Loading indicator for type-ahead suggestion requests (#1029).
  • Integrate Alt Text Generation with the Image block’s decorative setting (#1031).

Changed

  • Bump minimum supported WordPress version to 7.0.3 (#1001).
  • Display specific taxonomy labels in Content Classification notice error messages instead of generic terminology (#916).
  • Show a notice and disable title translation when the post title is too short (#967).
  • Update to the latest version of the embedding code from the PHP AI Client (#975).
  • Our generate_embeddings helper function now requires a specific embedding model. Pass model (a model ID or a ModelInterface instance) and, for a model ID, the provider that offers it. This is a breaking change for anyone that happened to start using this function (#975).
  • Update Settings vertical ellipsis icon to tool icon (#1001).
  • The core/read-content and core/read-users abilities are renamed to core/content-query and core/users-query. The old names keep working as deprecated aliases for now (#1002).
  • Use gpt-image-2.5-flare as our default OpenAI image generation model (#1023).
  • The core/read-settings ability has been renamed to core/settings-get. The old name keeps working as a deprecated alias for now (#1087).

Deprecated

  • The ai/get-post-details ability. Use the single-post mode of core/content-query instead (#1002).

Removed

  • Unnecessary URL validation that is now handled by WordPress core (#1011).
  • The Enable AI header toggle from the AI settings page (#985).

Fixed

  • Ensure focus moves to the Accept button when content generation completes in the Content Resizing modal (#917).
  • Increase the default request timeout from 5 seconds to 30 seconds when Core revalidates API keys. If this validation request times out, Core will delete the API key so this is an attempt to fix that (#947).
  • Cached the active SEO plugin detection - with a TTL and immediate invalidation on any plugin activation/deactivation - so meta description meta-key lookups no longer re-scan active plugins on every request (#973).
  • Improves the Content Translation loading animation to preserve existing text and background colors (#977).
  • Settings page failing to render on Gutenberg 23.9+ after @wordpress/dataviews was removed from the private-apis allowlist (#989).
  • Ensure our guidelines integration reads published guideline rows from the wp_knowledge post type instead of the removed wp_guideline so those work with the latest version of Gutenberg. We don't migrate data from the old post type and taxonomy to the new so anyone that had previously set guidelines in an older version of Gutenberg will need to re-add those (#988).
  • Import core's prefixed PSR EventDispatcher in the vendored EmbeddingBuilder (#1005).
  • Reserve space for type-ahead text generation when caret is at the end (#1008).
  • Updated the settings page container min-height so that it spans the full viewport height (#1013).
  • Fix focus style on collapsible card by updating the @wordpress/dataviews package to latest version (#1035).
  • AI Request Logs now records HTTP error responses (4xx/5xx) from providers as error with the status code and message, instead of success; Gemini text generation requests are no longer mislabeled as Metadata (#1040).
  • Hide the "Suggest Reply" button when the inline comment form is in Quick Edit mode (#1049).
  • Editorial Notes only reviewing template blocks when "Show template" mode is enabled in the block editor (#1053).
  • Insert the generated summary into the post content when Show template is enabled (#1055).
  • Aligned the focus styles of Content Classification suggestion pills with the core Button component (#1060).
  • Connector Approvals no longer blocks core's connector key check by attributing it to the provider plugin or to Gutenberg (#1070).
  • Abilities Explorer no longer crashes when an ability's input property lists several types (#1073).
  • Preserve HTML entities and text between shortcodes when normalizing content, while still encoding entity-encoded tags (#1077).
  • Prevent options.php validation error when saving general settings with abilities active (#1080).
  • Ensure post titles, the site tagline and excerpts no longer contain HTML entities in the markdown feeds (#1086).
  • Ensure markdown feeds don't 404 when the rewrite rules were rebuilt without the feed in place (#1110).

Security

  • Ensure we check for the moderate_comments capability before we allow bulk comment moderation and then check for the edit_comment capability for each individual comment that is being moderated (GHSA-pjw7-q94g-4q34).
  • Harden the Playground preview publishing workflow to derive pull request and commit metadata from the triggering workflow run (#978).
  • Harden JSON data parsing on admin screen (#991).

Developer

  • Credits updates (#959).
  • Update plugin screenshots (#960).
  • Update documentation (#969, #990, #1057, #1078, #1082, #1088).
  • Add multisite PHPUnit coverage to CI (#974).
  • Stop measuring vendored SDK code as this plugin's test coverage (#1007).
  • Added unit test coverage for Admin\Deactivation, Admin\Upgrades\Abstract_Upgrade, Logging\AI_Request_Log_Page, Logging\AI_Request_Log_Schema, and Logging\Logging_Integration (#1022, #1033, #1038, #1051, #1056).
  • Update the Playground artifact helper to v4 (#1043).
  • Updated minimum Node.js version to 24.18 and npm to 11.16, matching WordPress Core and Gutenberg (#1067).
  • Shard the E2E suite across three CI jobs and cache node_modules (#1076).
  • Bump brace-expansion from 2.1.2 to 2.1.7, brace-expansion from 1.1.16 to 1.1.21, brace-expansion from 5.0.9 to 5.0.12, brace-expansion from 2.1.4 to 2.1.7 and brace-expansion from 5.0.7 to 5.0.12 (#1097).
  • Bump codecov/codecov-action from 7.0.0 to 7.1.1 (#1039).
  • Bump colord from 2.9.3 to 2.10.0 (#1093).
  • Bump concurrently from 10.0.4 to 10.0.5 (#983).
  • Bump fast-uri from 3.1.5 to 3.1.8 (#1091).
  • Bump filenamify from 7.0.2 to 7.0.3 (#1020).
  • Bump ip-address from 10.5.0 to 10.7.2 (#1094).
  • Bump js-yaml from 4.3.0 to 4.3.2 and js-yaml from 3.15.0 to 3.15.2 (#1090).
  • Bump markdown-it from 12.3.2 to 14.3.2 (#1096).
  • Bump phpstan/php-8-stubs from 0.4.36 to 0.4.43 (#1044, #1059, #1101).
  • Bump phpstan/phpstan from 2.2.9 to 2.2.15 (#1018, #1059, #1101).
  • Bump @playwright/test from 1.62.1 to 1.63.0 (#1045).
  • Bump softprops/action-gh-release from 3.0.2 to 3.0.3 (#1019).
  • Bump svgo from 3.3.4 to 3.3.5 (#1089).
  • Bump szepeviktor/phpstan-wordpress from 2.0.3 to 2.0.4 (#982).
  • Bump WordPress/action-wp-playground-pr-preview from 3.0.0 to 4.0.0 (#1039).
  • Bump @wordpress/admin-ui from 2.7.0 to 2.10.0 (#966, #998, #1046).
  • Bump @wordpress/build from 0.20.0 to 0.24.0 (#965, #997, #1045, #1102).
  • Bump @wordpress/data from 10.44.0 to 10.55.0 (#1035).
  • Bump @wordpress/dataviews from 14.1.0 to 19.0.0 (#1035).
  • Bump @wordpress/e2e-test-utils-playwright from 1.52.0 to 1.54.0 (#965, #997).
  • Bump @wordpress/env from 11.10.0 to 11.15.0 (#1020).
  • Bump wordpress/plugin-check-action from 1.1.7 to 1.1.9 (#964).
  • Bump @wordpress/prettier-config from 4.52.0 to 4.56.0 (#965, #997, #1045, #1102).
  • Bump @wordpress/scripts from 33.0.0 to 36.0.0 (#999, #1020, #1096).
  • Bump @wordpress/ui from 0.19.0 to 0.22.0 (#966, #998, #1046).
  • Bump wp-phpunit/wp-phpunit from 7.0.2 to 7.1.1 (#963, #982, #1044).

1.3.0 - 2026-08-18

Added

  • New Experiment: Content Translation; translates Paragraph and Heading blocks—and optionally the post title—into a selected language directly from the post editor (#747).
  • New Experiment: Slug Generation; suggest SEO-friendly permalinks that can be set as the slug (#897, #932).
  • New Experiment: Custom Abilities. Gates the plugin's custom WordPress Abilities (ai/get-post-details, ai/get-post-terms, core/read-settings, core/read-users, core/read-content) behind a single opt-in toggle, so enabling it exposes all of them at once via the Abilities API. Note for anyone that is using these Abilities, you'll need to enable this new experiment first for those to be available (#881).
  • New Developer Tool: Import/Export functionality for non-sensitive AI settings (#734).
  • Cleanup plugin data when the plugin is deleted (#692).
  • AI-specific Site Health integration and status tests (#734).
  • New filters, wpai_content_classification_available_terms, wpai_content_classification_min_confidence and wpai_content_classification_candidate_pool_size, to allow more control over Content Classification (#633).
  • Prompt template extension points, making it easy for others to filter prompts and prompt builders (#770).
  • Brought the embedding code over from the PHP AI Client and load that conditionally so those using the AI plugin can start to take advantage of embedding generation (#892, #946).
  • Public WordPress\AI\log_ai_request() API so MCP servers and ability consumers can record requests in the AI Request Log (#914).

Changed

  • Updated all meta keys to use the wpai_ prefix instead of just ai_. Note this changes the prefix on the ai_generated, ai_generated_summary and ai_note meta so if you are directly using those, update to using the wpai_ names (#867).
  • Updated preferred models to more recent ones for the three default providers (#913).
  • Bump WordPress tested-up-to version 7.1 (#934).
  • Improve the relevance of category and tag suggestions produced by the Content Classification experiment (#633).
  • Editorial Updates now links to the visual revisions screen when reviewing refined content, falling back to the classic revisions screen when visual revisions are unavailable (#861).
  • Reordered setting experiments list; grouped linked experiments and sorted editor experiments alphabetically (#871).
  • Improved keyboard focus handling when generating, accepting, or dismissing classification suggestions (#873).
  • The Abilities Explorer provider filter dropdown now includes custom providers, and the overview statistics count abilities by origin so custom-provider abilities remain in their Core/Plugins/Theme bucket (#884).
  • Set focus to the generated title textarea when generating a title (#901).
  • The core/read-users ability now returns collections ordered by display name, A to Z (#948).

Deprecated

  • The AI_Service class and the get_ai_service() helper introduced in 0.2.1 will be removed in the next major release. Neither is used anywhere in the plugin; experiments and abilities call wp_ai_client_prompt() directly (#905).
  • Filter wpai_meta_description_result_temperature is no longer being used and will be removed in the next release (#913).

Removed

  • No longer set custom temperature values on any of our requests (#913).

Fixed

  • The AI Request Log REST endpoint now registers its operation filter parameter, so it appears in the REST schema and a non-string value returns a 400 instead of causing a fatal error (#758).
  • Inline reply textarea not receiving focus after generating a suggested reply (#877).
  • Meta Description suggestions applied on pages and custom post types were lost on save when Yoast SEO was active (#886).
  • Improved accessibility and keyboard usability for the request logs provider/model details (#889).
  • Improved keyboard and focus handling for the Suggest Reply tone dropdown (#907).
  • Synchronized generating state across the inline and modal excerpt generation buttons (#908).
  • Ensure caller detection in the encryption experiment properly matches the calling plugin, not the host plugin (#909).
  • Synchronized loading state between the sidebar and block toolbar regenerate summary buttons (#912).
  • Preserve inline HTML when resizing content (#915).
  • Bulk actions no longer re-run when sorting or paginating the list after the action completes (#928).
  • Apply editorial updates to blocks that store editable text in the value attribute (#930).

Security

  • Ensure any content we render from the LLM or content we send to the LLM is properly sanitized (#950).
  • Add proper nonce check prior to bulk alt text and summarization generation (GHSA-hfp9-55vw-ccjc).
  • When passing a custom image URL to the Alt Text Generation Ability, ensure that URL is public, that it points to an allowed image type and that the final URL we download matches the initial one we verify (GHSA-v2wx-9j88-4rqq).

Developer

  • New filter, wpai_bulk_action_max_items, allowing you to control how many items are processed in a single bulk action (GHSA-hfp9-55vw-ccjc).
  • New filters, wpai_alt_text_allowed_image_mime_types, wpai_alt_text_image_download_timeout and wpai_alt_text_image_max_download_bytes, that allow more fine-grained control when a custom image URL is passed to the Alt Text Generation Ability (GHSA-v2wx-9j88-4rqq).
  • Removed unnecessary any casts to improve TypeScript type safety (#878).
  • Update plugin screenshots (#882).
  • Documented the Key Encryption threat model: what encrypting API keys at rest does and does not protect against, and why the caller-supplied plugin context is a namespace-collision guard rather than an isolation boundary between plugins (#909).
  • The secrets_accessed and secrets_{$operation} actions now receive a backtrace-derived detected_plugin alongside the caller-asserted plugin value, so audit consumers can attribute operations and flag a mismatch (#909).
  • Ensure our IPv4-in-IPv6 address check works for PHP <8.3 (#952).
  • Bump actions/checkout from 7.0.0 to 7.0.1 (#894).
  • Bump actions/setup-node from 6.4.0 to 7.0.0 (#894).
  • Bump automattic/vipwpcs from 3.0.1 to 3.1.0 (#919).
  • Bump concurrently from 10.0.3 to 10.0.4 (#902).
  • Bump fast-uri from 3.1.3 to 3.1.5 (#904, #927).
  • Bump fast-xml-parser from 5.10.0 to 5.10.1 (#903).
  • Bump ip-address from 10.2.0 to 10.5.0 (#925).
  • Bump phpstan/phpstan from 2.2.5 to 2.2.8 (#910, #936).
  • Bump phpstan/phpstan-deprecation-rules from 2.0.4 to 2.0.5 (#910).
  • Bump phpstan/phpstan-phpunit from 2.0.17 to 2.0.18 (#879).
  • Bump @playwright/test from 1.61.1 to 1.62.1 (#920).
  • Bump postcss from 8.5.19 to 8.5.26 (#926).
  • Bump shell-quote from 1.8.4 to 1.9.0 (#902).
  • Bump softprops/action-gh-release from 3.0.1 to 3.0.2 (#894).
  • Bump @wordpress/admin-ui from 2.4.0 to 2.7.0 (#880, #896, #921).
  • Bump @wordpress/build from 0.18.0 to 0.20.0 (#895, #920).
  • Bump @wordpress/e2e-test-utils-playwright from 1.50.0 to 1.52.0 (#895, #920).
  • Bump @wordpress/prettier-config from 4.50.0 to 4.52.0 (#895, #920).
  • Bump @wordpress/scripts from 32.6.0 to 33.0.0 (#939).
  • Bump @wordpress/ui from 0.15.1 to 0.19.0 (#880, #896, #921).
  • Bump wp-coding-standards/wpcs from 3.3.0 to 3.4.1 (#893, #899).
  • Bump wp-phpunit/wp-phpunit from 7.0.0 to 7.0.2 (#879, #893).

1.2.0 - 2026-07-14

Added

  • New Experiment: Suggest Reply; gives comment moderators a quick way to generate a reply to a comment through the admin (#724).
  • New "Advanced settings" option in Developer Tools to show/hide additional configuration options for features and experiments (#842).
  • Bulk "Generate AI Summary" action to the posts and pages list table, enabling summary generation for multiple posts at once (#650).
  • New core/read-content Ability with secure single-post and query modes (including include and opt-in fields) to enable read-only content access (#739).
  • New core/read-users Ability that retrieves a single user by ID, email, login, or nicename, or a filtered and paginated users collection, with sensitive fields opt-in and permission-gated (#774).
  • An inline admin notice when Connector Approvals are enabled and no AI connectors are yet approved, prompting admins to approve the AI plugin for use (#830).
  • Introduce new wp_ai_client_default_request_timeout filter to make the default request timeout configurable. Use this for the image generation request timeout (#862).

Changed

  • Content Summary block detection now checks within nested blocks (#810).
  • Move all existing configuration options into a new "Advanced settings" section which is hidden by default (#842).

Fixed

  • Focus restoration after AI setting saves (#812).
  • Added descriptive alt text to AI Home feature card images for improved screen reader accessibility (#819).
  • Prevent Type-Ahead assets from loading on the front end (#820).
  • Dismissing a type-ahead suggestion with escape should not trigger a new suggestion request (#840).
  • Type-ahead ghost text placement and stale suggestions overlapping empty-block placeholders (#847).
  • MutationObserver crash when editor iframe body isn't ready when using Title Generation (#849).
  • Respect an explicit show_in_abilities value on curated settings, and leave the flag to WordPress core once core declares it (#852).
  • Register initial settings before core/read-settings snapshots them (#856).

Developer

  • Increased test timeout from 20m to 30m (#811).
  • Updated Excerpt Generation E2E selectors to use Playwright user-facing attributes (#813).
  • Fix feature request issue template formatting (#814).
  • Update type-ahead E2E selectors to use Playwright user-facing attributes (#817).
  • Update Alt Text Generation E2E selectors to use Playwright user-facing attributes (#828).
  • Pin NPM package versions and update dev-dependencies (#831).
  • Updated and added screenshots/casts (#838).
  • Updated Meta Description E2E selectors to use Playwright user-facing attributes (#843).
  • Updated Connector Approvals E2E selectors to use Playwright user-facing attributes (#850).
  • Register core ability categories once in the bootstrap test file (#854).
  • Added docs on becoming a Maintainer (#857).
  • Updated Content Classification E2E selectors to use Playwright user-facing attributes (#859).
  • Standardize E2E snackbar locators to use data-test-id (#860).
  • Bump actions/cache from 5.0.5 to 6.1.0 (#821).
  • Bump phpstan/phpstan-phpunit from 2.0.16 to 2.0.17 and phpstan/phpstan from 2.2.2 to 2.2.5 (#836).
  • Bump @wordpress/admin-ui from 2.0.0 to 2.4.0 and @wordpress/ui from 0.12.0 to 0.15.1 (#837).

1.1.0 - 2026-06-30

Added

  • New Experiment: Type Ahead; automatically suggests ghost text at the end of paragraphs, can be manually triggered within a paragraph (#151, #776).
  • New Experiment: Key Encryption; encrypts AI Connector API keys before storing them in the database (#560).
  • Ensure all Features that rely on utilizing content are disabled until minimum content thresholds are met (#581).
  • New core/read-settings Ability (#691, #806).
  • New wpai_has_image_generation_support filter that allows 3rd parties to claim support for Image Generation, for example if authenticating without an API key (#748).
  • New setting to choose if guest comments should be moderated or not, defaulting to yes (#751).
  • Explicit save button to developer settings panel, requiring a user to click save before the Provider and Model settings are saved (#761).
  • Documentation callouts that the plugin has targeted support for the Block Editor only (#766).

Changed

  • Note prompting the user to save after running Editorial Notes (#682).
  • Use __next40pxDefaultSize for buttons consistently (#702).
  • Skip Comment Analysis and Moderation when comment has already been flagged as spam/trash (#743).
  • Replace developer mode settings CSS with Stack component (#785).
  • Use character-based count instead of word-based to determine when features are available to use (#802).
  • Use Notice component to display warnings within experiment modals (#803).
  • Added success snackbar when saving or resetting developer settings (#807).

Fixed

  • Add wordCountType to check for user's locale and update to count character or words when detecting minimum content length (#581).
  • Restrict Content Resizing to REST-exposed post types when a post ID is provided (#658).
  • Only show Editorial Updates button when pending Notes are linked to current blocks (#682).
  • Hide developer settings on stable Features when AI is disabled (#737).
  • Improve readability of Ability Explorer schema output by preventing unicode escaping for non‑ASCII characters (#740).
  • The "Last 30 Days" summary period in the AI Requests Logs page now uses a fixed 30-day window so the summary cards and logs table cover the same span (#753).
  • Developer Tools popover overlapping the WP admin bar (#756).
  • Persistence of suggested terms when running the Content Classification experiment (#769).
  • Restored term suggestion pills to their original positions if the backend term assignment API fails, resolving stale state race conditions (#772).
  • Preserve omitted runAbility() input so ability schema defaults can apply when abilities are invoked without input (#775).
  • Ensure scalar input schemas are allowed in the Abilities Explorer validation (#787).
  • Standardize the Title Generation button text (#790).
  • Scope the Editorial Note generation loading spinner only to the block currently being reviewed (#794).
  • Snackbar notifications no longer overlap the settings content; they are pinned to the bottom-left of the content area (#801).

Developer

  • Skip push-triggered CI workflows on forks (#722).
  • Remove any type assertions from notices store dispatches (#725).
  • Fix link to AI plugin roadmap view on the GitHub Project board (#742).
  • Updated Content Summarization E2E selectors to use Playwright user-facing attributes (#762).
  • Updated Title Generation and Editorial Notes E2E selectors to use Playwright user-facing attributes (#773).
  • Extracts repeated inline Developer Tools menu interactions for E2E tests into reusable utility functions (#786).
  • Update Issue templates (#796, #804).
  • Playground PR link now redirects users to /wp-admin/admin.php?page=ai-wp-admin (#797).
  • Bump phpstan/phpstan from 2.2.1 to 2.2.2 and phpstan/php-8-stubs from 0.4.35 to 0.4.36 (#744).
  • Bumps shivammathur/setup-php from 2.37.1 to 2.37.2 and codecov/codecov-action from 6.0.1 to 7.0.0 (#745).
  • Bump @wordpress/build from 0.16.0 to 0.16.1 (#754).
  • Bump wp-phpunit/wp-phpunit from 6.9.4 to 7.0.0 (#779).
  • Bump actions/checkout from 6.0.3 to 7.0.0 and softprops/action-gh-release from 3.0.0 to 3.0.1 (#780).

1.0.2 - 2026-06-16

Added

  • Manual refresh button to the AI Request Logs table header (#687).
  • New ai_generated param on our Image Import Ability to set if the imported image was AI generated or not (GHSA-42mg-ffvx-4xff).

Changed

  • Ensure Editorial Notes and Editorial Updates controls stay grouped together in the post editor sidebar (#605).
  • Use explicit UTF-8 encoding for generated Meta Description character counts (#655).
  • Return a consistent decorative flag from Alt Text Generation results (#659).
  • Show an error message immediately in the Image Generation UI when there's no AI Connector in place that supports image generation (#679).
  • Use a neutral icon for disabled Features and Experiments in the AI Status widget (#720).

Fixed

  • Abilities Explorer schema validation (#612).
  • Alt Text Generation button becomes unresponsive after using Next/Previous in the media modal (#631).
  • Add descriptive accessible labels to approval matrix toggle controls (#637).
  • Added accessible labels to the Provider and Category filter dropdowns on the Abilities Explorer page (#642).
  • Lost focus after generating a Title (#644).
  • Lost focus when generating Alt Text in Image block inspector controls (#645).
  • Lost focus when toggling the Connector Approval state (#646).
  • Lost focus after generating Images (#647).
  • Added an accessible label to the ability test payload textarea in the Abilities Explorer (#649).
  • Excerpt generation post context payload (#651).
  • Clear out the Meta Description suggestion when the modal closes (#653).
  • Lost focus after running Content Resizing actions (#663).
  • Column reordering and hiding in the AI Request Logs table now persists instead of resetting to the default (#669).
  • Summary statistics showing zero for short time periods on non-UTC MySQL servers (#671).
  • UI inconsistency on AI Request Logs page (#676).
  • Ensure thinking tokens are counted in AI Request Logs (#680).
  • Ensure the Ability schemas and outputs are valid JSON Schema for strict REST and MCP consumers (#688).
  • Title Generation button disappears after toggling off "Show template" (#694).
  • Prevent accidental interactions and stale feedback in the Meta Description Generation modal and improve focus handling (#696).
  • Ensure focus isn't lost after generating an Excerpt inline (#698).
  • AI Request Logs: "Copy Log ID" gives no feedback when copied (#700).
  • AI Request Logs: main header overlapping table header (#705).
  • Allow users to clear an applied Meta Description while preventing whitespace-only descriptions (#706).
  • Rename unforwarded MaskCanvas component function to InnerMaskCanvas to avoid duplicate declarations (#713).

Security

  • Remove the meta param from our Image Import Ability (GHSA-42mg-ffvx-4xff).
  • Check the current user's capabilities and the comment type before setting an Editorial Note (GHSA-j7hg-vqpw-f98f).

Developer

  • Clarify AI Connector provider setup documentation (#638).
  • Add @WordPress/ai-maintainers team (#677).
  • Removes the ready_for_review pull request event from the Test and Plugin Check GitHub Actions workflows (#703).
  • Bump tmp from 0.2.5 to 0.2.7 (#630).
  • Bump phpstan/php-8-stubs from 0.4.34 to 0.4.35 (#635).
  • Bump phpstan/phpstan from 2.1.54 to 2.2.1 (#635, #672).
  • Bump codecov/codecov-action from 6.0.0 to 6.0.1 (#636).
  • Bump WordPress/action-wp-playground-pr-preview to latest version (#673).
  • Bump actions/checkout from 6.0.2 to 6.0.3 (#707).
  • Bump wordpress/plugin-check-action from v1.1.6 to v1.1.7 (#726).
  • Update NPM dev-dependencies (#712).

1.0.1 - 2026-05-27

Added

  • New helper functions that are used to determine if we have valid AI Connector credentials (#603).
  • New helper methods, is_globally_enabled and is_individually_enabled to help tell if a feature is enabled individually or if features are globally enabled (#604).

Changed

  • Removed the description from the Abilities listing within the Abilities Explorer (#592).
  • Filter Guideline queries by the guideline type content (#593).
  • Use the new has_connector_authentication instead of is_connector_configured to avoid unnecessary API requests (#603).

Removed

  • Deprecated __nextHasNoMarginBottom prop (#609).

Fixed

  • Utilize a new is_connector_configured function to properly determine if a connector is configured, whether via an API key, constant or ENV var (#537).
  • "Generate Editorial Note" button appearing in the block settings menu during post revisions (#591).
  • If the Connector Approvals experiment is turned on, ensure we don't over-aggressively block functionality in the AI plugin that isn't actually making requests, like Request Logging (#595).
  • Better matching of the originating code when the Connector Approvals experiment is on (#595).
  • Focus loss issues when interacting with Purge actions in the Request Logs experiments page (#599).
  • Disable the "Purge All" button when no logs are available to purge (#599).
  • AI Status feature checklist properly shows if an individual feature is enabled even if globally features are disabled (#604).
  • Ensure focus isn't lost when buttons enter disabled state during Alt Text Generation, Content Classification, Content Summarization, Excerpt Generation, Featured Image Generation, and Title Generation (#608, #611).
  • Settings page strings, which are enqueued as script modules, are now localized at runtime (#613).
  • Connector Approvals "Dismiss" button failing for pending requests whose key contains a slash (#615).
  • Hide empty provider capabilities section in the dashboard widget (#616).
  • Playground and test configs now target the latest WordPress release instead of the beta release (#626).
  • Connector Approvals notice no longer overlaps the page header on the AI Request Logs screen (#628).

Developer

  • Corrected installation instructions in readme (#620).
  • Bump @wordpress/build from 0.13.0 to 0.14.0 (#606).
  • Bump @wordpress/scripts from 32.1.0 to 32.2.0 (#606).

1.0.0 - 2026-05-19

Added

  • New Experiment: Request Logging that provides observability for all AI operations (#437).
  • New Experiment: Connector Approvals that allows administrators the ability to determine which plugins can access which AI connectors (#467).
  • Integrate Alt Text generation into the experimental media editor (#446).
  • Sorting and filtering in Comments screen by Toxicity and/or Sentiment (#518).
  • Toxicity and Sentiment labelling in admin dashboard for comments (#518).

Changed

  • Disable the Summarization button until content reaches a certain length (#492).
  • Refined image generation loading state (#512).
  • Featured image button now hides when image is already set (#512).
  • When no AI provider is configured and a feature is triggered, show actionable guidance directing users to configure an AI Connector (#523).
  • Update Meta Description loading state and remove duplicate heading in modal (#527).
  • Rename "Review Notes" experiment to "Editorial Notes" and "Refine from Notes" experiment to "Editorial Updates" (#528).
  • Keep comments without moderation metadata visible when sorting by Comment Moderation columns (#538).
  • Updated plugin banner and icons (#546).
  • Show a notice when a user has chosen a provider that no longer exists (#552).
  • When no provider is configured, show an error notice instead of an admin notice for alt text generation (#561).
  • Standardize error message text (#562).
  • Abilities Explorer page heading (#585).

Fixed

  • Ensure we properly use the new client-side Abilities API (#482).
  • Keep keyboard focus on the Provider select when resetting per-feature developer settings to default (#532).
  • Deduplicate provider API requests on the settings page when developer mode is toggled on (#542).
  • Update the Playground Preview workflow to use pluginData instead of pluginZipFile (#548).
  • Empty space shown for Model field when saved provider no longer exists in developer settings (#552).
  • Prevent analyzing newly inserted comments when no provider is configured (#554).
  • Ensure the meta description modal doesn't open if no provider is configured (#558).
  • False error for alt text generation on decorative images in media library (#559).
  • Show a failed badge when comment analysis fails (#568).
  • Correct RTL rendering of directional icons, runtime-set styles, and inline styles in the admin UI (#573).
  • Add notice to standalone image generation when there is no provider connected (#575).
  • Ensure we show a more specific error message when no valid AI connector is in place and we try to generate a featured image (#576).
  • Improve keyboard focus visibility for suggested term actions in content classification (#580).
  • User-facing text in several experiments is now fully translatable, and JS-side translations are loaded at runtime (#582).
  • Make title generation and content classification UI react to current editor state (#584).
  • Ensure global AI enabled options are migrated properly (#586).

Developer

  • Various documentation updates (#475, #501, #540, #550, #569).
  • Add an .npmrc config file (#535).
  • Add a 7 day cooldown period for GitHub Action updates triggered by Dependabot (#553).
  • Bump phpstan/phpstan from 2.1.51 to 2.1.54 (#524).
  • Bump @wordpress/build from 0.12.0 to 0.13.0 (#525).
  • Bump @wordpress/scripts from 32.0.0 to 32.1.0 (#525).
  • Bump dealerdirect/phpcodesniffer-composer-installer from 1.2.0 to 1.2.1 (#555).
  • Bump shivammathur/setup-php from 2.37.0 to 2.37.1 (#556).
  • Bump actions/dependency-review-action from 4.9.0 to 5.0.0 (#556).
  • Bump wordpress/plugin-check-action from 1.1.5 to 1.1.6 (#556).

0.9.0 - 2026-05-07

Added

  • New Experiment: Comment Moderation to automatically moderate comments based on toxicity detection and sentiment analysis (#155, #516).
  • New Experiment: Content Resizing to shorten, expand, or rephrase selected block content (#331).
  • Developer Mode settings page toggle to set the desired provider and model per feature (#486).
  • WP-CLI command, wp ai alt-text generate, for bulk alt text generation (#436).
  • Basic styles for the Content Summary block (#510).

Changed

  • Compress the AI settings page by moving the global AI toggle into the header with an infotip (#455).
  • Update AI settings page to use @wordpress/ui components and related UI adjustments (#472, #488, #490, #491, #505, #519).
  • AI-generated images are now saved with descriptive, slugified filenames derived from the post title or prompt instead of ai-generated-image-<timestamp> (#471).
  • For image generation, set guidelines as part of the prompt instead of system instructions (#497).
  • Update the Content Summary experiment to render the summary in a Group variation block instead of a Paragraph variation block (#510).

Fixed

  • Standards compliance switch from the custom $builder->is_text_generation_supported() method with the abstract ensure_text_generation_supported() method (#465).
  • Ability schema JSON viewer now stays LTR under RTL admin languages (#485).
  • Ensure the Generate Image button doesn't render in contexts that aren't valid (#489).
  • Localize several user-facing fallback error strings in image-generation and summarization flows (#500).

Security

  • Bump serialize-javascript from 6.0.2 to 7.0.5 (#503).
  • Bump postcss from 8.5.10 to 8.5.14 (#503).
  • Bump minimatch from 3.0.8 to 3.1.4 (#503).

Developer

  • Ignore /.wp-env.test.override.json so local test-only wp-env overrides stay untracked (#484).
  • Add E2E coverage for Dashboard Widgets (#498).
  • Add custom experiment reference documentation for developers extending the plugin (#499).
  • Add squash merge commit approach to developer guide (#504, #511, #521).
  • Bump phpstan/phpstan from 2.1.46 to 2.1.51 (#468, #493).
  • Bump actions/setup-node from 6.3.0 to 6.4.0 (#469).

0.8.0 - 2026-04-23

Added

  • New Experiment: Refine from Notes, automatically apply editorial notes to content (#289).
  • AI Status and AI Capabilities dashboard widgets, plus framework for registering new dashboard widgets (#311).
  • Integrates Gutenberg's Guidelines allowing abilities to respect site-wide editorial standards (#359).
  • Check wp_supports_ai() before initializing experiments (#268).
  • Admin redirect from the old ai page to the new ai-wp-admin page (#424).
  • Set the new gpt-image-2 model for our preferred model list (#456).

Changed

  • Promote Image Generation from an Experiment to a Feature (#418).
  • Title Generation now utilizes a modal for editing and regeneration before applying changes to the Post Title (#290).
  • Update feature descriptions to include AI provider model supports (#377).
  • Update button loading states to match the standard loading pattern (#382, #389, #396, #433, #449).
  • Refactor Main bootstrap class (#404).
  • Allow bulk enabling/disabling Experiments in groups (#422).
  • Improve visual hierarchy on the AI settings page so card titles are more prominent than the toggle labels (#431).
  • Reduce the context we send when running Review Notes to decrease the amount of tokens used (#434).
  • Refactor strpos to str_starts_with and str_contains (#438).
  • Render Review Notes only on post types that support editor.notes (#444).
  • Improve accessibility of the Meta Description modal: inline "Copied!" confirmation on the copy button and accessibleWhenDisabled on disabled controls (#445).
  • Refactor Asset_Loader class and add error checking when dependencies are missing (#458).

Removed

  • Remove references to DALL·E image models (#414).

Fixed

  • Excerpt and Title generation no longer include conversational preambles, wrapper quotes, markdown, or meta-commentary when using smaller language models (#440).
  • Defer failed Requirements messages until translation functions are available (#453).

Developer

  • Align testing docs with current test setup (#393).
  • Add dependabot.yml config file with cooldowns and groupings (#405).
  • Bump actions/checkout from 5.0.0 to 6.0.2 (#407).
  • Bump shivammathur/setup-php from 2.35.4 to 2.37.0 (#407).
  • Bump actions/setup-node from 5.0.0 to 6.3.0 (#407).
  • Bump ramsey/composer-install from 3.1.1 to 4.0.0 (#407).
  • Bump actions/upload-artifact from 4.6.2 to 7.0.1 (#407, #442).
  • Bump actions/dependency-review-action from 4.8.2 to 4.9.0 (#407).
  • Bump actions/github-script from 7.0.1 to 8.0.0 (#407).
  • Bump actions/cache from 4.2.4 to 5.0.5 (#407, #442).
  • Bump actions/github-script from 8.0.0 to 9.0.0 (#415).
  • Update blueprint.json to use WordPress beta version (#423).
  • Bump basic-ftp from 5.2.1 to 5.2.2 (#426).
  • Update PR template sections (#429).
  • Ensure our JS lint script excludes the build-scripts directory (#432).
  • Bump softprops/action-gh-release from 2.6.1 to 3.0.0 (#442).
  • Update all NPM dependencies and migrate configs (#447).
  • Add npm run format, and apply repo-wide formatting (#463).

0.7.0 - 2026-04-09

Added

  • New Experiment: Content Classification to generate taxonomy terms based on post content (#313).
  • New Experiment: SEO Descriptions that provides AI-generated meta description support (#318).
  • Added a bulk "Generate Alt Text" action to Media Library to generate alt text for multiple images at once (#330).
  • Added Category filtering to the Abilities table to improve organization and discoverability (#355).
  • Added extensibility hooks for customizing system instructions, and post context during AI operations (#304).
  • Added a new wpai_has_ai_credentials filter to allow 3rd parties to modify the credential detection logic, for instance to support non-API-key connectors to report their configured status (#337).

Changed

  • Adjust Alt Text Generation to better align with the W3C Alt Text decision tree guidance (#374).
  • Updated AI settings page leveraging modern wp-build DataForm route (#340, #376).
  • Revised Feature and Experiment Lifecycle and other documentation updates (#326, #329).
  • Update some of our system instructions to prompt the LLM to return content in the same language as the original content they were given (#357).
  • Updated end-to-end tests to resolve flaky failures and account for markup changes in the Connectors screen (#360).
  • Updated preferred models to more recent ones for the three default providers (#361).
  • Updated provider compatibility checks to use the AI Client's built-in is_supported_* methods for improved validation and error reporting (#362).
  • Updated the PR preview workflow to use a preferred WordPress version for improved consistency during testing (#366).
  • Switch to using a Button component instead of a ToolbarButton component within the Title Generation Experiment when in normal editing mode (non-template mode) (#375).

Removed

  • Unneeded function_exists checks (#378).

Fixed

  • Improved error messages when Image Generation or Editing fails due to incompatible providers (#332).
  • Fixed an issue where Title Generation could fail when using the Anthropic provider (#341).
  • Invalid schema type in the summarization ability that prevented proper execution in some environments (#347).
  • Fixed an issue where the Generate Alt Text button could appear when an Image block was not selected, particularly when working with Patterns (#356).
  • Fixed an issue where repeated calls to load system instructions could return empty content (#358).
  • Fixed an issue where retrieving post content did not always return the most recently edited version (#367).

Developer

  • Bump flatted from 3.3.3 to 3.4.2 (#328).
  • Bump lodash-es from 4.17.23 to 4.18.1 (#369).
  • Bump lodash from 4.17.23 to 4.18.1 (#370).
  • Bump node-forge from 1.3.3 to 1.4.0 (#371).
  • Bump picomatch from 2.3.1 to 2.3.2 and from 4.0.3 to 4.0.4 (#372).
  • Bump yaml from 1.10.2 to 1.10.3 and from 2.8.2 to 2.8.3 (#373).
  • Updates Composer & NPM to their latest (semver-compatible) versions (#401).

0.6.0 - 2026-03-20

There are Breaking Changes in this release.

Breaking Changes

  • Refactor Experiments to be a type of Feature, improving how functionality is organized and surfaced (#316).

The following classes have been removed. Anyone that was directly using these will need to make updates to utilize the correct replacements: Abstract_Experiment, Invalid_Experiment_Metadata_Exception, Invalid_Experiment_Exception, Experiment_Loader, Experiment_Registry.

  • Standardize the Title Generation Ability to align with other registered Abilities (#227).

The ai/title-generation Ability now uses a context argument instead of a post_id argument in the input_schema. Anyone directly using this Ability will need to make updates to account for that.

Added

  • New Experiment: Image Editing via prompt-based image refining in the Post Editor and Media Library (#292).
  • New Experiment: Image Editing via expanding or removing background and removing or replacing items in the Media Library (#305, #312).

Changed

  • Rename the plugin from "AI Experiments" to "AI" (#287).
  • Replace Invalid_Experiment_Exception with _doing_it_wrong() (#303).
  • Rename hook prefixes in helpers.php (#315).
  • Rename plugin constants to WPAI_* (#317).
  • Refactor the upgrade routine and add v0.6.0 migrations (#321).
  • Move the Generate Alt Text button to the new Content tab for improved discoverability (#306).
  • Remove stray "AI" references from UI for improved consistency (#320).
  • Update documentation (#314).

Fixed

  • Remove duplicate error display in the Generate Alt Text flow (#255).

0.5.0 - 2026-03-12

Note this version bumps the WordPress minimum supported version from 6.9 to 7.0.

Added

  • Switch to using AI Client bundled in WordPress 7.0 (#275, #301).

Changed

  • Bump WordPress minimum supported version from 6.9 to 7.0 (#272).
  • Bump WordPress tested-up-to version 7.0 (#272).
  • Migrate credentials from the AI Credentials to the new Connectors screen (#286).
  • Improve documentation and plugin assets (#280, #281, #291, #293, #296).

Removed

  • No longer using AI Client via Composer package (#271).

Developer

  • Bump simple-git from 3.30.0 to 3.33.0 (#295).

0.4.1 - 2026-03-06

Fixed

  • Issues with 0.4.0 release merge and deploy (#266).

Developer

  • Bump immutable from 5.1.4 to 5.1.5 (#273).
  • Bump svgo from 3.3.2 to 3.3.3 (#274).
  • Updated Release Instructions documentation (#277).

0.4.0 - 2026-03-05

Added

  • Inline Image Generation directly in the post editor, enabling users to generate images without leaving authoring/editing flows (#235).
  • Generate Image within the Media Library with prompt-based image generation workflows (#258).
  • Generate Review Notes experiment to analyze post content or individual blocks and suggest refinements via Notes comments in the editor (#260, #267).
  • Split editor and admin experiments within the settings page (#232).
  • Contextual help text to the Abilities Explorer screen to assist users in understanding what Abilities are and how to use them (#243).

Changed

  • Update “Generate Summary” button style to use consistent UI with other buttons in the editor (#253).
  • Standardize Abilities invocation using the runAbility helper to improve consistency across API calls (#228).
  • Make provider labels in the Abilities Explorer translatable and adjust badge styling for clarity (#247).
  • Improve Abilities Explorer table layout by aligning spacing and styles with WordPress admin table conventions (#248).
  • Improve the Ability test page with better internationalization and add copy-to-clipboard functionality (#256).

Removed

  • Remove unused checkbox column from the Abilities Explorer table, as it was not tied to any bulk actions (#246).

Fixed

  • Fix the position and behavior of the “Copy” button in code blocks within the Abilities Explorer (#245).

Developer

  • Bump basic-ftp from 5.1.0 to 5.2.0 (#259).

0.3.1 - 2026-02-18

Fixed

  • Increased image generation request timeout from 30s to 90s to reduce failed generations on slower providers/models (#226).

Developer

  • Added Experiment lifecycle and contribution criteria documentation, plus general doc tidy-ups to better explain how experiments land in (and could eventually graduate from) the plugin (#219).
  • Updated the Pull Request template to include an “AI tools usage” disclosure section, aligned with the equivalent change in core (#217).
  • Bump qs from 6.14.1 to 6.14.2 (#229).

0.3.0 - 2026-02-09

Added

  • Content Summarization Experiment, allowing authors to generate and store AI-powered summaries directly in the post editor (#147).
  • Featured Image Generation Experiment, enabling AI-generated featured images from the editor sidebar with optional alt text and AI attribution metadata (#146).
  • Alt Text Generation Experiment, supporting images within Image blocks and Media Library workflows (#156).
  • “Experiments” and “Credentials” quick action links to the Installed Plugins screen for faster configuration (#206).

Changed

  • Replace the global “Enable Experiments” checkbox with an auto-submitting enable/disable button to reduce friction when toggling experiments (#168).

Fixed

  • Improve robustness of asset loading to handle missing or invalid built files and prevent admin and editor warnings (#175).
  • Add missing strict typing declarations in the Abilities Explorer to ensure consistency and correctness (#208).

Developer

  • Streamline and clarify Contributor and Developer documentation to improve onboarding and reduce duplication (#169).
  • Fix inline documentation issues, including missing @global tags, non-standard hook tags, and incomplete @return descriptions (#207, #210).
  • Bump phpunit/phpunit from 9.6.31 to 9.6.33 as part of ongoing test and tooling maintenance (#209).
  • Expand and align allowed open source licenses in dependency configuration to better match Gutenberg and ecosystem tooling (#212, #213, #214).

0.2.1 - 2026-01-26

Added

  • Introduced a shared AI_Service layer to standardize provider access across experiments (#101).

Changed

  • Documentation updates (#195).

Fixed

  • Guarded against preg_replace() returning null to prevent content corruption in normalize_content() (#177).

Security

  • Change our user permission checks to use edit_post instead of read_post (GHSA-mxf5-gp98-93wv).

Developer

  • Bumped diff from 4.0.2 to 4.0.4 (#196).
  • Bumped lodash-es from 4.17.22 to 4.17.23 (#198).
  • Bumped lodash from 4.17.21 to 4.17.23 (#199).

0.2.0 – 2026-01-20

Added

  • Core excerpt generation support for AI-powered summaries, including a new Excerpt Generation Experiment with editor UI (#96, #143).
  • Abilities Explorer - a new admin screen to view and interact with registered AI abilities in the plugin (#63).
  • Introduce foundational backend support for Content Summarization and Image Generation experiments (API-only; no UI yet) (#134, #136).
  • Improve plugin documentation and onboarding with expanded WP.org readme content (#135).
  • Add Playground preview support to build and PR workflows using the official WordPress action (#144).

Changed

  • Rely on the Abilities API bundled with WordPress 6.9 and remove the previously bundled dependency (minimum WP version updated) (#107).
  • Reorganize Playground blueprints and update demo paths to align with WordPress.org conventions (#137).
  • Improve and clarify plugin documentation, descriptions, screenshots, and in-context messaging (#69, #158, #161, #162, #164).
  • Update and align runtime and development dependencies, including preact, qs, express, and React overrides (#165, #166, #171).
  • Replace custom Plugin Check setup with the official GitHub workflow for more reliable enforcement (#139).

Fixed

  • Resolve UI and messaging issues on the AI Experiments settings screen (#130, #132).
  • Ensure AI Experiments are visible even when no credentials are configured (#173).
  • Fix Plugin Check, linting, and CI failures introduced by updated tooling and workflows (#150, #163, #167, #176).

Developer

  • Cleanup and standardize scaffold, linting, TypeScript, and CI configuration to better align with WordPress Coding Standards (#172).

0.1.1 - 2025-12-01

Added

  • Link to the plugin settings screen from the plugin list table (#98).
  • WordPress Playground live preview integration (#85).
  • RTL language support and inlining for performance (#113).

Changed

  • Updated namespace to ai_experiments (#111).
  • Bumped WP AI Client from dev-trunk to 0.2.0 (#118, #122, #125).

Removed

  • Valid AI credentials check from the Experiment is_enabled check (#120).
  • Example Experiment registration (#121).

Fixed

  • Bug in asset loader causing missing dependencies (#113).

Developer

  • Bumped js-yaml from 3.14.1 to 3.14.2 (#105).
  • Updated format script to only format JS to avoid random JSON file changes (#114).
  • Updated documentation (#108, #112).

0.1.0 - 2025-11-26

First public release of the AI Experiments plugin, introducing a framework for exploring experimental AI-powered features in WordPress. 🎉

Added

  • Experiment registry and loader system for managing AI features
  • Abstract experiment base class for consistent feature development
  • Experiment: Title Generation
  • Basic admin settings screen with toggle support
  • Initial integration with WP AI Client SDK and Abilities API
  • Utilities Ability for common AI tasks and testing