# Prompt log — 2w 2026-06-17 ======================================================================== ## [1] summariseModule:ai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), AKHIL BABU (AkhilBabu) [1], Alphons Jaimon (AJV009), Ann Mary Sruthy (annmarysruthy), Arnaud Willame (arwillame), Artem Dmitriiev (a.dmitriiev) [3], Avinash jha (avinash.jha), Bryan Sharpe (b_sharpe), David Galeano (gxleano), Dimitar Rupov (mrupal), Eric Homanchuk (erichomanchuk), George Kastanis (zorz) [2], Hrishikesh Dalal (hrishikesh-dalal), Javier Destefanis (javierdestefanis), Joshua Fernandes (joshua1234511), Juan Martinez (jcmartinez), Jérôme Tchania (codeitwisely) [1], Levente Besenyei (LeventeB), m4olivei, Marcus Johansson (Marcus_Johansson) [2], Mukeysh, Omar Mohamad - El Hassan Lopesino (omarlopesino), Paul Sheldrake (paulsheldrake), Prabhavathi Vanipenta (prabha1997), Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Ricardo Castañeda (cadence96), Rob Loach (robloach), Ronald te Brake (ronaldtebrake), Scott Euser (scotteuser), scott falconer (scottfalconer), Shivam Sen (shivamsen_12579), Sujal Kshatri (sujal_31), Sven Decabooter (svendecabooter), Thomas Werthmüller (weri), velmir_taky (root_emarketing), Wolfgang Ziegler (fago)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

AI (Artificial Intelligence)

then use

,

,

    /
  • , and as needed. Output only the HTML fragment with no surrounding , , or
    tags. After the project summary prose, add a single subsection titled "

    How can I help on this project?

    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Regression in 1.4x release vs 1.3.x](https://git.drupalcode.org/project/ai/-/work_items/3586546) State: closed | Updated: 2026-06-19 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: ## Description I was surprised to see that https://git.drupalcode.org/project/ai/-/work_items/3582743 existed in 1.3.x (1.3.3 release) but was missing from 1.4.2. This led me to wonder if it was a wider problem. I have not checked the below commit by commit, but I got Claude to write a quick script to find all commits that exist in 1.3.x that were cherry-picked to 1.x BUT were cherry-picked after 1.4.x was branched off and never brought into 1.4.x (they do all seem to exist in 1.5.x at a glance). E.g. https://git.drupalcode.org/project/ai/-/tags/1.3.3 here is 1.3.3 release containing https:/… ### [Add Summarization operation type support to the echoai test provider](https://git.drupalcode.org/project/ai/-/work_items/3586537) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Easy Wins, category::task Description: ## Description The echoai mock provider (`Drupal\ai_test\Plugin\AiProvider\EchoProvider`, in the `ai_test` submodule) implements several operation types so that downstream modules can kernel-test their integrations against a deterministic provider. It does not yet implement the **Summarization** operation type. ## Acceptance criteria * `echoai__ai` reports support for the `summarize` operation type and is selectable for it. * Calling `summarize()` with text `Foo` returns a `SummarizationOutput` whose normalized value is `Summary of: Foo`. * Consumers (e.g. the `ai_integration_eca` Summariz… ### [AiPromptSubForm validates inline prompt against stale prompt type when multiple ai_prompt elements exist](https://git.drupalcode.org/project/ai/-/work_items/3586548) State: opened | Updated: 2026-06-24 | Author: Javier Destefanis (javierdestefanis) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Description: ## Summary When a settings form contains multiple `#type => ai_prompt` elements with different prompt types, inline prompt creation can validate against the wrong prompt type. We reproduced this with four prompt selectors on the same config form: * `content_audit_preview_system`, no required variables * `content_audit_preview_user`, requires `{PAGE_CONTENT}` and `{VISITOR_QUESTION}` Note: Creating the same `content_audit_preview_system` prompt from the standalone Prompt Entities admin form works correctly, so the prompt type config itself is valid. Temporary logging inside `AiPromptSubfor… ### [Taxonomy automator clears valid term values when the LLM returns HTML-encoded entities (e.g. &)](https://git.drupalcode.org/project/ai/-/work_items/3586553) State: opened | Updated: 2026-06-22 | Author: Nicholas Stees (NicholasS) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: ## Summary When an AI Automator targets a taxonomy/entity-reference field, valid LLM responses are silently discarded if the term name contains a character that the model returns HTML-encoded (e.g. an ampersand returned as `&` instead of `&`). The value passes generation but is stripped in `verifyValue()` because the comparison against the real term names is an exact string match, so the field is never filled. ## Steps to reproduce 1. Create a taxonomy vocabulary with a term whose name contains an ampersand, e.g. `Kids, Youth & Family`. 2. Add an entity reference (taxonomy) field to … ### [Remove access deepchat api permission and use Assistant access as the single source of truth](https://git.drupalcode.org/project/ai/-/work_items/3586552) State: opened | Updated: 2026-06-30 | Author: Vidit Anjaria (vidit-anjaria) | Assigned: unassigned | Labels: category::task, state::needsReview, why::needsInfo Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1703 [Remove access deepchat api permission and use Assistant roles as the single source of truth](https://git.drupalcode.org/project/ai/-/merge_requests/1703) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 143 diff lines Description: **Problem** The current chatbot access model requires administrators to configure both: The access deepchat api Drupal permission The Assistant entity's allowed roles These checks overlap and can become inconsistent. When they do not match, users may either not see the chatbot at all or see it but encounter access errors. This makes chatbot permissions harder to understand and configure. **Proposed solution** Remove the access deepchat api permission and rely on Assistant access checks as the single source of truth. **Potential implementation:** - [ ] Move to a more lenient permission (… ### [Permissions to use AI Assistant are confusing](https://git.drupalcode.org/project/ai/-/work_items/3498873) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAssistantsApi, category::task Description: >>> [!note] Migrated issue Reported by: [poker10](https://www.drupal.org/user/272316) >>> Problem/Motivation If you would like to add a permission to another role to use AI Assistant, you will probably go to permissions settings. There is only a Access DeepChat API permission, which will not allow usage for the other role. In /admin/config/ai/ai-assistant/drupal_agent_assistant there is an Advance settings where you can allow other role. However this will only display chatbot for the role, but the communication will not work without the Access DeepChat API permission. This seems to be con… ### [Create AI assistant API session only after the first message](https://git.drupalcode.org/project/ai/-/work_items/3554797) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAssistantsApi, category::bug Description: >>> [!note] Migrated issue Reported by: [omarlopesino](https://www.drupal.org/user/2853043) Related to !978 >>> Problem/Motivation Currently, when the chatbot is added in the site for anonymous users, a new session is started in order to create the thread. This is necessary, but it can be optimized. Creating a session invalidates reverse proxy caches like Varnish or any kind of CDN, decreasing the site's performance. The session may be only created after the first interaction with the chatbot. Steps to reproduce (required for bugs, but not feature requests) Create an assistant with AI a… ### [Add Extractive Question Answering operation type](https://git.drupalcode.org/project/ai/-/work_items/3584371) State: closed | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1481 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The AI module currently has no operation type for extractive question answering — a task where the model receives a question and a context passage and extracts the answer span directly from the context, along with a confid… ### [How to use AI file entity defined in file src/Entity/AiFile.php ?](https://git.drupalcode.org/project/ai/-/work_items/3586551) State: opened | Updated: 2026-06-18 | Author: fishfree | Assigned: unassigned | Labels: category::support, priority::minor, state::accepted Description: On page /admin/config/ai/files, it says _There are no ai file entities yet._. I'm confused how to use this feature. Searched no related docs. ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-06-29 | Author: ro-no-lo | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [Improve ai_ckeditor UX when no provider modules are installed](https://git.drupalcode.org/project/ai/-/work_items/3586549) State: opened | Updated: 2026-06-25 | Author: Ricardo Castañeda (cadence96) | Assigned: unassigned | Labels: Needs UX review, category::feature, priority::minor, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1701 [feat(ai_ckeditor): warn users when no AI provider is installed in the CKEditor settings tab](https://git.drupalcode.org/project/ai/-/merge_requests/1701) | State: opened | Author: Ricardo Castañeda (cadence96), 56 diff lines Description: ## Summary `ai_ckeditor` currently assumes that at least one provider module is installed. If no provider module (such as `ai_provider_openai`) is available, the CKEditor AI functionality does not work and may result in confusing behavior or errors. The module could provide clearer feedback to site builders or explicitly require provider modules. ## Problem `ai_ckeditor` can be enabled without installing any provider modules. From a site builder perspective, the module appears to be configured correctly because the CKEditor buttons are available, but attempting to use them fails. This c… ### [Issue when creating content and click on AI Assistant on Ckeditor](https://git.drupalcode.org/project/ai/-/work_items/3586545) State: opened | Updated: 2026-06-25 | Author: Jean-Marc PAMBRUN (dpalicepeio-at-drupbuilder.org) | Assigned: unassigned | Labels: Is Contextualized, category::bug, priority::major, state::rtbc Description: Drupal 11.4.0-rc1 with [AI (Artificial Intelligence)](https://www.drupal.org/project/ai) 1.4.2 When creating content using ckeditor 5, when click on ai assitant a red message appears "Oops, something went wrong. Check your browser's developer console for more details." And the db_logs shows "Error: Call to a member function get() on null in Drupal\\ai_ckeditor\\AiCKEditorPluginBase-\>buildCkEditorModalForm() (line 214 of /home/drupbut/www/modules/contrib/ai/modules/ai_ckeditor/src/AiCKEditorPluginBase.php" Contextual information for getting started ## Context The AI CKEditor module (`ai_… ### [Use ai_provider_configuration form element in RestrictToTopic configuration form](https://git.drupalcode.org/project/ai/-/work_items/3586472) State: closed | Updated: 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1621 [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1621) | State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev), 240 diff lines Description: RestrictToTopic still uses old AiProviderFormHelper service for selection of provider and model. This should be changed to use the form element instead. ### [Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project)](https://git.drupalcode.org/project/ai/-/work_items/3586556) State: opened | Updated: 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation The `ai` module ships a deprecated copy of Field Widget Actions at `ai/modules/field_widget_actions/`. Its `field_widget_actions.info.yml` is already marked: `lifecycle: deprecated lifecycle_link: https://www.drupal.org/node/3568339 ` This bundled copy has the **same machine name** (`field_widget_actions`) **and the same PHP namespace** (`Drupal\field_widget_actions\`) as the standalone contrib project https://www.drupal.org/project/field_widget_actions. When both are present in a codebase — which happens for any project that has `drupal/ai` as a (dev) dependency alon… ### [Rename Guardrails "RegExp guardrail" plugin to just "RegEx"](https://git.drupalcode.org/project/ai/-/work_items/3586475) State: opened | Updated: 2026-06-19 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::task, priority::minor, state::needsReview Description: As of 1.4.0, the three guardrail plugins are: 1. Restrict to Topic 2. RegExp guardrail 3. Input Length Limit I think "RegExp guardrail" should be changed to just "RegEx" because: 1. "RegEx" is much more commonly used than "RegExp". 2. If we're going to use "guardrail" in the label, then we should use it in all of the plugins. But, I don't think it is necessary to do that, so let's just keep things consistent and remove it. -mike ### [Automated Drupal 12 compatibility fixes for ai 1.4.x-dev](https://git.drupalcode.org/project/ai/-/work_items/3586555) State: opened | Updated: 2026-06-22 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: No Estimation Available Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [lb asymetric translation not translating content anymore.](https://git.drupalcode.org/project/ai/-/work_items/3586554) State: opened | Updated: 2026-06-22 | Author: Arnaud Willame (arwillame) | Assigned: unassigned | Labels: why::needsInfo Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1687 [Draft: Fix lb asymetric translation](https://git.drupalcode.org/project/ai/-/merge_requests/1687) | State: opened | Author: Arnaud Willame (arwillame), 759 diff lines Description: ## Summary Layout Builder inline block translations are processed by AI Translate extractors, but translated values are not applied to rendered block content. The extractor runs successfully and returns translated text, but the final block content displayed in Layout Builder remains unchanged. The issue appears specific to inline blocks inside Layout Builder sections when used with AI Translate + asymmetric translation mode. ## Steps to reproduce - Create a content type with Layout Builder enabled. - Enable asymmetric Layout Builder translation mode (via layout_builder_at or equivalent con… ### [DeepChat Block invisible](https://git.drupalcode.org/project/ai/-/work_items/3554969) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Julien MARY (jmary) | Labels: Needs steps to reproduce, aiChatbot, category::bug, priority Description: >>> [!note] Migrated issue Reported by: [jmary](https://www.drupal.org/user/100894) >>> Problem/Motivation The deepchat block is invisible. Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Place the deepchat block anywhere, limited to a specific page. Go to the page. The block is not visible. After research the reasons comes from the css: .block-ai-deepchat-block {  position: fixed;  left: 0;  top: 0;  bottom: 0;  width: 0;  opacity: 0;  transition: width … ### [[Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations)](https://git.drupalcode.org/project/ai/-/work_items/3586538) State: closed | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiValidations, category::plan Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1725 [feat: #3586538 Add hook_requirements and hook_update_10001 for ai_validations deprecation](https://git.drupalcode.org/project/ai/-/merge_requests/1725) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 81 diff lines Description: ## Summary Research and define a **repeatable mechanism** for forcing a site off a **deprecated bundled submodule** (shipped inside AI Core) and onto the **standalone contrib module** of the same machine name. Use **`ai_validations`** as the first concrete case, then generalise the outcome into a documented "deprecate-and-switch" playbook for the other submodules being moved to contrib. This is the missing *"how"* behind the deprecation work already started in #3552888 (Move out AI Validations), #3554535 / [CR 3570275](https://www.drupal.org/node/3570275) (AI Translate) and #3586497 (AI Sear… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiChatbot Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1428 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The chatbot was greatly improved with #3554510: Sync Design of Toolbar Chatbot with Canvas AI Chatbot, but one issue is that if you have a local storage to remember the position, when its open on page load it runs the open up… ### [Add rich-text image description support to AI Automators](https://git.drupalcode.org/project/ai/-/work_items/3586478) State: opened | Updated: 2026-06-29 | Author: Levente Besenyei (LeventeB) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1628 [Issue #3586478: "Add rich-text image description support to AI Automators"](https://git.drupalcode.org/project/ai/-/merge_requests/1628) | State: opened | Author: Levente Besenyei (LeventeB), 2629 diff lines Description: ## Summary Add optional rich-text image description support to AI Automators for AI-based formatted text fields, including metadata storage for generated image descriptions. Related/source issue: https://git.drupalcode.org/project/ai_initiative/-/work_items/3585695 ## Problem AI Automators can use formatted text as input, but images embedded in that text are currently ignored unless they are already available through a separate image/media field. This makes automations less accurate for content that depends on visual context (for example: summaries, quality checks, and editorial pre-screen… ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: opened | Updated: 2026-06-28 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add support for interactive refinement in ai_automators Field Widget Action plugins, allowing users to iteratively improve AI-generated content through conversational prompts before accepting it into a field. This is the companion issue to https://www.drupal.org/project/field_widget_actions/issues/3547306, which adds the modal infrastructure. This issue covers wiring up the automator plugins to use it. ## Problem Field Widg… ### [Support long running chunking in 1.x branch for AI Search 1.x readiness](https://git.drupalcode.org/project/ai/-/work_items/3586557) State: closed | Updated: 2026-06-24 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAgent, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1690 [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1690) | State: merged 2026-06-22 | Author: Scott Euser (scotteuser), 57 diff lines Description: ## Summary AI Search 1.x cannot handle unlimited length content items (items longer than 10 chunks). As agreed with Marcus and Artem, we update 1.x AI Search to be as close to feature parity as possible without BC while we wait for further Symfony AI platform foundations. This is one of those issues. Originally added to 2.x AI Search only because of all the BC. - Original 2x issue: https://git.drupalcode.org/project/ai/-/work_items/3487487 - AI Search 1.x attempt at backport https://git.drupalcode.org/project/ai_search/-/work_items/3584014 ## Problem src/Base/AiVdbProviderClientBase.php … ### [Improve summarizer for AI request input and output data for logs and spans](https://git.drupalcode.org/project/ai/-/work_items/3566762) State: opened | Updated: 2026-06-21 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiObservability, category::feature Description: >>> [!note] Migrated issue Reported by: [murz](https://www.drupal.org/user/157092) Related to !1330 >>> [Tracker] Update Summary: Short Description: Improve summarizer for AI request input and output data for logs and spans Check-in Date: 01/10/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation AI input and output data can be quite long. Logs and spans can consume large data objects, but in most cases it doesn't worth wasting storage resources to store the full input and output. But storing nothing is not good either! Also, some input … ### [First load of ai_provider_configuration is slow](https://git.drupalcode.org/project/ai/-/work_items/3579392) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Loading /admin/ai/context/settings/general is slower than it should be, though it seems like the first load it's slow and then it's okay. Proposed resolution TBD Target date or deadline TBD Remaining tasks TBD AI … ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)](https://git.drupalcode.org/project/ai/-/work_items/3586531) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, aiExternalModeration Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1702 [Resolve #3586531 "Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)"](https://git.drupalcode.org/project/ai/-/merge_requests/1702) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 403 diff lines Description: ## Goal Add a single configurable **Moderation Guardrail** plugin to the **Guardrails** system, so any moderation provider/model can be used as a guardrail. This makes "each moderation provider becomes a possible guardrail" achievable through configuration of one plugin, and is the foundation for folding external moderation into Guardrails. This issue covers **only creating the plugin**. The migration of existing `ai.external_moderation` configuration onto guardrail sets, and the deprecation of the old moderation runner, are handled separately in **#3586528** (which is blocked by this issue)… ### [Move Automators to Structured Output](https://git.drupalcode.org/project/ai/-/work_items/3577170) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1291 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently Automators is using pseudo json to create the output that is required when calling AI. This has historical reasons that are all explained here: #3565806: [Discuss] Move Automators to Structured Output. The main reas… ### [Config action to verify if any vector database is there and it is setup](https://git.drupalcode.org/project/ai/-/work_items/3586517) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1660 [Issue #3586517: Check if any Vdb provider is setup](https://git.drupalcode.org/project/ai/-/merge_requests/1660) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 75 diff lines Description: ## Summary At the moment there is a config action `verifySetupAi` that is able to check whether the specific vector database provider is there in the system and it is setup. This is possible with `vdb_provider_is_setup` payload. In the real use case the plugin name of the vdb provider is not that relevant, as it is needed to know that any vdb provider is there and it is properly configured (setup) to create a search api server. One (any) would be enough without actually specifying which one. ## Problem There is no way at the moment to check that any vdb provider is installed and configured… ### [Generalize behaviour of FWA with Automators (AI Core v2)](https://git.drupalcode.org/project/ai/-/work_items/3586515) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::task Description: The refactor was done for version 1.x (1.4.x and 1.5.x). It was not possible to easily cherry-pick the changes to 2.x and 2.0.x. This issue is to port changes from https://git.drupalcode.org/project/ai/-/merge_requests/1536 to 2.x and 2.0.x branches. ### [Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/work_items/3586536) State: opened | Updated: 2026-06-29 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1680 [Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/merge_requests/1680) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 142 diff lines Description: # Title Support the `ai_json_schema` element inside off-canvas dialogs (correct rendering + value sync) ## Description The `ai_json_schema` form element (`Drupal\ai\Element\AiJsonSchema`) is documented for use "in any Drupal form", but it does not work when rendered inside Drupal's **off-canvas dialog** — which is how the `bpmn_io` modeller shows configuration forms. Upstream the element is only used on full-page forms (e.g. AI API Explorer), where it works; off-canvas has never been exercised, so this is not a regression — it is making the element robust in a context new consumers need. T… ### [Missing "Submit" button from "RAG/Vector Search" tool Configuration modal](https://git.drupalcode.org/project/ai/-/work_items/3586533) State: opened | Updated: 2026-06-22 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: When trying to configure the "RAG/Vector Search" tool, there is no "Submit" button on the Configuration modal (shrunk to show entire modal): This is on a mostly fresh local Drupal site using AI 1.4.2 -mike ### [Fiber branch in OpenAiBasedProviderClientBase::chat() drops token usage from the reconstructed ChatOutput](https://git.drupalcode.org/project/ai/-/work_items/3586522) State: closed | Updated: 2026-06-25 | Author: Jérôme Tchania (codeitwisely) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1670 [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1670) | State: merged 2026-06-25 | Author: Jérôme Tchania (codeitwisely), 261 diff lines Description: ## Problem/Motivation `OpenAiBasedProviderClientBase::chat()` loses all token usage data when it runs inside a PHP Fiber. The Fiber branch (line ~341 on `1.x`) consumes the stream, then reconstructs the final output: ```php // Create the final message from accumulated data. $message = $stream->reconstructChatOutput()->getNormalized(); $chat_output = new ChatOutput($message, $response, []); ``` `reconstructChatOutput()` returns a `ChatOutput` that already carries the correct token usage — but only `getNormalized()` is kept, and the new `ChatOutput` is built with an empty `TokenUsageDto`. Th… ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Preserve HTML in streamed output](https://git.drupalcode.org/project/ai/-/work_items/3586558) State: opened | Updated: 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1734 [Resolve #3586558 "Preserve HTML in streamed output"](https://git.drupalcode.org/project/ai/-/merge_requests/1734) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 212 diff lines Description: ## Summary As reported in https://git.drupalcode.org/project/ai_translate/-/work_items/3585526, there seems to be an issue with HTML processing in streamed outputs. I wasn't able to look into the issue much closer, but the proposed fix seems to imply changes to the AI core module. ## Environment - Drupal version: 11.3.10 - Paragraphs: 8.x-1.20 Original Issue When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus lig… ### [Inaccurate description in Generated Content External Link Security](https://git.drupalcode.org/project/ai/-/work_items/3586560) State: opened | Updated: 2026-06-24 | Author: Darren Oh (darrenoh) | Assigned: unassigned | Labels: Novice, aiCoreModule, category::bug, documentation Description: ## Summary The Generated Content External Link Security in the AI Settings form says, “[Links to your own site and relative paths are always allowed.](https://git.drupalcode.org/project/ai/-/blob/1.x/src/Form/AiSettingsForm.php?ref_type=heads#L190)” This is not true. Links to your own site are only allowed if the domain is trusted or they are relative paths. ### Screenshots ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1704 [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/merge_requests/1704) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 286 diff lines - MR !1126 [Allow batching for embedding and vector DB operations](https://git.drupalcode.org/project/ai/-/merge_requests/1126) | State: opened | Author: Paul Sheldrake (paulsheldrake), 480 diff lines Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [Add mariadb to vdb registry](https://git.drupalcode.org/project/ai/-/work_items/3586559) State: opened | Updated: 2026-06-24 | Author: Juan Martinez (jcmartinez) | Assigned: unassigned | Labels: category::feature, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1705 [Issue #3586559: Add MariaDB VDB provider to matrix](https://git.drupalcode.org/project/ai/-/merge_requests/1705) | State: opened | Author: Juan Martinez (jcmartinez), 36 diff lines Description: ## Summary Without this registry entry, the ai_vdb_provider_mariadb module can be installed; however, the MariaDB VDB provider would not appear in UI discovery forms, automated dependency resolution, or documentation lookups. ## Problem The registry only shows entries for existing providers (e.g., SQLite). ## Proposed solution - Add the MariaDB VDB provider. ### [Guardrail plugins only evaluate the last message](https://git.drupalcode.org/project/ai/-/work_items/3579088) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1467 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Both RegexpGuardrail and RestrictToTopic only inspect the last message in a conversation. The full chat history is passed in via ChatInput, but both plugins call end($messages) and evaluate that single message only. In a mult… ### [Indexing breaks with custom SearchAPI DataSource](https://git.drupalcode.org/project/ai/-/work_items/3575992) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !1321 !1248 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Wh… ### [Add info about initiative and release differences to project page](https://git.drupalcode.org/project/ai/-/work_items/3586568) State: opened | Updated: 2026-06-26 | Author: Heather Wozniak (heatherwoz) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: ## Summary The project page could do a better job explaining the difference between the minor releases (1.2, 1.3, 1.4) and leading people to information about the overall initiative. ## Problem There is a lot of information in the project description, but nothing that helps developers understand which minor version to choose or what to expect when upgrading minor or major versions. This is standard info on many Drupal project pages and would be helpful to add here. Some of this info exists in blog posts and on the initiative page, but there is no path to those pages from the project descri… ### [Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1724 [task: #3586561 Add a setup-guardrails agent skill to configure guardrails,...](https://git.drupalcode.org/project/ai/-/merge_requests/1724) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 1682 diff lines Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 1042 diff lines Description: ## Description Following the same pattern as the `setup-guardrails` skill (#3586561), the AI module would benefit from a companion skill that configures the module's **general settings** on a running site, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. Today these settings can only be inspected and changed through the admin UI at `/admin/config/ai/settings`. This task adds a `configure-ai-settings` skill (sibling of `create-guardrail-plugin` and `setup-guardrails`, under `ai/.agents/skills/`) covering the core operational settings stored i… ### [Allow vector database providers to opt in as the default VDB when none is set](https://git.drupalcode.org/project/ai/-/work_items/3586500) State: closed | Updated: 2026-06-25 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1656 [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1656) | State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev), 345 diff lines Description: ## Problem/Motivation An AI provider can already opt in to become the **default provider** for a given operation type when none is set yet (the provider declares this and the AI module picks it up automatically if no default exists). The AI module also supports setting a **default vector database (VDB) provider**, but there is currently **no equivalent opt-in mechanism** for VDB providers. A VDB provider cannot declare "make me the default vector database if none is set", so the default always has to be configured manually. ## Proposed resolution Add the same opt-in capability for vector d… ### [AI CKEditor regression in 1.5.x?](https://git.drupalcode.org/project/ai/-/work_items/3586567) State: closed | Updated: 2026-06-25 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: toBeTriaged, why::needsInfo Description: Is there any chance that AI CKEditor in 1.4.x is ahead of 1.5.x? I ask because I've been trying to test AI CCC -dev with AI 1.5.x and what I'm seeing doesn't look quite right. See https://git.drupalcode.org/project/ai_context/-/work_items/3581955#note_1270334 -mike ### [Release 1.2.17, 1.3.8, 1.4.3](https://git.drupalcode.org/project/ai/-/work_items/3586565) State: opened | Updated: 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: Artem Dmitriiev (a.dmitriiev) | Labels: category::task, priority::normal, release, state::accepted Description: Creating patch releases for 1.2.x, 1.3.x and 1.4.x branches. ### [Add AIDmi to Other modules/recipes that work with the AI module](https://git.drupalcode.org/project/ai/-/work_items/3586566) State: opened | Updated: 2026-06-24 | Author: Mike Feranda (mferanda) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: Please add AIDmi to your list of Drupal AI other modules. [AIDmi](https://www.drupal.org/project/aidmi) - AI, describe my image! - CKEditor image accessibility plugin for Alt/Caption text generation https://www.drupal.org/project/aidmi ### [Add AI Assistant API ChatProcessor plugin](https://git.drupalcode.org/project/ai/-/work_items/3585075) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1496 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolution Create an AiAssistantApiProcessor ChatProcessor plugin tha… ### [Integrate ChatProcessor plugin system into AI Chatbot DeepChat block](https://git.drupalcode.org/project/ai/-/work_items/3585077) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1497 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Integrate the ChatProcessor plugin system (added in #3492940) into the AI Chatbot module's DeepChat block. This allows site builders to select which ChatProcessor plugin handles chat interactions, decoupling the chatbot UI from … ### [[2.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586564) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [Uninstalling ai_ckeditor leaves stale toolbar items in editor.editor.* configuration](https://git.drupalcode.org/project/ai/-/work_items/3586570) State: opened | Updated: 2026-06-26 | Author: Ricardo Castañeda (cadence96) | Assigned: unassigned | Labels: aiCkeditor, category::bug, priority::normal, state::needsReview Description: ## Summary When `ai_ckeditor` is uninstalled, it does not remove its toolbar button from existing CKEditor 5 editor configurations (`editor.editor.*`). If the **AI Balloon Menu** has been added to a text format toolbar, the configuration still references the removed plugin after uninstall. As a result, the text format configuration page can no longer build the toolbar correctly. ## Steps to reproduce 1. Install `ai_ckeditor`. 2. Go to **Configuration → Content authoring → Text formats and editors**. 3. Edit a CKEditor 5 text format (for example **Full HTML**). 4. Add the **AI Balloon Menu*… ### [Add "throttle API requests" control?](https://git.drupalcode.org/project/ai/-/work_items/3561243) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [ultimike](https://www.drupal.org/user/51132) >>> [Tracker] Update Summary: Would a "throttle" control be useful? Short Description: Being able to control how quickly API calls are sent to LLMs might help users on lower tiers avoid hitting rate limits. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Would it make sense to add some type of "Throttle" control that allows site-builder to limit how many (or how often) LLM API calls are made? While experimenting with AI Agents, I… ### [[Discuss] Shift focus from provider plugins to operation type plugins in AI Core](https://git.drupalcode.org/project/ai/-/work_items/3559800) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, discussion, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation While investigating what approaches could be applied for #3552919: Remove ProviderProxy and use template method pattern, I had a thought, that AI Core is mainly focused on the provider plugins and providers themselves. As AI Core is a framework, I… ### [Plugin shouldn't show any fields if no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3557016) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCkeditor, category::feature, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [damienmckenna](https://www.drupal.org/user/108450) Related to !1117 >>> Problem/Motivation When opening a ckeditor plugin, if no text is selected the UI shows the "You must select some text before you can summarize it." message, but then will also show some of the other fields from the specific plugin, e.g. the Tone plugin shows the "Choose tone" selector. Proposed resolution Don't show anything in the ckeditor plugin popup (particularly for the Tone plugin) if no text has been selected. Remaining tasks Don't show anything in the ckeditor plugin po… ### [Tools UI overview page does not load](https://git.drupalcode.org/project/ai/-/work_items/3579979) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) Related to !1443 !1329 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation If you enable AI mode + Tools module + MCP without making other changes, then /admin/config/ai/tools leads to The website encountered an unexpected error. Try again later.InvalidArgumentException: The opener ID parameter i… ### [Move out AI Content Suggestions](https://git.drupalcode.org/project/ai/-/work_items/3552885) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Needs UX review, aiContentSuggestions, beta blocker, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1042 !1064 >>> --- AI TRACKER METADATA --- Update Summary: Move out AI Content Suggestions Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation We are moving out AI Content Suggestions for 2.… ### [AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3575346) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCkeditor, category::bug, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [annmarysruthy](https://www.drupal.org/user/3664314) Related to !1240 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: All AI CKEditor plugins display "You must select some text before you can summarize it" even when the active plugin is Translate, Tone, or SpellFix.[One-line issue summary for stakeholders] Check-in Date: 02/24/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Most AI CKEditor plugins (e.g., Translate, Tone, SpellFix, etc.) require selec… ### [[Discuss] Consider adding Agents.md](https://git.drupalcode.org/project/ai/-/work_items/3573186) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, discussion, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [valthebald](https://www.drupal.org/user/239562) >>> [Tracker] Update Summary: Consider adding Agents.md Short Description: Consider adding Agents.md Check-in Date: 02/12/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Inspired by discussion in the core issue #3568936: Embrace the chaos, add a couple of AGENTS.md file to core. That one was closed after heated discussion as "works as designed" (i.e. no Agents.md will be added to core for now), but reasoning (and hopefully, the discussion tone) co… ### [Drupal AI Contribution meeting 2026-02-09](https://git.drupalcode.org/project/ai/-/work_items/3570259) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, meetings, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [valthebald](https://www.drupal.org/user/239562) >>> Drupal AI Contribution meeting from Feb 09 at 17:00 UTC to Feb 10, 2026 17:00 UTC (Check your local time at https://www.timebie.com/std/universal.php?q=17) Previous meeting #3568422: Drupal AI Contribution meeting 2026-01-26 Where #ai-contrib channel in Drupal Slack Agenda Attendees self-intro and interests Follow-up to topics of previous meeting Suggest your topic in comments Add the issue you want to discuss as a related issue to this meeting ### [Create agents as Tools](https://git.drupalcode.org/project/ai/-/work_items/3556380) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiAgent, category::task, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation This issue assumes that #1, #2 or #3 will be the decisions in #3556140: [Discuss] Allow usage of Tool API in Agents. If not, we can close this issue. We want to move our agents from being function calls to being tools. This means that we need to add some differences onto the output. By default the output, can just change to a string, but if we have #3556378: Create assisted structured output generation in place, the output should conform to whatever the JSON Schema is. This… ### [Implement Process System Integration for Automators](https://git.drupalcode.org/project/ai/-/work_items/3493291) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiAutomators, category::plan, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [seogow](https://www.drupal.org/user/3065779) >>> Problem/Motivation Integrate Automators with the new Process Abstraction Layer and implement process visualization UI, providing better management and monitoring of automation operations. Currently, Automators lack: Standardized process management Visual progress tracking Operation history Real-time status updates Easy way to monitor and manage running automations Ability to review and re-run previous automations Proposed resolution Process Integration Convert Automator operations to use Process A… ### [[Discuss] Allow usage of Tool API in Agents](https://git.drupalcode.org/project/ai/-/work_items/3556140) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, discussion, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently we have a module in Tool API that does create deriatives of the tools into function calling standards. Since we want to move Tool API to be the first and foremost way of how you do function calling in AI Core, we want to prepare for this. For the sake of the conversation its important for people to know that there are currently four ways of abstracting the function calls: ToolsInterface - in AI Core. This is pure abstraction, for different providers to have a com… ### [ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/work_items/3586569) State: opened | Updated: 2026-06-29 | Author: mxh (hauptm) | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::needsReview Description: ## Summary When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Problem Making this status information optional improves general UX. ## Proposed solution *(optional)* Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Workaroun… ### [Plan: Add cancel button to AI Chatbot](https://git.drupalcode.org/project/ai/-/work_items/3499583) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiChatbot, category::plan, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation The AI Chatbot currently does not follow the similar UX design as popular chatbots where you can cancel the request in the middle of it. While Deepchat seems to support it, without a common UI element for it, this will also require the possibility to revert things like agent changes, so it might need some testing or planning. Currently the revert only happens with premature destruction, errors or certain logical cases. Remaining tasks Research what is needed both on the Cha… ### [Use core Json::encode() and Json::decode everywhere possible](https://git.drupalcode.org/project/ai/-/work_items/3480683) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::task, priority::major, state::postponed Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) Related to !1019 !434 >>> Problem/Motivation We have a bunch of instances of json_encode and json_decode. Let's just use the ones from core to avoid issues and leave the security of it to core. json_decode does very little. json_encode provides some escaping defaults. Steps to reproduce N/A Proposed resolution MR Remaining tasks MR User interface changes N/A API changes N/A Data model changes N/A ### [Move Prompt Library menu link under AI Infrastructure instead of Vector Database Configuration](https://git.drupalcode.org/project/ai/-/work_items/3586499) State: closed | Updated: 2026-06-25 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::closed Description: ## Problem/Motivation The **Prompt Library** menu link (`entity.ai_prompt.collection`) is currently nested under **Vector Database Configuration** (`ai.admin_vdb_providers`) in the AI admin menu. This is the wrong location — the Prompt Library has nothing to do with vector database providers, and placing it there makes it hard to discover. It should live directly under **AI Infrastructure** (`ai.admin_config_infrastructure`), alongside the other top-level infrastructure items (AI Platform Providers, Vector Database Configuration, Default Models, AI Files). ## Steps to reproduce 1. Navigate… ### [Prompt Library menu item missing due to incorrect parent](https://git.drupalcode.org/project/ai/-/work_items/3585596) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [drupov](https://www.drupal.org/user/433066) Related to !1523 !1522 !1521 >>> Update Summary: Fix menu link parent for Prompt Library Short Description: Prompt Library menu item missing due to incorrect parent Check-in Date: 04/19/2026 Problem/Motivation The "Prompt Library" menu item is not visible in the admin UI because it is assigned to an incorrect parent in ai.links.menu.yml. Steps to reproduce 1. Enable the AI module. 2. Go to Configuration → AI. 3. Observe that "Prompt Library" is missing. Proposed resolution Change the parent of entity… ### [[Discuss] Core support for browser providers](https://git.drupalcode.org/project/ai/-/work_items/3577202) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::plan, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation There are coming some providers built into the browsers - mainly Chrome with their AI on Chrome. Some of it experimental, but some of it already available. We have a provider that supports this in the Browser Provider using polling and session… ### [Research better practices for recipes](https://git.drupalcode.org/project/ai/-/work_items/3577175) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::plan, priority::normal, state::postponed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation In AI 1.0.0 we did add a config action called SetupAiProvider for Drupal CMS launch - we have since added some other ones, but all of them are more or less workarounds to patch problems that existed in recipes at the time. What we need is: A … ### [Improvement suggestions for ai_automators docs](https://git.drupalcode.org/project/ai/-/work_items/3572751) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Novice, aiAutomators, category::task, needs port to 2.x Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1202 !1201 !1187 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation While working on #3566577 AI pointed out that the ai/docs/modules/ai_automators/index.md need some updates about point 9. **Automator Worker**: to have new point about Field Widget Proposed resolution Add a 4th po… ### [Create an HTML to Markdown API and service](https://git.drupalcode.org/project/ai/-/work_items/3574246) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, priority::normal, state::accepted, toBeTriaged Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation League\HTMLToMarkdown\HtmlConverter is initiated 3 times with 3 different configurations in current code, when #3574004: Generate a markdown version of (formatted) text field values gets solved that becomes the 4th one. https://git.drupalcode.org/search… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation This is the second time we have hit a WSOD with the Gemini provider where simply enabling the module can break pages that instantiate AI provider clients. See #3572638: WSOD after module enabled. At the moment, this does not look like something that can… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [Unable to override the 'Calling agents' / 'Contacting agents' text](https://git.drupalcode.org/project/ai/-/work_items/3586389) State: opened | Updated: 2026-06-25 | Author: m4olivei | Assigned: unassigned | Labels: category::feature, priority::minor, state::rtbc, v1.4.x-dev Description: ### Problem/Motivation The deepchat conversational UI shows the the text 'Calling agents..' or 'Contacting agents..' when the system is off delgating to agents. Depending on the client / use case, this language can be confusing and/or unfamiliar, ultimately not helpful to the end user. This task is to allow this text to be overriden in configuration. I'd also suggest that the text be made consistent. By my read 'Contacting agents..' is more appropriate, as its more general than 'Calling', which we probably mean in the developer sense of 'Calling an API', but may users would read as a liter… ### [Glossary for the Drupal AI initiative](https://git.drupalcode.org/project/ai/-/work_items/3577844) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Needs issue summary update, category::plan, documentation, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) >>> This is a first-pass glossary intended to align Drupal AI with common AI language, current framework language, and Drupal's existing terminology. The goal is to freeze the core terms now, avoid overloaded words, and refine edge cases later. Where a plain-language term and a provider-specific term both exist, prefer the plain-language term in public-facing docs and UI. Use the more precise technical term when architecture, runtime behavior, or interoperability matters. AX and shared-interface ter… ### [Automated Drupal 12 compatibility fixes for ai 2.0.x-dev](https://git.drupalcode.org/project/ai/-/work_items/3586525) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Field Widget Button labels are not translatable via UI](https://git.drupalcode.org/project/ai/-/work_items/3567027) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, fieldWidgetActions, priority::normal, shouldMove Description: >>> [!note] Migrated issue Reported by: [fago](https://www.drupal.org/user/16747) >>> [Tracker] Update Summary: Field Widget Button labels are not translatable via UI Short Description: Button labels in field widget actions are configured via entity-form-displays. However, entity form displays have no UI for configuring translations, thus, there is no dedicated page and no entry at /admin/config/regional/config-translation Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem Button labels in field widget actions are configured vi… ### [Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy](https://git.drupalcode.org/project/ai/-/work_items/3586573) State: opened | Updated: 2026-06-29 | Author: Thomas Werthmüller (weri) | Assigned: unassigned | Labels: category::feature, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1730 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1730) | State: closed | Author: Thomas Werthmüller (weri), 153 diff lines - MR !1733 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1733) | State: opened | Author: Thomas Werthmüller (weri), 38 diff lines Description: ## Summary When I create a taxonomy for the tone of voice and allow to translate the terms, in the UI of the CKEditor always the default language is displayed and also the description of this term is used for prompting and not the translated version. ## Environment - Drupal version: 11 - Module version: 1.4.3 ### Screenshots ![CleanShot_2026-06-26_at_16.30.17](https://git.drupalcode.org/-/project/106525/uploads/0df4b3af6167109ba085e44a575e6a88/CleanShot_2026-06-26_at_16.30.17.png){width="725" height="600"} ### [Add ai_budget_control to the ecosystem / related modules list](https://git.drupalcode.org/project/ai/-/work_items/3583958) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, priority::normal, state::closed, v2.0.x-dev Description: >>> [!note] Migrated issue Reported by: [tchida](https://www.drupal.org/user/3835690) Related to !1483 >>> [Tracker] Update Summary: Request to list ai_budget_control in the AI ecosystem. Short Description: Add ai_budget_control to the project page and README to help users manage API costs. Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Users of the main ai module need tools to control API costs and prevent abuse. I released AI Budget Control to provide API provider "Hard Limits" and native Flood API quotas. Add… ### [Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/work_items/3536912) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: #drupalpune-sprint, aiAutomators, category::feature, priority Description: >>> [!note] Migrated issue Reported by: [mandclu](https://www.drupal.org/user/52136) >>> Problem/Motivation The new field widget actions are great! In many ways these recreate the experience that drew me into developing for the Augmentor AI module. One thing I do miss is a simple way to choose which generated tags to choose. Augmentor achieves this with an interim widget, showing the suggested tags as tiles that when clicked add the suggestion into the tags field. I think we could achieve something similar if we could have a field widget action that worked with the Tagify widget. It would … ### [Document the AI module ecosystem: a categorized list of related modules with links and summaries](https://git.drupalcode.org/project/ai/-/work_items/3586482) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Rob Loach (robloach) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: ## Description The AI module has grown a large ecosystem of companion projects on drupal.org — providers, vector database (VDB) providers, agents, recipes, tools, automators, and full distributions/CMS profiles. Today there is no single, curated page in the AI module's documentation that tells a site builder or developer **what exists, where to find it, and what each project does.** Discovering these modules currently means searching drupal.org by hand or relying on word of mouth. A maintained ecosystem index would make the AI module dramatically easier to adopt: people could see at a glance… ### [Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object](https://git.drupalcode.org/project/ai/-/work_items/3586437) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiContentSuggestions, category::feature Description: ## Summary At the moment the settings of AI Content Suggestion plugins are splitted between 3 config objects: - ai_content_suggestions.settings - ai_content_suggestions.prompts - ai_content_suggestions.tone ## Problem Content object `ai_content_suggestions.settings` needs to have all plugin settings to avoid loading unnecessary configurations, this way the plugin instantiation could be easier as configuration will exist in the same config file. > Change record: [#3591233](https://www.drupal.org/node/3591233) ### [Validation of unexisting fields on paragraphs actions](https://git.drupalcode.org/project/ai/-/work_items/3571033) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiContentSuggestions, category::bug, priority::normal, shouldMove Description: >>> [!note] Migrated issue Reported by: [aaron gil martinez](https://www.drupal.org/user/3605526) Related to !1150 >>> Problem/Motivation When a node form uses Paragraphs, the AI Content Suggestions “Select the field(s) you wish to send to the LLM” list does not update after Paragraphs AJAX actions (collapse/edit/add). This makes it possible to select stale/hidden paragraph fields or miss newly added ones or even display errors because of validation on non-existing fields in the list. Steps to reproduce (required for bugs, but not feature requests) Enable ai_content_suggestio… ### [ai_content_suggestions: On-focus button un-hide rule misses .field-widget-action-widget-button for field--type-string-long](https://git.drupalcode.org/project/ai/-/work_items/3583883) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiContentSuggestions, category::bug, priority::minor, shouldMove Description: >>> [!note] Migrated issue Reported by: [jjchinquist](https://www.drupal.org/user/286806) >>> [Tracker] Update Summary: Bug report, AI Suggestions button stays hidden on focus for string_long textarea fields. Short Description: On-focus un-hide CSS rule in ai_content_suggestions misses .field-widget-action-widget-button for field--type-string-long. Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation When the display_on_focus setting is enabled on a field widget action plugin attached to a field--type-string-long fie… ### [Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab](https://git.drupalcode.org/project/ai/-/work_items/3586488) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: ## Description The provider/operation-type matrix at `docs/providers/matris.md` is maintained by hand. Today the only way it stays current is a note at the bottom asking contributors to open a pull request when their provider is missing — so it drifts out of date and is incomplete. We should add a **deterministic** script under `scripts/` that discovers every AI provider plugin published on `git.drupalcode.org`, works out which operation types each one supports, and regenerates `docs/providers/matris.md` from that data. Determinism matters so the script can run in CI / on a schedule and prod… ### [Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer](https://git.drupalcode.org/project/ai/-/work_items/3586572) State: opened | Updated: 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Is Contextualized, aiApiExplorer, category::task, priority::normal Description: ## Summary The **Chat Generation Explorer** (`ChatGenerator` plugin) in the AI API Explorer should also display the response **metadata** returned by the provider — specifically **token usage** and, when the provider exposes it, **rate limit** information. ## Problem When you run a chat through the explorer, the response object (`\Drupal\ai\OperationType\Chat\ChatOutput`) already carries this metadata, but the explorer throws it away. `ChatOutput` already exposes everything we need: - `getTokenUsage(): \Drupal\ai\Dto\TokenUsageDto` — `input`, `output`, `total`, `reasoning`, `cached` toke… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-06-28 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, why::needsInfo Description: ## Description The current AI Chatbot module is tightly coupled to the DeepChat library. DeepChat does more than render the UI - it also handles the API communication, chat state, and message history. Functionality such as tool calling, conversation history, and thread management is implemented in a DeepChat-specific way, making it difficult to swap in alternative chat interfaces. [assistant-ui](https://www.assistant-ui.com/) was identified as a promising alternative - a React-based component library that supports custom API endpoints and offers significantly easier customization than DeepCha… ### [Add metadata to VectorDBGenerator in AI-API-Explorer](https://git.drupalcode.org/project/ai/-/work_items/3549175) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: Isaac Trogdon (dotist) | Labels: aiApiExplorer, category::task, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [d0t15t](https://www.drupal.org/user/132353) >>> Problem/Motivation It would be great to see the available metadata in the VDB results, for instance - to add the drupal_long_id. ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Add event hook to ai_ckeditor to allow context injection](https://git.drupalcode.org/project/ai/-/work_items/3581952) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Jesse Hofmann-Smith (jessehs) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !1469 !1425 >>> Problem/Motivation The ai_ckeditor module provides AI-powered CKEditor 5 actions (Tone, Translate, Summarize, etc.) but has zero entity awareness — it doesn't know what content type, bundle, or entity ID the editor is attached to. The ai_context module provides a sophisticated scope-based context selection system that can inject bundle-specific writing guidelines into AI prompts. These two modules cannot communicate because: ai_ckeditor does not pass entity information (… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bruno Bruno (bbruno) | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [[AI Prompts] Update the Type Casing of Entities/Permissions](https://git.drupalcode.org/project/ai/-/work_items/3574417) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [robloach](https://www.drupal.org/user/61114) Related to !1223 >>> [Tracker] Update Summary: Created the issue Short Description: Update the casing of AI Prompt Types Check-in Date: 02/18/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Following #3567796: UX: AI Prompts: Improve UX around initial setup, the AI Prompts user interface has a mix of letter casing. For example: "AI Prompt type". Would be good to consolidate them so that they're all using Title Case, as similar with other entities ac… ### [Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches](https://git.drupalcode.org/project/ai/-/work_items/3566613) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1285 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We want better traceability between code changes and Drupal.org issues by ensuring that anything merged into main branches (e.g. 1.2.x, 1.3.x, 2.0.x) references the relevant issue num… ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: harivansh sharma (harivansh) | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Create validator for structured content](https://git.drupalcode.org/project/ai/-/work_items/3561971) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1385 !1242 !1210 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Create a validator of structured content Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently we have an input in specific places like ECA, AI Agents or AI API Explorer where you can provide a structured content as a big json or yaml blob in a textarea. Since there are very specific rules about ho… ### [Fix Translate Text Explorer form functionality](https://git.drupalcode.org/project/ai/-/work_items/3553353) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs tests, aiApiExplorer Description: >>> [!note] Migrated issue Reported by: [jhuhta](https://www.drupal.org/user/3387868) Related to !1333 !963 >>> Problem/Motivation When using the Translate Text Explorer, it always results in an exception: An error occurred The following error occurred while processing your request: Form errors cannot be set after form validation has finished. Of the following exception type: LogicException The reason seem to be the inconsistent use of a prefix in the form code. Steps to reproduce (required for bugs, but not feature requests) Have an translate text type of a provider (like ai_provider_d… ### [The chatbot config, default avatar does not accept tokens](https://git.drupalcode.org/project/ai/-/work_items/3546675) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [anaconda777](https://www.drupal.org/user/3595801) Related to !1255 >>> Problem/Motivation In the block settings of the chat bot, the defaul avatar always shows User picture. Some sites may not use User picture image, instead a image field from user Profile. For example tokens in the field "Default Avatar" wont work, instead the default user pic is showed: [current-user:profile:field_profile_image] [current-user:profile:field_profile_image:entity] Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI mo… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [Provide AI usage reports in Drupal admin panel](https://git.drupalcode.org/project/ai/-/work_items/3535260) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alexey Korepov (murz) | Labels: AI Initiative Sprint, AI Product Development, Vienna2025, aiLogging Description: >>> [!note] Migrated issue Reported by: [tonytosta](https://www.drupal.org/user/262359) Related to !826 >>> The AI module bundle should provide an easy way to view calls to AI providers - log requests and responses locally, build usage reports, available directly in the Drupal admin panel out of the box, without using any external tools. Steps to reproduce (required for bugs, but not feature requests) I will list these steps even though it is not required: Install AI module Install AI Usage Reports module See usage reports in the Drupal admin panel: logs of requests and responses, aggreg… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::bug Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !1277 >>> Problem/Motivation ChatBot closes itself, and impossible to reopen-it, without refreshing the page Steps to reproduce 1. Create new content with CKEditor, for example basic page 2. Open ChatBot 3. Add Media into Ckeditor, we can see ChatBot closes 4. Include the Media 5. It's impossible to reopen the ChatBot > Related issue: [Issue #3505569](https://www.drupal.org/node/3505569) ### [Create plugins for interacting with multimedia in AI](https://git.drupalcode.org/project/ai/-/work_items/3463843) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alphons Jaimon (AJV009) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::task Description: >>> [!note] Migrated issue Reported by: [kevinquillen](https://www.drupal.org/user/317279) Related to !1431 !761 >>> Problem/Motivation Now that #3462674: Create a generic AI plugin layer for CKEditor is pending a merge, one of the final OOTB AI plugins for CKEditor is generating an image from providers and saving the result back to the media library in Drupal. This would be a core piece of CKEditor plugin functionality. This is true for text to speech or audio providers as well. This is more of an intermediate task as I assume the plugin would need to understand how to convert the saved … ### [ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models](https://git.drupalcode.org/project/ai/-/work_items/3586425) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: **Problem / Motivation** `AiRequest.php` calls `setStreamedOutput(TRUE)` for all providers. The PHP client `gemini-api-php` sends a malformed request body when calling `streamGenerateContent` against Gemini 2.x models, resulting in `400 Bad Request`. The non-streaming endpoint `generateContent` works correctly with the same payload. The error in logs: `Error invoking model response: Client error: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent resulted in a 400 Bad Request response` Confirmed: the identical payload sent to `generateConten… ### [AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin](https://git.drupalcode.org/project/ai/-/work_items/3586449) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, priority::normal, state::rtbc Description: Project: AI\ Component: AI Assistant API\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** Drupal\\ai_assistant_api\\Service\\AgentRunner::runAsAgent() resolves the assistant's underlying agent through the plugin.manager.ai_agents plugin manager: // AgentRunner.php:74\\ $agent = this-\>aiAgentPluginManager-\>createInstance(assistant_id); The plugin manager surfaces two kinds of definitions under a single ID namespace: 1. Code-defined AiAgent plugins, which extend AiAgentBase. 2. Config-entity agents, which are wrapped at discovery time in AiAgentEntityWrapper. When a code plugin a… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-29 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1732 [Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification](https://git.drupalcode.org/project/ai/-/merge_requests/1732) | State: opened | Author: Ronald te Brake (ronaldtebrake), 11 diff lines Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… ### [Tool Explorer does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582473) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1446 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Tool Explorer does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The Tool Explorer UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the Tool Explorer has styling issues that make it diffi… ### [MDX Editor does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582474) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1445 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: MDX Editor does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The MDX Editor UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the MDX Editor has styling issues that make it difficult to u… ### [force_value + hide_property in tool_usage_limits does not inject value at tool execution time](https://git.drupalcode.org/project/ai/-/work_items/3586577) State: opened | Updated: 2026-06-30 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: (Written with the help of Claude Sonnet 4.6) I've been testing AI Search (1.3.0-alpha3) with AI (1.5.x-dev) and I think I have found an issue. After creating a search assistant pointing at a vector DB index, it does not work. I looked at the configuration of the AI agent that was created when I created the assistant, and it looks like if both force_value and hide_property are enabled, the forced value is never actually injected when the tool executes. The result is a validation error: > Invalid value for [parameter] in [tool]: This value should not be null. Claude seems to think this is… ### [Rethrow exceptions from queue processor](https://git.drupalcode.org/project/ai/-/work_items/3571498) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [nicxvan](https://www.drupal.org/user/531480) >>> [Tracker] Update Summary: Exceptions should be rethrown so custom processors can handle them Short Description: Rethrow exceptions Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to handle unstructured and other exceptions ourselves in a process runner Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolutio… ### [Add cache-write and tool-use prompt tokens to TokenUsageDto](https://git.drupalcode.org/project/ai/-/work_items/3586576) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, v1.5.x-dev Description: ## Problem/Motivation `TokenUsageDto` (`src/Dto/TokenUsageDto.php`) only models five token counts: ```php public ?int $input = NULL, public ?int $output = NULL, public ?int $total = NULL, public ?int $reasoning = NULL, public ?int $cached = NULL, ``` Two token-usage values reported by the major providers have nowhere to live in this DTO, so they are silently dropped before reaching logging/observability or any cost-reporting layer: ### 1. Cache **write** / cache creation tokens The current `cached` field maps only to **cache reads** (`prompt_tokens_details.cached_tokens` in `OpenAiBasedPr… ### [Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) State: closed | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: Valery Lourie (valthebald) | Labels: category::plan, priority::normal, state::accepted Description: Drupal AI Contribution meeting from June 15 at 18:00 to June 16, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586480: Drupal AI Contribution meeting 2026-06-01](https://git.drupalcode.org/project/ai/-/work_items/3586480) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [[META] AI background / autonamous agents](https://git.drupalcode.org/project/ai/-/work_items/3560619) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [guptahemant](https://www.drupal.org/user/3278073) >>> [Tracker] Update Summary: Background Agent Processing - We have a plan for the intial preparation of background agents Short Description: Allows Agents to work on the sever without direct user involvement enabling many automation features such as firing on cron or in response to content changes. Includes significant Architecture improvements. Check-in Date: 07/12/2025 Additional Collaborators: @guptahemant, @harivansh Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker]… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ricardo Castañeda (cadence96) | Labels: UX, aiAutomators, category::feature, priority::normal Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Only one AI Automator worker queue item is processed per cron execution](https://git.drupalcode.org/project/ai/-/work_items/3575190) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1647 [Issue #3575190: Add configurable queue items per cron for AI Automators](https://git.drupalcode.org/project/ai/-/merge_requests/1647) | State: merged 2026-06-30 | Author: Abhisek Mazumdar (abhisekmazumdar), 575 diff lines Description: >>> [!note] Migrated issue Reported by: [sgavilan](https://www.drupal.org/user/3569880) Related to !1253 !1252 >>> [Tracker] Update Summary: AI Automator queue items run once per cron execution[One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: 23/02/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Each cron execution queues several items to be processed but only one item is processed each time. Is there a way to configure number of queue items to be processed in each e… ### [non streaming broken (fiber branch)](https://git.drupalcode.org/project/ai/-/work_items/3586457) State: opened | Updated: 2026-06-30 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: AI, AI Product Development, priority::major, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1646 [Issue #3586457: Add ChatInput::setForceSynchronous() and fix Fiber branch to use ChatFiberSupport capability](https://git.drupalcode.org/project/ai/-/merge_requests/1646) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 91 diff lines Description: ## Summary `OpenAiBasedProviderClientBase::chat()` contains a Fiber branch (line 341) that silently forces streaming on any call executed inside a PHP Fiber, even when the caller never requested streaming. This breaks non-streaming AI calls made from within Fiber-based execution contexts (e.g. `ai_search_block` with streaming disabled in block config). ## Root cause The condition on line 341 is: ```php elseif (\Fiber::getCurrent() && in_array(AiProviderCapability::StreamChatOutput, $this->getSupportedCapabilities())) { ``` `\Fiber::getCurrent()` alone is too broad — it fires for any code … ### [InputLengthLimit guardrail does not consistently scan user messages](https://git.drupalcode.org/project/ai/-/work_items/3586578) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::bug, v1.4.x-dev Description: ## Summary Follow-up to #3579088. The `InputLengthLimit` guardrail (added in 1.4.x) has the same message-selection defect that #3579088 fixed for `RegexpGuardrail` and `RestrictToTopic`: it does not consistently scan **user** messages across a conversation. The fix in [!1467](https://git.drupalcode.org/project/ai/-/merge_requests/1467) centralized this into a reusable `UserMessageSelectionTrait` (a role-filtered `selectUserMessages()` helper plus a shared "Scan all user messages" checkbox via `buildScanAllUserMessagesElement()`). `InputLengthLimit` was not part of that MR because it landed s… ### [ImageClassificationItem returns string from getConfidenceScorePercentage and uses uppercase NULL in hints](https://git.drupalcode.org/project/ai/-/work_items/3584863) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: ImageClassificationItem::getConfidenceScorePercentage() is typed as string and returns mixed float/string; type hints also use uppercase NULL instead of lowercase null. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation In src/OperationType/ImageClassification/ImageClassificationItem.php, getConfidenceScorePercentage() is declared with return type string but the docblock says float|null, and the body r… ### [Drupal Eval Commons umbrella](https://git.drupalcode.org/project/ai/-/work_items/3586445) State: opened | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::plan, priority::normal, state::rtbc Description: ## TL;DR Four Drupal AI projects (`drupal/ai`, `ai_eval`, `ai_agents_test`, `ai_best_practices`) are each working on pieces of the same puzzle: how to write, run, and share evals for AI features. Today there is no shared format for eval cases or results, so the same work risks being redone in incompatible ways. This umbrella suggests splitting the problem into five layers and agreeing on the lowest layer first, so the other layers can move in parallel without one blocking the rest. Nothing in your current module has to change today; the proposal is additive, and a module adopts each layer whe… ### [[Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*)](https://git.drupalcode.org/project/ai/-/work_items/3586479) State: closed | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1662 [feat: #3586479 Add gen_ai.* semantic conventions to ai_observability](https://git.drupalcode.org/project/ai/-/merge_requests/1662) | State: merged 2026-06-30 | Author: George Kastanis (zorz), 1133 diff lines Description: ## Problem `ai_observability` has emitted OTel spans + metrics (since the 1.3.x series) with ad-hoc names (`provider`, `operation_type`, `model`, `token_usage` as a serialized array; counters `ai_token_usage_`) rather than the OTel [GenAI semantic conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/). The Layer 2 envelope tracker (#3586453) needs one attribute schema across modules so the translator reads a single shape. ## Proposed approach — additive, dual-emit, no config toggle Emit `gen_ai.*` **alongside** the existing ad-hoc attributes/metrics, unconditionally, when OTel ex… ### [Type error and infinite AJAX request loop when the Agent is unable to resolve a request job](https://git.drupalcode.org/project/ai/-/work_items/3547470) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiAssistantsApi, category::task, needs backport to 1.1.x, needs backport to 1.2.x Description: >>> [!note] Migrated issue Reported by: [codebymikey](https://www.drupal.org/user/3573206) Related to !1021 !894 >>> Problem/Motivation When the AI agent is unable to solve a job, the following exception is thrown: <?phpTypeError: Drupal\ai\OperationType\Chat\ChatMessage::__construct(): Argument #2 ($text) must be of type string, null given, called in /app/application/web/modules/contrib/ai/modules/ai_assistant_api/src/Service/AgentRunner.php on line 85 inDrupal\ai\OperationType\Chat\ChatMessage->__construct() (line 61 of /app/application/web/modules/contrib/ai/src/OperationType/Ch… ### [ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator)](https://git.drupalcode.org/project/ai/-/work_items/3586473) State: closed | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1627 [fix: #3586473 Finalize streaming OTel spans on the terminal event](https://git.drupalcode.org/project/ai/-/merge_requests/1627) | State: merged 2026-06-30 | Author: George Kastanis (zorz), 248 diff lines Description: ## Problem Streaming chat OTel spans record no final token usage. `AiOtelSpansEventSubscriber` sends both `PostGenerateResponseEvent` and `PostStreamingResponseEvent` to one handler. It ends the span on the first event, before the stream is consumed, so token usage is empty. The terminal event carries the real usage, but the span is already ended and OTel ignores attributes set after `end()`. The stored span is also never unset, so `$otelSpans` grows unbounded. Two related gaps on the terminal event: - `operationType` and `configuration` are empty. `attachStreamMetadata()` sets `providerC… --- MERGE REQUESTS (2w) --- ### [fix: Validates inline prompt against stale prompt type when multiple ai prompt elements exists](https://git.drupalcode.org/project/ai/-/merge_requests/1686) State: opened | Author: Javier Destefanis (javierdestefanis) | Branch: 3586548-aipromptsubform-validates-inline-prompt-against-stale-prompt-type-when-multiple-ai-prompt-elements-exist | 247 diff lines Description: ## Description #3586548 I have not created tests. ## Testing instructions 1. 1. Create a settings form with multiple `#type => ai_prompt` elements. 2. Configure at least two different prompt types: * one prompt type with required variables; * one prompt type with no required variables. 3. Use the inline “Create new prompt” form for the prompt type that has no required variables. 4. Fill in the required fields and submit the inline prompt form. 2. ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-r… ### [Issue #3582743: Set temp directory for encoderProvider.](https://git.drupalcode.org/project/ai/-/merge_requests/1685) State: merged 2026-06-18 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-28c609c3 | 225 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3554797: Start session after first interaction](https://git.drupalcode.org/project/ai/-/merge_requests/978) State: opened | Author: Omar Mohamad - El Hassan Lopesino (omarlopesino) | Branch: 3554797-create-ai-assistant | 610 diff lines Description: Closes #3554797 ### [Issue #3586541 Show last-modified date on documentation pages...](https://git.drupalcode.org/project/ai/-/merge_requests/1684) State: opened | Author: Avinash jha (avinash.jha) | Branch: 3586541-show-last-modified-date-on-documentation-pages-mkdocs-git-revision-date-localized-plugin | 67 diff lines ### [Issue #3586475: Rename the RegExp Guardrail labels to RegEx](https://git.drupalcode.org/project/ai/-/merge_requests/1689) State: opened | Author: Rob Loach (robloach) | Branch: 3586475-guardrails-regex-plugin-name | 205 diff lines Description: ## Description This renames the regexp guardrail labels to "RegEx" for consistency within the UI. It doesn't change the machine IDs, or class names, just the labels. ## Testing instructions 1. Visit the Guardrails administration screen 2. Expect to see RegEx, instead of regexp Closes #3586475 ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-review of my own code - [x] I have added or updated tests, or explained in the description why this change is not covered by tests - [x] I have updated documentation for any new or chan… ### [feat: #3586427 Adopt symfony/ai component v0.8 as platform provider](https://git.drupalcode.org/project/ai/-/merge_requests/1619) State: opened | Author: Wolfgang Ziegler (fago) | Branch: 3586427-adopt-symfonyai-08 | 4751 diff lines Description: ## Dependencies !! This MR builds upon the MR [#1613](https://git.drupalcode.org/project/ai/-/merge_requests/1613) - please review this one first! ## Description - New `ai_inference_provider` plugin type + config entity (one inference backend with API key / base URL / model list); ships `Generic` (OpenAI-compatible) and `Gemini`. Plugin namespace `Plugin/ai/InferenceProvider/`. - New `ai_model_router` plugin type; ships `CatalogBasedModelRouter` (default). - New `ai_platform` plugin type with two derivers: - **EntityPlatform** — one derivative per `ai_platform` config entity. … ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai/-/merge_requests/1688) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2204 diff lines Description: Relates to #3586555. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-856789. ### [Issue #3586478: "Add rich-text image description support to AI Automators"](https://git.drupalcode.org/project/ai/-/merge_requests/1679) State: opened | Author: Levente Besenyei (LeventeB) | Branch: 3586478-issue-branch-2x | 2434 diff lines Description: ## Description Ports the resolution of #3586478 from the 1.x line to the 2.x branch. This introduces rich-text image awareness to AI Automators so supported text-based automators can discover embedded images, generate AI image descriptions, include those descriptions in prompt context, and optionally store image metadata for auditability. For AI content pre-moderation, this enables the moderation automator to evaluate visual content from Article body fields in addition to text content. If embedded images cannot be fully processed (for example, configured image limit exceeded, unreachable/in… ### [#3586470 "Make API explorer work with Symfony platform and legacy providers"](https://git.drupalcode.org/project/ai/-/merge_requests/1613) State: opened | Author: Wolfgang Ziegler (fago) | Branch: 3586470-make-api-explorer-wo | 281 diff lines Description: ## Description Closes #3586470 Makes `ai_api_explorer` (and any other consumer of `AiProviderFormHelper`) work with the new `AiPlatform`-backed providers while keeping legacy `AiProvider` plugins fully supported during the migration window. The MR also does some small UI-changes (menu links) and names legacy AI providers legacy in the UI, to avoid confusion. ## Changes - **`AiProviderPluginManager::getProvidersForOperationType()`** now returns **both** kinds in one listing: - Legacy `AiProvider` plugins (bare-id keys, e.g. `echoai`) — label prefixed with `Legacy:` so dropd… ### [#3582633: Add Functional JavaScript testing conventions and validation script](https://git.drupalcode.org/project/ai/-/merge_requests/1432) State: opened | Author: Shivam Sen (shivamsen_12579) | Branch: 3582633-document-functionaljavascript-test | 162 diff lines Description: (cherry picked from commit 20c8ac18d15a25ffd0db807b6e427e8b41d34cf7) Closes #3582633 ### [feat: #3577170 Move Automators to Structured Output](https://git.drupalcode.org/project/ai/-/merge_requests/1291) State: merged 2026-06-24 | Author: Ann Mary Sruthy (annmarysruthy) | Branch: 3577170-move-automators-to | 1961 diff lines Description: Closes #3577170 ### [Issue #3586515: Port FWA/Automators generalization from !1536 to 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1700) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3586515-generalize-behaviour-of-fwa-with-automators-ai-core-v2-2.0.x | 3627 diff lines Description: ## Summary Backport of MR #1 (→ 2.x) to 2.0.x for #3586515. Same change as the parent issue #3577050 / !1536, ported across the major-version boundary. Because the FieldWidgetAction plugins and the kernel test are byte-identical between 2.x and 2.0.x, this is a clean `git cherry-pick -x` of the 2.x commit — no manual conflict resolution was needed on top of the 2.x work. > Cherry picked from the 2.x branch (commit `c60b0854`). Please review/merge after MR #1 lands on 2.x. ## What changed The per-widget automator dispatch logic is generalized into `AutomatorBaseAction`: - `runAutomatorSub… ### [Issue #3586515: Port FWA/Automators generalization from !1536 to 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1699) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3586515-generalize-behaviour-of-fwa-with-automators-ai-core-v2 | 3627 diff lines Description: ## Summary Ports the field widget action (FWA) / Automators generalization from !1536 (issue #3577050, merged to 1.4.x) onto 2.x, as requested in #3586515. The 1.x work could not be cherry-picked directly across the major-version boundary, so this is a 3-way port of the same change set. ## What changed The per-widget automator dispatch logic is generalized into `AutomatorBaseAction`: - `runAutomatorSubmit()` runs the automator once during the submit phase and `setFormInput()` writes results into `$form_state` user input, so the rebuilt form scaffolds enough delta slots for every value retu… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1697) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-6 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1695) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-4 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1696) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-5 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1694) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-3 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586521: Fix tests with MDXEditor for 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1698) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-1f4ca30a | 176 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1693) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-2 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1692) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1691) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: fix-pipeline-composer | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode.](https://git.drupalcode.org/project/ai/-/merge_requests/1529) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3584977-restricttotopic-guardrail-add | 895 diff lines Description: Closes #3584977 ### [Cherry-pick changes from #3586500](https://git.drupalcode.org/project/ai/-/merge_requests/1716) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3586500-2x | 209 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry pick 3586472 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1717) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-80302a5d | 304 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1629) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3586468-interactive-refineme | 3038 diff lines Description: ## Description ## Testing instructions 1. Create an AI Automator Setup for content_type → entity → field_content with rule llm_text_long , point the base field to the title, and add a prompt something like "You must write a short blog paragraph about: {{ context }}. Return ONLY the paragraph text, nothing else." 2. Enable the Field Widget Action with refinement Go to /admin/structure/types/manage/blog/form-display Click the gear on field_content, under Field Widget Actions enable "Automator Text Suggestion" Pick the automator, check "Enable Refinement", save 3. Edit an entity Click the… ### [Cherry pick 3586472 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1713) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3586472-2.x | 304 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1715) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-c366c40d-2 | 345 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1714) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-c366c40d | 345 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1712) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-b7459475-2 | 240 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1711) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-b7459475 | 240 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1710) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-2467d85a-2 | 57 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1709) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-2467d85a | 57 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [#3585077: Integrate chatprocessor plugin (1.x backport)](https://git.drupalcode.org/project/ai/-/merge_requests/1706) State: closed | Author: David Galeano (gxleano) | Branch: 3585077-chatprocessor-1x | 1310 diff lines ### [#3585075: Add ai assistant chat processor (1.x backport)](https://git.drupalcode.org/project/ai/-/merge_requests/1707) State: opened | Author: David Galeano (gxleano) | Branch: 3585075-add-ai-assistant-1x | 253 diff lines ### [#3585075: Add ai assistant chat processor](https://git.drupalcode.org/project/ai/-/merge_requests/1496) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3585075-add-ai-assistant | 253 diff lines Description: Closes #3585075 ### [#3585077: Integrate chatprocessor plugin](https://git.drupalcode.org/project/ai/-/merge_requests/1497) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3585077-integrate-chatprocessor-plugin | 1317 diff lines Description: Closes #3585077 ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… ### [Remove ai_content_suggestions module for ai core](https://git.drupalcode.org/project/ai/-/merge_requests/1042) State: merged 2026-06-25 | Author: Eric Homanchuk (erichomanchuk) | Branch: 3552885-move-out-ai | 3777 diff lines Description: The module will now be a contrib module and has a project at https://www.drupal.org/project/ai_content_suggestions Closes #3552885 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1522) State: merged 2026-06-25 | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-1.4.x | 13 diff lines Description: Closes #3585596 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1521) State: merged 2026-06-25 | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-2.0.x | 13 diff lines Description: Closes #3585596 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1523) State: closed | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-1.3.x | 13 diff lines Description: Closes #3585596 ### [docs: #3572751 Add docs for the Field widget Actions automator worker](https://git.drupalcode.org/project/ai/-/merge_requests/1293) State: merged 2026-06-25 | Author: Wolfgang Ziegler (fago) | Branch: cherry-pick-c72530aa | 22 diff lines Description: By: abhisekmazumdar By: sujal kshatri By: scontzen (cherry picked from commit c72530aa54564650b47754b622a266792694f4f4) ce3d22c7 docs: #3572751 Improvement suggestions for ai_automators docs Co-authored-by: Abhisek Mazumdar ### [Adding a new point about Automator Worker](https://git.drupalcode.org/project/ai/-/merge_requests/1187) State: closed | Author: Sujal Kshatri (sujal_31) | Branch: 2.0.x | 44218 diff lines Description: Documentation for **Automator Worker** in `ai/docs/modules/ai_automators/index.md` , Added a new point describing the **Field Widget worker type** ### [Adding a new point about Automator Worker](https://git.drupalcode.org/project/ai/-/merge_requests/1201) State: closed | Author: Sujal Kshatri (sujal_31) | Branch: 1.3.x | 19 diff lines Description: Documentation for **Automator Worker** in `ai/docs/modules/ai_automators/index.md` , Added a new point describing the **Field Widget worker type** ### [Issue #3586389: Add agent delegation message setting](https://git.drupalcode.org/project/ai/-/merge_requests/1539) State: opened | Author: m4olivei | Branch: 3586389-unable-to-override-t | 69 diff lines Description: Closes #3586389 ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1723) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-5 | 255 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1722) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-4 | 255 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1719) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1721) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-3 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1720) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-2 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick changes from #3586500](https://git.drupalcode.org/project/ai/-/merge_requests/1718) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-56a8ae4c | 209 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [ai-3586569: ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/merge_requests/1728) State: opened | Author: Mukeysh | Branch: 3586569-ai-ckeditor-add-option-to-show-or-hide-the-ai-writer-status-information | 181 diff lines Description: ## Description When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Solution Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Testing instructions 1. Enable AI + AI CKEditor. Run `npm ci && npm run build` in modules/ai_cked… ### [fix(ai_ckeditor): remove stale toolbar items on uninstall and warn on confirm page](https://git.drupalcode.org/project/ai/-/merge_requests/1731) State: opened | Author: Ricardo Castañeda (cadence96) | Branch: 3586570-uninstalling-ai-ckeditor-leaves-stale-toolbar-items-in-editoreditor-configuration | 108 diff lines Description: ## Description Fixes an issue where uninstalling `ai_ckeditor` left stale toolbar references in existing `editor.editor.*` configuration entities, causing CKEditor 5 text format configuration pages to break. Two changes in `ai_ckeditor.install`: - **`hook_module_preuninstall()`**: Before the module is removed, iterates over all `editor.editor.*` configs and strips the `aickeditor` and `ai_balloon_menu` toolbar items, as well as the `ai_ckeditor_ai` plugin configuration block. - **`hook_form_FORM_ID_alter()` for `system_modules_uninstall_confirm_form`**: Reads the pending modules from the ex… ### [Resolve "Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab"](https://git.drupalcode.org/project/ai/-/merge_requests/1645) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3586488-add-a-deterministic-script-to-auto-generate-the-providersoperation-types-matrix-from-gitlab | 1157 diff lines ### [Issue #3586543: Add AI reranking processor for Search API.](https://git.drupalcode.org/project/ai/-/merge_requests/1729) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3586543-add-ai-reranking-processor-for-search-api | 617 diff lines Description: ## Description A new Search API processor plugin (`ai_reranker`) that re-orders query results using the `rerank` operation type already in AI Core. The `rerank` operation was added in #3488114 but nothing consumed it for Search API. #3557901 proposed putting reranking in `ai_search`, but reranking is a generic capability. It belongs in the `ai` core module where the operation type itself lives, so it works with any Search API backend (database, Solr, anything), not just the vector backend. **New files:** - `src/Plugin/search_api/processor/AiReranker.php`: `ProcessorPluginBase` plugin runni… ### [Issue #3477173: Add functional tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/merge_requests/1302) State: opened | Author: velmir_taky (root_emarketing) | Branch: 3477173-add-functional-tests-all | 635 diff lines Description: Closes #3477173 ### [Add AICKeditor tests (Target 1.4.x)](https://git.drupalcode.org/project/ai/-/merge_requests/1577) State: merged 2026-06-26 | Author: AKHIL BABU (AkhilBabu) | Branch: 3477173-add-functional-tests-all-1.4.x | 649 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Added Functional JavaScript Tests](https://git.drupalcode.org/project/ai/-/merge_requests/1257) State: closed | Author: Hrishikesh Dalal (hrishikesh-dalal) | Branch: 3477173-add-functional-tests-for-ckeditor | 319 diff lines Description: Closes #3477173 ### [fix: ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/merge_requests/1727) State: closed | Author: Mukeysh | Branch: 3586569-ai-ckeditor-add-option-to-show-or-hide-the-ai-writer-status-information | 15752 diff lines Description: ## Description ### [Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone.](https://git.drupalcode.org/project/ai/-/merge_requests/1735) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/remove-bundled-field-widget-actions-3586556 | 3221 diff lines Description: Finishes the deprecation of the bundled field_widget_actions sub-module: - Adds drupal/field_widget_actions: ^1.0 to composer.json require so the standalone package (same machine name, same PHP namespace) is always present on composer update. - Deletes modules/field_widget_actions/ (34 files) entirely. Sites that had the bundled module enabled continue to work seamlessly: the standalone has an identical machine name and namespace, so core.extension entries resolve without any migration. ai_automators.info.yml is left unchanged (optional integration); FieldWidgetProcessing.php already gu… ### [Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes.](https://git.drupalcode.org/project/ai/-/merge_requests/1277) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3499451-chatbot-closes-itself | 63 diff lines Description: Closes #3499451 ### [Issue #3571498: Rethrow queue worker exceptions](https://git.drupalcode.org/project/ai/-/merge_requests/1535) State: opened | Author: scott falconer (scottfalconer) | Branch: 3571498-rethrow-queue-exceptions | 331 diff lines Description: Closes #3571498 ### [Resolve #3566613 "Commit message mike"](https://git.drupalcode.org/project/ai/-/merge_requests/1285) State: merged 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3566613-commit-message-mike | 14 diff lines Description: Closes #3566613 ### [Resolve #3579088 "Guardrail plugins only"](https://git.drupalcode.org/project/ai/-/merge_requests/1467) State: opened | Author: Alphons Jaimon (AJV009) | Branch: 3579088-guardrail-plugins-only | 804 diff lines Description: Closes #3579088 ### [Remove obsoleted #default_value](https://git.drupalcode.org/project/ai/-/merge_requests/1221) State: merged 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Branch: 3574499-clean-up-aiobservability | 151 diff lines Description: Closes #3574499 ### [Issue #3545462: Refactor StructuredOutputSchema to use Symfony validation attributes](https://git.drupalcode.org/project/ai/-/merge_requests/1114) State: merged 2026-06-30 | Author: Bryan Sharpe (b_sharpe) | Branch: 3545462-move-the-input | 225 diff lines Description: Refactored StructuredOutputSchema DTO to use Symfony validation attributes directly on properties with constructor property promotion. - Added validation attributes (Type, Regex, Collection) on properties - Removed DtoBaseMethodsTrait to prevent validation bypass - Replaced create() with fromArray() that validates input - Added toArray() that excludes internal properties - Updated setters to validate before setting values - Updated ChatInput to use toArray() method - Added comprehensive tests Closes #3545462 ### [Fix/token usage dto cached write tool use 3586576](https://git.drupalcode.org/project/ai/-/merge_requests/1736) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/token-usage-dto-cached-write-tool-use-3586576 | 240 diff lines Description: ### Summary * Added support for two additional AI token usage types: * **Cache write tokens** (`cachedWrite`) * **Tool use tokens** (`toolUse`) * This ensures token usage data from AI providers is captured more completely for observability. ### Changes * Added `cachedWrite: ?int` and `toolUse: ?int` fields to `TokenUsageDto` with `NULL` defaults to maintain backward compatibility. * Updated `StreamedChatMessageInterface` by adding: * `setCachedWriteTokenUsage()` * `getCachedWriteTokenUsage()` * `setToolUseTokenUsage()` * `getToolUseTokenUsage()` * Implemented all four new meth… ### [Add StructuredOutputSchema DTO and improve ChatInput validation.](https://git.drupalcode.org/project/ai/-/merge_requests/873) State: closed | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3545462-move-the-input | 59489 diff lines Description: Closes #3545462 --- COMMITS (2w) --- - [d2fad849](https://git.drupalcode.org/project/ai/-/commit/d2fad8495c4d96362983532ab1b79d21ebcd409a) Update file .gitlab-ci.yml — Artem Dmitriiev (2026-06-22T16:04:37.000+00:00) - [c366c40d](https://git.drupalcode.org/project/ai/-/commit/c366c40d96361d15879feafd3ff3973f6aac0580) Issue #3586500: Get default Vdb provider if none yet selected — Artem Dmitriiev (2026-06-24T15:06:03.000+00:00) - [b7459475](https://git.drupalcode.org/project/ai/-/commit/b745947526274a43c5dbaf2fed82eb1e87dbd4e4) Issue #3586472: Use ai provider configuration form element and use proper... — Artem Dmitriiev (2026-06-24T15:00:06.000+00:00) - [59a51b09](https://git.drupalcode.org/project/ai/-/commit/59a51b0927d6ef919b4cb3d2f5fc5f00701f30dc) Remove whitespace — Marcus Johansson (2026-06-24T09:32:23.000+02:00) - [5d7d6a5b](https://git.drupalcode.org/project/ai/-/commit/5d7d6a5ba324b4380d5f7963b611f20062e2f2c6) Issue #3585596: Move Prompt Library under AI Infrastrcture — Dimitar Rupov (2026-04-19T11:14:26.000+03:00) - [4be58dd8](https://git.drupalcode.org/project/ai/-/commit/4be58dd8e4a0b2c05bff7275dbb4c281b53bb6b6) Issue #3586522: Keep token usage in the chat() Fiber branch — Jérôme Tchania (2026-06-25T08:34:34.000+00:00) - [5c914934](https://git.drupalcode.org/project/ai/-/commit/5c914934931bd40fcb0ddf7631d5b1b5358c1909) Add AICKeditor tests (Target 1.4.x) — AKHIL BABU (2026-06-26T09:21:35.000+00:00) - [a6cff593](https://git.drupalcode.org/project/ai/-/commit/a6cff5931a95c36694ec098b49ba67ede80bd362) Issue #3575190: Add configurable queue items per cron for AI Automators — Abhisek Mazumdar (2026-06-30T13:33:20.000+00:00) - [506c988c](https://git.drupalcode.org/project/ai/-/commit/506c988c7d9bbd135fe9aede246666c9518baa13) Resolve #3566613 "Commit message mike" — Marcus Johansson (2026-06-30T12:24:27.000+00:00) - [bdb63000](https://git.drupalcode.org/project/ai/-/commit/bdb630002f6deff973c0024bf48e09685f4c588c) feat: #3586479 Add gen_ai.* semantic conventions to ai_observability — George Kastanis (2026-06-30T10:49:51.000+00:00) - [973d36e6](https://git.drupalcode.org/project/ai/-/commit/973d36e6e79c98fa13ea1c42c1237b0aba6ea2f1) fix: #3586473 Finalize streaming OTel spans on the terminal event — George Kastanis (2026-06-30T08:23:26.000+00:00) ======================================================================== ## [2] summariseModule:ai_initiative:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

    Drupal AI Initiative

    then use

    ,

    ,

      /
    • , and as needed. Output only the HTML fragment with no surrounding , , or
      tags. After the project summary prose, add a single subsection titled "

      How can I help on this project?

      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Idea: AI Cost & Usage module — local cost dashboard + opt-in aggregated community telemetry](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586519) State: opened | Updated: 2026-06-18 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Product Development, category::task, concept, ideas Description: ## Summary Explore building an **AI Cost & Usage** module that gives site owners a local dashboard of their AI spending and usage, and (optionally, opt‑in) shares aggregated, obfuscated usage data back to a community endpoint so the AI Initiative can see how the AI module and its providers are actually being used in the wild. ## Motivation There are two needs that overlap nicely: 1. **Site owners** routinely ask for visibility into AI costs: tokens per request, $/day, which model/provider/feature is responsible for spend, and what their usage looks like compared to similar sites. Today thi… ### [Drupal AI UX meeting 15 June 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3584833) State: opened | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: category::task, meetings, priority::normal, state::accepted Description: **Attendees:** Aidan, Marcus, Rob Loach, Emma, Darren, Vidit, Kati (first time joining) ### **AI ecosystem page (RobLoach)** * New searchable, filterable list of AI modules and recipes, shipped in the AI Dashboard module * Module list is for advanced site builders and developers; recipes are the site-builder surface * AI Initiative maintained shown as a filter plus badge, not a list limiter; support flag is tiered, not Boolean * Add a GitLab API search for modules requiring drupal/ai, which finds about 40% more ### **Categories and naming** * Reconcile the page filters with the existing AI… ### [organise social media (MARIA)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586574) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: organise social media (MARIA) ### [find dutch volonteers to help with the event (human wayfinder / timekeeping / registration)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586573) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: find dutch volonteers to help with the event (human wayfinder / timekeeping / registration) ### [submit offer to ThomsonReuters / CIONet / VOKA / Beltug for cooperation.](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586572) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: We need to decide on the cooperation with member organisations. They have the audience, we have the event. ### [Make forms for the sponsors to submit their contacts/leads/clients for a free ticket](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586571) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: wouters_f (wouters_frederik) | Labels: Enterprise AI Summit ### [Make the site look nice on mobile](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586570) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: Scott Lawrence (slawrence10) | Labels: Enterprise AI Summit Description: Make the site look nice on mobile enterprise AI Summit ### [Update sponsors + subpages on Enterprise AI summit website](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586569) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: Scott Lawrence (slawrence10) | Labels: Enterprise AI Summit Description: UPDATE ON THE SPONSORS: 3 gold spots: ? 2 silver: CKeditor), Yourself, 3 holds (Tag1, Upsun, FG) on silver, so only 1 silver free. We have 1 bronze confirmed (Amazee). UPDATE sub pages - make them look as nice as the frontpage, ### [Source case studies from AI Summit Rotterdam](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586557) State: opened | Updated: 2026-06-27 | Author: Paul Johnson (pdjohnson) | Assigned: Rosie Gladden (rgladden) | Labels: AI Marketing, Drupal AI Success Stories, Enterprise AI Summit Description: ## Summary The Enterprise AI Summit is gathering session submissions ready for the event in September. This may surface case studies which are new to us. ## Work Track AI marketing ## Context / Background ## Tasks - [x] Collaborate with @wouters_frederik to gain access to the session submissions - [ ] Use the submissions as an input to case studies for Drupal AI - [ ] Make contact with the originator so that we can enrich the data / invite to webinars / ask them to write an article etc ## Acceptance Criteria - [ ] All new cases are curated - [ ] We are in contact with the creator ### [Drupal AI UX meeting 22 June 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3584834) State: opened | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: category::task, meetings, priority::normal, state::accepted Description: ## **Meeting Overview** **Date:** Monday, June 22, 2026 **Attendees:** Aidan, Marcus, Bruno, Emma, Darren, Vidit, Ángela ### **Canvas AI build-state UX** * Generation now runs component by component; editing the canvas mid-build breaks it, so the canvas locks during a build * Build UI: a Stop and a separate Stop-and-undo on the chat, a building indicator, and an optional follow-along scroll * Planning step renders as gray placeholder boxes in the canvas (Lovable-style), with a thumbnail minimap for orientation * Model is a quality/cost/speed dial (Opus best but slow and pricey; mini models … ### [Mockup: AI page creation](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586581) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted page/content creation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-page-creation All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI review notifications](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586582) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI review notifications surfaced to editors. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-review-notifications All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI review on edit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586583) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI review triggered during content editing. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-review-on-edit All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI search](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586584) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-powered search. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-search All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI field automation](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586585) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted field population/automation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-field-automation All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI search & replace](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586586) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: Niels Aers (nielsaers) | Labels: Description: Mockup for AI-driven search and replace across content. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-search-replace All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI page translations](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586587) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted page translation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-page-translations All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI dashboard setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586588) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for the AI dashboard / setup & configuration screen. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-dashboard-setup All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [[Meta] AI roadmap feature mockups May 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586580) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: ## Summary Editorial AI UX mockups contributed by Dropsolid for the AI Initiative. Eight interactive mockups covering AI-assisted authoring, review, search and translation flows. This meta tracks them and holds one sub-issue per mockup. Live mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ ## Goals - Capture each delivered mockup as its own issue for review and crediting. - Give the initiative a shared reference for AI editorial UX direction. ## Work Track UX mockups ## Owner / Lead nielsa ## Sub-issues - [x] #3586581 AI page creation - [x] #3586582 AI review notificatio… ### [Module Finder: recruit beta testers and drive incremental improvements](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, feedback Description: ## Summary Recruit beta testers for the **Module Finder** and use their feedback to make incremental improvements. Module Finder is an AI-powered semantic search over all Drupal contributed modules: it has a UI for searching, and an agent skill that does the same search so a coding agent can check whether functionality already exists in the community **before** writing custom code — avoiding reinventing what contrib already provides. The immediate goal is to put it in front of real users, collect "what could be done better", and iterate in small increments. A beta link will be shared with an… ### [[Meta] Skills for hosting providers: control deployment and environment setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Summary Across the AI Initiative we want agent skills that can control **deployment and environment setup** on the various hosting providers Drupal sites run on. The goal is that a developer can set up and deploy environments through normal text instructions, with the skill translating that intent into the provider's own API or CLI. This meta tracks the effort and holds one sub-issue per hosting provider. ## Goals - A consistent pattern for provider "deployment & environment" skills, reusable across hosts. - For each supported provider: create/configure an environment and deploy to it fr… ### [Research: DevPanel API — what deployment & environment automation is possible](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Sprint13-2026, ai::outside Description: ## Research Question Can [DevPanel](https://devpanel.com) environment setup and deployment be driven programmatically — enough that an agent skill could set up and deploy to **real** DevPanel environments from natural-language instructions? What does the DevPanel API/CLI expose, and where are its limits? ## Background Part of the hosting-provider skills meta #3586575. Before building a DevPanel deployment skill, we need to know what the platform actually allows through its API/CLI — authentication, environment lifecycle, deploys — so we can scope (or rule out) a skill realistically. ## Sco… ### [[META] 2026 Outside-in / Innovation Roadmap (draft)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3576908) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: category::plan, priority::normal, roadmap, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) >>> Problem/Motivation: Optimize Drupal for agents by optimizing the platform itself: a reliable, governable action surface. Agents should be allowed to attempt real work, while the system enforces deterministic rules: schema validation, permissions, workflow state, auditability, delivery gates, and blast-radius limits. Outside-in is a first-class requirement: assume users will bring external agents/orchestrators, in addition to built-in agents. Priority 0: Identity + Reliability + Guardrails Tr… ### [Add standardized GitLab issue templates for initiative work](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586461) State: closed | Updated: 2026-06-25 | Author: Christoph Breidert (breidert) | Assigned: unassigned | Labels: AI Initiative Sprint, category::task, priority::normal, state::rtbc Description: ## Summary Introduce a standardized set of GitLab issue templates to organize all work within the Drupal AI Initiative. Templates should cover the main types of work the initiative produces — coordination, research, decisions, meetings, and community activities — and follow a consistent structure so contributors across all tracks can create well-formed issues quickly. ## Work Track Cross-track ## Context / Background The Drupal AI Initiative coordinates work across four tracks (AI Core, AI Products, AI Marketing, AI UX) and a growing contributor base. Without a shared template structure, … ### [Create AI Validations Recipe](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Description We want to create a new Drupal AI recipe in a separate project ai_recipe_validations, that provides a turnkey configuration for the AI Validations module. This recipe is intended to be used in the Drupal AI Demo and must be fully compatible with Drupal CMS (Starshot). Instead of creating new… ### [Recipe: AI Automators comment-spam scoring and auto-unpublish](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, ideas Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Ship a recipe that wires AI Automators onto the core Comment entity to score spam on a custom_field and auto-unpublish comments scoring 8 or higher, with a View for triage. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation AI Automators is powerful but the on-ramp is still "wire it up yourself" - even for the canonical moderation use case of scoring comments for spam. We want a Drupal recipe that site… ### [Create documentation on how to create issues that are testable on DrupalForge](https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [afoster](https://www.drupal.org/user/594458) >>> [Tracker] Update Summary: Blocked — document how to create DrupalForge-testable issues spanning multiple dev module versions Check-in Date: 04/13/2026 Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Many AI issues span multiple modules at once. For example, when we work on UI improvements in the AI module and need to use those same improvements in CCC, reviewers need dev versions of both modules installed together to t… ### [[Meta] Create AI Review Functionality / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Based on the agreed functional concept and UX design, define the technical approach for implementing the AI-powered content review system. This concept will be the foundation for implementation in the next sprint. Tasks Define the architecture of the review pipeline: how reviews are triggered, … ### [[Meta] Create AI Review Functionality / Create UX](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Angela Saldaña (angela_saldana) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Design the user experience for the AI-powered content review system, covering all key interactions an editor encounters when working with review results. Tasks Review and align with the UX briefing provided by the functional concept before starting design work Design the "Review with AI" trigge… ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Start setting up AI Starterkit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research and initial setup for AI Starterkit showcase website Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation There is a growing need to demonstrate the full production capabilities of the AI Initiatives ecosystem in a concrete, opinionated, and easy-to-consume way. While the AI module and related projects provide powerful building blocks, there is currently no canonical showcase that ties these tog… ### [Create QA image for DrupalPod](https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Tawny Bartlett (littlepixiez) | Labels: AI Initiative Sprint, AI Product Development, Quality Assurance, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently its very hard to do QA on some issue in the AI issue queue, because you have to setup a lot of things locally. DrupalPod+DrupalForge has a solution for this: https://www.drupal.org/docs/develop/development-tools/drupalpod/drupalpod-drupal-forge Per discussions with Salman and Darren at DrupalForge, the easiest is that we create our own base image and work from that. This exists here: https://github.com/drupalforge/DrupalPod-AI-QA We need to fill that with all the … ### [[Meta] AI Content Review Workflow](https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::plan, planning Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> Goals & Guiding Principles Provide a native Drupal way to review content with the help of AI through an intuitive user interface. This functionality should integrate seamlessly with Drupal's existing content management workflows while offering AI-powered assistance for common editorial tasks. Key principles: Examples include AI-powered content rating systems, automated suggestions for guideline compliance, content flagging for review, brand voice consistency checks, and legal/regulatory complianc… ### [GitLab workflow automation for AI Initiative repos (exploration + rollout)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative, AI Initiative Sprint, AI Innovation, AI Product Development Description: ## Summary Build out an automated GitLab workflow layer for the Drupal AI Initiative's GitLab projects (`project/ai`, `project/ai_agents`, providers, etc.) so that issue and MR housekeeping — state transitions, label hygiene, completeness checks, dependency review pings — happens automatically instead of requiring manual maintainer effort. This is split into two phases: 1. **Exploration** — evaluate which Drupal-side platform is the right host for the automation logic (Rules, ECA, or a custom module on top of [`gitlab_api`](https://www.drupal.org/project/gitlab_api)). 2. **Automation rollou… ### [Onboard Gold AI partner: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Gold partner: Reading Room ## Proposed resolution Go through onboarding form and do what I can and then hand off to dev, marketing, UX, and QA teams as needed. ## Target date or deadline June 2026 ## Remaining tasks - [x] Create partner onboarding tab from template - [x] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [x] Add to mailing lists - [x] Add to private Slack channels (partners/contributors) - [x] Add to public Slack channels (marketing/UX/QA/ai-contrib) - [x] Add to non-dev meeting invites (marketing/UX) - [x] A… ### [Run AI partner audit report: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586591+s We want to make sure they were successfully onboarded to the right places. ### Proposed resolution Run the audit report for this partner after a week or two to look for gaps. ### Target date or deadline July 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report > Related issue: [Issue #3579583](https://www.drupal.org/node/3579583) ### [Add Gold AI partner to d.o pages: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586591+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** https://www.drupal.org/reading-room **100 word text:** Reading Room is an independent digital agency specialising in complex, mission-critical digital platforms. Since 1996, the agency has helped organisations modernise, scale and continuously improve the digital products and services their audiences rely on. Our multidisciplinary teams provide the strategic thinking, engineering capability and ongoing partnership needed to deliver robust, secure and high-performing digital service… ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> > [!note] Migrated issue > > > > > > Reported by: [kristen pol](https://www.drupal.org/user/8389) [Tracker] **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Additional Collaborators:** *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields are available [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ON… ### [Convert partner templates into GitLab templates](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority::normal, state::accepted Description: ## Problem/motivation Partner issue templates were created when we were using d.o issues: - #3579583+ - #3579591+ - #3579584+ We should use GitLab templates. ## Solution Convert to GitLab templates. ## Tasks - Create templates - Review and test ### [Gitlab Control Server - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: CNAME gitlab.drupal-ai-initiative.org => forgespotclustertogw9g.elb.devpanel.com ### [Module Finder - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: Point module-finder.drupal-ai-initiative.org towards dp-yosnzdse.elb.devpanel.com --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [3] summariseModule:ai_integration_eca:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Integration - ECA (machine name: ai_integration_eca) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Joshua Fernandes (joshua1234511), Marcus Johansson (Marcus_Johansson), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

      AI Integration - ECA

      then use

      ,

      ,

        /
      • , and as needed. Output only the HTML fragment with no surrounding , , or
        tags. After the project summary prose, add a single subsection titled "

        How can I help on this project?

        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-06-24 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Jürgen Haas (jurgenhaas) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The Chat action exposes the structured-output JSON schema as a plain text field in its config form (`src/Plugin/Action/Chat.php:46–50`) and stores it as a raw JSON string that is `json_decode()`d at runtime (line 115). That makes it cumbersome to **add** (no validation, no editor affordances, easy to ship malformed JSON) and hard to **look at** once saved — it's a wall of escaped JSON in the form. ### Proposed resolution Investigate replacing the raw text input with the AI module's dedicated `'#type' => 'ai_json_schema'` form element (`Drupal\ai\Element\AiJsonSchema`)… ### [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `AudioToAudio` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `AudioToAudio` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\AudioToAudio` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_audio_to_audio` - Builds the matching Input class from `Drupal\ai\OperationType\AudioToAudio\` and dispatches it through the configu… ### [Add ECA execute action for Image Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_classification` - Builds the matching Input class from `Drupal\ai\OperationType\ImageClassification\` and… ### [Add ECA execute action for Image to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToImage\` and dispatches it through the configu… ### [Add ECA execute action for Image to Video](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToVideo` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToVideo` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToVideo` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_video` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToVideo\` and dispatches it through the configu… ### [Add ECA execute action for Object Detection](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ObjectDetection` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ObjectDetection` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ObjectDetection` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_object_detection` - Builds the matching Input class from `Drupal\ai\OperationType\ObjectDetection\` and dispatches it throu… ### [Add ECA execute action for Speech to Speech](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `SpeechToSpeech` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `SpeechToSpeech` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\SpeechToSpeech` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_speech_to_speech` - Builds the matching Input class from `Drupal\ai\OperationType\SpeechToSpeech\` and dispatches it through t… ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !11 [Issue #3585009: Added ECA execute action for Summarization.](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/11) | State: opened | Author: Joshua Fernandes (joshua1234511), 198 diff lines Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add ECA execute action for Text Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !10 [Issue #3585010: Added ECA execute action for Text Classification.](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/10) | State: opened | Author: Joshua Fernandes (joshua1234511), 205 diff lines Description: ### Problem/Motivation The AI module's `TextClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_classification` - Builds the matching Input class from `Drupal\ai\OperationType\TextClassification\` and disp… ### [Add ECA execute action for Text to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !9 [Resolve "9 different new actions"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9) | State: opened | Author: Marcus Johansson (Marcus_Johansson), 2375 diff lines Description: ### Problem/Motivation The AI module's `TextToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\TextToImage\` and dispatches it through the configured p… ### [Automated Drupal 12 compatibility fixes for ai_integration_eca 1.0.x-dev](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585018) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [[Meta] Cover remaining AI operation types with ECA execute actions](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013) State: opened | Updated: 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, automation::error Description: ### Background The AI module exposes ~18 operation types, but this module only ships ECA execute actions for 5: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). This meta tracks adding execute actions for the rest so ECA flows can drive every supported AI operation without custom plugins. ### Scope **Out of scope (deferred):** `ImageAndAudioToVideo` — provider support is minimal. **In scope — one child issue per operation type:** - [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) - [A… ### [Add ECA execute action for Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/13) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 210 diff lines Description: Relates to #3585018. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [4] summariseModule:ai_agents_test:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

        AI Agents Test

        then use

        ,

        ,

          /
        • , and as needed. Output only the HTML fragment with no surrounding , , or
          tags. After the project summary prose, add a single subsection titled "

          How can I help on this project?

          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Run more than one test group in Bulk - Test Collections?](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) Related to !11 >>> Problem/Motivation When doing automated tests or just trying different models and not using Tests to help with prompt engineering its good to just fire off all the same tests you want and get the overall results. Steps to reproduce Proposed resolution Maybe make views bulk operation style UI so you can click a checkbox next to the test groups you want to run and also run all. Or we could have a Tag on test groups and run all of a specific tag? Maybe this is better if we are goin… ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [5] summariseModule:ai_provider_openai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: OpenAI Provider (machine name: ai_provider_openai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

          OpenAI Provider

          then use

          ,

          ,

            /
          • , and as needed. Output only the HTML fragment with no surrounding , , or
            tags. After the project summary prose, add a single subsection titled "

            How can I help on this project?

            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Respect skip_moderation, add test coverage for it](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/76) State: opened | Author: Scott Euser (scotteuser) | Branch: 3604130-respect-skip-moderation | 325 diff lines Description: Closes #3604130 ### [Resolve #3593019 "Add imagetoimage possibilities"](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/72) State: merged 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3593019-add-imagetoimage-possibilities | 307 diff lines Description: Closes #3593019 ### [add support for batch embeddings](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59) State: opened | Author: Paul Sheldrake (paulsheldrake) | Branch: 3568659-support-batched-embeddings | 284 diff lines Description: Closes #3568659 ### [fix: #3590873 Dall-E 3 has been deprecated and should be removed as default](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/71) State: merged 2026-06-24 | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3590873-dall-e-3-has | 76 diff lines Description: Closes #3590873 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/77) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 13 diff lines Description: Relates to #3606117. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- - [d6a14dca](https://git.drupalcode.org/project/ai_provider_openai/-/commit/d6a14dcaac652ed81c3790bb6e1b7a9e382076ac) fix: #3590873 Dall-E 3 has been deprecated and should be removed as default — Abhisek Mazumdar (2026-06-24T09:18:34.000+00:00) ======================================================================== ## [6] stripNameAttribution:ai_provider_openai ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

            OpenAI Provider

            Two significant merge requests landed during this period. Image-to-image transformation capabilities were added through the imagetoimage possibilities merge request, which was integrated on June 26. Additionally, the default image generation model was updated when the Dall-E 3 deprecation fix was merged on June 24, removing the deprecated model as the default option.

            Three merge requests remain open and under review. Work continues on respecting skip_moderation with test coverage, which addresses moderation bypass functionality. The batch embeddings support merge request adds the ability to process embeddings in batches. An automated Project Update Bot fixes merge request is also pending.

            How can I help on this project?

            Review the skip_moderation merge request to validate test coverage and functionality. Test the batch embeddings implementation with real-world embedding workloads to verify performance improvements.

            Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser)

            ======================================================================== ## [7] summariseModule:ai_provider_anthropic:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Carlos Ospina (camoa), Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

            Anthropic Provider

            then use

            ,

            ,

              /
            • , and as needed. Output only the HTML fragment with no surrounding , , or
              tags. After the project summary prose, add a single subsection titled "

              How can I help on this project?

              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Issue #3590963: Bump SDK constraint and drop method_exists defensive check](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/28) State: merged 2026-06-26 | Author: Carlos Ospina (camoa) | Branch: 3590963-add-prompt-caching | 1677 diff lines Description: Phase 2 of the Anthropic provider native-SDK work (#3590963): prompt caching admin UI + PDF document input. Builds on Phase 1 (#3572402, merged in `d1e078a1`). Targets `1.3.x`; fast-forward mergeable. ## What this delivers **Prompt caching** - Admin UI: "Enable prompt caching" toggle and TTL selector (5m / 1h), `#states`-gated in the provider settings form. - System prompt sent as a typed `TextBlockParam` with `cache_control` when caching is on (caching a bare string is a no-op; the breakpoint must sit on a content block). - 1h TTL is GA and works without any beta header (verified live). - `… ### [fix: #3607044 Append a trailing user message when a conversation ends with a non-user role](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3607044-chat-requests-rejected | 158 diff lines Description: Fixes #3607044. `AnthropicProvider::chat()` forwards messages as-is; Anthropic rejects a conversation whose last message is not from the user ("the conversation must end with a user message" / no assistant prefill). The AI Agents multi-agent handoff (e.g. Drupal Canvas AI) can end a conversation with a trailing assistant or system message, producing a generic "Something went wrong" in Canvas AI. This overrides `chat()` to append a minimal trailing `user` message ("Continue.") whenever the last message role is not `user` (covering both trailing assistant and system). Tested on Drupal 11.3, a… --- COMMITS (2w) --- (none) ======================================================================== ## [8] summariseModule:fireworksai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Fireworks AI (machine name: fireworksai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Marcus Johansson [3]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

              Fireworks AI

              then use

              ,

              ,

                /
              • , and as needed. Output only the HTML fragment with no surrounding , , or
                tags. After the project summary prose, add a single subsection titled "

                How can I help on this project?

                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- - [ee2c30ef](https://git.drupalcode.org/project/fireworksai/-/commit/ee2c30ef5b295f812de054b8581c74b1eaafaa51) Fix requirement — Marcus Johansson (2026-06-26T12:52:35.000+02:00) - [b519a9c3](https://git.drupalcode.org/project/fireworksai/-/commit/b519a9c3f06bb5eaba11a8ca2a404c67c2d9a46e) Fix requirement — Marcus Johansson (2026-06-26T12:52:20.000+02:00) - [9071dce2](https://git.drupalcode.org/project/fireworksai/-/commit/9071dce2838aa88ac08b60dd5dfe979031dd98c7) Rerank and use the base class — Marcus Johansson (2026-06-26T12:51:40.000+02:00) ======================================================================== ## [9] summariseModule:mcp_client:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: MCP Client (machine name: mcp_client) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                MCP Client

                then use

                ,

                ,

                  /
                • , and as needed. Output only the HTML fragment with no surrounding , , or
                  tags. After the project summary prose, add a single subsection titled "

                  How can I help on this project?

                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/mcp_client/-/merge_requests/19) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 180 diff lines Description: Relates to #3601462. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [10] stripNameAttribution:mcp_client ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                  MCP Client

                  Activity during this period was limited to automated maintenance. An Automated Project Update Bot fixes merge request was opened, containing 180 lines of automated project maintenance changes. No issues were updated, and no commits were pushed to the main branch during the reporting period.

                  How can I help on this project?

                  Review the pending Automated Project Update Bot fixes merge request to ensure the automated changes are appropriate. Check the issue queue for any unresolved bugs or feature requests that need attention.

                  Contributors: project update bot (Project-Update-Bot)

                  ======================================================================== ## [11] summariseModule:ai_provider_amazeeio:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: amazee.ai Private AI Provider (machine name: ai_provider_amazeeio) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                  amazee.ai Private AI Provider

                  then use

                  ,

                  ,

                    /
                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                    tags. After the project summary prose, add a single subsection titled "

                    How can I help on this project?

                    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [pgsql ext dependency missing in composer.json](https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586235) State: closed | Updated: 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Assigned: unassigned | Labels: Description: Error: Call to undefined function Drupal\ai_provider_amazeeio\Vdb\Postgres\pg_connect() in Drupal\ai_provider_amazeeio\Vdb\Postgres\PostgresPgvectorClient->getConnection() (regel 80 van /app/web/modules/contrib/ai_provider_amazeeio/src/Vdb/Postgres/PostgresPgvectorClient.php). ### [Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev](https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586234) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [fix(#3586231): check that key identifiers are non-empty strings before loading keys](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/74) State: merged 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Branch: 3586231-issue-branch | 30 diff lines Description: Closes #3586231 ### [chore: require ext-pgsql](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/76) State: merged 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Branch: add-ext-psql | 75 diff lines ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/77) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 388 diff lines Description: Relates to #3586234. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [12] stripNameAttribution:ai_provider_amazeeio ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                    amazee.ai Private AI Provider

                    Two merge requests were completed during this period. A fix was merged to address a fatal error in PostgresPgvectorClient->getConnection() caused by a missing ext-pgsql dependency in composer.json. The chore: require ext-pgsql MR added the required PHP extension declaration.

                    A second merge request resolved an issue where empty or invalid key identifiers could cause errors when loading keys. The fix: check that key identifiers are non-empty strings before loading keys MR added validation to ensure key identifiers are non-empty strings before attempting to load them.

                    Work on Drupal 12 compatibility continues, with Automated Project Update Bot fixes currently open for review. This MR addresses deprecated API uses across 388 diff lines as part of Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev.

                    How can I help on this project?

                    Review the Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes and test for regressions. Check the module's issue queue for unassigned bugs or feature requests that need attention.

                    Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot) ======================================================================== ## [13] summariseModule:gemini_provider:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Gemini Provider (machine name: gemini_provider) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), Ishani Patel (IshaniPatel), Joshua Fernandes (joshua1234511), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                    Gemini Provider

                    then use

                    ,

                    ,

                      /
                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                      tags. After the project summary prose, add a single subsection titled "

                      How can I help on this project?

                      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588223) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [stijnstroobants](https://www.drupal.org/user/1787140) Related to !36 >>> When Gemini blocks a prompt, it returns zero candidates, and calling $response->parts() throws a ValueError. I think the fix is to guard against empty candidates in GeminiProvider.php. Error: ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned. Check the `GenerateContentResponse::$promptFeedback` to see if the prompt was blocked. in Gemini\Responses\GenerativeModel\GenerateContentResponse->parts() (re… ### [Add support for batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) Related to !37 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation As a follow up to this issue https://git.drupalcode.org/project/ai/-/work_items/3568648 it would be nice to add support of batch embeddings as Gemini models can do that. Proposed resolution Use method batchEmbedContents from Gemini client when EmbeddingsInput conta… ### [Fix pre-existing PHPStan failures (deprecation issues)](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589186) State: closed | Updated: 2026-06-24 | Author: Joshua Fernandes (joshua1234511) | Assigned: unassigned | Labels: category::bug, code, v1.x-dev Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !40 [Issue #3589186: Ignore known PHPStan false positives (upstream ai docblock...](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/40) | State: opened | Author: Joshua Fernandes (joshua1234511), 35 diff lines Description: The PHPStan job (`phpstan.neon`, level 3) reports errors that are **unrelated to any current feature work** — they exist on `1.x` independently. CI stays red because of them, masking the real status of feature MRs (e.g. https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183#note_1000755 https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37). ### Steps to reproduce 1. Check out `1.x` (or any feature branch). 2. Run the PHPStan job (or `vendor/bin/phpstan analyse` with the module's `phpstan.neon`). 3. Observe the errors below. ### The errors https://git.dru… ### [Automated Drupal 12 compatibility fixes for gemini_provider 1.x-dev](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589187) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Image Embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !35 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Gemini is one of the only providers that has file embeddings, outside of AWS Titan. This means that you can index and search using an image and image likeness. Currently the embedding solution only allows for text, we should add at least images here (and think … --- MERGE REQUESTS (2w) --- ### [#3588223: Resolved value error.](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/36) State: opened | Author: Ishani Patel (IshaniPatel) | Branch: 3588223-valueerror-the-generatecontentresponseparts | 31 diff lines Description: Closes #3588223 ### [Support batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3589183-add-support-for | 389 diff lines Description: Closes #3589183 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/41) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 62 diff lines Description: Relates to #3589187. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [14] summariseModule:ai_provider_huggingface:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Huggingface Provider (machine name: ai_provider_huggingface) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                      Huggingface Provider

                      then use

                      ,

                      ,

                        /
                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                        tags. After the project summary prose, add a single subsection titled "

                        How can I help on this project?

                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Resolve #3584375 "Add extractive question"](https://git.drupalcode.org/project/ai_provider_huggingface/-/merge_requests/9) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3584375-add-extractive-question | 113 diff lines Description: Closes #3584375 --- COMMITS (2w) --- (none) ======================================================================== ## [15] summariseModule:ai_provider_azure:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Microsoft Azure AI (machine name: ai_provider_azure) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Marcus Johansson [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                        Microsoft Azure AI

                        then use

                        ,

                        ,

                          /
                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                          tags. After the project summary prose, add a single subsection titled "

                          How can I help on this project?

                          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- - [826006ac](https://git.drupalcode.org/project/ai_provider_azure/-/commit/826006acd8e3bd8681fee4eaf10e1f3b1e60dc4c) Improved Text To Image — Marcus Johansson (2026-06-24T11:58:22.000+02:00) ======================================================================== ## [16] summariseModule:ai_vdb_provider_milvus:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Milvus VDB Provider (machine name: ai_vdb_provider_milvus) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                          Milvus VDB Provider

                          then use

                          ,

                          ,

                            /
                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                            tags. After the project summary prose, add a single subsection titled "

                            How can I help on this project?

                            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3568651-batch-inserts-index-only | 297 diff lines Description: Closes #3568651 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/50) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 13 diff lines Description: Relates to #3606124. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [17] stripNameAttribution:ai_vdb_provider_milvus ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                            Milvus VDB Provider

                            Development activity during this period focused on new merge requests rather than merged code. A new MR proposes add support for batching on indexing operations, introducing batch processing capabilities for index operations across nearly 300 lines of changes. This enhancement targets performance improvements when indexing vector data into Milvus collections.

                            Additionally, automated maintenance continues with Automated Project Update Bot fixes addressing routine project upkeep tasks. No commits were merged during the reporting period, leaving both MRs awaiting review.

                            How can I help on this project?

                            Review the batching support MR for code quality, performance implications, and API consistency. Test the batch indexing functionality against various data volumes to validate performance gains. Review the Project Update Bot MR to help maintain project standards.

                            Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot) ======================================================================== ## [18] summariseModule:ai_vdb_provider_postgres:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Postgres VDB Provider (machine name: ai_vdb_provider_postgres) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Emiel Bloem (emielb)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                            Postgres VDB Provider

                            then use

                            ,

                            ,

                              /
                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                              tags. After the project summary prose, add a single subsection titled "

                              How can I help on this project?

                              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Issue #3607151: Remove hard ext-pgsql dependency](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/28) State: opened | Author: Emiel Bloem (emielb) | Branch: 3607151---remove | 735 diff lines Description: Closes #3607151 --- COMMITS (2w) --- (none) ======================================================================== ## [19] summariseModule:ai_image_alt_text:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Image Alt Text (machine name: ai_image_alt_text) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Peter Philipp (daspeter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                              AI Image Alt Text

                              then use

                              ,

                              ,

                                /
                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                tags. After the project summary prose, add a single subsection titled "

                                How can I help on this project?

                                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [task: #3606995 Support newer versions of drupal/ai](https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31) State: opened | Author: Peter Philipp (daspeter) | Branch: 3606995-support-newer-versions | 12 diff lines Description: Closes #3606995 --- COMMITS (2w) --- (none) ======================================================================== ## [20] summariseModule:mcp:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                Model Context Protocol

                                then use

                                ,

                                ,

                                  /
                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                  tags. After the project summary prose, add a single subsection titled "

                                  How can I help on this project?

                                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for mcp 1.x-dev](https://git.drupalcode.org/project/mcp/-/work_items/3587790) State: opened | Updated: 2026-06-26 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/mcp/-/merge_requests/53) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 254 diff lines Description: Relates to #3587790. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [21] summariseModule:ai_agents:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader), Bharat Kelotra (bharatkelotra), David Galeano (gxleano), Jürgen Haas (jurgenhaas), Marcus Johansson [1], Nicolae Procopan (thebumikgmail.com), Prabhavathi Vanipenta (prabha1997), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Sven Decabooter (svendecabooter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                  AI Agents

                                  then use

                                  ,

                                  ,

                                    /
                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                    tags. After the project summary prose, add a single subsection titled "

                                    How can I help on this project?

                                    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586032) State: opened | Updated: 2026-06-24 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !286 [Resolve #3586032 "AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)"](https://git.drupalcode.org/project/ai_agents/-/merge_requests/286) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 114 diff lines Description: ## Summary The AI module (`ai`) restructured its administration menu in 1.4.x into themed sub-sections under **Configuration → AI** (`ai.admin_settings`), e.g.: - AI Infrastructure (`ai.admin_config_infrastructure`) - **Tools & Automation** (`ai.admin_config_tools`) — *"Configure AI tools, agents, and automation workflows."* - Content Creation & Support (`ai.admin_config_content`) - People, Accounts & Users (`ai.admin_config_people`) - Safety & Compliance (`ai.admin_config_safety`) - Search & Discovery (`ai.admin_config_search`) - Site Building & Design (`ai.admin_config_site_building`) **A… ### [Change "AI Agent" to "AI Agents" in admin menu](https://git.drupalcode.org/project/ai_agents/-/work_items/3586030) State: opened | Updated: 2026-06-18 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, state::needsWork Description: I noticed that in the Configuration | AI section of the admin menu, there is a link for "AI Agent", not "AI Agents" - this seems wrong to me. MR incoming. -mike ### [Add possibility to catch all errors on a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3547994) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs screenshots, Needs tests Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !220 >>> Problem/Motivation Right now you have to throw specific errors for the agent to continue running. However this should be possible for an agent creator to decide themselves. If you for instance don't have permissions to run a tool, currently the whole run dies and it stops executing there and the UI has to take care of presenting this to the end user. But there could easily be agents that should be available to different roles, where it should be possible for certain roles to… ### [Schema error for AI Agents CKEditor plugin](https://git.drupalcode.org/project/ai_agents/-/work_items/3565169) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, code Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !221 >>> Problem/Motivation The AI Agents module comes with an AICKEditor plugin, to integrate AI Agents into the AI CKeditor module. However, there is no schema for this integration, resulting in schema errors reported by Drupal. ### [Exceptions in tool execute break the UI for the user](https://git.drupalcode.org/project/ai_agents/-/work_items/3537123) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) Related to !163 >>> Problem/Motivation When using the AI Agent Explorer and run an agent that has an issue with a tool definition, e.g. if the context definition isn't accurate, Drupal throws an exception and the UI in the explorer is broken with an error message in the browser console. The user doesn't get any feedback, that the process failed. The same is likely to happen in other contexts, too, e.g. in the chat. Proposed resolution Let's try and catch such exceptions and provide the exception messa… ### [Add a way to mark the executor on agent runner](https://git.drupalcode.org/project/ai_agents/-/work_items/3557417) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Sounds morbid! We need a way for any executor, meaning whomever starts an agent, to set that they did start it. When you are using the events you might want to hook in on specific moments and change them depending on who is using them. So, when you start an agent, you should have the possibility to set that you are the executor of that agent. This is only needed for config agents. It needs to propagate to subagents as well. Remaining tasks * Add a optional method called set… ### [ContentEntitySeeder crashes on double-wrapped entity_array when ComplexToolItems + multiple=TRUE context definition produces nested array schema](https://git.drupalcode.org/project/ai_agents/-/work_items/3578197) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [gxleano](https://www.drupal.org/user/3591999) Related to !244 >>> Problem/Motivation When a context definition in ContentEntitySeeder uses both the ComplexToolItems constraint and multiple: TRUE, the ContextDefinitionNormalizer produces a double-wrapped JSON Schema This occurs because: The ComplexToolItems handler sets the property to type: array with items being the normalized complex tool schema. The isMultiple() handler then wraps that already-array property in another array type. The resulting schema instructs the LLM to produce nested array… ### [UpdateViewPlugins: display option updates on non-default displays do not override defaults inheritance](https://git.drupalcode.org/project/ai_agents/-/work_items/3582781) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !288 [Issue #ai_agents-3582781: review update AI agent](https://git.drupalcode.org/project/ai_agents/-/merge_requests/288) | State: opened | Author: Bharat Kelotra (bharatkelotra), 574 diff lines Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> Problem/Motivation When the Views agent calls UpdateViewPlugins to update a display option (e.g. title, path, style) on a non-default display such as page_1, the value is saved to the config array but the defaults flag for that option is never cleared on the display. At runtime, Views checks defaults[title] === true and still serves the default display's value instead of the one that was just written. This means a user prompt like "Update the title of the page display to Article Listing" appe… ### [Views agent: style/row and filters/filter_groups must be overridden as pairs on non-default displays](https://git.drupalcode.org/project/ai_agents/-/work_items/3582782) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !289 [Issue #ai_agents-3582782: Fix AI agent](https://git.drupalcode.org/project/ai_agents/-/merge_requests/289) | State: opened | Author: Bharat Kelotra (bharatkelotra), 574 diff lines Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> Problem/Motivation Views internally treats certain display options as coupled pairs: style and row are always set together — the row plugin must be compatible with the style plugin. filters and filter_groups are always set together — filter_groups holds the AND/OR operator config that applies to the filters. When the Views agent updates only one option of a pair on a non-default display, the result is a broken or inconsistent display. For example: A user asks "Change the format… ### [return_directly tool results are missing tool_id](https://git.drupalcode.org/project/ai_agents/-/work_items/3585054) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::rtbc Description: >>> [!note] Migrated issue Reported by: [tim bozeman](https://www.drupal.org/user/2241356) Related to !259 >>> Problem/Motivation In AiAgentEntityWrapper::determineSolvability(), when a tool has return_directly=true, the tool result ChatMessage is created without setting the tool_id: // return_directly path (line ~497) — tool_id is NOT set:$this->chatHistory[] = new ChatMessage('tool', $output);// Normal path (lines ~501-502) — tool_id IS set:$message = new ChatMessage('tool', $output);$message->setToolsId($tool->getToolsId());$this->chatHistory[] = $message;This c… ### [Add limits on how often a tool can run](https://git.drupalcode.org/project/ai_agents/-/work_items/3547995) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !224 >>> Problem/Motivation Right now we have to tell the system prompt how often it is allowed to use a specific tool. But there should also be a determenistic way, where if the tool gets stuck in a loop or searches to no awail in a RAG database for instance, we need to be able to programatically say how many times a tool can run. Proposed resolution Add a form value of how many times a tool can run. Add a form for setting the error message when this happens. If the tool has run tha… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsWork Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [Fix streaming](https://git.drupalcode.org/project/ai_agents/-/work_items/3577520) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [d0t15t](https://www.drupal.org/user/132353) Related to !243 >>> Problem/Motivation Streaming in the ai_chatbot does not work. Steps to reproduce Create an AI assistant and attach an agent to it. Enable streaming on the assistant's chatbot block. Submit a message — the response is not streamed; it waits for the full completion before rendering. Proposed resolution Add $streaming and $streamingIterator properties to AiAgentEntityWrapper. Pass setStreamedOutput($this->streaming) to the ChatInput before the provider call in determineSolvabi… ### [Automated Drupal 12 compatibility fixes for ai_agents 1.4.x-dev](https://git.drupalcode.org/project/ai_agents/-/work_items/3586038) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.)](https://git.drupalcode.org/project/ai_agents/-/work_items/3577241) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !249 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI Agents module currently allows defining and configuring agents inside Drupal. However, many modern AI ecosystems expect agents to exist inside external platforms such as Claude Code or services like VAPI. In many cases Drupal sh… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, AI Views, Workstream 4a Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) Related to !206 !172 >>> Problem/Motivation --- AI TRACKER METADATA --- Update Summary: This is an example bit of metadata to test things working with the tracker. Check-in Date: 09/01/2025 (US format) [When we should see progress/get an update] Due Date: 09/09/2025 (US format) [When the issue should be fully completed] Blocked by: #3528730: Create ShortTermMemoryPlugin(New issues on new lines) #3528549: Allow tool calling in streamed chat Additional Collaborators: jibran AI Tracker found here: https://… ### [Create an ChatProcessor](https://git.drupalcode.org/project/ai_agents/-/work_items/3585984) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::rtbc Description: With https://git.drupalcode.org/project/ai/-/work_items/3492940 the agents could create ChatProcessor that has the settings the AI Assistant layer has. Discussion has to be made if we already support multiple threads and want that in the future, so you can basically have one chat where you can pick the agent you talk to. But for 1-to-1 functionality parity, it means that the consumer sets one agent per chatbot. ### Proposed resolution Create a ChatProcessor for agent that has a form that sets:\ \* Agent\ \* Specific Error Messages (?)\ \* Allow History (?) We need to discuss how we store h… ### [AI Agent entity form should reject machine names that collide with existing code-plugin IDs](https://git.drupalcode.org/project/ai_agents/-/work_items/3586026) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, state::rtbc Description: Project: AI Agents\ Component: Code\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** AiAgentManager merges two types of plugin definitions under a single ID namespace: 1. Code-defined AiAgent plugins discovered via parent::findDefinitions(). 2. ai_agent config entities, merged in by AiAgentManager::findDefinitions() at src/PluginManager/AiAgentManager.php:196. When an admin saves an ai_agent config entity with a machine name that matches an existing code-plugin ID, two failure modes occur: 1. The config entity is silently dropped from plugin discovery — the merge in findDefinitions… ### [Let an agent use a role when running a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3518167) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !87 >>> Problem/Motivation Currently the modus operandi is that the permissions checks that happens in tools, happens on the session that is running it. In AI Agents Explorer or the AI Assistants API, this means the user that triggers the query. There are however cases where agents should be completely autonomous or where they are triggered in queues/cron jobs, where there is no sessions attached. In those cases it should be possible for the person that sets up the agent to be able to… ### [Allow agents to have permissions, user or a role](https://git.drupalcode.org/project/ai_agents/-/work_items/3586019) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: AI Initiative Sprint, AI Innovation, category::feature, group::ai-initiative Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation There are two problems right now in terms of agents and roles/permissions: 1. If we use only the end-users permissions, the agent itself will have the same permissions, and wide generic tools that are not constrained, might be used as attack vectors via prompt injection. 2. When autonomous agents runs in cron, ECA or something else, they run as an anonymous user, meaning that they might not be able to solve what they want to solve, because they don't have enough permissions… ### [Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586043) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !287 [fix: #3586043 Coerce array dynamical token values to string in applyTokens()](https://git.drupalcode.org/project/ai_agents/-/merge_requests/287) | State: opened | Author: Rajab Natshah (RajabNatshah), 144 diff lines Description: ### Problem On every AI Agent run, a PHP warning is logged (and shown as a status message inside the Drupal Canvas AI editor): ``` Warning: Array to string conversion in Drupal\Core\Utility\Token->doReplace() (line 283 of core/lib/Drupal/Core/Utility/Token.php). ``` ### Backtrace (abridged) ``` Token.php(283): str_replace() Token.php(214): Drupal\Core\Utility\Token->doReplace() token_or/src/Token.php(27): ...->replacePlain() eca/.../TokenDecoratorTrait.php(444): ... ai_agents/src/PluginBase/AiAgentEntityWrapper.php(1323): ...->replacePlain() ai_agents/src/PluginBase/AiAgentEntityWrapper.ph… --- MERGE REQUESTS (2w) --- ### [Issue #3547994: Add per-tool error catching to prevent agent crashes.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/220) State: opened | Author: Nicolae Procopan (thebumikgmail.com) | Branch: 3547994-add-possibility-to | 480 diff lines Description: Closes #3547994 ### [Add CKEditor schema for ai_agents](https://git.drupalcode.org/project/ai_agents/-/merge_requests/221) State: opened | Author: Sven Decabooter (svendecabooter) | Branch: 3565169-schema-error-for | 280 diff lines Description: Closes #3565169 ### [Move AI Agents under Tools & Automation menu section](https://git.drupalcode.org/project/ai_agents/-/merge_requests/278) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586032-ai-agents-admin-menu-does-not-follow-ai-14x-menu-categorization-tools-automation | 22 diff lines Description: Closes #3586032 ### [Issue #3537123 by jurgenhaas: Exceptions in tool execute break the UI for the user](https://git.drupalcode.org/project/ai_agents/-/merge_requests/163) State: opened | Author: Jürgen Haas (jurgenhaas) | Branch: 3537123-exceptions-in-tool | 295 diff lines Description: Closes #3537123 ### [Issue #3547995: Add deterministic tool usage limits.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/224) State: opened | Author: Nicolae Procopan (thebumikgmail.com) | Branch: 3547995-clean | 466 diff lines Description: Closes #3547995 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/282) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 1325 diff lines Description: Relates to #3586038. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Issue #3578197: Fix double-wrapped entity_array issue](https://git.drupalcode.org/project/ai_agents/-/merge_requests/244) State: opened | Author: David Galeano (gxleano) | Branch: 3578197-contententityseeder-crashes-on | 256 diff lines Description: Closes #3578197 --- COMMITS (2w) --- - [75243956](https://git.drupalcode.org/project/ai_agents/-/commit/75243956d4f2ede53616293d543af377f0561109) Document logger interface — Marcus Johansson (2026-06-24T10:27:18.000+02:00) ======================================================================== ## [22] summariseModule:tool:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar), Marcus Johansson (Marcus_Johansson), Matt Glaman (mglaman) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                    Tool API

                                    then use

                                    ,

                                    ,

                                      /
                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                      tags. After the project summary prose, add a single subsection titled "

                                      How can I help on this project?

                                      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… ### [Add skills for generating Tools](https://git.drupalcode.org/project/tool/-/work_items/3582936) State: closed | Updated: 2026-06-21 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Description: ### Problem/Motivation In https://www.drupal.org/project/ai_agents_experimental_collection there is an Claude Command to be able to generate agents and tools. Based on the vibe coding of the 100+ tools there, this works very well with Claude Code and Codex at least. We should put this here instead as a generic skill, so anyone could use https://www.drupal.org/project/ai_best_practices or Vercel Skills to load it into their project. This means that its open for any coding agent. ### Proposed resolution * Create a Drush template and generate command * Create one skill for creating tools und… ### [Allow controlling Tool return format](https://git.drupalcode.org/project/tool/-/work_items/3582933) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation Currently the return of a tool is textual which is fine for AI to analyze, but sometimes in MCP or other methods like AG-UI that want the raw result. Steps to reproduce Call a tool and observe the result, it will be something like: Tool Plugin executed successfully: View 'my_view' executed successfully.\nOutput for results: { actual tool result }Proposed resolution I see a few ways forward here Change to just spit out the raw result directly Separate the result from the text so … ### [tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool](https://git.drupalcode.org/project/tool/-/work_items/3582942) State: closed | Updated: 2026-06-25 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: state::fixed Description: ## Problem `drush tool:run` shows nothing useful when a tool fails. Instead of the failure message, it throws a `ContextException` and exits. The command reads the result, then unconditionally reads the outputs: ```php $success = $tool->getResultStatus(); $message = (string) $tool->getResultMessage(); $outputs = $tool->getOutputValues(); ``` A tool that returns `ExecutableResult::failure()` never sets its declared output contexts. `getOutputValues()` loops over every declared output and calls `getOutputValue()`, which throws on an unset context: ```php throw new ContextException(sprintf("… ### [[Tool] Create tools to save/update/delete SDC components](https://git.drupalcode.org/project/tool/-/work_items/3556021) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Product Development, category::feature, code, priority Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !57 >>> Problem/Motivation Create the following tools: write_sdc_definition This writes the definition file (.yml) of the component. It has to validate for allowed component name, if the theme or module exists and that the definition is valid. Create the component folder if it doesn't exist. Flush component cache after running. inputs: * component_name - the data name of the component * theme or module - the theme or module where the sdc definition should be added/updated. * def… ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-30 | Author: Stephan Huber (stmh) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !95 [Issue #3582939: Fix getSupportedTypes() in MapDefinitionNormalizer and...](https://git.drupalcode.org/project/tool/-/merge_requests/95) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 118 diff lines Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … ### [Allow tool execute to be previewed](https://git.drupalcode.org/project/tool/-/work_items/3558037) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation It's been requested that we allow tools to be 'previewed'. This would mostly only affect tools that write out a permanent change. This is helpful in UI's when you want to simulate a flow, or debug, and this may be helpful in AI to allow more advanced 'planning' strategies. Proposed resolution Implement a preview method: <?phppublic function preview() {  $tool->setPreview();  $tool->execute();  $tool->setPreview(FALSE);}$tool->preview();?> An… ### [Introduce support for Discovery, Planning and Execute calls for MCP and Agents](https://git.drupalcode.org/project/tool/-/work_items/3546292) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation The challenge with MCP right now is there seems to be a soft cap around 40 tools, and because all tools are sent on every request, more noise = more hallucinations and more failures. AI Agents on the other hand have similar degradation with tool counts, but are also currently lacking a reliable short term memory layer for better context management, meaning chaining many tool calls together quickly hits caps for requests/tokens. Proposed resolution We can reduce some of the to… ### [Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema](https://git.drupalcode.org/project/tool/-/work_items/3582943) State: opened | Updated: 2026-06-28 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Goal Tool stays consumer-agnostic. Give consumers — the Drush CLI, `mcp_server`, a future planner — enough *introspectable* metadata to understand and present a tool they didn't author, **before** invoking it. Most of what's needed already exists in the Tool API model; the work is mostly **surfacing** it over the CLI, plus **one genuinely additive** piece (richer input schema). Two deliverables (A additive, B surfacing); each can ship as its own MR. This issue is the umbrella proposal for a shared discussion. ## Background This comes out of building [`canvas_tools`](https://www.drupal.o… ### [Change "Tools API" to "Tool API" in ToolsApi PHP attribute](https://git.drupalcode.org/project/tool/-/work_items/3582940) State: opened | Updated: 2026-06-30 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: state::fixed Description: I think this minor change is necessary to keep things consistent from a naming perspective. These values are used in places like the AI module's _Tools Explorer_. The API name is singular everywhere else, so it should be singular here as well. -mike --- MERGE REQUESTS (2w) --- ### [Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)"](https://git.drupalcode.org/project/tool/-/merge_requests/93) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3582945-create-a-skill-for-generating-tool-plugins-best-practices-how-to-placement | 1354 diff lines Description: Closes #3582945 ### [Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool](https://git.drupalcode.org/project/tool/-/merge_requests/92) State: merged 2026-06-24 | Author: Matt Glaman (mglaman) | Branch: 3582942-issue-branch | 17 diff lines Description: `tool:run` calls `getOutputValues()` regardless of whether the tool succeeded. A tool that returns `ExecutableResult::failure()` never sets its declared output contexts, and `getOutputValues()` throws a `ContextException` on the first unset one — so the command dies before printing the failure message. Any tool that declares an output and can fail hits this. The MCP bridge already guards this (reads outputs only inside `if ($result->isSuccess())`); this brings `tool:run` in line. Verified against canvas_tools: before, a bad component id produced `The provided context 'uuid' is not valid.`; a… --- COMMITS (2w) --- - [b072f544](https://git.drupalcode.org/project/tool/-/commit/b072f5447c14264e9ec343b812f7c4db59828ac6) Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool — Matt Glaman (2026-06-24T17:28:50.000+00:00) ======================================================================== ## [23] summariseModule:canvas:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Adam G-H (phenaproxima), Ahmad Khalil (ahmad-khalil-imagex) [1], AKHIL BABU (AkhilBabu) [3], Alamgir Hossain (alamgir.hossain.cse), Andrew Belcher (andrewbelcher), Ben Mullins (bnjmnm) [3], Björn Brala (bbrala) [1], Bálint Kléri (balintbrews) [7], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [8], Feliksas Mazeikis (f.mazeikis) [2], Gábor Hojtsy (goba), Jakob P (japerry), Kunal Sachdev (kunal.sachdev) [2], Lauri Timmanee (lauriii) [1], Matt Glaman (mglaman) [2], Narendra Singh Rathore (NarendraR) [1], Oleksandr Antonchyk (Anton4yk), Priyanka Patel (priyankapatel), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [2], Sally Young (justafish), scott falconer (scottfalconer), Shubham Prakash (shubham.prakash), Ted Bowman (tedbow) [1], utkarsh_33 (Utkarsh_33) [1], Wim Leers (wimleers) [7], wotnak". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                      Drupal Canvas

                                      then use

                                      ,

                                      ,

                                        /
                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                        tags. After the project summary prose, add a single subsection titled "

                                        How can I help on this project?

                                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [languageSelect.spec.ts Failing in 1.x](https://git.drupalcode.org/project/canvas/-/work_items/3591705) State: closed | Updated: 2026-06-22 | Author: Ted Bowman (tedbow) | Assigned: Ben Mullins (bnjmnm) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1269 [Resolve languageSelect.spec.ts Failing in 1.x - round 2](https://git.drupalcode.org/project/canvas/-/merge_requests/1269) | State: merged 2026-06-22 | Author: Ben Mullins (bnjmnm), 112 diff lines - MR !1265 [#3591705 language select test failing](https://git.drupalcode.org/project/canvas/-/merge_requests/1265) | State: merged 2026-06-19 | Author: Ben Mullins (bnjmnm), 115 diff lines - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines Description: 1st MR helped, but not completely 2nd MR: !1269 See https://git.drupalcode.org/project/canvas/-/jobs/10422775 latest 1.x run ``` Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[data-state="open"][role="menu"]') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-state="open"][role="menu"]') 329 | await expect( 330 | page.locato… ### [Only show default-language entities when reviewing auto-saved (pending) changes](https://git.drupalcode.org/project/canvas/-/work_items/3591704) State: closed | Updated: 2026-06-23 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, JavaScript, autoSave, blocker Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1263 [fix: #3591704 Hide non-default-translation auto-saves from the pending-changes GET response](https://git.drupalcode.org/project/canvas/-/merge_requests/1263) | State: merged 2026-06-23 | Author: Ted Bowman (tedbow), 416 diff lines Description: ### Overview The pending-changes review UI lists auto-saved drafts per translation: one row per langcode. Acting on a non-default translation row currently misbehaves — discarding deletes the default language instead (#3591703), and publishing a subset of translations corrupts the unselected ones. As an interim step for Symmetric Translation Phase 1, the review UI should list only the default-language entity for each pending change and hide per-translation rows. This prevents editors from triggering the per-translation discard and partial-publish paths until the langcode-aware endpoints land… ### [Symmetric translation: component instance version updates must propagate to all translations](https://git.drupalcode.org/project/canvas/-/work_items/3591596) State: closed | Updated: 2026-06-30 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, category::feature, dataModel, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1163 [feat(Component sources): #3591596 Symmetric translation: component instance version updates must propagate to all translations"](https://git.drupalcode.org/project/canvas/-/merge_requests/1163) | State: closed | Author: Christian López Espínola (penyaskito), 3338 diff lines - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines Description: ### Overview When a code component's props or slots change, Canvas's `ComponentInstanceUpdater` automatically reconciles existing component instances to the new version — removing orphaned props, injecting defaults for new required props, and removing children in deleted slots. This reconciliation currently only affects the language that happens to be loaded when the entity is opened for editing. In symmetric translation mode, `component_version` lives in the shared `tree` column group, so updating the version for one language inadvertently marks all translations as up-to-date. When a transl… ### [Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode)](https://git.drupalcode.org/project/canvas/-/work_items/3591703) State: opened | Updated: 2026-06-30 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: AI-accelerated, Needs tests, category::bug, internalHttpApi Description: ### Overview When a translatable Canvas content entity has pending auto-saves in more than one translation, discarding one translation's change deletes the wrong translation. The discard endpoint is `DELETE /canvas/api/v0/auto-saves/{entity_type}/{entity_id}` — it carries no langcode. `ApiAutoSaveController::delete()` removes the auto-save keyed by the entity's default language only. So discarding a non-default translation's change deletes the default language's draft instead, and leaves the intended translation pending. The client already knows each change's language (every pending-change … ### [Fatal error (AssertionError on dev env) when a component instance's image references a deleted file](https://git.drupalcode.org/project/canvas/-/work_items/3591702) State: closed | Updated: 2026-06-19 | Author: Christian López Espínola (penyaskito) | Assigned: Wim Leers (wimleers) | Labels: category::bug, dataModel, priority::critical, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1264 [Resolve "Page editor fatals (AssertionError) in `ComputedUrlWithQueryString` when a component's image references a deleted file"](https://git.drupalcode.org/project/canvas/-/merge_requests/1264) | State: merged 2026-06-19 | Author: Wim Leers (wimleers), 191 diff lines Description: ### Overview A Canvas page that contains a component with an image prop fails to open in the editor when the referenced image file no longer exists. Instead of degrading gracefully (empty image, rest of the page still rendering), the whole editor preview fatals with an `AssertionError` and returns a 500. The log fills with repeated `assert(\is_string($url->value))` failures from `ComputedUrlWithQueryString`. This happens whenever a component instance points at a deleted file/media — for example after a content reset, a partial re-import, or any workflow that removes a file an existing page s… ### [Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't](https://git.drupalcode.org/project/canvas/-/work_items/3591693) State: closed | Updated: 2026-06-18 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, Configuration schema, Needs upstream feature, blocker Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1257 [#3591693: Validate `LanguageConfigOverride`s (targeting translatable Canvas config entities) saves against config schema](https://git.drupalcode.org/project/canvas/-/merge_requests/1257) | State: merged 2026-06-18 | Author: Wim Leers (wimleers), 674 diff lines Description: Quoting `docs/adr/0010-dynamic-config-schema-for-component-tree-translatability.md`: > ### 3. Validation > > A related problem is the [12-year old core bug #2270399](https://www.drupal.org/project/drupal/issues/2270399): `LanguageConfigOverride`s are **never validated!** `LanguageConfigOverride::save()` only checks that values are scalars, arrays, or `NULL` — not objects. There is no schema validation, no constraint validation, and no check that translated values are structurally compatible with the base config. `ConfigSchemaChecker` (used in tests) explicitly skips non-default collections. `… ### [Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config](https://git.drupalcode.org/project/canvas/-/work_items/3591699) State: closed | Updated: 2026-06-19 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, category::bug, dataModel, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1262 [fix(Data model): #3591699 Never expose entity-reference inputs (e.g. image src) as translatable](https://git.drupalcode.org/project/canvas/-/merge_requests/1262) | State: merged 2026-06-18 | Author: Christian López Espínola (penyaskito), 126 diff lines Description: ### Overview When a component instance populates an entity-reference input — most commonly an image `src` backed by an image/file reference — and the host config (e.g. a `ContentTemplate` or `PageRegion`) is translated, the affected component fails to render in the non-default language. An exception is thrown during component rendering and logged (`canvas`, severity Error); the component is broken (renders empty / as an error) while the rest of the page still loads: > `Twig\Error\RuntimeError` … `[/src] NULL value found, but a string or an object is required.` The cause is in how component … ### [Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently](https://git.drupalcode.org/project/canvas/-/work_items/3591701) State: closed | Updated: 2026-06-19 | Author: Matt Glaman (mglaman) | Assigned: Matt Glaman (mglaman) | Labels: AI-accelerated, state::rtbc, technical debt Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1261 [fix(Tests): #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently](https://git.drupalcode.org/project/canvas/-/merge_requests/1261) | State: merged 2026-06-19 | Author: Matt Glaman (mglaman), 49 diff lines - MR !1260 [Resolve #3591701 "Make kernel tests pass on Drupal core 11.3"](https://git.drupalcode.org/project/canvas/-/merge_requests/1260) | State: closed | Author: Matt Glaman (mglaman) Description: ## Problem/Motivation The nightly pipeline on `1.x` ([pipeline 855595](https://git.drupalcode.org/project/canvas/-/pipelines/855595)) fails the PHPUnit kernel jobs on Drupal core 11.3 (`DRUPAL_CORE_NEXT_MINOR=11.3.10`). Two kernel test classes fail only on 11.3; they pass on 11.2. ### Failing jobs (11.3, all databases) - `phpunit (11.3 *): [PHPUnit-Kernel, 1, ...]` — `ComponentInputsEvolutionTest` - `phpunit (11.3 *): [PHPUnit-Kernel, 2, ...]` — `HostEntityPropSourceMatcherTest` ## Steps to reproduce ```bash composer require "drupal/core-recommended:~11.3.0" "drupal/core-dev:~11.3.0" --wi… ### [Coalesce reference fields whose values are consumed only through nested objects](https://git.drupalcode.org/project/canvas/-/work_items/3591678) State: closed | Updated: 2026-06-18 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, dataModel, priority::critical, state::fixed Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200321](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200321) and [note 1200324](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200324). ### Overview When *none* of a reference field's values are consumed directly — only via nested objects — the separate expressions could, since [commit 87f7b61dd](https://git.drupalcode.org/project/canvas/-/merge_requests/1112), be coalesced further into a single nested-object expression. For example: ``` ℹ︎… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-07-01 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [Support `content-entity-reference` props in CLI and Workbench](https://git.drupalcode.org/project/canvas/-/work_items/3591700) State: opened | Updated: 2026-06-19 | Author: wotnak | Assigned: wotnak | Labels: category::feature, cliTool, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1259 [feat(CLI Tool): #3591700 Support `content-entity-reference` props in CLI and Workbench](https://git.drupalcode.org/project/canvas/-/merge_requests/1259) | State: opened | Author: wotnak, 4816 diff lines Description: ### Overview Content entity reference props can be used by JavaScript components, but CLI and Workbench currently do not support authoring, validating, previewing, and rendering them. This means pulled content can lose the original entity reference shape, Workbench previews cannot reliably render components that depend on referenced content entities, and AI agents do not have enough generated context to work with these props. ### Proposed resolution Add CLI support for pulling, pushing, validating, and generating agent context for content entity reference props. Add Workbench support for … ### [Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached"](https://git.drupalcode.org/project/canvas/-/work_items/3575644) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1276 [Issue #3575644: Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached"](https://git.drupalcode.org/project/canvas/-/merge_requests/1276) | State: opened | Author: Matt Glaman (mglaman), 131 diff lines Description: >>> [!note] Migrated issue Reported by: [barakgalili](https://www.drupal.org/user/387269) >>> Overview The canvas module overrides the property definitions for the string_long field type in \Drupal\canvas\Plugin\Field\FieldTypeOverride\StringLongItemOverride. It currently adds a RegexConstraint to the value property with the pattern /(.|\r?\n)*/ to match any string, including newlines. When saving entities with large amounts of text (e.g., 10,000+ characters) in a string_long field, this specific regex pattern causes PHP's PCRE engine to hit the JIT stack limit (PREG_JIT_STACKLIMIT_ERROR, … ### [Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation](https://git.drupalcode.org/project/canvas/-/work_items/3591667) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, DX (Developer Experience), Needs ADR, data integrity Description: Title says it all. Context: Acquia Source has adopted Canvas long before it had a stable data model, and hence long before Canvas provided update paths. This has proven to cause seemingly random bugs during deployment, but time and time again the root cause has been data created _before_ Canvas provided update paths. This has been a time-consuming and costly affair (e.g. #3578865, #3579086). Canvas has invested _heavily_ into thorough validation to spot data integrity problems, to be able to guarantee that "if it passes validation, it will work [render + be editable with good UX]". ## Propo… ### [Include language-aware indexing for ContentTemplate-rendered Canvas content](https://git.drupalcode.org/project/canvas/-/work_items/3591695) State: closed | Updated: 2026-06-22 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers) | Labels: AI-accelerated, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1254 [#3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content](https://git.drupalcode.org/project/canvas/-/merge_requests/1254) | State: merged 2026-06-22 | Author: Ben Mullins (bnjmnm), 442 diff lines Description: Current \`ComponentTreeInputs\` does not index rendered ContentTemplate output. Add or explicitly exclude language-aware indexing for ContentTemplate-rendered static and dynamic values. ### [Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/work_items/3556922) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [akhil babu](https://www.drupal.org/user/3632866) > > Related to !813 ### Overview Getting the following error occasionally when generating a title, metadata, or adding components using the Page Builder agent from the chat interface. ![/files/issues/2025-11-10/Image-%201_0.png](https://www.drupal.org/files/issues/2025-11-10/Image-%201_0.png) This error usually occurs when new components are added or a full page is generated while the title and description are empty. Currently the UI has 3 separate handlers for adding/updating canvas page… ### [Release symmetrical translation functionality: drop the `canvas_dev_translation` feature flag module](https://git.drupalcode.org/project/canvas/-/work_items/3591698) State: opened | Updated: 2026-06-18 | Author: Wim Leers (wimleers) | Assigned: Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, Configuration schema, category::task, configManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1258 [#3591698: Promote canvas_dev_translation into canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1258) | State: opened | Author: Wim Leers (wimleers), 287 diff lines Description: Once the critical pieces of %"Symmetric Translation: Phase 1" are done, we're going to release Symmetrical Translations to the public. That means dropping the `canvas_dev_translation` module, and: 1. moving all its functionality into the main module `\Drupal\canvas_dev_translation\Hook\ConfigTranslationSupportHooks` → `\Drupal\canvas\Hook\ConfigTranslationSupportHooks` 2. finding all uses of the `canvas_dev_translation` module and dropping them: stopping to install the module, addressing `@todo`s, dropping test coverage that tests the situation _without_ this module, etc. We should prepare t… ### [Update Canvas component auditing UI to include translation labels](https://git.drupalcode.org/project/canvas/-/work_items/3591612) State: closed | Updated: 2026-06-18 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: dataModel, state::fixed, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !876 [#3583379: `Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language](https://git.drupalcode.org/project/canvas/-/merge_requests/876) | State: merged 2026-06-18 | Author: Shubham Prakash (shubham.prakash), 1114 diff lines Description: Update the Canvas component auditing interface to display and correctly label translations for auditable components. To ensure the system remains fully auditable, the Canvas component auditing UI must be updated to include translation data. Specifically, when viewing the audit trail for a component, translations should be listed and explicitly labeled as such to distinguish them from the source content. The implementation should be verified at the following path: /admin/appearance/component/sdc.canvas_test_sdc.heading/audit Expected Outcome The auditing UI successfully lists all translation… ### [Simple approach to bringing advanced metadata into Canvas AI](https://git.drupalcode.org/project/canvas/-/work_items/3545816) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Innovation, AI Page Generation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [catia_penas](https://www.drupal.org/user/3725216) Related to !719 !349 >>> --- AI TRACKER METADATA --- Update Summary: Simple approach to bringing advanced metadata into Canvas AI Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Overview Currently we only have a one shot … ### [Add "page" extension type for full-screen Canvas extensions](https://git.drupalcode.org/project/canvas/-/work_items/3591662) State: closed | Updated: 2026-06-18 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1233 [Add "page" extension type for full-screen Canvas extensions](https://git.drupalcode.org/project/canvas/-/merge_requests/1233) | State: merged 2026-06-18 | Author: Lauri Timmanee (lauriii), 1177 diff lines Description: ## **Overview** Canvas extensions currently run inside a sidebar dialog overlay. This works well for extensions that need to stay close to the page being edited because they receive page context and can interact with the editor directly. However, some extensions perform standalone tasks (such as a translation dashboard, a content audit tool or a form builder) that do not need page context or editor interaction. Forcing those into the sidebar dialog wastes screen space and creates an awkward UX. There is no way for an extension to declare that it should occupy the full Canvas viewport as a se… ### [Canvas AI: canvas_ai_post_update_0003 strips the orchestrator agent UUID via setData()](https://git.drupalcode.org/project/canvas/-/work_items/3591660) State: closed | Updated: 2026-06-25 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1230 [Issue #3591660: Preserve agent UUID in canvas_ai post_update 0003 and repair affected sites](https://git.drupalcode.org/project/canvas/-/merge_requests/1230) | State: merged 2026-06-25 | Author: Matt Glaman (mglaman), 164 diff lines Description: ## Overview `canvas_ai_post_update_0003_reimport_orchestrator_agent()` in `modules/canvas_ai/canvas_ai.post_update.php` reimports the orchestrator agent to pick up a changed system prompt (follow-up to [#3582390](https://www.drupal.org/project/canvas/issues/3582390)). It reads `config/install/ai_agents.ai_agent.canvas_ai_orchestrator.yml` and calls `->setData($data)->save(TRUE)`. The install file has no top-level `uuid` key. `setData()` replaces the entire config record, so the existing `uuid` is dropped from the active `ai_agents.ai_agent.canvas_ai_orchestrator` config. The hook shipped in … ### [`redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix](https://git.drupalcode.org/project/canvas/-/work_items/3591689) State: closed | Updated: 2026-06-30 | Author: Narendra Singh Rathore (NarendraR) | Assigned: Narendra Singh Rathore (NarendraR) | Labels: Regression, category::bug, internalHttpApi, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1249 [#3591689: Too many redirects in invalid langcode as path-prefix](https://git.drupalcode.org/project/canvas/-/merge_requests/1249) | State: merged 2026-06-19 | Author: Narendra Singh Rathore (NarendraR), 82 diff lines Description: If we change language prefix and visit `/{language_prefix}/canvas` there is an infinite loop. Regression of https://git.drupalcode.org/project/canvas/-/work_items/3591585 Steps to reproduce: - Add additional language at `admin/config/regional/language/add` - Change path prefix to something random (frtest) at `/admin/config/regional/language/detection/url` - Visit /frtest/canvas to observe to get error ERR_TOO_MANY_REDIRECTS ### [Boolean prop values not retained correctly on SDC components with multiple boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591697) State: closed | Updated: 2026-06-30 | Author: Joery Lemmens (flyke) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1281 [#3591697 "Boolean default false prop values not retained correctly "](https://git.drupalcode.org/project/canvas/-/merge_requests/1281) | State: opened | Author: Ben Mullins (bnjmnm), 57 diff lines Description: This is a recreation of issue [#3492368](https://www.drupal.org/project/experience_builder/issues/3492368) in the experience_builder module so that the issue ends up on the correct module and issue que. Please watch the video in that issue! I am using Drupal 11.3.12 and I'm having an issue with boolean props on both canvas 1.6.0 and latest canvas dev. I have a (card) component with multiple boolean props where example and default are all set to false. I create a card (I dont change any boolean props) and when changing the text content, it seems that all boolean prop widgets are still uncheck… ### [UriOverride double-encodes file URIs on export causing images to be deleted on re-import](https://git.drupalcode.org/project/canvas/-/work_items/3591696) State: opened | Updated: 2026-06-18 | Author: Priyanka Patel (priyankapatel) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1256 [Issue #3591696 : Prevent URIOverride from double-encoding file URIs on export](https://git.drupalcode.org/project/canvas/-/merge_requests/1256) | State: opened | Author: Priyanka Patel (priyankapatel), 13 diff lines Description: When exporting canvas config that contains file/image URIs, `UriOverride.php` applies `UrlHelper::encodePath()` to a path that may already be URL-encoded. This causes double-encoding (e.g. `my%20file.jpg` becomes `my%2520file.jpg`). On re-import, the file URI no longer matches the actual file on disk, causing images to appear deleted. **Fix:** Decode the path before encoding to prevent double-encoding: `UrlHelper::encodePath(rawurldecode(rawurldecode($components['path'] ?? '')))` ### [Deleting media references causes InvalidComponentException and AssertionError](https://git.drupalcode.org/project/canvas/-/work_items/3590029) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, configManagement, data integrity, priority::critical Description: >>> [!note] Migrated issue Reported by: [danepowell](https://www.drupal.org/user/339326) >>> Overview If you reference a media entity from a region (or other config component) and then delete the referenced entity, it causes at least two types of errors. On the page itself, you'll get an InvalidComponentException, which is ugly but recoverable. If you try to run canvas_post_update_0016_page_region_component_inputs_must_be_arrays, you'll get a nastier error that crashes updates: [error]  AssertionError: assert(Inspector::assertAllObjects($referenced_content_entities, FieldableEntityInt… ### [Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings](https://git.drupalcode.org/project/canvas/-/work_items/3591680) State: closed | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, dataModel, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1268 [refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of strings](https://git.drupalcode.org/project/canvas/-/merge_requests/1268) | State: merged 2026-06-22 | Author: Christian López Espínola (penyaskito), 458 diff lines Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see the "Optional follow-up tightening" list in [note 1200411](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200411). ### Overview `Coalescer` currently returns lists of strings throughout. It would be easier to maintain, debug, and understand if it operated on `EntityFieldBasedPropExpressionInterface` objects instead, converting to a list of strings only at the boundary where strings are actually needed. That conversion is trivial. This was deliberately left out of scope fo… ### [Submodule info.yml core requirements are not in sync with canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591706) State: closed | Updated: 2026-06-19 | Author: Björn Brala (bbrala) | Assigned: unassigned | Labels: category::task, priority::normal, projectManagement, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1267 [chore: #3591706 Sync submodule info.yml core requirements to ^11.2](https://git.drupalcode.org/project/canvas/-/merge_requests/1267) | State: merged 2026-06-19 | Author: Björn Brala (bbrala), 215 diff lines Description: While working on another issue i noticed the following: ``` ┌──────────────────────────────────────┬──────────────────────────┬────────┐ │ info.yml │ core_version_requirement │ floor │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ │ canvas.info.yml (root) │ ^11.2 │ 11.2.0 │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ │ canvas_ai, canvas_vite │ ^10 | ^11 / ^10 || ^11 │ 10.0.0 │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ … ### [[upstream] Introduce `composer run lint:chase-upstream` + `chase-upstream`: use Rector rules to semi-automate Drupal 12 compatibility while retaining BC layers for Canvas' minimum version](https://git.drupalcode.org/project/canvas/-/work_items/3589155) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, Needs upstream feature Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1142 !1106 !1140 >>> Overview https://dri.es/ai-generated-rector-rules-for-drupal exists. Imagine this could help us semi-automatically get to Drupal 12 support? @bbrala has been jumping on this very same thing, and wrote https://www.linkedin.com/pulse/drupal-rector-rules-config-code-mostly-bj%C3%B6rn-brala-vfpwe/. We should wait for https://github.com/palantirnet/drupal-rector/pull/329 to get merged, and then use that. Proposed resolution Add composer run scripts: lint:chase-upstream (feed… ### [Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support](https://git.drupalcode.org/project/canvas/-/work_items/3584136) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1237 [Issue #3584136: Fix canvas_component_agent prompt bugs (Image import,...](https://git.drupalcode.org/project/canvas/-/merge_requests/1237) | State: merged 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex), 1765 diff lines Description: > [!note] Migrated issue > > > > > > Reported by: [subbu94](https://www.drupal.org/user/3513305) > > Related to !907 ### Overview The `canvas_component_agent` system prompt in `ai_agents.ai_agent.canvas_component_agent.yml` contains several bugs that cause the agent to generate invalid or broken code components. These problems were surfaced across four related issues: \[#3584114\], \[#3558216\], \[#3564656\], and \[#3551659\]. This issue consolidates them so they can be fixed together in a single pass over the agent configuration. ### Acceptance criteria When this issue is resolved, the … ### [Prevention of publishing on Conflict in Canvas UI](https://git.drupalcode.org/project/canvas/-/work_items/3587526) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::task, priority::critical, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1193 [feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity"](https://git.drupalcode.org/project/canvas/-/merge_requests/1193) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 861 diff lines Description: >>> [!note] Migrated issue Reported by: [ravi.maniyar.123](https://www.drupal.org/user/3867193) Related to !1018 >>> Overview: Whenever conflicts occur, we need to show the file name with indicator and with different styling. The file with conflicts cannot be selected for publish. This issue will only add this functionality for Canvas UI. There will be separate issue that will ensure conflict detection is performed during publishing of entities in similar fashion validation is performed. User interface changes: -- Item with a conflict has indicator icon -- Item with a conflict is marked i… ### [Automated Drupal 12 compatibility fixes for canvas 1.x-dev](https://git.drupalcode.org/project/canvas/-/work_items/3591603) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: Wim Leers (wimleers), Björn Brala (bbrala), project update bot (Project-Update-Bot) | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, priority::major Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout](https://git.drupalcode.org/project/canvas/-/work_items/3591591) State: closed | Updated: 2026-06-23 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::closed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1159 [Issues/3591591: Add fixture support for layout to use in tests](https://git.drupalcode.org/project/canvas/-/merge_requests/1159) | State: merged 2026-06-23 | Author: AKHIL BABU (AkhilBabu), 682 diff lines Description: ## Goal Create automated tests for the Canvas AI agents, so the manual testing otherwise needed every time an agent's system prompt changes can be avoided. ## Related issues This issue is one step toward that coverage. It builds on: - [#3579681 (closed)](https://git.drupalcode.org/project/canvas/-/work_items/3579681) — Added the `canvas_ai_agents_test` module and a framework to validate the YAML output produced by the page builder and template builder agents. - [#3582390 (closed)](https://git.drupalcode.org/project/canvas/-/work_items/3582390) — Added tests for the Canvas AI orchestrator a… ### [[Notifications] notification storage and service](https://git.drupalcode.org/project/canvas/-/work_items/3580209) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [justafish](https://www.drupal.org/user/161058) Related to !762 >>> Build the core notifications storage layer for Canvas. Create the NotificationService PHP class in the Canvas module that provides the core storage and retrieval layer for notifications. This service uses two custom database tables (canvas_notifications and canvas_notification_reads) with indexed columns for efficient queries. Run this on top of https://git.drupalcode.org/issue/canvas-3573776/-/tree/3573776-canvas-needs-a Notes A notification can have the following types: processing… ### [[Notifications] cron cleanup](https://git.drupalcode.org/project/canvas/-/work_items/3580212) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [justafish](https://www.drupal.org/user/161058) Related to !830 >>> Implement a cron hook that performs two distinct cleanup operations: Purge stale processing notifications: Processing notifications that have been active for more than 30 minutes are deleted and replaced with error notifications so the user is informed that the operation timed out. This only affects processing-type notifications. Delete expired notifications: All notifications (of any type) and their associated read entries older than 30 days are removed. Notifications are deleted … ### [Add content entity cache tags to auto-saves/pending endpoint](https://git.drupalcode.org/project/canvas/-/work_items/3588546) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: D8 cacheability, autoSave, caching, category::bug Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !1057 >>> Overview Currently when returning content entities such as Page from auto-saves/pending endpoint cache tags are missing. Let's fix that. Proposed resolution Add enforceIsNew(FALSE) call when creating new entity in AutoSaveManager::getAllAutoSaveList() and update tests accordingly. User interface changes None. > Related issue: [Issue #3587587](https://www.drupal.org/node/3587587) ### [Refactor auto-save endpoint response to encapsulate entries in top-level "data" key, like JSON:API, to enable adding errors later](https://git.drupalcode.org/project/canvas/-/work_items/3588038) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: blocker, category::task, internalHttpApi, priority::normal Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !1047 >>> Overview Currently auto-saves/pending endpoint returns auto-save entries as a collection of objects: {  'entry_key:1' : {entry_1},   'entry_key:2' : {entry_2}}This worked fine until now, but going forward we should stick closer to JSON:API response structure, specifically the document top level format. Specifically, we should encapsulate the entries in data property on HTTP 200 responses: { 'data' : {   'entry_key:1' : {entry_1},    'entry_key:2' : {… ### [Detect conflicts for Page entities during the handling of auto-saves/pending calls](https://git.drupalcode.org/project/canvas/-/work_items/3589076) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: Ted Bowman (tedbow), Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1213 [feat(Conflict detection): #3589076 "Detect conflicts during auto-save polling"](https://git.drupalcode.org/project/canvas/-/merge_requests/1213) | State: merged 2026-06-16 | Author: Feliksas Mazeikis (f.mazeikis), 1128 diff lines - MR !1202 [fix(Conflict detection): Exclude computed internal fields from Page entity normalization](https://git.drupalcode.org/project/canvas/-/merge_requests/1202) | State: merged 2026-06-11 | Author: Feliksas Mazeikis (f.mazeikis), 122 diff lines - MR !1205 [revert(Conflict detection) #3589076 Detect conflicts during autosave polling](https://git.drupalcode.org/project/canvas/-/merge_requests/1205) | State: merged 2026-06-08 | Author: Feliksas Mazeikis (f.mazeikis), 941 diff lines - MR !1107 [Resolve #3589076 "Detect conflicts during autosave polling"](https://git.drupalcode.org/project/canvas/-/merge_requests/1107) | State: merged 2026-06-03 | Author: Feliksas Mazeikis (f.mazeikis), 941 diff lines Description: > [!warning] > > The main MR for this issue has been reverted in https://git.drupalcode.org/project/canvas/-/merge_requests/1205 and needs more work. > [!note] Migrated issue > > > > > > Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) > > Related to !1107 ### Overview As a first small step towards [#3587587](https://www.drupal.org/node/3587587) we should start detecting conflicts during the polling of auto-save endpoint.\ More specifically, conflicts that are caused by updating entity for which there is already an auto-save entry in Canvas. Current `openapi` definition of … ### [Rudimentary conflict resolution UI](https://git.drupalcode.org/project/canvas/-/work_items/3591601) State: opened | Updated: 2026-06-19 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1183 [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 3703 diff lines Description: ### Overview We are adding "Conflict resolution UI". This issue will add basic UI elements based on that allow users to open and interact with "Conflict resolution UI". ### Proposed resolution Add ability to open "Conflict resolution UI" using CTA button introduced in https://git.drupalcode.org/project/canvas/-/work_items/3585970. Create rudimentary version of the "Conflict resolution UI" which: * displays all of the conflicts in paginated (1 of X) UI with navigation controls ("\" * allows users to select which of the entities they want to use in order to resolve the conflict (auto-save v… ### [Text-based comparison of entities](https://git.drupalcode.org/project/canvas/-/work_items/3591668) State: opened | Updated: 2026-06-26 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, Needs design, Needs upstream feature, auto-save Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1266 [Draft: Issue #3591668: Add text-based comparison of entities UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1266) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 4644 diff lines - MR !1241 [Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API"](https://git.drupalcode.org/project/canvas/-/merge_requests/1241) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 305 diff lines Description: As part of #3587587 we need to be able to compare entities with conflicts not only using visual preview, but also using text-based side-by-side comparison. This issue adds this functionality for Page entities in Canvas. There will be an MR for BE and an MR for FE of this functionality. Designs and detailed description will be added soon. ### [UI changes for detection of conflicts caused by external updates to underlying entity of auto-save entry](https://git.drupalcode.org/project/canvas/-/work_items/3585970) State: closed | Updated: 2026-06-22 | Author: drupalbot | Assigned: Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !945 [Add conflict detection and resolution UI for selective publishing](https://git.drupalcode.org/project/canvas/-/merge_requests/945) | State: merged 2026-06-22 | Author: Ravi Maniyar (ravi.maniyar.123), 1365 diff lines Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !945 >>> Overview We are adding "Conflict resolution UI". This is the first task of the many and will add basic UI elements based on designs (meta issue with designs pending). Proposed resolution Add “Selective publishing error” UI element to the “Selective publishing dropdown” panel. Add a CTA button intended to open conflict resolution UI that also contains conflict counter. User interface changes When a "resolvable conflict" is detected in Canvas UI, the followin… ### [Expand conflict detection and resolution added by 3587587 to additional entity types](https://git.drupalcode.org/project/canvas/-/work_items/3591544) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview Initial implementation of #3587587 will expand current conflict detection and will add new "review of changes" and "conflict resolution UI". To limit the scope of work, new functionality will be added only to Page entities. This issue describes how this new functionality will be expanded to additional Canvas entity types. Specifically, this is a placeholder issue that will be used in BE child issues of #3587587 to document planned changes and link various @todo sections as the work progre… ### [[META] Review of changes and Conflict resolution](https://git.drupalcode.org/project/canvas/-/work_items/3587587) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, UX, autoSave, category::plan Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview This is a meta to track work to add ability to add the following: Add conflict detection when underlying entity that auto-save entry has been based on is updated outside of Canvas UI Add ability to detect and resolve such conflicts using Canvas UI Build UI that allows to use side-by-side comparison when resolving such conflict Ability to conveniently Review changes to multiple entities re-using much of the same new UI Refer to child issues for actionable steps. 🟢 Description an… ### [[Plan] Canvas AI Roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3579796) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Rakhi Mandhania (rakhimandhania) | Labels: AI Innovation, AI Page Generation, ai, category::plan Description: > [!note] Migrated issue > > > > > > Reported by: [rakhimandhania](https://www.drupal.org/user/2475028) \[Tracker\]\ **Update Summary:** Meta issue tracking the Canvas AI Page Generation roadmap — covering all deliverables from stable page building through to context control, code components, and SEO metadata generation.\ **Check-in Date:** 03/17/2026\ **Additional Collaborators:** \ _Metadata is used by the _[_AI Tracker._](https://www.drupalstarforge.ai/ "AI Tracker")_ Docs and additional fields _[_here_](https://www.drupalstarforge.ai/ai-dashboard/docs "AI Issue Tracker Documentation")_.… ### [Remove deprecated upload and download CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591707) State: closed | Updated: 2026-06-22 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1270 [chore(CLI Tool): Remove deprecated upload and download CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1270) | State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews), 5462 diff lines Description: The `upload` and `download` commands of Canvas CLI have been deprecated for a few months. Let's remove their implementation from the codebase. While doing this, we can also remove the `--no-tailwind` flag: We haven't really implemented this option in the `@drupal-canvas/discovery` package and the new build command, and there is no way to disable it in the in-browser code editor either, so it's best to not give the impression that the Tailwind CSS build can be skipped currently. Let's add back this option cleanly everywhere if/when the time is right. ### [Ensure type ignore schema props are ignore](https://git.drupalcode.org/project/canvas/-/work_items/3591710) State: closed | Updated: 2026-06-23 | Author: Ted Bowman (tedbow) | Assigned: Ted Bowman (tedbow) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1278 [ensure to ignore type ignore](https://git.drupalcode.org/project/canvas/-/merge_requests/1278) | State: closed | Author: Ted Bowman (tedbow), 13 diff lines Description: Test issue. Trying to reproduce a problem ### [Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591712) State: closed | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1280 [feat(CLI Tool): Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1280) | State: merged 2026-06-29 | Author: Bálint Kléri (balintbrews), 6501 diff lines Description: Now that the CLI tool has undergone a lot of development; the `upload` and `download` commands got deprecated in favor of `push` and `pull`, and the `build` command was rewritten from the ground up, we accumulated inconsistencies in the output of the various commands. Also, since the original output was designed about a year ago, AI coding agents became important consumers of these commands. It's time to consolidate, simplify, and rethink the output of all CLI commands. ### [Update JS packages](https://git.drupalcode.org/project/canvas/-/work_items/3591709) State: closed | Updated: 2026-06-22 | Author: Bálint Kléri (balintbrews) | Assigned: unassigned | Labels: category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1277 [chore: Update JavaScript packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1277) | State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews), 2301 diff lines Description: Update JavaScript packages in preparation for tagging Canvas 1.7.0. Do not update Astro, it will be handled in #3588803. ### [Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/work_items/3591711) State: closed | Updated: 2026-06-26 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: Content entity reference props are not fully stable yet, so the code editor should only show this prop type when an explicit dev feature flag is enabled. Add a hidden `canvas_dev_er` module. When enabled, Canvas exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor should show the Content entity reference prop type only when that setting is `true`. Existing components that already use content entity reference props should continue to show that prop type so they remain editable. ### [Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest`](https://git.drupalcode.org/project/canvas/-/work_items/3591679) State: closed | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, dataModel, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1275 [chore(Data model): #3591679 Use string representations of expressions in...](https://git.drupalcode.org/project/canvas/-/merge_requests/1275) | State: merged 2026-06-22 | Author: Christian López Espínola (penyaskito), 907 diff lines Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200328](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200328). ### Overview `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` express their expectations as `*PropExpression` object constructions. These are harder to scan than the equivalent string representations. A string representation is, post learning-curve, simpler for a human to read and preferable in test expectations. ### Proposed resolution Convert the expectation values in both tests from… ### [Refactor RequestTrait to prevent request stack mutation during kernel tests](https://git.drupalcode.org/project/canvas/-/work_items/3591708) State: closed | Updated: 2026-06-22 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, blocker, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines - MR !1274 [🤖 Resolve #3591708 "RequestTrait::request() should not result in mutated request_stack"](https://git.drupalcode.org/project/canvas/-/merge_requests/1274) | State: merged 2026-06-22 | Author: Feliksas Mazeikis (f.mazeikis), 187 diff lines Description: **TL;DR**: `RequestTrait` in Canvas tests had issues, resulting in false `ApiAutoSaveControllerTest::testPost()` failures in !1193 that should not be happening due to mutation of request stack; **Longer** version: `RequesTrait` would clean the `request_stack` before making calls, but would not restore it and due to upstream shenanigans. This would leave orphaned request objects in `\Drupal::request()->getCurrentRequest();` . An example of such failure is this https://git.drupalcode.org/project/canvas/-/jobs/10441223#L735 -\> an assertion failure when running `$page->validate()` in the PHPU… ### [Introduce `EntityFieldBasedPropExpressionInterface::getFieldDefinition()`](https://git.drupalcode.org/project/canvas/-/work_items/3591676) State: opened | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: Novice, category::task, dataModel, priority::normal Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200323](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200323). ### Overview Logic added in !1112 resolves a field definition from an entity-field-based prop expression in a way that is essentially identical to `\Drupal\canvas\PropExpressions\StructuredData\FieldPropExpression::calculateDependencies()`. The same field-definition-resolution logic now exists in more than one place. ### Proposed resolution Add `EntityFieldBasedPropExpressionInterface::getFieldDefinit… ### [AI continues to use unsupported React libraries while creating a component](https://git.drupalcode.org/project/canvas/-/work_items/3564656) State: closed | Updated: 2026-06-22 | Author: drupalbot | Assigned: Kunal Sachdev (kunal.sachdev) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [kunal.sachdev](https://www.drupal.org/user/3685163) Related to !441 >>> Overview In https://git.drupalcode.org/project/canvas/-/work_items/3548637, a fix was implemented to provide the AI with context regarding the specific libraries available within Canvas. The intention was to restrict the AI to only use these supported libraries. However, the AI continues to import external/unsupported libraries (e.g., when prompted to "render unsafe HTML safely," it attempts to import dompurify). This causes the preview to fail to load. This issue serves as a f… ### [Add heuristics for exposing fields/props to the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/work_items/3591669) State: opened | Updated: 2026-06-24 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii) | Labels: category::task, internalHttpApi, priority::critical, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1289 [feat(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1289) | State: opened | Author: Christian López Espínola (penyaskito), 273 diff lines Description: ### Overview When a Code Component Developer uses the `content-entity-reference` "Typed Data browser" UI (added in #3585354) to pick which entity data a prop consumes, the picker offers fields and properties it should not: - **Internal metadata** that storage would reject anyway (e.g. the `revision_default` / `workspace` base fields). - **A duplicated image URL**: the `image` field surfaces *"Resolved image URL with ?alternateWidths query parameter"* twice, because the `src` and `src_with_alternate_widths` computed properties share that label. `src` exists precisely as the developer-facing a… ### [Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests](https://git.drupalcode.org/project/canvas/-/work_items/3591723) State: opened | Updated: 2026-06-25 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::task, componentSources, data integrity, priority::major Description: ### Overview Two kernel test classes independently set up the same thing: a `JavaScriptComponent` fixture and a family of "prop-mutation" helpers that simulate a component evolving (adding/removing required and optional props, changing a prop's type, etc.). - `TranslationPropagationTestBase` (added in #3591596) — its fixture plus `addOptionalProp()`, `addRequiredProp()`, `removeOptionalProp()`, `changePropType()`, `removeAndAddProp()`, `removeBothProps()`. - `JsonSchemaPropsComponentInstanceUpdaterTest` — its own near-identical fixture plus `addOptionalProp()`, `addOptionalArrayProp()`, `rem… ### [Split the PHPUnit-Kernel CI test suite across 4 parallel jobs instead of 3](https://git.drupalcode.org/project/canvas/-/work_items/3591722) State: closed | Updated: 2026-06-24 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1288 [chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3](https://git.drupalcode.org/project/canvas/-/merge_requests/1288) | State: merged 2026-06-24 | Author: Christian López Espínola (penyaskito), 15 diff lines Description: ### Overview The `PHPUnit-Kernel` test suite in `.gitlab-ci.yml` runs across 3 parallel CI jobs (`CI_PARALLEL_NODE_TOTAL: '3'`). As the kernel suite has grown, each shard takes longer, increasing pipeline wall-clock time. Splitting the suite across 4 jobs instead of 3 reduces per-shard runtime. This was first done as a drive-by change inside MR !1271 (commit d6cfd28e, by Wim Leers), but it is a standalone CI-capacity change with no dependency on that issue's feature work, so it is split out here. ### Proposed resolution In `.gitlab-ci.yml`, change the `PHPUnit-Kernel` matrix entry to sprea… ### [Follow-up for #3591596: add PHPat rules for keeping `StagedLanguageConfigOverride` config entity type-agnostic](https://git.drupalcode.org/project/canvas/-/work_items/3591721) State: opened | Updated: 2026-06-23 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: projectManagement Description: The following discussion from !1271 should be addressed: - [ ] @penyaskito started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1268169): (+3 comments) > Shouldn't this be restricted to our known `ComponentTreeConfigEntityBase` implementers? ### [[11.3] Adopt Core's stream wrapper for JSON schema references](https://git.drupalcode.org/project/canvas/-/work_items/3580762) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Needs product manager review, category::task, priority::normal, shapeMatching Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !787 >>> Overview module:// and theme:// stream wrappers have been added to Drupal 11.3 to make it easier to reference certain files in modules or themes. Change notice: https://www.drupal.org/node/2352923 UI Patterns will adopt it and drop its custom ui-patterns:// wrapper: #3567610: Adopt Core's stream wrapper Canvas is still using its json-schema-definitions:// wrapper. Adopt Core's stream wrapper for JSON schema references must be possible right now thankw to https://git.drupalcode.org/pr… ### [Boolean props auto-enable when another prop is changed in the Canvas form](https://git.drupalcode.org/project/canvas/-/work_items/3591716) State: opened | Updated: 2026-07-01 | Author: Alamgir Hossain (alamgir.hossain.cse) | Assigned: unassigned | Labels: Description: ## Summary In Canvas, when editing a component that has boolean props (e.g. `card-program`), changing any non-boolean prop causes all boolean props to appear enabled (toggle switches flip to ON) even though the user never toggled them. ## Root causes Two bugs were identified: ### 1. `|| []` coerces boolean `false` to `[]` in `layoutModelSlice.ts` In `_addNewComponentToLayout` → `buildInitialData()`, when building the initial model for a newly dropped component: ```typescript // BEFORE (buggy): initialData.resolved[propName] = prop.default_values?.resolved || []; // For boolean false: fal… ### [Language dropdown "edit" link should immediately change to "add" on deletion](https://git.drupalcode.org/project/canvas/-/work_items/3591720) State: opened | Updated: 2026-06-23 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1287 [Draft: #3591720 update/edit toggles on language delete](https://git.drupalcode.org/project/canvas/-/merge_requests/1287) | State: opened | Author: Ben Mullins (bnjmnm), 650 diff lines ### [WIP: Apply saved config language override to auto-saved versions in layout](https://git.drupalcode.org/project/canvas/-/work_items/3583043) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ted Bowman (tedbow) | Labels: autoSave, category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !864 [Draft: Resolve #3583043 "Auto save config override"](https://git.drupalcode.org/project/canvas/-/merge_requests/864) | State: closed | Author: Ted Bowman (tedbow), 452 diff lines Description: >>> [!note] Migrated issue Reported by: [tedbow](https://www.drupal.org/user/240860) Related to !864 >>> Overview Experiment with applying Config Language Config override on API layout routes Proposed resolution User interface changes > Related issue: [Issue #3582464](https://www.drupal.org/node/3582464) ### [Avoid registering draft asset-library JS URLs to prevent locale's js_alter from treating them as local files](https://git.drupalcode.org/project/canvas/-/work_items/3591719) State: closed | Updated: 2026-06-26 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, priority::normal, state::closed, v1.x-dev Description: **Overview** This was found while working in https://git.drupalcode.org/project/canvas/-/work_items/3591654, see thread https://git.drupalcode.org/project/canvas/-/merge_requests/1234#note_1258003 In `LibraryHooks::libraryInfoBuild()`, the draft variant of each AssetLibrary entity registers its JS URL as a standard library asset: Because the path starts with / (but not //), Drupal's `LibraryDiscoveryParser` strips the leading slash and stores it as a root-relative type: file asset (`canvas/api/v0/auto-saves/js/asset_library/global`). When the locale module is installed, its `hook_js_alter()` … ### [Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints](https://git.drupalcode.org/project/canvas/-/work_items/3591717) State: closed | Updated: 2026-06-25 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::bug, cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1284 [fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints](https://git.drupalcode.org/project/canvas/-/merge_requests/1284) | State: merged 2026-06-25 | Author: Bálint Kléri (balintbrews), 177 diff lines Description: The CLI supports flat named components where multiple components share one directory: - `src/components/card.component.yml` - `src/components/card.tsx` - `src/components/pricing-table.component.yml` - `src/components/pricing-table.tsx` `@drupal-canvas/eslint-config` identifies only one named `*.component.yml` file in a directory when deciding whether a JavaScript or TypeScript file is a component entrypoint. Rules such as `component-exports` can skip sibling flat component entrypoints. **Out of scope** `@drupal-canvas/cli` validates each discovered component by linting its directory. When… ### [Canvas Page Preview Fails After Language Code Update for Existing Translations](https://git.drupalcode.org/project/canvas/-/work_items/3591713) State: opened | Updated: 2026-06-30 | Author: Vipin Mittal (vipin.mittal18) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: JavaScript, category::bug, priority::normal, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1304 [Draft: fix(Internal HTTP API, Translation): #3591713 Fix Canvas page preview for translated pages when the URL prefix differs from the langcode](https://git.drupalcode.org/project/canvas/-/merge_requests/1304) | State: opened | Author: Christian López Espínola (penyaskito), 251 diff lines Description: When a language code is updated in Language Detection settings, previewing existing translated Canvas pages for that language results in a syntax error. The preview process continues to reference the previous language code instead of the updated one. **Steps to Reproduce** 1. Create or translate a Canvas page into a secondary language. 2. Navigate to Language Detection settings. 3. Update the language code for the translated language. 4. Save the configuration. 5. Open the translated Canvas page and click Preview. **Current Behaviour** - The preview fails and displays a syntax error. - The u… ### [Canvas AI: Chatbot generates page title and description without user request](https://git.drupalcode.org/project/canvas/-/work_items/3591718) State: opened | Updated: 2026-06-23 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai, category::bug, priority::normal, state::active Description: ## Summary When a user opens a blank canvas page and sends a simple message like "Hi", the AI chatbot sometimes immediately generates a page title and description — even though the user did not ask for it. This is unexpected and confusing behaviour. ## Steps to reproduce 1. Open a canvas page that has no title and no description. 2. Open the AI chatbot panel. 3. Type "Hi" and send. 4. Observe that the chatbot may generate a page title and/or description without being prompted to do so. ## Root cause `CanvasAiPageBuilderHelper::generateVerboseContextForOrchestrator()` in `modules/canvas_ai… ### [Use toast messages to inform users about the detected conflicts](https://git.drupalcode.org/project/canvas/-/work_items/3591715) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, backend, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1295 [Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message"](https://git.drupalcode.org/project/canvas/-/merge_requests/1295) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 1052 diff lines Description: Original plan was to leverage Canvas notifications, but after some discussions with @8ballsteve , @amangrover90 and @ravi.maniyar.123 we've come to conclusion that purely client side toast messages that look similar to Canvas notifications, but aren't is a better fit at this time. MvP requirements for toast messages are: * Displayed on `HTTP 409` with errors containing items with code 4 from `HTTP GET` to `/auto-saves/pending` endpoint * Once displayed, we should store information required to make sure the toast notification is not being spammed on each `HTTP 409` response * Once dismisse… ### [Translating unpublished page crashes canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591714) State: opened | Updated: 2026-06-26 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, category::bug, pageBuilder, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1282 [#3591714: Resolve "Translating unpublished page crashes canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1282) | State: opened | Author: Kunal Sachdev (kunal.sachdev), 298 diff lines Description: **Overview** When a Canvas page has unpublished changes, completing a translation job for that page via the TMGMT breaks the Canvas editor UI, resulting in a 409 Conflict error. **Technical Cause** The problem is when TMGMT saves the translation as complete, it creates a new revision of the canvas page entity, which changes the revision ID. Since the original_hash stored in the auto-save no longer matches the current entity hash, Canvas flags this as a conflict and returns a 409 error. **Steps to reproduce** - Create a canvas page , add title as “Test Page“(do not publish it) - On canvas-ed… ### [Give AI more context around the styling of the site](https://git.drupalcode.org/project/canvas/-/work_items/3544132) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: ai, category::task, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [utkarsh_33](https://www.drupal.org/user/3727088) Related to !46 !26 !1504 >>> Overview While creating a code component the AI should get a context of existing styling of the site. This will help the AI to create similar type of components that closely match the styling of the site. In this issue we are focusing on JS components only. Proposed resolution So if a user wants to create a new component using AI then to match the component with the theme of the website we need to tell LLM about the current styling of the existing components. In this iss… ### [Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible](https://git.drupalcode.org/project/canvas/-/work_items/3591726) State: closed | Updated: 2026-06-26 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: AI-accelerated, backend, category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1291 [Issue #3591726: Compare component inputs order-independently in tests and enforce it via PHPStan](https://git.drupalcode.org/project/canvas/-/merge_requests/1291) | State: merged 2026-06-26 | Author: Christian López Espínola (penyaskito), 361 diff lines Description: ### Overview The kernel test `ComponentTreeFieldSymmetricalTranslationSynchronizerTest` fails on MySQL and PostgreSQL but passes on MariaDB and SQLite. The failure is an "arrays are identical" mismatch on a component instance's `inputs` where the values are correct but the key order differs (e.g. `href`/`text` swapped). The cause is database-backend-dependent: component `inputs` are stored in a native JSON column, and JSON object key order is not preserved uniformly across backends. MySQL (`json`) and PostgreSQL (`jsonb`) reorder object keys on storage, while MariaDB (where `json` is a `LONG… ### [Put conflict detection behind a dev mode flag](https://git.drupalcode.org/project/canvas/-/work_items/3591725) State: closed | Updated: 2026-06-25 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: 1.x-dev, Conflict resolution, backend, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1290 [Put conflict detection behind feature flag](https://git.drupalcode.org/project/canvas/-/merge_requests/1290) | State: merged 2026-06-25 | Author: Feliksas Mazeikis (f.mazeikis), 251 diff lines Description: Conflict detection is getting in the way of translations work. Considering this already has been a question on !1193 , let's put conflict detection BE changes behind dev flag. By @wimleers on slack: > :grimacing: :bug: Speaking of which, I just:Created a Page that uses a code component\ > Triggered a new version of that code component\ > Visited that Page via Canvas → auto-save created (only for the default translation aka en)\ > TRANSLATE that Page\ > Again visit that Page via Canvas → :warning: CONFLICT DETECTED! ### [Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat](https://git.drupalcode.org/project/canvas/-/work_items/3591724) State: opened | Updated: 2026-06-29 | Author: Aidan Foster (aidanfoster) | Assigned: unassigned | Labels: Description: **Source:** Drupal AI UX Weekly Meeting, June 22, 2026. @Marcus_Johansson reviewed and gave an update on the prototype Drupal Canvas AI brand @AkhilBabu based on the experimental prototype that creates components one-at-a-time on this experimental branch https://github.com/akhilbabu-qed-42/c2026/tree/canvas-ai-poc The approach looks very promising from early testing but we need to update the UI to accommodate the changes. ## **Problem / Motivation** Canvas AI now builds a page component by component. While it is building, interacting with the canvas (adding or removing components) breaks t… ### [Add support for file fields using custom stream wrappers (currently only `public` is supported)](https://git.drupalcode.org/project/canvas/-/work_items/3577155) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: Darrell Green (codefever) | Labels: Contributed project blocker, category::feature, priority::major, shapeMatching Description: >>> [!note] Migrated issue Reported by: [darrellhq](https://www.drupal.org/user/356505) >>> Overview FileUriItemOverride::propertyDefinitions() adds a UriSchemeConstraint to the file_uri field type's value property with a hardcoded allowedSchemes => ['public']. Because this override is applied globally via hook_field_info_alter() in ShapeMatchingHooks, it affects all file entities — not just those used within Canvas components. This causes entity validation failures for any site that stores files using a non-public:// stream wrapper (e.g., s3:// via the S3FS module, or private://)… ### [Canvas AI: Expose Props of Blocks to the Agent](https://git.drupalcode.org/project/canvas/-/work_items/3569120) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative, AI Product Development, ai, category::bug Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) Related to !498 >>> Overview Currently CanvasAiPageBuilderHelper::getAllComponentsKeyedBySource() does this <?php      if ($source === SingleDirectoryComponent::SOURCE_PLUGIN_ID) {        $this->processSdc($component, $sdc_definitions, $output);      }      elseif ($source === JsComponent::SOURCE_PLUGIN_ID) {        $this->processCodeComponents($co… ### [Canvas icon / logo for Project Browser and project page](https://git.drupalcode.org/project/canvas/-/work_items/3545468) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: Novice, category::task, miscellaneous, priority::normal Description: >>> [!note] Migrated issue Reported by: [darren oh](https://www.drupal.org/user/30772) >>> Overview We need a visual representation of the project. The logo candidates for Experience Builder are not relevant now that the project has been renamed. Proposed resolution Candidate 1 Candidate 2 Candidate 3 > Related issue: [Issue #3507188](https://www.drupal.org/node/3507188) ### [Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan](https://git.drupalcode.org/project/canvas/-/work_items/3591729) State: closed | Updated: 2026-06-29 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, autoSave, category::bug, internalHttpApi Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` The interface-translation system (`locale`) scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` / `Drupal.formatPlural()` strings, reading each one with `file_get_contents()`. Canvas registers the draft asset library's JS as a root-relative route URL (`/canvas/api… ### [Strengthen test coverage for multi-translation multi-component instance automatic version updating](https://git.drupalcode.org/project/canvas/-/work_items/3591730) State: opened | Updated: 2026-06-25 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: technical debt, translation Description: The following discussion from !1271 should be addressed: - [ ] @wimleers started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1271204): (+4 comments) > :bug: This is not what happens: not only _selected_ translations are published, they _all_ are published. Thanks to > ```php > $snapshots = AutoSaveManager::groupContentEntityAutoSaves($publish_auto_saves)[$group_key]; > ``` > in the `POST` controller. > > If that weren't the case, the `ComponentTreeSymmetricalTranslationConstraintValidator` would fail on content entities, a… ### [Canvas AI: Component context required props missing required flag](https://git.drupalcode.org/project/canvas/-/work_items/3591655) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: Tormi Tabor (tormi) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, Novice Description: ## Problem A regression in `CanvasAiPageBuilderHelper::processSdc()` causes the `required: true` flag to be dropped from component context metadata. Current code: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], TRUE)) { $output[$source_id]['components'][$component_id]['props'][$prop_name]['required'] = TRUE; } ` The flag should instead be added to the prop metadata: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], … ### [Canvas AI: Remove hardcoded component source IDs](https://git.drupalcode.org/project/canvas/-/work_items/3591652) State: closed | Updated: 2026-06-25 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: The Update hook added in #3573571 uses hardcoded plugin IDS, Replace them with constants See: https://git.drupalcode.org/project/canvas/-/merge_requests/606#note_1080422 ### [Refactor away the brittle`PageRegion::forAutoSaveData()`](https://git.drupalcode.org/project/canvas/-/work_items/3591728) State: opened | Updated: 2026-06-25 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: auto-save, technical debt Description: The following[discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273102) from !1271 should be addressed: > :thinking: In principle, this needs tests. > > But this has been thoroughly manually tested. During that manual testing, @tedbow found a bug, for example, and it was _not_ here: `::testPageRegionComponentPropRemovalCreatesAutoSavesForTranslation()`. > > :bug: > 1. There are 6 calls to this method in total. 5 of them in tests. The sole remaining one is the one that led to discovering this is wrong in HEAD. > 2. That `@todo` has been there for 1.5 year, and… ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, componentSources, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [Draft: chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: opened | Author: Christian López Espínola (penyaskito), 795 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Symmetrically translatable config-defined component trees, STEP 2: change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions](https://git.drupalcode.org/project/canvas/-/work_items/3582478) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, Configuration schema, category::task, configManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !898 !901 !868 >>> Approach For high-level overview, see the change record. ADR: !901 Implementation MR #1: !962 in #3586342: Symmetrically translatable component trees, STEP 1: introduce `ComponentInstanceInputsConfigSchemaGeneratorInterface` Implementation MR #2: !898, here Implementation MR #3: !831 in https://git.drupalcode.org/project/canvas/-/work_items/3582464 Overview The explicit inputs for a component instance in a config-defined component tree currently looks like this: diff --gi… ### [Changing Metadata Clears Canvas AI Prompt Text](https://git.drupalcode.org/project/canvas/-/work_items/3558257) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [vipin.mittal18](https://www.drupal.org/user/319716) Related to !530 >>> Overview When composing a prompt in Canvas AI, if any page metadata (such as meta description) is modified before submitting the prompt, all previously entered text in the Canvas AI prompt field is erased. Proposed resolution Updating any metadata field (title, description, etc.) should not clear the text entered in the Canvas AI prompt field. The data in the Canvas AI prompt and in the metadata fields should be managed independently without interference from one another. St… ### [Boolean field values resetting when using Patterns](https://git.drupalcode.org/project/canvas/-/work_items/3591637) State: opened | Updated: 2026-06-30 | Author: Amanda Donnelly (aadownie) | Assigned: unassigned | Labels: Description: When using Patterns in the 1.5 update, boolean values are not staying their set value when using Patterns after content is edited. To reproduce: Add a component that uses a boolean value, set with a default 'true', and a basic text field. In my example this boolean was used to show/hide a section of markup. Create a page with this component added, but set the boolean to 'false', then create a pattern with this layout. Add a new page, and drag the pattern over, which should have this boolean set to 'false' hiding the markup. Edit the text field. When the preview reloads, the formerly hidd… ### [Cast transform treats serialized "0" as true for boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591739) State: opened | Updated: 2026-06-30 | Author: Dirk Hacker (dehacker) | Assigned: unassigned | Labels: Description: **Summary:** * Unchecked Drupal checkboxes serialize as `"0"`. * `transforms.cast` only treats `'false'` as false, then `Boolean(value)`. * `Boolean("0") === true` → unchecked booleans flip to `true` on auto-save when another field changes. **Repro:** 1. Component with two boolean props (e.g. Hero Standard `popup_form` + `ppc_header`). 2. Open in Canvas editor; leave `popup_form` unchecked, toggle `ppc_header`. 3. Observe `popup_form` saved as `true`. **Fix:** Explicit handling when `to === 'boolean'` for `'0'`, `0`, `''`, `null`, `'false'`. ### [Add Code Component prop type for multiline plain text](https://git.drupalcode.org/project/canvas/-/work_items/3591741) State: opened | Updated: 2026-06-26 | Author: Alex Bronstein (effulgentsia) | Assigned: unassigned | Labels: Description: SDCs can have a prop schema of: ``` type: string pattern: "(.|\r?\n)*" ``` to signify a multi-line string. Canvas uses a textarea widget for the content entry for such a prop. The Code Component Editor currently doesn't provide either a dedicated prop type or a setting within the Text prop type for this. ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: Gábor Hojtsy (goba), Ted Bowman (tedbow) | Labels: Usability, state::needsReview, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1303 [Fix high level translation settings experience for Canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1303) | State: opened | Author: Gábor Hojtsy (goba), 113 diff lines Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job for some component trees](https://git.drupalcode.org/project/canvas/-/work_items/3591734) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: Narendra Singh Rathore (NarendraR), Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, componentSources, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1296 [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) | State: opened | Author: Narendra Singh Rathore (NarendraR), 575 diff lines - MR !1313 [fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1313) | State: merged 2026-06-30 | Author: Christian López Espínola (penyaskito), 292 diff lines Description: I went to try Canvas 1.7.0 translation today with a brand new install of Drupal CMS Haven. I don't think the issue is due to Haven, so submitting here. I think previously this config form had separate settings under the components for the tree and inputs but that is not an option that I have for some reason, so this is how I have it set up. ![Screenshot 2026-06-26 at 11.29.44.png](https://git.drupalcode.org/-/project/19391/uploads/fe3690f7cf31f5eafd12c4cf6de93f29/Screenshot_2026-06-26_at_11.29.44.png){width="755" height="600"} I have `canvas_dev_translation` enabled and `content|config|inte… ### [Bump drupal-canvas package to 0.4.2](https://git.drupalcode.org/project/canvas/-/work_items/3591694) State: closed | Updated: 2026-06-26 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: JavaScript, category::task, dependencies, priority::normal ### [Add translation metadata to code component's `mainEntity` data](https://git.drupalcode.org/project/canvas/-/work_items/3591738) State: opened | Updated: 2026-06-30 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers) | Labels: themeBuilder, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1301 [#3591738 add translation data to code component provider](https://git.drupalcode.org/project/canvas/-/merge_requests/1301) | State: opened | Author: Ben Mullins (bnjmnm), 579 diff lines Description: This would make it possible to have a language switcher code component ### [Access check when publishing auto-save items needs be performed earlier](https://git.drupalcode.org/project/canvas/-/work_items/3591736) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, category::bug, internalHttpApi Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1302 [#3591736 "Access check in ApiAutoSaveController::post() should be performed earlier"](https://git.drupalcode.org/project/canvas/-/merge_requests/1302) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 204 diff lines Description: With the changes in !1271 the access check happens too late in the handling of auto-save items publishing request. If a user submits a list to `ApiAutoSaveController::post()` of entities they have no access to, the entities get filtered out in `ApiAutoSaveController::getPublishableAutoSaves()` via: ``` $access = $item['entity']->access('view label', return_as_object: TRUE); ... return $access->isAllowed() && ($item['is_default_translation'] ?? TRUE); ``` This results in a s set of "publishable auto-save items" that misses the entities the user has submitted. This then fail… ### [Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/work_items/3571785) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1309 [Draft: #3571785: Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/merge_requests/1309) | State: opened | Author: Wim Leers (wimleers), 1771 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview One of the things that @phenaproxima has expressed multiple times as being very hard to understand for somebody proficient-at-Drupal-but-new-to-Canvas, is Canvas' concept of "dangling component trees". https://git.drupalcode.org/project/canvas/-/work_items/3571116 already got us a good chunk of the way there to eliminating/eradicating this altogether. Proposed resolution Completely eradicate it. User interface changes None. > Related issue: [Issue #3571116](https://www.drupal.org/node/35711… ### [Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing](https://git.drupalcode.org/project/canvas/-/work_items/3581133) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: Adam G-H (phenaproxima), Wim Leers (wimleers) | Labels: AI-accelerated, Chicago2026, DX (Developer Experience), Novice Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1297 [#3581133: Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing](https://git.drupalcode.org/project/canvas/-/merge_requests/1297) | State: opened | Author: Wim Leers (wimleers), 4716 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !797 >>> Overview :pray: Let's use the `FQCN::class` wherever we can. Reduces magic, makes it easier to navigate & understand these tests. — yours truly at https://git.drupalcode.org/project/canvas/-/merge_requests/651#note_727491 Proposed resolution Automate this feedback. User interface changes None. > Related issue: [Issue #3575719](https://www.drupal.org/node/3575719) ### [Non-Canvas (foreign) Drupal form textareas rendered inside Canvas are read-only and lose their #default_value](https://git.drupalcode.org/project/canvas/-/work_items/3591737) State: opened | Updated: 2026-06-26 | Author: Oleksandr Antonchyk (Anton4yk) | Assigned: unassigned | Labels: Description: When a Drupal form that is not one of Canvas's own react-hook-form–managed forms is rendered inside the Canvas UI (for example, content loaded into an AJAX modal dialog), its textarea fields render incorrectly in two ways. Canvas componentises such forms through hyperscriptify → DrupalTextArea → TextArea, but withRHF only enhances forms whose formId is page_data_form or component_instance_form (ui/src/components/form/react-hook-form/withRHF.tsx). For any other form, it returns the bare component, so the enhancements that those components depend on are missing. Bug 1 — … ### [CKEditor's source element is not tagged with the active text format inside Canvas, breaking modules that rely on core's editor-attach contract (e.g. ai_ckeditor)](https://git.drupalcode.org/project/canvas/-/work_items/3591735) State: opened | Updated: 2026-06-26 | Author: Oleksandr Antonchyk (Anton4yk) | Assigned: unassigned | Labels: Description: Canvas mounts CKEditor 5 through the React @ckeditor/ckeditor5-react component in ui/src/components/form/components/drupal/DrupalFormattedTextArea.tsx. Because of this, Drupal core's editor.js never runs for these editors. Core's editor.js is what normally sets data-editor-active-text-format on the editor's source element (core/modules/editor/js/editor.js). Any module th… ### [Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()](https://git.drupalcode.org/project/canvas/-/work_items/3591733) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Wim Leers (wimleers), Kunal Sachdev (kunal.sachdev) | Labels: autoSave, category::task, priority::minor, state::fixed Description: **Overview** There is a workaround to prevent locale's js_alter hook from trying to file_get_contents() the draft JS auto-save URL added in test `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` which was added in #3591654 and which also has a @todo to remove this workaround in #3591719 which is closed as a duplicate of #3591729 where the main issue was resolved. Now that the main issue is resolved in #3591729 so we can remove this workaround. ### [Remove `canvas_dev_cd` flag module](https://git.drupalcode.org/project/canvas/-/work_items/3591732) State: opened | Updated: 2026-06-26 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, auto-save, internalHttpApi Description: In !1290 we have put the conflict detection behind the `canvas_dev_cd` module. All the other MRs in the %"Review of changes and Conflict resolution" milestone will follow suit. Once the all of the MvP items are reviewed, approved and merged - we can remove the flag. ### [Canvas AI: In-progress chat messages disappear when editing page metadata during an active run](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-06-30 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::needsReview Description: Follow-up to #3558257. ### Problem While the AI agent is running, editing the page title or meta description removes the in-progress status messages from the chat UI. ### Steps to reproduce 1. Install Canvas AI on Drupal CMS 2 (starter recipe). 2. Open a new page and open the chatbot. 3. Prompt: `Add an "Our Plans" section for SportsFlix, a sports streaming platform`. 4. While it is still running, type in the description or title field. 5. The in-progress messages disappear from the chat UI. ### Root cause The in-progress status bubble is added imperatively in `startPolling()` via `chatEl.a… ### [canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side)](https://git.drupalcode.org/project/canvas/-/work_items/3591751) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1315 [fix: #3591751 Compile JSX server-side for AI-created code components](https://git.drupalcode.org/project/canvas/-/merge_requests/1315) | State: opened | Author: Rajab Natshah (RajabNatshah), 188 diff lines Description: ## Problem/Motivation Code components (`js_component`) created or edited **programmatically** — e.g. by the AI tools in `canvas_ai` — render as `[object Object]` in the editor preview and on the page. They never hydrate. ## Cause `canvas_ai` stores the source JSX but leaves the compiled JS empty: - `modules/canvas_ai/src/Plugin/AiFunctionCall/CreateComponent.php` → `"compiledJs" => ""` - `modules/canvas_ai/src/Plugin/AiFunctionCall/EditComponentJs.php` → `"compiledJs" => ""` Code components are normally compiled in the **browser** editor (swc/wasm) on save, which sets `compiledJs`. The pr… ### [Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/work_items/3591750) State: closed | Updated: 2026-06-30 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1314 [chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/merge_requests/1314) | State: merged 2026-06-30 | Author: Bálint Kléri (balintbrews), 531 diff lines Description: A CLI `push` can update `canvas.asset_library.global` in multiple steps during the same push. One update writes global CSS/JS fields, and a later update writes dependency manifest fields such as `imports`, `assets`, and `shared`. This is brittle because repeated `PATCH` requests to the same config entity in one `push` can depend on backend behavior around intermediate/staged config state. If a later `PATCH` is applied against an older version of the entity, fields from the earlier `PATCH` can be lost. Change the CLI push flow to: 1. Build and prepare the global CSS/JS asset library update. … ### [Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/work_items/3591746) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1310 [#3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/merge_requests/1310) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 33 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality: 1. `npm run lint:cspell` is almost always forgotten, probably because it currently says: _"ALWAYS run `npm run fix` when JavaScript code is updated.". (Which implies it's only necessary for front-end changes, which is not true) 2. Often, but definitely not always, are there PHPCS and/or PHPStan violations. 3. The most common PHPCS violation: 80 cols rule, and specifically fo… ### [Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s](https://git.drupalcode.org/project/canvas/-/work_items/3591744) State: closed | Updated: 2026-06-30 | Author: Vipin Mittal (vipin.mittal18) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers), utkarsh_33 (Utkarsh_33) | Labels: Needs screenshots, category::bug, state::fixed, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1308 [Resolve "Language Switcher displays "Untitled page" instead of Actual Title"](https://git.drupalcode.org/project/canvas/-/merge_requests/1308) | State: merged 2026-06-30 | Author: utkarsh_33 (Utkarsh_33), 50 diff lines Description: When translating a config template, the Language Switcher pop-up displays "Untitled Page" instead of the actual page title. **Steps to Reproduce** 1. Open a page associated with a `ContentTemplate`. 1. Open the Language Switcher pop-up to create or edit a translation. 1. Observe the title displayed in the pop-up. **Expected Result** The Language Switcher pop-up should display the actual page title so that users can easily identify the page being translated. ### [Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/work_items/3591747) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1311 [#3591747: Add `docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/merge_requests/1311) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 9 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality that introduced 2 new ADRs, both of which were AI-accelerated: 1. It referenced the current state of the implementation, pointing to prior issues, future issues and `@todo`s 2. In its writing, it would refer to concrete code in Drupal core, documentation handbook pages for Drupal core etc (which may change!) instead of referring exclusively to other ADRs ### [Have recipe imports validate prop value structure](https://git.drupalcode.org/project/canvas/-/work_items/3591749) State: opened | Updated: 2026-06-30 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Description: I ran into a scenario where a recipe included a page that had components with invald value structure The `text` property was a formatted text field, which expected a map with text and format properties. ``` components: - uuid: a548b48d-58a8-4077-aa04-da9405a6f418 component_id: js.text inputs: text: "You are not authorized to access this page." ``` This incorrectly formatted value imported fine, and even showed up in the canvas UI without issue but there was a fatal error when `\Drupal\canvas\Tmgmt\ComponentInputsTranslatablesExtractor` attempted to identify tra… ### [Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map](https://git.drupalcode.org/project/canvas/-/work_items/3591748) State: opened | Updated: 2026-06-29 | Author: Andrew Belcher (andrewbelcher) | Assigned: unassigned | Labels: category::bug, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1312 [🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope](https://git.drupalcode.org/project/canvas/-/merge_requests/1312) | State: opened | Author: Andrew Belcher (andrewbelcher), 153 diff lines Description: _Claude Code was used to trace and analyse the bug, and write up the issue._ ## Problem/Motivation When a code component (JavaScript component) imports another code component that *also* shares a dependency with it, the shared component forms a "diamond" — `Pricing` imports both `Card` and `Button`, and `Card` also imports `Button` (one shared leaf): ```mermaid graph TD Pricing -->|"@/components/demo_card"| Card Pricing -->|"@/components/demo_button"| Button Card -->|"@/components/demo_button"| Button ``` In the browser the page fails to hydrate with: ``` [astro-island] Error … ### [Enabling content translation of Canvas pages results in an unsupported state (asymmetrical translations) by default; forward port core's #3606969](https://git.drupalcode.org/project/canvas/-/work_items/3591745) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: unassigned | Labels: category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1318 [Add solution to onboarding with content translation to disable tree...](https://git.drupalcode.org/project/canvas/-/merge_requests/1318) | State: opened | Author: Gábor Hojtsy (goba), 131 diff lines Description: Currently content translation allows to configure both inputs and component tree translation. However Canvas UI currently only supports inputs translation not different component trees. The default configuration on the content translation UI enables both, resulting in an unsupported combination. Talking to the Canvas team the component tree part is intended to be marked translatable, so it can be supported in the future. So instead of changing the translatability of that, the UI should be modified to disallow configuring the tree to be translatable. ![Screenshot 2026-06-29 at 12.28.19.png](h… ### [Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality](https://git.drupalcode.org/project/canvas/-/work_items/3591583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, category::task, priority::critical, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1151 >>> Overview It's 2026. The majority of software developers is either using AI LLMs (but everybody says "AI" despite it not actually being intelligent so I'll run with it anyway) voluntarily or is pressured to do so. Whichever your stance may be, it is the reality. In Drupal core (see #3585894: LLM harm reduction in Drupal core contribution, AGENTS.md guidelines). But also in Drupal Canvas. Drupal CMS already adopted it (https://git.drupalcode.org/project/drupal_cms/-/work_items/3569529… ### [Updated translation is not reflected on preview](https://git.drupalcode.org/project/canvas/-/work_items/3591743) State: closed | Updated: 2026-06-30 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Needs steps to reproduce, category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1307 [Fix translation for newly added component.](https://git.drupalcode.org/project/canvas/-/merge_requests/1307) | State: closed | Author: Chandan Singh (chandu7929), 37 diff lines Description: Adding translation for newly added component doesn't reflect on page preview: - Create a canvas page - Drag and drop heading component on the page - Publish changes - Translate the created canvas page - Navigate back to canvas - drag and drop text component on page - publish changes - Update translation by adding translation for text component as well. - Navigate to canvas - preview Afrikaans translation - observe only Heading component is present for Afrikaans translation where as for English heading and text both are present ### [Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent](https://git.drupalcode.org/project/canvas/-/work_items/3552818) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project soft blocker, DevDaysAthens2026, category::bug, code Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !961 >>> Problem/Motivation Canvas decorates plugin.manager.sdc: Drupal\canvas\Plugin\ComponentPluginManager: decorates: plugin.manager.sdc parent: Drupal\Core\Theme\ComponentPluginManager arguments: ['@entity_type.manager', '@Drupal\canvas\ComponentIncompatibilityReasonRepository'] tags: - { name: canvas.component_source } But the implementation may be incorrect: https://git.drupalcode.org/project/canvas/-/blob/1.x/src/Plugin/ComponentPluginManager.php It extends Drup… ### [Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity](https://git.drupalcode.org/project/canvas/-/work_items/3590840) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1120 [Resolve #3590840 "Simplify codeowners further"](https://git.drupalcode.org/project/canvas/-/merge_requests/1120) | State: merged 2026-06-30 | Author: Wim Leers (wimleers), 157 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1120 >>> Overview https://git.drupalcode.org/project/canvas/-/work_items/3558237 made CODEOWNERS a lot simpler. It made it more pragmatic. 3 observations: It has helped to increase velocity. Especially with multiple teams working in parallel on various Canvas features. The most pain we've seen in the ~6 months since then are in the area of CI: flaky tests etc. @justafish has been the main driver towards fixing that velocity killer. The most risk we've seen since then is in the area of data … ### [Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()`](https://git.drupalcode.org/project/canvas/-/work_items/3530808) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, blocker, category::bug, componentSources Description: >>> [!note] Migrated issue Reported by: [phenaproxima](https://www.drupal.org/user/205645) Related to !448 !1157 >>> Overview If you have an SDC with a date prop, Experience Builder will mistakenly create a Component config entity for it that doesn't comply with config schema. The component entity will have a default_value: { value: 'whatever' }} structure, which doesn't match the field.value.datetime config schema type from core. Proposed resolution @larowlan already went down this rabbit hole and discovered that -- strange as this (and it really is) -- core's doing the right thing here.… ### [Prevent creation of Canvas pages in a non-default language at API level via validation constraint](https://git.drupalcode.org/project/canvas/-/work_items/3591742) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, data integrity, page Description: #3591625+ prevented the creation of Canvas `Page`s via the UI/entity form. Good. But not enough. @goba reported this in Slack: > I don't see a reason why Canvas can't force field values in this alter further, I agree only disabling this does not force the value per say, it assumes the value was disabled to begin with. But the field setting could be forced a similar way. He opened #3591740+ for improving the help text that `\Drupal\canvas\Hook\ModuleHooks::afterBuildCanvasPageLanguageSettings()` adds. But in addition to that, we should make Canvas' `Page`s fail validation when they're being… ### [Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context](https://git.drupalcode.org/project/canvas/-/work_items/3591654) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Ignacio Sánchez Holgueras (isholgueras), Kunal Sachdev (kunal.sachdev) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Description: **Overview** For content template in Canvas, the language selector in top bar shows a "Delete translation" option for languages that have a translation of the preview entity. However, the delete link generated by `ApiLayoutController::get()` currently always points to `canvas.api.content.translation.delete`, which is hardcoded to the `canvas_page` entity type and will fail to resolve for other entity types used as preview entities. **Proposed Solution** Use the dedicated `canvas.api.config.translation.delete` route in the template context - update `ApiLayoutController::get()` to point the de… ### [Prevent creation of Canvas pages in a non-default language in the UI/via the entity form](https://git.drupalcode.org/project/canvas/-/work_items/3591625) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: **Overview** - Currently, when creating a new Canvas page, the language selector displays all languages configured on the website, including both the default language and translated languages. - This behaviour allows users to create Canvas pages directly in non-default languages. However, Canvas pages should only be created in the site's default language (source language). - For non-default languages, users should not create separate Canvas pages. Instead, translated content should be managed through the translation interface, where translations are entered against the source-language Canvas … ### [[PP-1] Create Canvas pages in any enabled content language](https://git.drupalcode.org/project/canvas/-/work_items/3546597) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Needs followup, Needs tests, category::feature, page Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !494 >>> Overview Today, it is not possible to create a new Canvas page in a non-default language on the UI. Let's say we have 2 enabled languages in the website, English (default) and Spanish. It is not possible to create a Canvas page with langcode Spanish then. While it is possible, to create the Spanish language page on the command line or via Drupal recipes, once that is created, editing the page can be done only without the language prefix in the URL. With the language prefix in the URL, … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: opened | Updated: 2026-06-30 | Author: AKHIL BABU (AkhilBabu) | Assigned: Abhishek Dhariwal (adaptative) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… ### [Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent](https://git.drupalcode.org/project/canvas/-/work_items/3591457) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) >>> Overview This issue will get broken down in to several sub issues in future. https://git.drupalcode.org/project/canvas/-/work_items/3582390 would add automated tests for the Canvas AI Orchestrtator agent. In the same way create tests for the Page builder agent and template builder agent so that we could save a lot of time in manual testing whenevr their system prompts changes. On a high level, to achieve this. For the tests, the agent should only see the components available in the canvas_test_s… ### [Support entity-context frame type in _linkPropToEntityValue for PropSource binding](https://git.drupalcode.org/project/canvas/-/work_items/3591757) State: opened | Updated: 2026-07-01 | Author: kyotaro (kyk) | Assigned: unassigned | Labels: Description: ### Summary In `ui/src/features/layout/layoutModelSlice.ts`, the `_linkPropToEntityValue` Redux thunk constructs a `valuePayload` for `previewApi.endpoints.updateComponent.initiate()`. The `type` field of this payload is currently hardcoded to `'template'`: ```ts const valuePayload = { type: 'template' as EditorFrameContext, componentInstanceUuid: componentToUpdateId, componentType: `${selectedComponentType}@${version}`, ... }; ``` `EditorFrameContext` is a discriminated union representing what kind of editor frame is active — `'template'` for canvas_page editing, `'entity'` (or sim… ### [Reconciling media in CLI should respect sync settings](https://git.drupalcode.org/project/canvas/-/work_items/3591756) State: closed | Updated: 2026-06-30 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::bug, cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1323 [fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings](https://git.drupalcode.org/project/canvas/-/merge_requests/1323) | State: merged 2026-06-30 | Author: Bálint Kléri (balintbrews), 624 diff lines Description: The `reconcile-media` CLI command currently doesn't respect the `sync` settings from `canvas.config.json`. It should reconcile media only for those resources that are enabled for sync. Note that besides configuring `sync` in `canvas.config.json`, users can use CLI flags and legacy environment variables for the `push` command. The `reconcile media` should support the same options. ### [Introduce `ComponentSourceInterface::getLabelForExplicitInputKey()`](https://git.drupalcode.org/project/canvas/-/work_items/3586490) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, blocker, category::task, componentSources Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !968 >>> Overview Discovered at https://git.drupalcode.org/project/canvas/-/merge_requests/882#note_760120 For the component instance form of SDCs and code components, we need to know the label. Currently, the logic for that is hardcoded in \Drupal\canvas\Plugin\Canvas\ComponentSource\GeneratedFieldExplicitInputUxComponentSourceBase::buildComponentInstanceForm(). Which means it's not available for translation. Proposed resolution Add ComponentSourceInterface::getLabelForExplicitInput(). Refa… ### [Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions`](https://git.drupalcode.org/project/canvas/-/work_items/3591683) State: opened | Updated: 2026-06-30 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, Novice, autoSave, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1322 [#3591683: Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions`](https://git.drupalcode.org/project/canvas/-/merge_requests/1322) | State: opened | Author: Wim Leers (wimleers), 25 diff lines Description: The following discussion from !1189 should be addressed: - [ ] @larowlan started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1189#note_1199179): (+1 comment) > I think in another issue we patched core for this via our own .schema.yml file - [ ] @wimleers confirmed: > Indeed — #3583684 committed `config/schema/core_fix_forward_port.schema.yml` with `core.base_field_override.*.*.*.third_party.content_translation` — doesn't that mean this is not necessary? ⇒ we should be able to revert those config schema exclusions from the test coverage ### [[later phase] Add alter hook for marking additional SDC/code component prop shapes AND/OR specific props as translatable](https://git.drupalcode.org/project/canvas/-/work_items/3584178) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project blocker, Needs issue summary update, Needs upstream feature, category::feature Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview Follow-up to https://git.drupalcode.org/project/canvas/-/work_items/3582478. \Drupal\canvas\Plugin\Canvas\ComponentSource\GeneratedFieldExplicitInputUxComponentSourceBase::getExplicitInputDefinitionsAsConfigSchemaMapping() supports the following prop shapes:       // Plain strings, HTML strings and URLs are considered translatable. So:      // - type: string      // - type: string: format: iri    &… ### [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/work_items/3591754) State: opened | Updated: 2026-06-30 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1320 [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1320) | State: opened | Author: Lauri Timmanee (lauriii), 1366 diff lines Description: The logic that extracts a `component_tree` field's translatable strings and writes translations back lives in `ComponentTreeFieldProcessor`, which extends a `tmgmt_content` class. So it only loads when TMGMT is installed even though the logic itself does not use TMGMT. Non-TMGMT translation features (e.g. config translation) cannot reuse it without forking. ## Proposed Resolution Move the TMGMT-free logic into a standalone `ComponentTreeTranslator` service under `src/Translation/`, and make `ComponentTreeFieldProcessor` a thin TMGMT adapter that delegates to it. Behavior is unchanged. Add a … ### [PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively](https://git.drupalcode.org/project/canvas/-/work_items/3586673) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::minor, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1321 [#3586673: PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively](https://git.drupalcode.org/project/canvas/-/merge_requests/1321) | State: opened | Author: Wim Leers (wimleers), 425 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !975 >>> Overview While working on https://git.drupalcode.org/project/canvas/-/work_items/3586535, I discovered that the selective exclusions that #3511705: Update PHPCS config to match Drupal 11 introduced do not see to actually work. I noticed because we needed to add one new selective exclusion: https://git.drupalcode.org/project/canvas/-/merge_requests/969#note_807715 Proposed resolution Fix by following the same pattern. User interface changes > Related issue: [Issue #3586535](https://w… ### [DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort`](https://git.drupalcode.org/project/canvas/-/work_items/3591753) State: closed | Updated: 2026-06-30 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1319 [#3591753: DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort`](https://git.drupalcode.org/project/canvas/-/merge_requests/1319) | State: merged 2026-06-30 | Author: Wim Leers (wimleers), 24 diff lines Description: - CI: `phpcs` is green - locally: not. This slows down both humans _and_ LLMs. ```shell $ composer run phpcs > mkdir -p test-results && mkdir -p .cache/phpcs && composer --working-dir=$(composer run composer-root) exec phpcs -- --standard=$(pwd)/phpcs.xml --report-width=auto --colors -s --report-junit=$(pwd)/test-results/phpcs.xml --report-full --report-summary $(pwd) > d=.; i=0; while [ $i -lt 10 ]; do if [ -f "$d/composer.json" ] && cat "$d/composer.json" | grep -q '"type"' && cat "$d/composer.json" | grep -q '"project"'; then readlink -f "$d"; break; fi; d="../$d"; i=$((i+1)); done FILE… ### ["block" ComponentSource plugin should never store inputs for `label` and `label_display`, because they're not available for Canvas users](https://git.drupalcode.org/project/canvas/-/work_items/3572850) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Lauri Timmanee (lauriii) | Labels: Configuration schema, Needs issue summary update, Needs product manager review, category::task Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !584 >>> Overview Quoting https://git.drupalcode.org/project/canvas/-/work_items/3561392.2: The block ComponentSource plugin goes through great pains to hide label and label_display from Canvas users, but then 1) actually goes back and restores it just prior to saving, 2) doesn't actually validate these UNLESS there's other block plugin settings. It also means pointless data ends up being stored: INSERT INTO `canvas_page__components` (`bundle`, `deleted`, `entity_id`, `revision_id`, `langcod… ### [Add side-by-side review flow for selected Page changes before publishing](https://git.drupalcode.org/project/canvas/-/work_items/3591752) State: opened | Updated: 2026-06-30 | Author: Ravi Maniyar (ravi.maniyar.123) | Assigned: unassigned | Labels: React, ui Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1317 [Draft: feat(Conflict detection): #3591591 Expand conflict resolution UI with...](https://git.drupalcode.org/project/canvas/-/merge_requests/1317) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 6797 diff lines Description: Summary Add a “Review selected changes” flow for non-conflicted Page changes so editors can compare the published version against the current autosave before publishing. This should reuse the existing side-by-side comparison UI used by conflict resolution, but must not change conflict detection or conflict resolution behavior. Problem Currently, side-by-side comparison is mainly available during conflict resolution. Editors also need a way to review selected Page changes when there are no conflicts, especially to compare autosaved changes against the published version before publishing. R… --- MERGE REQUESTS (2w) --- ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities"](https://git.drupalcode.org/project/canvas/-/merge_requests/1194) State: opened | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591601-rudimentary-conflict-resolution-ui-be | 1198 diff lines Description: ## What this branch does **TL;DR:** Modifies the `ApiContentAutoSaveControllers::patch()` to allow updating auto-save item conflict as resolved; Adds optional argument to the `ApiLayoutController::get()` that allows fetching layout of a published entity; all new functionality is hidden behind `canvas_dev_cd` **Long version:** This MR adds "Ability to resolve conflict by keeping changes in the auto-save" and an "ability to load the visual preview of both auto-save and published version of the entity with conflict" capability described in the https://git.drupalcode.org/project/canvas/-/milest… ### [feat(Theme builder): #3585355 `content-entity-reference` prop selection UI: a "Typed Data browser" to let a Code Component Developer pick which data to consume](https://git.drupalcode.org/project/canvas/-/merge_requests/1182) State: merged 2026-06-17 | Author: wotnak | Branch: 3585355-entity-reference-sel | 2496 diff lines Description: Implements entity reference selection UI for managing content entity reference props in Canvas code editor. ([designs](https://www.figma.com/design/ZSlXxBDIGLV2riMAxCv9QE/Canvas-Code-Editor?node-id=158-33847&p=f&t=aRfFva3ijmO307ck-0)) AI-Generated: Yes (Used Claude Code and Codex to plan and iterate over the implementation). ## Testing instructions - [ ] pull changes, rebuild the ui (`npm run build -w ui`) and clear cache - [ ] open Canvas code components list and open one of the components in the code editor (or create a new one) - [ ] add a new prop of type `Content entity reference` - [ ]… ### [feat(Data model): #3591678 Coalesce reference fields consumed only through nested objects](https://git.drupalcode.org/project/canvas/-/merge_requests/1252) State: merged 2026-06-18 | Author: Christian López Espínola (penyaskito) | Branch: 3591678-coalesce-nested-only-refs | 505 diff lines Description: Follow-up to !1112 (notes [1200321](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200321) / [1200324](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200324)). ## What When a reference field has no directly-picked value and multiple references descend through it into the same bundle on different final fields, `Coalescer::coalesce()` merges them into one reference-only `FieldObjectPropsExpression`: ``` ℹ︎␜entity:node:article␝uid␞␟{mail↝entity␜␜entity:user␝mail␞␟value,name↝entity␜␜entity:user␝name␞␟value} ``` `buildReferencePayload()` descends su… ### [feat(Conflict detection): #3587526 "Client side prevention of publishing"](https://git.drupalcode.org/project/canvas/-/merge_requests/1018) State: merged 2026-06-29 | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3587526-prevention-of-publishing | 200 diff lines Description: Client side changes for https://git.drupalcode.org/project/canvas/-/work_items/3587526+ This MR adds conflict handling for pending auto-save changes so users cannot publish changes that have unresolved conflicts. When a pending change is marked as conflicted, the review UI now: - Shows a conflict warning in the unpublished changes panel - Disables selection for conflicted changes - Excludes conflicted changes from Select All - Still allows non-conflicted changes to be selectively published The pending changes API response is also normalized so the frontend can handle both normal pending ch… ### [Issues/Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/merge_requests/813) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3556922-canvas-ai-an | 278 diff lines Description: Closes #3556922 ### [Create tools and update agents](https://git.drupalcode.org/project/canvas/-/merge_requests/719) State: opened | Author: AKHIL BABU (AkhilBabu) | Branch: 3545816-simple-approach-to-v2 | 1004 diff lines Description: Closes #3545816 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/canvas/-/merge_requests/1172) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2669 diff lines Description: Relates to #3591603. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-testset-854160. ### [Resolve #3587161 "Integrate ddev local devepment enviroment into canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1014) State: opened | Author: Jakob P (japerry) | Branch: 3587161-integrate-ddev-drupal-contrib-into | 1948 diff lines Description: This MR is designed to converge the various add-ons used to support canvas into one centralized and recommended development environment. It uses the architecture from ddev-drupal-contrib (but doesn't bring in the addon, see below) to create an ephemeral Drupal environment within the module, and add scaffolding to support the various test systems used within Canvas, including phpunit, Cypress, and Playwright (via the Lullabot/ddev-playwright add-on). It also merges in UI commands from the ddev-drupal-xb-dev addon, which shouldn't be needed anymore once this MR lands. ## Why ddev-drupal-contrib… ### [Resolve #3589155 "Rector ci job"](https://git.drupalcode.org/project/canvas/-/merge_requests/1142) State: opened | Author: Wim Leers (wimleers) | Branch: 3589155-rector-CI-job | 421 diff lines Description: New CI job, that helps us chase upstream (PHP) changes. Initially, only core changes. Partially AI-accelerated (see commit prefixed by :robot:) ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3589155 ### [#3587711 fix: code component exceptions after prop type change](https://git.drupalcode.org/project/canvas/-/merge_requests/1015) State: opened | Author: Ted Bowman (tedbow) | Branch: 3587711-remove-check | 1246 diff lines Description: When a Js code component's prop type changes between saves (eg. `string` -> `integer`), any existing page instances crashes with an exception on the next edit. The reason is because `JsComponent` was using `GeneratedFieldExplicitInputUxComponentInstanceUpdater`, which blocks updates whenever a prop's storage type changes, making the component->validateProps to fail. **Fix**: Introduce a new `JsComponentInstanceUpdater` for Code Components to allow shape changes and data loss. ## Steps to test - [ ] Create a JS code component with a required `string` prop (`required_text`) and an optional `s… ### [Issue #3580209: [Notifications] notification storage and service](https://git.drupalcode.org/project/canvas/-/merge_requests/762) State: merged 2026-03-26 | Author: Sally Young (justafish) | Branch: 3580209-notifications-notification-storage | 803 diff lines Description: Closes #3580209 Builds on work in https://git.drupalcode.org/issue/canvas-3573776/-/tree/3573776-canvas-needs-a - [ ] Adds canvas_notification and canvas_notification_read database tables via hook_schema() and canvas_update_10014() - [ ] Implements CanvasNotificationHandler service with create(), getRecent(), markRead(), purgeStaleProcessing(), and deleteExpired() methods - [ ] Registers the service … ### [Issue #3580212: [Notifications] cron cleanup](https://git.drupalcode.org/project/canvas/-/merge_requests/830) State: merged 2026-04-01 | Author: Sally Young (justafish) | Branch: 3580212-notifications-cron-cleanup | 352 diff lines Description: Closes #3580212 - Adds automatic cleanup of stale and expired notifications via cron - Stale processing notifications (older than 30 minutes) are purged and replaced with error notifications - Expired notifications older than 30 days are deleted along with their associated read entries ## Testing instructions - [ ] Create a stale processing notification (31m old) ``` ddev drush php-eval " \$handler = \Drupal::service(… ### [Resolve #3588546: Add content entity cache tags to auto-saves/pending response cacheability](https://git.drupalcode.org/project/canvas/-/merge_requests/1057) State: merged 2026-05-07 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3588546-add-content-entity | 68 diff lines Description: Adds `enforceIsNew(FALSE)` call when creating a new entity in the `AutoSaveManager::getAllAutoSaveList()`. Updates existing tests accordingly. Adds additional tests to prove that endpoint cache clears on entity cache tag invalidation. Closes #3588546 ### [Resolve #3588038 "Refactor auto save endpoint"](https://git.drupalcode.org/project/canvas/-/merge_requests/1047) State: merged 2026-05-07 | Author: Shubham Prakash (shubham.prakash) | Branch: 3588038-refactor-auto-save-endpoint | 271 diff lines Description: Updates `openapi.yml`, controller, tests and react code to support `auto-saves/pending` returning all current auto-save entries in wrapped in a top level `data` property. I have not used any AI in this MR, but it seems that @shubham.prakash did, although unclear what tool he used and for what. ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3588038 ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [chore(Theme builder): #3591711 Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/merge_requests/1279) State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews) | Branch: 3591711-issue-branch | 191 diff lines Description: Adds a hidden `canvas_dev_er` module that exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor only offers content entity reference props when the flag is enabled, while existing props remain editable. AI use: This merge request was prepared with assistance from OpenAI Codex. ### [#3591654 "Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context"](https://git.drupalcode.org/project/canvas/-/merge_requests/1234) State: merged 2026-06-24 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591654-update-the-delete-link-generation-in-apilayoutcontrollerphp-to-use-canvasapiconfigtranslationdelete-in-the-template-context | 488 diff lines Description: ## Testing instructions - [ ] Enable the `canvas` `canvas_test_sdc` `language` `canvas_dev_translation` `content_translation` `config_translation` modules. - [ ] Visit `/admin/config/regional/language` and add French. - [ ] Create an Article. - [ ] Visit the Canvas editor and add a template for article full content. - [ ] Add a Heading/Hero component to the template and publish the template. - [ ] Verify that checkmark is displayed only for english language in language selector drop down in top bar. - [ ] Visit `admin/structure/content-template/node.article.full/translate` to translate the con… ### [fix(ui): #3591716 boolean props auto-enable when another prop is changed (1.6.0)](https://git.drupalcode.org/project/canvas/-/merge_requests/1286) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3591716-1.6.0 | 4888 diff lines Description: Variant of MR !1285 based on the 1.6.0 release tag, for sites on Canvas 1.6.0. Same fix: twig checkbox template, DrupalToggle, react-hook-form getCurrentValueFromProps, and layoutModelSlice falsy-default preservation. Built ui/dist bundle is provided via the release patch (gitignored on dev). ### [fix(ui): #3591716 boolean props auto-enable when another prop is changed](https://git.drupalcode.org/project/canvas/-/merge_requests/1285) State: opened | Author: Alamgir Hossain (alamgir.hossain.cse) | Branch: 3591716-fix-boolean-props-auto-enable | 96 diff lines Description: ## Summary - Boolean props in Canvas component forms auto-enable when any other prop is changed. - Two root causes identified and fixed across 3 files. ## Root causes & fixes **1. `|| []` coerces `false` to `[]` — `layoutModelSlice.ts` lines 559 & 566** During component drop, `buildInitialData()` ran `prop.default_values?.resolved || []`. For boolean props with default `false`: `false || [] = []` (truthy empty array). Changed to `?? []` so `false` is preserved. **2. Twig renders `element['#value']` as `'0'` during AJAX rebuilds — `input--checkbox--inwidget-boolean-checkbox.html.twig`** D… ### [Fix flat named component ESLint entrypoint detection](https://git.drupalcode.org/project/canvas/-/merge_requests/1283) State: closed | Author: Bálint Kléri (balintbrews) | Branch: 3591717-flat-named-component-eslint-entrypoints | 177 diff lines Description: ## Summary - Detect every active flat named component entrypoint in `@drupal-canvas/eslint-config`. - Keep named metadata precedence aligned with component discovery. - Add regression coverage for sibling flat entrypoints and explicit entrypoint imports. ## Testing - [x] `npm run fix` - [x] `npm run test` in `packages/eslint-config` - [x] `npm run type-check` in `packages/eslint-config` ## AI use This merge request includes code and test changes written with OpenAI Codex under human direction. ### [Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent.](https://git.drupalcode.org/project/canvas/-/merge_requests/498) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3569120-canvas-ai-expose | 413 diff lines Description: Closes #3569120 ### [fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it](https://git.drupalcode.org/project/canvas/-/merge_requests/1293) State: merged 2026-06-25 | Author: Christian López Espínola (penyaskito) | Branch: 3591729-draft-asset-library-js-asset-registered-as-a-file-triggers-file-get-contents-warning-in-locales-js-scan | 19 diff lines Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` `locale` scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` strings, reading each one with `file_get_contents()`. Canvas registered the draft asset library JS as a root-relative route URL, which the library parser classified as a local `file`. `locale` then tried… ### [fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it](https://git.drupalcode.org/project/canvas/-/merge_requests/1292) State: closed | Author: Christian López Espínola (penyaskito) | Branch: 3591729-draft-asset-library-js-asset-registered-as-a-file-triggers-file-get-contents-warning-in-locales-js-scan Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` `locale` scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` strings, reading each one with `file_get_contents()`. Canvas registered the draft asset library JS as a root-relative route URL, which the library parser classified as a local `file`. `locale` then tried… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 1702 diff lines Description: Closes #3518272 ### [Issue #3591652: Replace hardcoded component source plugin IDs with SOURCE_PLUGIN_ID constants](https://git.drupalcode.org/project/canvas/-/merge_requests/1255) State: merged 2026-06-25 | Author: Abhishek Dhariwal (adaptative) | Branch: 3591652-remove-hardcoded-source-ids | 88 diff lines Description: Follow-up to #3573571 (MR !606), addressing https://git.drupalcode.org/project/canvas/-/merge_requests/606#note_1080422 ### Summary `canvas_ai_post_update_0005_normalize_component_description_settings()` listed the allowed component source plugin IDs as literal strings (`['sdc', 'js', 'block']`). This replaces them with the existing source plugin constants: - `SingleDirectoryComponent::SOURCE_PLUGIN_ID` - `JsComponent::SOURCE_PLUGIN_ID` - `BlockComponent::SOURCE_PLUGIN_ID` The values are unchanged, so the update hook behaves identically. Only `modules/canvas_ai/canvas_ai.post_update.php` ch… ### [Fix Canvas AI prompt reset on metadata changes](https://git.drupalcode.org/project/canvas/-/merge_requests/530) State: opened | Author: scott falconer (scottfalconer) | Branch: 3558257-changing-metadata-clears | 896 diff lines Description: ## Issue https://www.drupal.org/project/canvas/issues/3558257 ## Root cause `DeepChat` received inline object and function props — `images`, `requestBodyLimits`, the `connect` handler, and the style objects — recreated on every render. Editing page metadata re-rendered the component, so `DeepChat` saw new prop references, rebuilt its input, and cleared the typed prompt. ## Change - Memoize `DeepChat` and pass stable references. - Move static props to module-scope constants. - Move the `connect` handler into `useCallback`; it reads the latest values via refs. - Back the `onComponentRender` gu… ### [feat(Drush): #3585531 Add commands to list, audit, and generate Canvas components](https://git.drupalcode.org/project/canvas/-/merge_requests/937) State: opened | Author: Matt Glaman (mglaman) | Branch: 3585531-provide-a-drush | 498 diff lines Description: ## Overview Adds Drush commands that mirror the component management screens at `/admin/appearance/component` and `/admin/appearance/component/status`. These give site builders and CI pipelines a scriptable way to inventory, audit, and regenerate Canvas components without the UI. ## Commands | Command | Alias | Purpose | |---------|-------|---------| | `canvas:component:list` | `canvas-component-list` | Inventory: every component config entity with its source, status, version count, and usage count. | | `canvas:component:status` | `canvas-component-status` | Compatibility verdict per compon… ### [Issue #3591737: Make foreign Drupal form textareas editable in Canvas by...](https://git.drupalcode.org/project/canvas/-/merge_requests/1299) State: opened | Author: Oleksandr Antonchyk (Anton4yk) | Branch: 3591737-non-canvas-foreign-drupal-form-textareas-rendered-inside-canvas-are-read-only-and-lose-their-default-value | 44 diff lines ### [Issue #3591735: AI CKEditor text format](https://git.drupalcode.org/project/canvas/-/merge_requests/1298) State: opened | Author: Oleksandr Antonchyk (Anton4yk) | Branch: 3591735-ckeditors-source-element-is-not-tagged-with-the-active-text-format-inside-canvas-breaking-modules-that-rely-on-cores-editor-atta | 23 diff lines ### [AI-generated.](https://git.drupalcode.org/project/canvas/-/merge_requests/797) State: closed | Author: Wim Leers (wimleers) | Branch: 3581133-automate-review-drupal-service-class-constant | 1259 diff lines Description: Closes #3581133 ### [#3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()"](https://git.drupalcode.org/project/canvas/-/merge_requests/1294) State: merged 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591733-remove-workaround-in-apilayoutcontrollergettesttestconfigtranslationavailabilitylinksandpermissions | 34 diff lines ### [Draft: #3492065 move to canvas repo](https://git.drupalcode.org/project/canvas/-/merge_requests/709) State: opened | Author: Ben Mullins (bnjmnm) | Branch: 3492065-concur-2026 | 6856 diff lines Description: Closes #3492065 ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [feat: #3567225 Allow per-node override of Content Template via checkbox in node selector](https://git.drupalcode.org/project/canvas/-/merge_requests/948) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3567225-allow-per-node-override | 261 diff lines Description: Closes #3567225 ## Summary Allows editing a Canvas layout on an individual node, overriding its Content Template. - A per-node Canvas editor (`/canvas/editor/node/{node}`) edits the node's own layout. - Field linking (dynamic prop sources) resolves against the node as the host entity. When editing a Content Template, the preview entity remains the host. - The Page Data panel is hidden in the per-node editor, and when `drupalSettings.canvas.hidePageDataPanel` is `TRUE`. - Prop-source suggestions are offered for node layouts, not only Content Templates. ## Changes - Back end: `ApiLayoutCont… ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: opened | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [Draft: Resolve #3586673 "Phpcs actually selectively exclude"](https://git.drupalcode.org/project/canvas/-/merge_requests/975) State: closed | Author: Wim Leers (wimleers) | Branch: 3586673-phpcs-actually-selectively-exclude | 44 diff lines Description: Closes #3586673 --- COMMITS (2w) --- - [40e36b73](https://git.drupalcode.org/project/canvas/-/commit/40e36b738bda6d61f89b2046c3638e6bd78b910f) fix: #3591693 Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't — Wim Leers (2026-06-18T18:27:48.000+00:00) - [e1d774dc](https://git.drupalcode.org/project/canvas/-/commit/e1d774dce626f085fe3a6900ce5c79559e00c782) fix: #3591699 Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config — Christian López Espínola (2026-06-18T17:31:54.000+00:00) - [64436738](https://git.drupalcode.org/project/canvas/-/commit/64436738b0d6d574681504ae038f5844ad55f102) feat(Data model): #3591678 Coalesce reference fields whose values are consumed only through nested objects — Christian López Espínola (2026-06-18T15:58:57.000+00:00) - [d35f9bfc](https://git.drupalcode.org/project/canvas/-/commit/d35f9bfc1adbdd0c391ef445d7f36de1c4e1d674) feat(Extensions): #3591662 Add "page" extension type for full-screen Canvas extensions — Lauri Timmanee (2026-06-18T10:03:49.000+00:00) - [df0a8cb5](https://git.drupalcode.org/project/canvas/-/commit/df0a8cb5afd09e359940a792237cc9f34d3109e5) fix: #3591705 languageSelect.spec.ts Failing in 1.x — Ben Mullins (2026-06-19T18:58:34.000+00:00) - [bc8d5e51](https://git.drupalcode.org/project/canvas/-/commit/bc8d5e51a3a70dc7c93d202e7fc96ccb3f7f93e0) chore(Project management): #3591706 Submodule info.yml core requirements are not in sync with canvas — Björn Brala (2026-06-19T15:37:28.000+00:00) - [57bbee31](https://git.drupalcode.org/project/canvas/-/commit/57bbee31c09079303fbaddeec1d0f774941bbc7b) fix(Data model): #3591702 Fatal error (AssertionError on dev env) in `ComputedUrlWithQueryString` when a component instance's image references a deleted file — Wim Leers (2026-06-19T14:01:40.000+00:00) - [89742436](https://git.drupalcode.org/project/canvas/-/commit/897424363cc2cc1421d313d7b653f83f956c4795) fix(Internal HTTP API): #3591689 `redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix — Narendra Singh Rathore (2026-06-19T09:30:52.000+00:00) - [f53362df](https://git.drupalcode.org/project/canvas/-/commit/f53362dfa8abd02ea52b72ac6a07b92a833c0997) fix: #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently — Matt Glaman (2026-06-19T08:56:44.000+00:00) - [c83c8ea9](https://git.drupalcode.org/project/canvas/-/commit/c83c8ea9df6f264215586a737842aef459bd565d) chore: #3591711 Add feature flag for content entity reference props — Bálint Kléri (2026-06-22T22:09:39.000+00:00) - [473091b4](https://git.drupalcode.org/project/canvas/-/commit/473091b4990a5c8b74ee96a4140465a9516de7c1) chore: #3591709 Update JS packages — Bálint Kléri (2026-06-22T19:58:27.000+00:00) - [91e94f01](https://git.drupalcode.org/project/canvas/-/commit/91e94f01cae3f42c13b96b2701e11b4f552f4332) feat(Conflict detection): #3585970 Add conflict detection and resolution UI for selective publishing behind dev flag — Ravi Maniyar (2026-06-22T19:29:27.000+00:00) - [784dc11d](https://git.drupalcode.org/project/canvas/-/commit/784dc11d67452bd6ff2dbc9866cb2800dc14dcdc) chore(Data model): #3591679 Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` — Christian López Espínola (2026-06-22T18:24:43.000+00:00) - [e309c612](https://git.drupalcode.org/project/canvas/-/commit/e309c612c59ca2c2db7d128d1d761305c6504300) fix: #3591708 Refactor `RequestTrait` to prevent request stack mutation during kernel tests — Feliksas Mazeikis (2026-06-22T17:15:45.000+00:00) - [066944b6](https://git.drupalcode.org/project/canvas/-/commit/066944b6fd9876bc63c6de0a463139adcc5f536a) feat: #3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content — Ben Mullins (2026-06-22T15:03:52.000+00:00) - [80d22442](https://git.drupalcode.org/project/canvas/-/commit/80d22442eb2abe03fae6b5e52ad4fd184eebf891) fix: #3591705 languageSelect.spec.ts Failing in 1.x - round 2 — Ben Mullins (2026-06-22T14:19:38.000+00:00) - [01e0a107](https://git.drupalcode.org/project/canvas/-/commit/01e0a1078ec678cdae76f8d1fa34f3e3a1519766) refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings — Christian López Espínola (2026-06-22T13:20:46.000+00:00) - [ee2145bb](https://git.drupalcode.org/project/canvas/-/commit/ee2145bbab8cce1bbeae987c61ce03b4ed89c28d) chore(CLI Tool): #3591707 Remove deprecated upload and download CLI commands — Bálint Kléri (2026-06-22T11:48:52.000+00:00) - [9710db13](https://git.drupalcode.org/project/canvas/-/commit/9710db13b853af42c6c54ace49949603a82d28c7) chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3 — Christian López Espínola (2026-06-24T02:02:10.000+00:00) - [16541050](https://git.drupalcode.org/project/canvas/-/commit/16541050a83d287963855aecb1536a6e753ce02b) feat(Auto-save,Internal HTTP API): #3591704 Only show default-language entities when reviewing auto-saved (pending) changes — Ted Bowman (2026-06-23T10:13:08.000+00:00) - [3ead0b35](https://git.drupalcode.org/project/canvas/-/commit/3ead0b35afc8c5a0f6445f767bee849cb3504f46) task(AI): #3591591 Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout — AKHIL BABU (2026-06-23T05:25:22.000+00:00) - [1e310ac5](https://git.drupalcode.org/project/canvas/-/commit/1e310ac5f738914698ea629281f7506c77c18a57) task: #3591654 Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context — Kunal Sachdev (2026-06-24T18:09:13.000+00:00) - [595b4dc1](https://git.drupalcode.org/project/canvas/-/commit/595b4dc19f98309910ee6e9987cab0af6af5abb8) chore(Data model): #3591726 Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible — Christian López Espínola (2026-06-26T02:30:30.000+00:00) - [47da2b21](https://git.drupalcode.org/project/canvas/-/commit/47da2b211e2078afdb511071b57358cccad2e2b1) chore(Conflict detection): #3591725 Put conflict detection behind a dev mode flag — Feliksas Mazeikis (2026-06-25T22:12:11.000+00:00) - [49f7adb9](https://git.drupalcode.org/project/canvas/-/commit/49f7adb95f192213d48b712762fc07666615aa1c) feat(Data model, translation): #3591596 Symmetric translation: component instance version updates must propagate to all translations — Wim Leers (2026-06-25T21:49:51.000+00:00) - [3c5876ae](https://git.drupalcode.org/project/canvas/-/commit/3c5876ae084ecc76665f2a0bbaf17d30bb055095) fix(autoSave, internalHttpApi): #3591729 Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan — Christian López Espínola (2026-06-25T20:09:09.000+00:00) - [8bf3d75f](https://git.drupalcode.org/project/canvas/-/commit/8bf3d75ff5edd885197515d4946faebf5662c2e1) fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints — Bálint Kléri (2026-06-25T17:36:42.000+00:00) - [2d14167b](https://git.drupalcode.org/project/canvas/-/commit/2d14167b78f237255d5f3b4e35c8ba7f84bf6239) fix(AI): #3591660 Canvas AI: Fix orchestrator UUID lost by setData(); add UUID recovery — Matt Glaman (2026-06-25T17:29:04.000+00:00) - [bade3e9d](https://git.drupalcode.org/project/canvas/-/commit/bade3e9d55d1c637e52defe5fa6edd3d900c2dc5) refactor(AI): #3591652 Canvas AI: replace hardcoded component source IDs with SOURCE_PLUGIN_ID constants — Abhishek Dhariwal (2026-06-25T11:48:03.000+00:00) - [fdfed34a](https://git.drupalcode.org/project/canvas/-/commit/fdfed34a8160828e134f0aa553bcbff59c8da8f0) chore(Project management): #3591746 Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 — Wim Leers (2026-06-29T17:39:11.000+00:00) - [6a5e9014](https://git.drupalcode.org/project/canvas/-/commit/6a5e90149b5aaa7e5d7c85cfdc1ae85499258b60) chore(Project management): #3591747 Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` — Wim Leers (2026-06-29T17:27:13.000+00:00) - [de13400a](https://git.drupalcode.org/project/canvas/-/commit/de13400afc6441e8fe2cee2083ea62511d7702e4) chore(Auto-save): #3591733 Remove workaround in `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` — Kunal Sachdev (2026-06-29T12:46:28.000+00:00) - [b217c5b6](https://git.drupalcode.org/project/canvas/-/commit/b217c5b6dd05c9e4aece2f9be95eeaa8963a4a75) feat(CLI Tool): #3591712 Clean up the output of all CLI commands — Bálint Kléri (2026-06-29T11:42:41.000+00:00) - [a1b781c2](https://git.drupalcode.org/project/canvas/-/commit/a1b781c2ad551443617d0ebfb1fbb53d7eeb6282) fix(AI): #3569120 Canvas AI: Expose Props of Blocks to the Agent — AKHIL BABU (2026-06-29T10:55:56.000+00:00) - [0d1f16ec](https://git.drupalcode.org/project/canvas/-/commit/0d1f16ece5c3c0f7e7d4e18e273492bd1e342d59) feat(Conflict detection): #3587526 Client side prevention of publishing — Ravi Maniyar (2026-06-29T10:16:05.000+00:00) - [8f2c22b3](https://git.drupalcode.org/project/canvas/-/commit/8f2c22b39e283d2984400d7ae3b18cfe1f7fef11) fix(AI): #3556922 Canvas AI: consolidate Canvas page field updates into a single preview update — AKHIL BABU (2026-06-29T09:05:59.000+00:00) - [7331869c](https://git.drupalcode.org/project/canvas/-/commit/7331869cfda6a5992aa57792194b6852914834cd) fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT — Christian López Espínola (2026-06-30T18:54:03.000+00:00) - [fceb6640](https://git.drupalcode.org/project/canvas/-/commit/fceb6640dabade7c10fe4a20186dc4a94ad2f1c4) fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings — Bálint Kléri (2026-06-30T18:19:31.000+00:00) - [c889e9aa](https://git.drupalcode.org/project/canvas/-/commit/c889e9aa851bc16bff55b562c580c8c75b6a352a) fix(Page builder): #3591744 Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s — utkarsh_33 (2026-06-30T15:55:56.000+00:00) - [a0b7c124](https://git.drupalcode.org/project/canvas/-/commit/a0b7c124d08475948e07687a6feb0141cd0dcd3e) chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push — Bálint Kléri (2026-06-30T15:20:45.000+00:00) - [c82c4811](https://git.drupalcode.org/project/canvas/-/commit/c82c4811ad0e275a8414762646bdd5ac63c2e378) chore(Project management): #3590840 Simplify `CODEOWNERS` further, but require extra scrutiny for MRs affecting data integrity — Wim Leers (2026-06-30T13:24:47.000+00:00) - [7c7a3694](https://git.drupalcode.org/project/canvas/-/commit/7c7a3694c12439bb4ef60a6b9ba0f762e64f8814) fix(AI): #3584136 Canvas AI - update canvas_component_agent prompt and tools to support slots, restrict imports, dynamic prompts, and fix error messages — Ahmad Khalil (2026-06-30T12:41:10.000+00:00) - [c941c0b2](https://git.drupalcode.org/project/canvas/-/commit/c941c0b2580246264f652b8a7a5ff536173543c2) chore(Project management): #3591753 DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` — Wim Leers (2026-06-30T11:35:57.000+00:00) ======================================================================== ## [24] summariseModule:ai_context:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [2], Ahmad Khader (Ahmad-Khader) [1], Anikó Viola (violaniko) [1], Daniel Rodriguez (danrod) [1], Eric Homanchuk (erichomanchuk) [1], Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [2], Kristen Pol (kepol) [9], Matt Glaman (mglaman) [5], Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Rob Loach (robloach) [2], Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                        Context Control Center (CCC)

                                        then use

                                        ,

                                        ,

                                          /
                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                          tags. After the project summary prose, add a single subsection titled "

                                          How can I help on this project?

                                          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Create Learners Club CCC presentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586266) State: opened | Updated: 2026-06-19 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: ## Summary Present on CCC at the Learners Club meeting 26 June 2026. ## Tasks - [ ] Create slides - [ ] Present and Q&A - [ ] Send slides ### [Create Bluefly CCC presentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586265) State: opened | Updated: 2026-06-19 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: ## Summary Present on CCC at the Bluefly meeting 19 June 2026. ## Tasks - [ ] Create slides - [ ] Present and Q&A - [ ] Send slides ### [Automated Drupal 12 compatibility fixes for ai_context 1.0.x-dev](https://git.drupalcode.org/project/ai_context/-/work_items/3586269) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !187 [Issue #3586269: Fix linting.](https://git.drupalcode.org/project/ai_context/-/merge_requests/187) | State: closed | Author: Kristen Pol (kepol), 422 diff lines Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Add context settings validation: max_global_items must not exceed max_items](https://git.drupalcode.org/project/ai_context/-/work_items/3586272) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !181 [Issue #3586272: Add validation that max_global_items cannot exceed max_items](https://git.drupalcode.org/project/ai_context/-/merge_requests/181) | State: merged 2026-06-23 | Author: Matt Glaman (mglaman), 1831 diff lines Description: **Follow-up to:** #3580910+s ## Problem General settings (`ai_context.settings`) and per-agent overrides (`ai_context.agents`) expose two related limits: - **Max global context items** (`max_global_items`, range 0–10) - **Max context items to inject** (`max_items`, range 1–20) Each field is validated independently (`Range` in schema; `#min`/`#max` on forms). Nothing enforces that `max_global_items max_items` is rejected with a clear validation message. - [ ] Importing config with the same invalid combination fails validation. - [ ] Per-agent overrides reject `max_global_items > max_item… ### [Create Document Loader submodule for CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586275) State: closed | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !176 [Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports.](https://git.drupalcode.org/project/ai_context/-/merge_requests/176) | State: merged 2026-06-21 | Author: Kristen Pol (kepol), 1571 diff lines Description: ## Problem/motivation Follow up to: - #3586247+s - #3586228+s ## Solution Create a submodule for document loader, e.g. ai_context_document_loader. Have it support the following in MDXEditor: - PDF - Text/MD - URL (singular) We might be able to get it set up so that we have one module and use progressive enhancement where if they add a module dependency then it just shows up. ## Tasks - [x] Finalize approach - [x] Update code - [ ] Review and test ### [Create GitLab issue and merge request templates for ai_context project](https://git.drupalcode.org/project/ai_context/-/work_items/3586155) State: closed | Updated: 2026-06-21 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !182 [Issue #3586155: Add GitLab issue and merge request templates](https://git.drupalcode.org/project/ai_context/-/merge_requests/182) | State: merged 2026-06-18 | Author: Matt Glaman (mglaman), 441 diff lines Description: Need to have our issue templates again! Copy ai core ones: https://git.drupalcode.org/project/ai/-/tree/1.x/.gitlab/issue_templates?ref_type=heads https://git.drupalcode.org/project/ai/-/blob/1.x/.gitlab/merge_request_templates/Default.md?ref_type=heads ### [Update max context items in general settings](https://git.drupalcode.org/project/ai_context/-/work_items/3586212) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: Follow up to: #3573715 ## Problem/motivation "Increase Max context items to inject default from 5 to 10. The current default is conservative for a system designed around bundling small, focused Context Items. A single text-editing task could reasonably want Brand Guidelines, Tone & Voice, Vocabulary, Content Structure, and Page Building rules to all apply, which already hits 5. Defaulting to 10 gives breathing room without being unbounded." ## Solution Update default to 10 and max to 20. ## Tasks - Update code - Review and test ## AI usage disclosures - [ ] AI assisted issue - [x] AI … ### [Update overview page description and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586252) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !170 [Issue #3586252: Update overview page help text and docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/170) | State: merged 2026-06-18 | Author: Kristen Pol (kepol), 214 diff lines Description: ## Summary Follow-up to: #3586240 ## Problem/motivation We need to make it clear what the overview page is for and make sure the docs are accurate. ## Solution Here's the [plan](https://git.drupalcode.org/-/project/191993/uploads/31ff8d2aa08ea8c961bcc986ea482fdd/overview-page-settings-docs-ui.md). ## Tasks - Refine UI/docs wording from plan if needed - Update code - Review and test ## AI usage - [x] AI assisted issue (for the plan) - [x] AI generated code ### [Create SECURITY.md file for AI Context (CCC)](https://git.drupalcode.org/project/ai_context/-/work_items/3586267) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !179 [Issue #3586267: Added SECURITY.md file](https://git.drupalcode.org/project/ai_context/-/merge_requests/179) | State: merged 2026-06-18 | Author: Daniel Rodriguez (danrod), 50 diff lines Description: ## Problem/motivation Need a SECURITY.md file so people know how to report security issues. ## Solution Copy the [one from AI core](https://git.drupalcode.org/project/ai/-/blob/0463789bab1680a69523b37108cee5b04f89fff6/SECURITY.md). ## Tasks - Update code - Review ### [Clarify Context scope: Tags in documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586270) State: closed | Updated: 2026-06-21 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !183 [Issue #3586270: Document how the Tag scope works](https://git.drupalcode.org/project/ai_context/-/merge_requests/183) | State: merged 2026-06-21 | Author: Matt Glaman (mglaman), 36 diff lines Description: How exactly is the Tags scope supposed to work? The [Documentation](https://ai-context-b13f05.pages.drupalcode.org/features/scopes/) isn't really fleshed out as far as I can tell and I'm having a difficult time figuring out (without diving into code) how they work. What I'm assuming is that I can add terms to the _AI Context Tags_ vocabulary and then add reference field(s) to the same vocabulary on content entities. Then, when using AI on the content entity, the proper Context items will be used for the content entity based on the _AI Context Tags_ terms added to it? Do I have this about righ… ### [UX improvements on new context listing page](https://git.drupalcode.org/project/ai_context/-/work_items/3586274) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation Follow up to: #3586219 Pasting from UX review call on 17 June: 1. Collapse Use Cases and Scope columns Order pills in order shown on the edit page (e.g. Use Cases first) 2. Filters - Remove Use Cases filter - Change how Scope filter works - One dropdown with the scope names, e.g. Use Cases, Site Sections, etc (ordered by order on edit page) - Dropdown defaults to "All" - Second dropdown that shows the values from what you choose from first drop down - All shows all values like now - if you choose a specific scope name, then it will restrict to that one, e… ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: closed | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !151 [Issue #3586220: Add single context item display.](https://git.drupalcode.org/project/ai_context/-/merge_requests/151) | State: merged 2026-06-30 | Author: Eric Homanchuk (erichomanchuk), 6124 diff lines Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [hook_ai_context_scope_values_alter() is not honored in scope value forms](https://git.drupalcode.org/project/ai_context/-/work_items/3586246) State: closed | Updated: 2026-06-26 | Author: Joshua Fernandes (joshua1234511) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !177 [Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms](https://git.drupalcode.org/project/ai_context/-/merge_requests/177) | State: merged 2026-06-23 | Author: Ahmad Khader (Ahmad-Khader), 1074 diff lines Description: ## Problem/Motivation While integrating ai_context into the AI Empathy Evaluation module (#3583739, built on the convenience API from #3584838), the main friction was extending scope values. A downstream module that wants to add a custom value — e.g. an "empathy_evaluation" use case — has no working extension point. hook_ai_context_scope_values_alter() looks like the intended mechanism, but it is only invoked in AiContextScopeManager::getAllScopeValues(), and nothing in the module consumes getAllScopeValues(). The scope subscription UI (AiContextAgentForm) and the context item form (AiContex… ### [Move scheduler feature to submodule or progressive enhancement](https://git.drupalcode.org/project/ai_context/-/work_items/3577429) State: closed | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !178 [Issue #3577429: Make Scheduler an optional progressive feature.](https://git.drupalcode.org/project/ai_context/-/merge_requests/178) | State: merged 2026-06-27 | Author: Matt Glaman (mglaman), 1163 diff lines Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !92 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3569967: [Discuss] Figure out which CCC features can be optional for MVP We are trying to reduce the number of dependencies for ai_context. The scheduler is one dependency that not e… ### [Create list of modules and configuration steps for how to integrate CCC with Document Loader MDXEditor submodule](https://git.drupalcode.org/project/ai_context/-/work_items/3586228) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3569310 We want to allow users to use a source for their markdown (e.g. MD, PDF, text file, URL). Document Loader has integrated with MDXEditor to make this easy: [#3580850](https://www.drupal.org/project/document_loader/issues/3580850) This has been fixed and there's a new release (2.0.1) that includes it. ## Solution Create explicit step-by-step instructions within this issue (not code) on how to integrate with Document Loader including the list of additional plugin modules, so we can add context from these four sources: MD, PDF, text file, and URL… ### [Show this overview page checkbox is misaligned on vanilla Drupal 11](https://git.drupalcode.org/project/ai_context/-/work_items/3586260) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !180 [Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11"](https://git.drupalcode.org/project/ai_context/-/merge_requests/180) | State: merged 2026-06-18 | Author: Juan Correa (jucs7), 13 diff lines Description: ## Problem Show this overview page checkbox is misaligned on vanilla Drupal 11 ## Solution Fix it without breaking it on Drupal CMS. ## Tasks - Update code - Test and review ### [[Discuss] Extensible "role" architecture for context items (examples, rubrics, and future types)](https://git.drupalcode.org/project/ai_context/-/work_items/3586273) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 12, AI Sprint 13 Description: Follow up to: #3586250+s ## Problem/motivation In [#3584775] we removed `AiContextItemType` and made `ai_context_item` bundleless, concluding that bundles exist for entities that need *different fields*, and that the proposed good/bad example use case is a same-schema distinction (see also the [Discuss] thread on context item bundles). The agreed direction was: model the distinction as a field, provide UX separation via dedicated creation forms, and revisit bundles only if a genuinely distinct-fields requirement appears. This follow-up is about doing that well rather than ad hoc. The conte… ### [Provide test context items for testing CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586244) State: closed | Updated: 2026-06-26 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !185 [Issue #3586244: Add example context items from the Chicago Driesnote demo.](https://git.drupalcode.org/project/ai_context/-/merge_requests/185) | State: merged 2026-06-23 | Author: Anikó Viola (violaniko), 915 diff lines Description: ## Problem/motivation **Note that this issue evolved from what Mike was thinking (context items you could start with and tweak) to dummy/test context items to play with. The latter was implemented in this issue already, so the title has been updated, and we'll create a new issue for the former feature.** ### Original title Provide example context items ### Original problem/motivation It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to pr… ### [Document supported vs internal CCC APIs](https://git.drupalcode.org/project/ai_context/-/work_items/3586241) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !186 [Issue #3586241: Document Supported vs Internal APIs](https://git.drupalcode.org/project/ai_context/-/merge_requests/186) | State: merged 2026-06-21 | Author: Rob Loach (robloach), 389 diff lines Description: ## Summary Follow-up to: #3586169 AI Context needs a module-wide developer doc that defines the stable public surface vs internal implementation details. Issue `#3586162` documents the **selection extension model** (pipeline events, no service decoration), but that covers only one slice of the module. **Goal:** Add a clear public/internal boundary in developer docs so contrib and site builders know what they can rely on without reading selector internals. ## Solution **Public (document as supported):** - `AiContextRequestFactory` and `AiContextRequest` / `AiContextResult` - Selector pipe… ### [Conditional Subcontext Provider Calls](https://git.drupalcode.org/project/ai_context/-/work_items/3586207) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !166 [Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache.](https://git.drupalcode.org/project/ai_context/-/merge_requests/166) | State: merged 2026-06-23 | Author: Abhisek Mazumdar (abhisekmazumdar), 1902 diff lines - MR !194 [Issue #3586207: Ignore conditional context when disabled.](https://git.drupalcode.org/project/ai_context/-/merge_requests/194) | State: opened | Author: Kristen Pol (kepol), 1376 diff lines Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ _**Assess if this should be pre-RC1 or post-1.0 and move for the latter**_ `AiContextSubcontextResolver::resolveConditionalChildren()` can make one synchronous provider `chat()` call per selected parent that has conditional children. This may dominate agent latency and provider usage compared with normal selection and rendering. Treat this as RC1 work if conditional subcontext is part of the RC1 product promise. If it is advanced functionality, it can be deferred… ### [Update subcontext feature description and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586251) State: closed | Updated: 2026-06-20 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !169 [Issue #3586251: Update subcontext feature help text and docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/169) | State: merged 2026-06-20 | Author: Kristen Pol (kepol), 423 diff lines Description: ## Summary Follow-up to: #3586240 ## Problem/motivation We need to make it clear what the benefits and tradeoffs are for the subcontext feature and make sure the docs are accurate. ## Solution Here's the [plan](https://git.drupalcode.org/-/project/191993/uploads/45ca4af32312853086bc31d9151563f7/subcontext-settings-docs-ui.md). ## Tasks - Refine UI/docs wording from plan if needed - Update code - Review and test ## AI usage - [x] AI assisted issue (for the plan) - [x] AI generated code ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, category::task Description: ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 1467 diff lines Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… ### [Sprint 12 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586277) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 13 to 26 June 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Description Blocked by: #3586295+s ### Summary The scope plugin API was asymmetric: read and match were abstracted, but write, clear, index, cleanup, form integration, and save-time validation leaked storage details into callers. `AiContextItemForm`, entity presave, `hook_entity_delete()`, and `AiContextScopeIndexService` contained special cases — especially the `target_entities` DER field — that would repeat for every new scope. This issue completes the scope plugin value lifecycle contract before RC1. Callers delegate to `AiContextScopeManager` and scope plugins; custom storage (targ… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow up to: #3586198+s Blocked by: #3586243+s We do not have a scope plugin that allows associated context with the terms for content entities. Example: * Article **has terms**: foo, bar, hello * Blog post **has terms**: foo, whatever * One context item **has term**: foo * Another context item **has terms**: foo, bar * I'm on the article page, both context items should be relevant * I'm on the blog post, only the second context item should be relevant ## Solution Create a taxonomy scope plugin. The UI should be something like: * Vocabulary ABC \[textbox multis… ### [Review and update CCC permissions](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Follow-up to: #3563036+s Let's revisit this after beta3 is created: #3586295+s Permissions need to be revisited to see what's missing and what should be added. This would need to happen prior to full QA: #3573716+s ## Proposed resolution Review permissions, figure out what to add, and add them. ## Target date or deadline July 2026 ## Remaining tasks - Review existing perms - Figure out what's missing - Add perms - Review and test ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined… ### [Introduce explicit scope types and item inclusion modes; clarify selection in UI and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586281) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: - #3586243+s - #3586270+s - #3586196+s Blocked by: #3586243+s _**The two decisions still worth locking before this lands: **(1)** `type` derived vs declared, and **(2)** Entity bundle's default inclusion mode.**_ **Builds on (must land first):** #3586243+s — the scope plugin persistence API and capability-flag refactor. **Keep in mind when architecting:** #3586197+s — boundaries / exclusions builds on this. Beta feedback shows site builders don't have an accurate mental model of how context **scopes** decide what actually reaches an agent's prompt. After #35862… ### [Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/work_items/3586280) State: closed | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !203 [Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/merge_requests/203) | State: merged 2026-06-30 | Author: Juan Correa (jucs7), 217 diff lines Description: ## Description _**Verify the issue problem and solution before proceeding.**_ Drupal 11.3 deprecates kernel test classes that do not declare the PHPUnit `#[RunTestsInSeparateProcesses]` attribute. From Drupal 12.0, missing the attribute will throw an exception ([change record](https://www.drupal.org/node/3548485)). The ai_context module currently has **4 of 39** kernel test classes with the attribute: - `AiContextChildrenServiceTest` - `AiContextItemFormGlobalCountTest` - `AiContextTextFieldMigrationTest` - `AiContextUpdate10010Test` The remaining **35** kernel test classes need: ```php … ### [Fix eslint errors in GitLab UI even when pipeline is green](https://git.drupalcode.org/project/ai_context/-/work_items/3576093) State: closed | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !197 [Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green.](https://git.drupalcode.org/project/ai_context/-/merge_requests/197) | State: merged 2026-06-28 | Author: Kristen Pol (kepol), 130 diff lines Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !99 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Although the pipeline passes with no eslint issues, there are still failures shown on the test summary, e.g. https://git.drupalcode.org/project/ai_context/-/merge_requests/71 Test summary: 3 failed… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-06-21 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Sprint 10, AI Sprint 11 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - June 18: Beta3 release - July TBD: RC1 release - July TBD: 1.0 release --- ## Remaining tasks Milestones have the issues (both… ### [Provide real sample context items for end user use](https://git.drupalcode.org/project/ai_context/-/work_items/3586279) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Spin off from: #3586244+s Pulling the info from the other ticket. --- It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to provide a recipe for example content items (similar to this for AI Guardrails: https://www.drupal.org/project/ai_recipe_guardrails_pii) As I'm learning to use the module, I find that I have to spin up an instance of https://www.drupalforge.org/template/driesnote-chicago in order to see some type… ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-06-28 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, AI UX Description: Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deliver more accurate, relevant results. to > Context Control Center (CCC) helps Drupal AI **agents** use your content, rules,… ### [Test AI Best Practices skills on AI Context codebase](https://git.drupalcode.org/project/ai_context/-/work_items/3586258) State: closed | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation We have a project with skills (among other things) to help with Drupal coding called [AI Best Practices](https://www.drupal.org/project/ai_best_practices). AI Context (CCC) development heavily uses AI assigned and generated code. It may benefit from using the best practice skills. Right now there are these skills: - drupal-accessibility - drupal-automated-testing - drupal-configuration - drupal-expert-corrections - drupal-gitlab - drupal-render-pipeline - drupal-writing-documentation ## Solution Install skills from AI Best Practices and run a through code review with… ### [Copy and layout updates on context item scope form](https://git.drupalcode.org/project/ai_context/-/work_items/3586284) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !189 [Issue #3586284: Clarify context item scope form copy and layout.](https://git.drupalcode.org/project/ai_context/-/merge_requests/189) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 163 diff lines Description: ## Problem/motivation Follow-up to: #3586196+s **_Note that some of these things may have already been implemented in separate issues._** The **Context Scope** section on the context item edit form needs a few small copy and layout tweaks: clearer help text, less clutter, and a more logical order for the summary badges. No matching logic or scope model changes — just form presentation. ## Solution ### Context item form - [x] Remove the **Context Scope Settings** link from the section description. - [x] Update the section description to: > Control when this context item is included. … ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 10, AI Sprint 11 Description: ## Problem/motivation Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logic Could be a dropdown per scope item: - None (neutral/default) - Include… ### [[Discuss] Context scope matching semantics: additive OR, filters, and UX clarity](https://git.drupalcode.org/project/ai_context/-/work_items/3586196) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586195 Scope subscriptions are additive. If you subscribe to use case = "working with text" and tag = "campaign", you will get context items that are scoped to either of these. Meaning, the context item doesn't need *both* of them to be relevant. ## Solution - Review existing docs and update as needed - Review UI text and consider clarifying this to the user ### [Finalize Context Importer naming and review Extensions page UI/UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586283) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !188 [Draft: Issue #3586283: Finalize Context Importer and Extensions page.](https://git.drupalcode.org/project/ai_context/-/merge_requests/188) | State: opened | Author: Kristen Pol (kepol), 77 diff lines Description: ## Description Follow-up to: #3586275+s Required for: #3586282+s ### Summary [#3586275](https://www.drupal.org/project/ai_context/issues/3586275) introduced the `ai_context_document_loader` submodule and a reworked **Settings → Extensions** page (`/admin/config/ai/context/settings/extensions`). Initial UX feedback has been considered, but needs refinement. For now, the submodule has been renamed from “Document Loader: Markdown Importer” to **“Document Loader: Context Importer”**. Before the submodule stabilization follow-up (experimental → stable) (#3586282), we need a focused pass to *… ### [Promote Document Loader: Context Importer from experimental to stable](https://git.drupalcode.org/project/ai_context/-/work_items/3586282) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: - #3586275+s Blocked by: - canvas#3575644+s ### Summary The `ai_context_document_loader` submodule (Document Loader: Context Importer) is currently marked `lifecycle: experimental`. The initial integration work is largely complete: upstream dependencies are on stable constraints (`document_loader:^2.0.3`, `ai_file_to_text:^1.0`), and temporary Document Loader Composer patches have been removed. Before removing the experimental lifecycle flag, we should close out documentation, testing, and install-behavior follow-ups. The Canvas StringLongItemOverride patch … ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow-up to: #3586192 _**Verify the issue problem and solution before proceeding.**_ ## Title **AI Context: Consistency / DX cleanup (final, constructor promotion, snake_case locals, service interfaces)** --- ## Description Follow-up to #3586192 / naming & DX review. Addresses the remaining **consistency / DX** items that were explicitly out of scope for the naming MR. **No functional or API behavior changes** — style, clarity, and maintainability only. ### Background The naming/DX MR covered route/permission renames, dead code removal, `new self` in final classes, and snake_case fix… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Allow scope plugins to declare an optional icon for UI display](https://git.drupalcode.org/project/ai_context/-/work_items/3586262) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586220+s Blocked by: #3586243+s ### Summary Scope plugins are shown in several places across `ai_context` (and will likely appear in more over time). Today, when an icon is shown at all, it is hard-coded in the view layer — e.g. `AiContextItemViewBuilder::SCOPE_ICON_CLASSES` for the context item **Details** sidebar — with a generic funnel fallback for unknown plugins. This issue adds an **optional, plugin-level icon** on `AiContextScope` plugins so each scope can define a consistent visual identity wherever that plugin is rendered, without patching core ma… ### [Clean up bundleless context item follow-ups](https://git.drupalcode.org/project/ai_context/-/work_items/3586261) State: closed | Updated: 2026-07-01 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !198 [Issue #3586261: Clean up bundleless context item follow-ups.](https://git.drupalcode.org/project/ai_context/-/merge_requests/198) | State: merged 2026-07-01 | Author: Kristen Pol (kepol), 165 diff lines Description: Follow-up to: - #3584775+s - #3586220+s ## Description Follow-up after bundle removal (#3584775) and the context item full view MR (#3586220). Most bundle-less reconciliation was already on `1.0.x`; this MR closes the remaining gaps found during review. ## Changes ### 1. Drop bundle theme suggestions `hook_theme_suggestions_ai_context_item()` now adds only view-mode suggestions (e.g. `ai_context_item__full`). Removed bundle-based suggestions that referenced `$entity->bundle()`. ### 2. Fix context item edit form field order **Root cause:** `purpose` and `content` both used form weight `… ### [Add opt-in AiContextSelectionDiagnostics to selection results](https://git.drupalcode.org/project/ai_context/-/work_items/3586242) State: opened | Updated: 2026-06-22 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow up to: #3586169 Contrib and site debugging today rely on watchdog/`debug_logging` config, which is global, noisy, and can log sensitive task text. We need structured, **opt-in** selection diagnostics on the result object for preview tools, Drush commands, and developer UI — without leaking context content. **Goal:** When diagnostics are requested, `AiContextSelector::select()` accumulates a structured breakdown and exposes it on `AiContextResult`. ## Solution **Proposed API:** - `AiContextRequest::withDiagnostics(bool $enabled = TRUE)` (or equivalent factory/builder opt… ### [Recruit CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Note that Mike Anello (ultimike) is beta testing, but we will try to recruit more after beta3 is created: #3586295+s We want more beta testers. This issue was created for this: #3586234+s ## Solution Promote this in various channels: - Slack - LinkedIn - Planet Drupal? ## Tasks - ~~Create issue with resources~~ - ~~Post in the relevant Slack channels (ai, ai-contrib, ai-context, ai-partner-contributors)~~ - Create a blog post and/or LinkedIn post to promote ### [Gather CCC contribution stats for code and non-code contributions for release notes](https://git.drupalcode.org/project/ai_context/-/work_items/3586222) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The current tools for generating release notes are inadequate as they only focus on code commits. They also require the issue number to be in the commit message. I want to gather the stats for all contributors for a release including non-code contributions which there are many. ## Solution The result for release notes should be something like: ``` New Features * one * two Bug Fixes * one * two Tasks * one * two Non-Code Contributions * number of issues? Contributors: kristen pol (35), afoster (8), emma horrell (6), scott falconer (6), mglaman (3)... salsa (35),… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow up to: #3586194+s It would be good to get these in before this one: - #3586218+s - #3586292+s ## Problem/motivation Conditional subcontext logic needs to be fine-tuned. See related issue above. ## Solution Add the subcontext as an "index" to the parent when asking the LLM which conditional subcontext items are good to include. See issue above for some possible structure. Fill out more details here as this is thought through more. ## Tasks - Review existing logic and test - Document current workflow as needed - Define subcontext index format - Define the LLM workflow - Implement… ### [Inject context into ai_ckeditor requests](https://git.drupalcode.org/project/ai_context/-/work_items/3581955) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !116 [Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools.](https://git.drupalcode.org/project/ai_context/-/merge_requests/116) | State: opened | Author: Jesse Hofmann-Smith (jessehs), 479 diff lines Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !116 >>> Problem/Motivation The ai_context module cannot inject scope-matched context items into ai_ckeditor AI requests because ai_ckeditor bypasses the ai_agents pipeline (and its BuildSystemPromptEvent) entirely — it calls the AI provider directly in its own streaming controller. There is no event or hook point for ai_context to intercept. This issue is the ai_context companion to the ai_ckeditor entity context and event extensibility work tracked in the drupal/ai module issue queue. … ### [CCC beta / pre-rc1 community testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586234) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Michael Anello (ultimike) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Problem/motivation We want to get feedback from the community on CCC as we want to lock down our features soon so we can release rc1 and ultimately 1.0 soon. ## Solution Recruit CCC testers to help with this. ## Resources - [Project page](https://www.drupal.org/project/ai_context) - [Setup instructions](https://www.drupal.org/project/ai_context#install-testing-steps) - [Documentation](https://git.drupalcode.org/project/ai_context/-/tree/1.0.x/docs?ref_type=heads) - [NYC AI summit session](https://drupal.tv/events/drupal-ai-summit-new-york-city-2026/context-driven-ai-consistent-complian… ### [Evaluate empathy CCC integration](https://git.drupalcode.org/project/ai_context/-/work_items/3586249) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation This is one of the first integrations with CCC: - https://www.linkedin.com/posts/joshua1234511_sharing-a-piece-of-work-i-recently-contributed-ugcPost-7466753343944724480-Rayx/ - https://www.drupal.org/project/ai_empathy ## Solution Review and test this, and see if this can inform the roadmap. ## Tasks - Read article - Test module - Review module code - Add thoughts - Create follow-up issues as needed ### [`hook_ai_context_scope_values_alter()` is ignored by scope forms and labels](https://git.drupalcode.org/project/ai_context/-/work_items/3586286) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: blocker::stable, category::bug, priority::major, state::accepted Description: ## Problem/Motivation `hook_ai_context_scope_values_alter()` is documented (in `ai_context.module` and `docs/developers/hooks.md`) to alter scope values "for display in forms or for matching." In practice it does neither. The alter is only invoked in `AiContextScopeManager::getAllScopeValues()`, which no form or resolver calls: - **Forms** (`AiContextItemForm`, `AiContextAgentForm`) build scope widgets via `$plugin->buildValueForm()`, which reads raw `AiContextScopeBase::getValues()` — the alter never runs. A value added by the hook (e.g. a custom `use_case`) cannot be selected in the UI. -… ### [Add Configure Link in Modules Page](https://git.drupalcode.org/project/ai_context/-/work_items/3586285) State: closed | Updated: 2026-06-25 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !190 [Issue #3586285: Add configure links to Context Control Center.](https://git.drupalcode.org/project/ai_context/-/merge_requests/190) | State: merged 2026-06-23 | Author: Rob Loach (robloach), 24 diff lines Description: ## Summary On the module page, add a Configure link on the Context Control Center. ## Problem When you look at the module page, it's nice to have Configure links for each module, because then you can get to the pages quickly in a standard UX pattern. ## Proposed solution *(optional)* Add the Configure links on the Context Control Center modules. ## Workaround *(optional)* Visiting `admin/index` and finding the link from there. ## Affected functional areas *(optional)* Administration UI > [!note] > Check the one that best describes your usage, or leave all unchecked if AI was … ### [No public API for building scope subscription forms; consumers must depend on the internal scope manager](https://git.drupalcode.org/project/ai_context/-/work_items/3586287) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !191 [Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager.](https://git.drupalcode.org/project/ai_context/-/merge_requests/191) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 667 diff lines Description: ## Problem/Motivation There is no supported way for a contrib module to render a scope-subscription UI (the "subscribe to these scope values" widget) outside of an AI agent. The only mechanism is `plugin.manager.ai_context_scope`, which `docs/developers/api-stability.md` explicitly lists as **internal**. As a result, any non-agent consumer that wants per-entity scope subscriptions must reimplement the logic already living in `AiContextAgentForm`: - iterate `getScopePlugins()`, skip disabled / `!supportsSubscriptions()` plugins, - call `buildValueForm(..., for_subscription: TRUE)` per plugin… ### [[Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations](https://git.drupalcode.org/project/ai_context/-/work_items/3586289) State: opened | Updated: 2026-06-30 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: #3586257+s ## Problem We built an external RAG integration on top of CCC (AI Knowledge Connector — a vector store + semantic retrieval module for Drupal 11) and hit three specific API gaps that currently require workarounds. We're raising these before rc1 so the team can evaluate whether a formal API would be worth adding to make the integration pattern stable and documented for the ecosystem. The current workaround path works (we're using `BuildSystemPromptEvent`) but it's fragile across agent types, bypasses CCC's token limit logic, and gives no observability … ### [Update core_version_requirement for all CCC submodules to be same as parent module](https://git.drupalcode.org/project/ai_context/-/work_items/3586288) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !192 [Issue #3586288: Update submodule requirements.](https://git.drupalcode.org/project/ai_context/-/merge_requests/192) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 38 diff lines Description: ## Problem/motivation grep -r core_version_requirement . ./tests/modules/ai_context_test_scope_values/ai_context_test_scope_values.info.yml:core_version_requirement: ^10.4 || ^11 ./tests/modules/ai_context_test/ai_context_test.info.yml:core_version_requirement: ^10.5 || ^11.2 ./tests/modules/ai_context_test_scope/ai_context_test_scope.info.yml:core_version_requirement: ^10.3 || ^11 ./tests/modules/ai_context_test_support/ai_context_test_support.info.yml:core_version_requirement: '^10.4 || ^11' ./tests/modules/ai_context_test_items/ai_context_test_items.info.yml:core_version_requirement: ^10.5… ### [Test Chicago Driesnote repo with cheaper models](https://git.drupalcode.org/project/ai_context/-/work_items/3586221) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation The Chicago Driesnote demo videos were recorded with Open AI for Vector DB and Opus 4.6 for everything else. Opus 4.6 is expensive. It can cost $1 to $2 USD to create a page. We want to see if cheaper models can produce okay results. ## Solution Test with smaller/cheaper models and post results. ## Tasks - [x] Set up demo environment - [x] Test with 2 or 3 cheaper/smaller models - [x] Post results ### [Avoid Full Published-ID Scans Before Scope Prefiltering](https://git.drupalcode.org/project/ai_context/-/work_items/3586206) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ `AiContextSelector::getPrefilteredPublishedItemIds()` loads all published item IDs before applying `AiContextScopeIndexService::getItemIdsByScope()`. That means scoped agent selection can still begin with a full-catalog ID query and a large in-memory ID array, even though the scope index exists to narrow the candidate set. This should be fixed before RC1 because the common subscribed-agent path should scale with the matching scope set, not the total published cont… ### [CCC beta3 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586182) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/Motivation Planning issue for beta3 release See the [milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues ) for all issues. Key must have issues are listed here. --- ## Proposed Resolution **Many issues were already closed and noted here:** - #3567798: META CCC MVP 1.0 roadmap - #3577644: CCC beta1 release planning - #3585902: CCC beta2 release planning **These are the ones below have been the focus since 11 May 2026 for beta3.** --- ### Must haves _Note: Ones marked with `(*)` could be done in beta4._ #### Blocked - N/A #### Todo - #3586… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, category::task Description: ## Problem/motivation We want beta testers, but we need to give them more info on how to get started. ## Solution Update the home page with some more information: - Links to session videos (suggest they watch one) - Link to DrupalCon Chicago Driesnote demo (they can use it and it will have example context to play with) - Point to the readme and docs - Point to how to create a support issue or bug ## Tasks - Gather session videos - Gather other links - Create a section on project page for beta testers - Add the videos and links ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [CCC Usage Tracking Query/Save Pattern](https://git.drupalcode.org/project/ai_context/-/work_items/3586209) State: closed | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !174 [Issue #3586209: Batch N+1 queries in AiContextUsageTracker](https://git.drupalcode.org/project/ai_context/-/merge_requests/174) | State: merged 2026-06-24 | Author: Abhisek Mazumdar (abhisekmazumdar), 1032 diff lines Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ _**Assess if this should be pre-RC1 or post-1.0 and move for the latter**_ `AiContextUsageTracker::recordUsage()` performs per-context entity query/load/save work. `attachEntity()` and `recordToolUsed()` can add additional loads and saves for all usage rows tied to a runner. This runs on the agent prompt path when tracking is enabled. Treat this as RC1 work if usage tracking is expected to be enabled in production by default or used heavily during RC1. ## Soluti… ### [Add webpage (URL) context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574414) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3547034: [Spike] Research URL support for CCC This requires a UX discussion before we work on it. Proposed resolution Review #3547034: [Spike] Research URL support for CCC, discuss UX options, pick … ### [Add MD context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574928) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We want to upload MD files as context. Proposed resolution Discuss, scope, and implement Target date or deadline Post-Chicago Remaining tasks Discuss and align Scope feature Update code Review and test AI usage … ### [Add PDF context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574413) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3547035: [Spike] Research PDF upload support for CCC Ability to use PDF to source context. This requires a UX discussion before we work on it. Please take a look at comment #34 of that issue. Propos… ### [Store the context source file or URL when using document loader](https://git.drupalcode.org/project/ai_context/-/work_items/3586291) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::normal, state::postponed, what::code Description: ## Summary Follow-up to: - #3569310+s - #3586275+s We can load context content from files and URLs now. We still would like to track the source document for reference. ## Problem We don't track the source document when loading context content via document loader (mdxeditor load document button). ## Proposed solution *(optional)* Document loader doesn't currently have a way of grabbing this information. A new hook would be needed. Then we'd use that to store this information for reference. ## Workaround *(optional)* For files, the user actually uploads the file, so the file is … ### [[Meta] Context source plugin feature (context from PDF/MD/TXT/URL)](https://git.drupalcode.org/project/ai_context/-/work_items/3569310) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !103 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We want a generic mechanism for adding context source plugins, such as loading context from a: PDF MD file Text file Single webpage (URL) And converting the info to markdown, and inserting it in… ### [Create context starter templates](https://git.drupalcode.org/project/ai_context/-/work_items/3586255) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::major, state::postponed, what::ux Description: ## Problem/motivation Follow up to: #3586170 This issue could be repurposed as a discussion or design/UX issue. Provide starter templates for more common types of context that users can select from, e.g. brand guidelines, tone and voice, editorial standards. These can have a recommended structure with important headings and instructions in each heading, and example context items with everything filled in. ## Solution TBD ## Tasks - Discuss - Design/UX - Architecture - Implementation - Review and test ### [Error when running database updates from beta2 to latest -dev](https://git.drupalcode.org/project/ai_context/-/work_items/3586290) State: opened | Updated: 2026-06-25 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: I just tried running `drush updb` on a site that previously had CCC beta2 and now has the latest -dev. Most of the updates ran fine, but I couldn't get past this one: ``` $ ddev drush updb ------------ ----------------------------------- ------------- ------------------------------------------------------- Module Update ID Type Description ------------ ----------------------------------- ------------- ------------------------------------------------------- ai_context 0002_install_default_view_displa… ### [Question about "Subcontext type = Conditional - included based on relevance"](https://git.drupalcode.org/project/ai_context/-/work_items/3586149) State: closed | Updated: 2026-06-26 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Initiative Sprint, category::support, priority::normal, state::fixed Description: I think this is more of a documentation issue/task, but I wanted to surface it regardless. When creating a Subcontext item, and "Subcontext type = Conditional - included based on relevance", does that mean that it will only be used if the LLM deems it worthy for inclusion via its "Purpose" content? thanks, -mike ### [Fix PHPStan failures in CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586238) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Fix PHPStan failures in ai_context **Type:** Code quality **PHPStan level:** 2 **Status:** `./lint.sh` fails with **16 errors** ### Reproduce ```bash php -d memory_limit=512M vendor/bin/phpstan analyze web/modules/custom/ai_context \ --configuration=web/modules/custom/ai_context/phpstan.neon.dist ``` ### Errors (3 groups) **1. Entity field typing (1)** — `src/Entity/AiContextItem.php:270` `FieldDefinitionInterface` has no `setLabel()`. Narrow to `BaseFieldDefinition` before chaining setters. **2. Diff builder return types (5)** — `DynamicEntityReferenceFieldBuilder.php` (4), `… ### [Fix phpstan error in AiContextSubcontextToggleTrait](https://git.drupalcode.org/project/ai_context/-/work_items/3586259) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Problem On local, running ./lint.sh on 1.0.x, phpstan errors show up but the pipeline was green ``` Running phpstan (static analysis)... 165/165 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% ------ ------------------------------------------------------------------------------------------------------------- Line src/Service/AiContextSubcontextToggleTrait.php (in context of class Drupal\ai_context\Entity\AiContextItem) ------ ------------------------------------------------------------------------------------------------------------- 31 Call to an undefined method Drupal\Core\Typed… ### [CCC UX sync 27 May 2026](https://git.drupalcode.org/project/ai_context/-/work_items/3586236) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation We have a lot of important UX issues to cover including: - https://git.drupalcode.org/project/ai_context/-/work_items/3586220 - https://git.drupalcode.org/project/ai_context/-/work_items/3586219 - https://git.drupalcode.org/project/ai_context/-/work_items/3586228 - https://git.drupalcode.org/project/ai_context/-/work_items/3586214 - https://git.drupalcode.org/project/ai_context/-/work_items/3586229 - https://git.drupalcode.org/project/ai_context/-/work_items/3586198 - https://git.drupalcode.org/project/ai_context/-/work_items/3586197 - https://git.drupalcode.org/project… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-07-01 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !159 [Issue #3586218: Allow subcontext scope to override parent scope.](https://git.drupalcode.org/project/ai_context/-/merge_requests/159) | State: opened | Author: Kristen Pol (kepol), 2502 diff lines Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code ### [[Discuss] Moderation status of subcontext vs parent context items](https://git.drupalcode.org/project/ai_context/-/work_items/3586264) State: closed | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !193 [Issue #3586264: Show warning when subcontext parent is unpublished.](https://git.drupalcode.org/project/ai_context/-/merge_requests/193) | State: closed | Author: Kristen Pol (kepol), 204 diff lines Description: ## Problem/motivation You can unpublish a parent context item while having published subcontext items. ## Solution Discuss what makes sense for the moderation of parent/child items. ## Tasks - [x] Discuss and decide on behavior - [x] ~~Create follow-up issues as needed~~ (did MR on this issue) ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes all improve test reliability and signal. They can be split further if the test changes become large. Includes: - Context prefix default alignment. - `getManageUrl()` docs update. - Optional `hook_help()` decision/follow-up. - `tests/README.md` environment guidance. ## Solution ### 7.1 Make integration-test process metadata consistent **Files:** - `… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 501 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !199 [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) | State: opened | Author: Joshua Fernandes (joshua1234511), 157 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Juan Correa (jucs7) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [Clean up CCC cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Add warning on subcontext edit form if parent is unpublished](https://git.drupalcode.org/project/ai_context/-/work_items/3586297) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !196 [Issue #3586297: Add warning on subcontext edit form if parent is unpublished.](https://git.drupalcode.org/project/ai_context/-/merge_requests/196) | State: merged 2026-06-27 | Author: Kristen Pol (kepol), 197 diff lines Description: ## Problem/motivation Follow-up to: #3586264+s You can unpublish a parent context item while having published subcontext items. ## Solution Show a warning. ## Acceptance criteria - [x] If parent published and subcontext unpublished, do not show warning. - [x] If parent unpublished and subcontext unpublished, do not show warning. - [x] If parent published and subcontext published, do not show warning. - [x] If parent unpublished and subcontext published, show warning. ### [CCC beta3 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586296) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Blocked by: #3586294+s Need a QA script for beta 3 to go through and test before the release ## Proposed resolution Create script with at least all major features covered ## Target date or deadline **6 July 2026** ## Remaining tasks - Create script - Go through QA script --- ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human superv… ### [CCC beta2 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586156) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: > [!note] > Migrated issue > Migrated from issue #3577669 > Reported by: [kristen pol](https://www.drupal.org/user/8389) --- ## Tracker **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Blocked by:** - [#XXXXXX](https://www.drupal.org/project/ai_context/issues/XXXXXX) **Additional Collaborators:** @username1, @username2 _Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs)._ --- ## Problem/Motivation Need a QA script for beta… ### [Create CCC beta3 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586295) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ### Problem/Motivation Blocked by: #3586296+s Create CCC beta3 release. Tag: `1.0.0-beta3` ### Proposed resolution Create the release once at least the must-haves are done here: - #3586182+s - [beta3 milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues) ### Target date or deadline 6 July 2026 ### Remaining tasks - Wait on must-haves - Tag code - Create the release in UI - Celebrate! ### AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code … ### [CCC beta3 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586294) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Do this right before: #3586296+s in case there are any serious issues that need addressing before the release. Beta3 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Important performance issues - Important feature/API gaps - Security issues (major issues will not be reported here) ## Next steps - Run security review - Run performance revi… ### [Create CCC beta2 release](https://git.drupalcode.org/project/ai_context/-/work_items/3585920) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Create CCC beta2 release Tag: 1.0.0-beta2 Proposed resolution Create the release once at least the must-haves are done here: #3585902: CCC beta2 release planning Target date or deadline 4 May 2026 Remaining tasks … ### [CCC beta2 codebase review](https://git.drupalcode.org/project/ai_context/-/work_items/3586202) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: ## Problem/motivation Beta2 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Important performance issues - Important feature/API gaps - Security issues (these will not be reported here) ## Next steps - Run security review - Run performance review - Run api/feature review - Attach findings for here (not security) - Create follow-up issues as needed ### [Sprint 13 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586293) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 27 to 10 July 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Update CCC overview page with hide option and new wording](https://git.drupalcode.org/project/ai_context/-/work_items/3586211) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: Follow up to: #3573715 ## Problem/motivation 1. Right now you can disable showing the overview page by going to the general settings. It is useful to be able to also hide it when you are on the page and then the Context Items page because the main page. 2. Also, the text on the page isn't that user friendly. ## Solution 1. Add a "Hide this overview" link or button on the page. We will keep the option on the general settings if they want to add it back. 2. Change the welcome text to something like: **Context Control Center** Context Items are reusable pieces of information that your AI … ### [Handle the case when scope plugin values are no longer available](https://git.drupalcode.org/project/ai_context/-/work_items/3586145) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: **Problem:** Scope values can disappear after context items or agents have already selected them. For example: - A context item targets `node:1234`, then that node is deleted. - A context item or agent subscribes to the `hr` site section, then that site section is removed. - A context item or agent uses the `foobar` AI context tag, then that tag term is deleted. When this happens, the module should gracefully remove stale values from stored context item scope, agent scope subscriptions, and any related selection indexes. Target entity references should also be removed when the target entity… ### [Clean up follow-ups from target entity decoupling review](https://git.drupalcode.org/project/ai_context/-/work_items/3586082) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> **Problem/Motivation** There was out-of-scope feedback on: #3577428 Feedback (PDF) Feedback (MD) **Description:** Follow up on the non-blocking items identified during the target entity / DER decoupling review. The MR made `dynamic_entity_reference` optional successfully, but a few cleanup tasks remain to reduce optional dependency coupling, improve documentation, and tighten safer render/input patterns. **Tasks:** - Remove the `DynamicEntityReferenceItem` import/reference from `AiContextItem:… --- MERGE REQUESTS (2w) --- ### [Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter](https://git.drupalcode.org/project/ai_context/-/merge_requests/184) State: merged 2026-06-27 | Author: Matt Glaman (mglaman) | Branch: 3586274-issue-branch | 1135 diff lines Description: ## Description Implements the finalized UX from the 17 June review (see issue), following up #3586219. **Columns** - Merge the **Use cases** and **Scope** columns into a single **Scopes** column. Pills are ordered as on the edit page (scope plugins are weight-sorted, so Use Cases lead). **Filters** - Remove the standalone **Use cases** filter. - Replace the single scope filter with a cascade: - First select: scope name (ordered as the edit page), defaulting to **All scopes**. - Second select: values for the chosen scope, defaulting to **All**. With "All scopes" selected it lists every… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_context/-/merge_requests/175) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2451 diff lines Description: Relates to #3586269. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/201) State: closed | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/context-prefix-and-manage-docs-3586298 | 45 diff lines Description: Fixes two RC1-blocking items from the AI Best Practices review: 1. Context prefix default alignment: The fallback string in AiContextSystemPromptSubscriber did not match the value shipped in config/install/ai_context.settings.yml. Aligned to the canonical config default. 2. Stale getManageUrl() docs: scope_api.md and custom_scopes.md still referenced the nonexistent getManageUrl(): ?string method. Updated to document the actual getManageRoute(): ?array method with the correct return type and structure. ### [Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/202) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/documentation-api-consistency-3586305 | 45 diff lines Description: Fixed 6.1 and 6.2 6.1 — Context prefix alignment The fallback string in AiContextSystemPromptSubscriber didn't match the value in config/install/ai_context.settings.yml. Aligned the PHP fallback to the canonical config default. 6.2 — Stale getManageUrl() docs scope_api.md and custom_scopes.md were still referencing getManageUrl(): ?string which no longer exists. Updated both files to document the actual getManageRoute(): ?array method with the correct return structure. --- COMMITS (2w) --- - [cd623c23](https://git.drupalcode.org/project/ai_context/-/commit/cd623c239ca6b801f9080e30d131b0d0b34999fa) Issue #3586155: Add GitLab issue and merge request templates — Matt Glaman (2026-06-18T22:44:14.000+00:00) - [28ad25c9](https://git.drupalcode.org/project/ai_context/-/commit/28ad25c9e27c7ce7f60a86c59f8d0989f2205941) Issue #3586252: Update overview page help text and docs. — Kristen Pol (2026-06-18T21:12:44.000+00:00) - [b50b992a](https://git.drupalcode.org/project/ai_context/-/commit/b50b992a6142ec6cdddd7dc7ec19bafc4a9e17b2) Issue #3586267: Added SECURITY.md file — Daniel Rodriguez (2026-06-18T15:15:05.000+00:00) - [abb2ab42](https://git.drupalcode.org/project/ai_context/-/commit/abb2ab423e092aafd956b0e6b38491a26e95470a) Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11" — Juan Correa (2026-06-18T14:51:24.000+00:00) - [d0b32de1](https://git.drupalcode.org/project/ai_context/-/commit/d0b32de1894c4f3af997875a7a2631a9a8cbccf3) Issue #3586270: Document how the Tag scope works — Matt Glaman (2026-06-21T04:53:19.000+00:00) - [0cee6f4d](https://git.drupalcode.org/project/ai_context/-/commit/0cee6f4db5f9382463769bbccc3f259ffa1b2e89) Issue #3586241: Document Supported vs Internal APIs — Rob Loach (2026-06-21T04:27:28.000+00:00) - [c3af5872](https://git.drupalcode.org/project/ai_context/-/commit/c3af587205e783a94dbbcc6d5df8cd1d9e57179d) Issue #3586251: Update subcontext feature help text and docs. — Kristen Pol (2026-06-20T23:48:20.000+00:00) - [8c163a5b](https://git.drupalcode.org/project/ai_context/-/commit/8c163a5b3770a8b9c0c7c85451eb7da52d4fe51b) Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports. — Kristen Pol (2026-06-21T17:17:26.000+00:00) - [861bca21](https://git.drupalcode.org/project/ai_context/-/commit/861bca2160e3fd0a9d2ad63aaacf85cc376f2d0d) Issue #3586284: Clarify context item scope form copy and layout. — Kristen Pol (2026-06-23T02:58:53.000+00:00) - [0ff30026](https://git.drupalcode.org/project/ai_context/-/commit/0ff30026ed134bb69dadfecdf5dc1610ee2db5b4) Issue #3586272: Add validation that max_global_items cannot exceed max_items — Matt Glaman (2026-06-23T02:51:20.000+00:00) - [426e21c6](https://git.drupalcode.org/project/ai_context/-/commit/426e21c69476209ac4a8003bcc8c26c2e931efcf) Issue #3586285: Add configure links to Context Control Center. — Rob Loach (2026-06-23T01:00:08.000+00:00) - [641dfa64](https://git.drupalcode.org/project/ai_context/-/commit/641dfa6405be90616b188689e3ca05acb965c384) Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager. — Kristen Pol (2026-06-23T21:42:30.000+00:00) - [fd20a9b0](https://git.drupalcode.org/project/ai_context/-/commit/fd20a9b07a46e35bec41b8dcfbbfc101e6f2c198) Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache. — Abhisek Mazumdar (2026-06-23T20:18:27.000+00:00) - [048a8620](https://git.drupalcode.org/project/ai_context/-/commit/048a86207fdc40bfd6afee51ab7fb4f6dc9c98fe) Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms — Ahmad Khader (2026-06-23T18:32:47.000+00:00) - [ed2065e0](https://git.drupalcode.org/project/ai_context/-/commit/ed2065e0dc3d95626bde615ddad6ee60549e7e82) Issue #3586288: Update submodule requirements. — Kristen Pol (2026-06-23T11:05:19.000-07:00) - [a19061ba](https://git.drupalcode.org/project/ai_context/-/commit/a19061ba4e2242a1a3736ca55c383e290b2bf708) Issue #3586244: Add example context items from the Chicago Driesnote demo. — Anikó Viola (2026-06-23T18:09:24.000+00:00) - [5c40b302](https://git.drupalcode.org/project/ai_context/-/commit/5c40b3020c850e2674ff0eab9c8145554a703eb9) Issue #3586209: Batch N+1 queries in AiContextUsageTracker — Abhisek Mazumdar (2026-06-24T16:07:58.000+00:00) - [fdb5b4a0](https://git.drupalcode.org/project/ai_context/-/commit/fdb5b4a0f9e81ace3dce7fc36d1bf1976de74c22) Issue #3577429: Make Scheduler an optional progressive feature. — Matt Glaman (2026-06-27T02:11:36.000+00:00) - [55bceeb9](https://git.drupalcode.org/project/ai_context/-/commit/55bceeb9efca4ea613af0bc8f632928f07a0f2db) Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green. — Kristen Pol (2026-06-28T01:30:54.000+00:00) - [da3549d8](https://git.drupalcode.org/project/ai_context/-/commit/da3549d824ac126399e2e765e673bd6e9830c81f) Issue #3586297: Add warning on subcontext edit form if parent is unpublished. — Kristen Pol (2026-06-27T21:09:55.000+00:00) - [35098852](https://git.drupalcode.org/project/ai_context/-/commit/3509885235b6c3ca00c97f34d3ec72cc9be7f689) Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter — Matt Glaman (2026-06-27T18:52:52.000+00:00) - [1a9ec8e9](https://git.drupalcode.org/project/ai_context/-/commit/1a9ec8e9c17e6cdf48366d11d130390f8ae2052e) Issue #3586261: Clean up bundleless context item follow-ups. — Kristen Pol (2026-07-01T00:09:36.000+00:00) - [2f8470ed](https://git.drupalcode.org/project/ai_context/-/commit/2f8470ed1a8a063b19ebe33a2fa45e8402fc194b) Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes — Juan Correa (2026-06-30T17:01:31.000-05:00) - [2d0bc88f](https://git.drupalcode.org/project/ai_context/-/commit/2d0bc88f4f592ee8f4b3c1d5d8db496a1f2f5304) Issue #3586220: Add single context item display. — Eric Homanchuk (2026-06-30T20:44:23.000+00:00) ======================================================================== ## [25] summariseModule:ai_dashboard:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Dashboard (machine name: ai_dashboard) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                          AI Dashboard

                                          then use

                                          ,

                                          ,

                                            /
                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                            tags. After the project summary prose, add a single subsection titled "

                                            How can I help on this project?

                                            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Improve AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585220) State: opened | Updated: 2026-06-26 | Author: Rob Loach (robloach) | Assigned: Rob Loach (robloach) | Labels: documentation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !24 [Issue #3585220: Improve AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/24) | State: opened | Author: Rob Loach (robloach), 7674 diff lines Description: https://ai-dashboard-41c651.pages.drupalcode.org/ecosystem/ - [x] I find the Zensical CSS makes the font pretty small, and hard to see the "Filter". Could be tweaked. - [x] We could likely use the JSON manifest from this directly in the AI Dashboard module itself to allow users to browse modules from their own site - [ ] Need to add a cron rebuild process to grab the new modules from Drupal.org - [ ] The Category detection could use more tweaks. Uses the Name and Description, and when it can't find an appropriate one, it fallsback to Utility. - [ ] Add a column for whether or not the module i… ### [AI Recipe modal is missing the argument](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585216) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, priority::normal, state::postponed, userInterface Description: >>> [!note] Migrated issue Reported by: [ro-no-lo](https://www.drupal.org/user/174449) Related to !18 >>> When I scroll to the "Features" Section I see 7 results: AI Assistent, AI Image Classification, AI SEO Optimizer, etc. When I click ANY "View Commands" button I see this: cd /Users/foobar/code/mypage.ai/Applications/barfoo/bin/php/php8.3.0/bin/php /Users/foobar/code/mypage.ai/core/scripts/drupal recipe When executing via vendor/bin/drush recipe or as noted in the modal I get Not enough arguments (missing: "path"). So any button is currently useless or incomplete. I have no idea what t… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [26] summariseModule:ai_search:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), m4olivei, Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                            AI Search

                                            then use

                                            ,

                                            ,

                                              /
                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                              tags. After the project summary prose, add a single subsection titled "

                                              How can I help on this project?

                                              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Attempt long running chunk indexing for 1.x branch without BC](https://git.drupalcode.org/project/ai_search/-/work_items/3584014) State: closed | Updated: 2026-06-22 | Author: Scott Euser (scotteuser) | Assigned: Scott Euser (scotteuser) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: # Problem/motivation In https://git.drupalcode.org/project/ai/-/work_items/3487487 we added this for 2.x branch. It has interface changes however. # Proposed resolution Make a version of it that works for 1.x but without any breaking changes. E.g. testing if methods exist and gracefully falling back in stead. Test coverage should still be applied ### [Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions](https://git.drupalcode.org/project/ai_search/-/work_items/3584010) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: m4olivei | Labels: Needs issue summary update, category::feature, code, priority::normal Description: >>> [!note] Migrated issue Reported by: [m4olivei](https://www.drupal.org/user/410384) Related to !1476 !38 !37 >>> --- [Tracker] Update Summary: Initial implementation pushed, seeking review Short Description: RagTool::execute() ignores additional context_definitions added via alter hook, preventing dynamic metadata filtering Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation For sites making use of the RagTool FunctionCall plugin, it would be useful if we could extend the FunctionCall to advertise to the LLM addit… ### [How to Apply Filters in VDB for RAG Chatbot](https://git.drupalcode.org/project/ai_search/-/work_items/3547016) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: Search API, category::feature, code, filters Description: >>> [!note] Migrated issue Reported by: [yijin928@163.com](https://www.drupal.org/user/3848766) >>> Problem/Motivation I’m integrating a Zilliz vector database with an AI-powered RAG chatbot. I have filterable attributes (e.g., case studies, approaches) stored as integers. When I query the VDB via the AI explorer, these attributes are returned, but I’m not sure how to pass filters into the query so that results are pre-filtered. In short, I want to apply filters at query time so Zilliz returns only the filtered chunks. Steps to reproduce Use Zilliz for AI search and connect… ### [[Plan] AI Search 2.0.x and roadmap to stable](https://git.drupalcode.org/project/ai_search/-/work_items/3485449) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, code, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) >>> Backports needed for AI Search 1.0.x stable release Duplicated from the list below in _shoulds_: [2x only] #3584015 - 2x branch is currently broken as a result of Symfony Platform integration [2x only, but could be backported] #3547137: Title is duplicated in chunk if present in the index as contextual content - Fix double title [2x only, needs backport to 1x] #3520606: Long node titles can trigger exception 'The minimum overlap cannot be equal to or exceed the maximum chunk size.' when index… ### [Views should have a warnings when creating a view that has 1+ non full text Filters using an AI Search backend](https://git.drupalcode.org/project/ai_search/-/work_items/3479025) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::minor, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation Filters will only ever minimally work and the complexity allowed in Views for Filters (Exposed and not) will likely never be fully supported by the more limited filtering options provided by Vector Databases like Pinecone or Milvus/Zilliz (Postgres and SOLR vector indexing could change that) Non "Filterable Attributes" should be prevented altogether. Users likely need to use the traditional combined with AI Search options (see documentation from AI module hopepage -> AI Sear… ### [Convert search query to markdown](https://git.drupalcode.org/project/ai_search/-/work_items/3525470) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [ayrmax](https://www.drupal.org/user/1625944) Related to !622 >>> Problem/Motivation When searching for reference-style identifiers such as A1_345/2003 or E6_627/2024, the search index does not return the expected content as the top result. This appears to be due to markdown-sensitive characters not being handled in the query string, while they are escaped during indexing. Steps to reproduce Add content with identifiers like A1_345/2003. Index the content. Search using the raw identifier (e.g., A1_345/2003) in Vector DB Explorer. Observe that… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-29 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [The title field not found if machine name is different](https://git.drupalcode.org/project/ai_search/-/work_items/3553711) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [calmforce](https://www.drupal.org/user/915444) >>> Problem The bug is found in EmbeddingBase.php, function groupFieldData(), lines 181-182. The call $field->getFieldIdentifier() returns the field machine name that can be set to anything during the Index creation, and it will not be equal to $label_key in this case. It should be the call $field->getPropertyPath() which will always return 'title' for the node title field, same as $label_key. Steps to reproduce (required for bugs, but not feature requests) 1. Specify machine name for the title fi… ### [Fix support of non-content entity SearchAPI datasources](https://git.drupalcode.org/project/ai_search/-/work_items/3575999) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: Needs tests, category::bug, code, needs backport to 1.x Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !25 >>> Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Adding field from that data source is not possible OOTB due to how \Drupal\ai_search\Form\AiSearchIndexFieldsForm::buildForm() alters Search API's own form and hardcoded entity data source dependency. After that issue gets mitigated and you try to index data from that data source t… ### [Consider standard naming conventions for vector dbs](https://git.drupalcode.org/project/ai_search/-/work_items/3539213) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::minor, state::postponed Description: >>> [!note] Migrated issue Reported by: [kim.pepper](https://www.drupal.org/user/370574) >>> Problem/Motivation Currently we have a mix of concepts: Collection Database Namespace Index Database and collection seem to be combined to make a unique index in some providers, and a database table name in pgsql and mysql. Index is used by some. Can we clarify what each means and come up with a standard naming convention? Steps to reproduce (required for bugs, but not feature requests) Proposed resolution Remaining tasks Optional: Other details as applicable (e.g., User interface changes, API c… ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-29 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, priority::major, state::postponed Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers ### [Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal](https://git.drupalcode.org/project/ai_search/-/work_items/3584028) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` assigns `vector_input` and `query` into `$params` before the `if/else` branch: ```php $params['vector_input'] = $vector_input; $params['query'] = $query; if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); // $params still has vector_input and query } ``` `querySearch()` does not accept `vector_input` or `query` as parameters. Spreading `$params` into it causes a PHP fatal: ``` PHP Fatal error: Unknown named argument $vector_input ``` ## Steps to reproduce 1. Install `ai_se… ### [PluginException from getSearchVectorInput() is not caught, returning empty results with no error](https://git.drupalcode.org/project/ai_search/-/work_items/3584026) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem When the configured embeddings engine plugin cannot be instantiated, `getSearchVectorInput()` throws a `PluginException`. Nothing catches it in the search path. The search returns empty results with no error logged and no message shown to the user or admin. There is no way to tell from the outside whether the search ran and found nothing, or crashed before running at all. Common triggers: - The AI provider module is disabled or uninstalled - `embeddings_engine` in config references a provider ID that no longer exists - The provider is not fully configured ## Steps to reproduce … ### [Logger not injected in `create()`, causing fatal error on error paths](https://git.drupalcode.org/project/ai_search/-/work_items/3584025) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `SearchApiAiSearchBackend::create()` does not inject the logger service. The class calls `$this->logger->error()` inside `doSearch()` when something goes wrong. Because the property is never set, any error path throws a PHP fatal instead of writing a log entry. In practice this means a misconfigured provider produces a fatal error rather than a clear watchdog message. The real problem is hidden. ## Steps to reproduce 1. Install `ai_search`. 2. Configure a Search API index with the AI Search backend. 3. Set an embeddings engine that is misconfigured (wrong provider ID, missing AP… ### [vectorSearch() is never called for embedding-free VDB providers](https://git.drupalcode.org/project/ai_search/-/work_items/3584027) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` calls `vectorSearch()` only when `$vector_input` is non-empty: ```php if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); } ``` VDB providers that do not use embeddings (LLM reasoning, BM25, keyword trees, etc.) always have an empty `$vector_input`. So `querySearch()` is always called instead of `vectorSearch()`. `querySearch()` is for browse queries with no search terms. It does not receive the query text. A search for "climate change" calls `querySearch()` with no keywords a… --- MERGE REQUESTS (2w) --- ### [#3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC"](https://git.drupalcode.org/project/ai_search/-/merge_requests/45) State: merged 2026-06-22 | Author: Scott Euser (scotteuser) | Branch: 3584014-long-chunk-1x | 1569 diff lines Description: Closes #3584014 ### [Issue #3584010: Add FilterableRagTool with per-index derivatives and attribute filtering](https://git.drupalcode.org/project/ai_search/-/merge_requests/38) State: opened | Author: m4olivei | Branch: 3584010-add-filterableragtool-1x | 1332 diff lines Description: Adds a new deriver-based FunctionCall plugin that produces one derivative per ai_search.index.* config. Each derivative is scoped to a single Search API index and exposes attribute fields as optional context_definitions, allowing LLMs to pass filter values as query conditions. The existing RagTool remains untouched for backwards compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) Closes #3584010 ### [Resolve "Batch embeddings for improved indexing performance"](https://git.drupalcode.org/project/ai_search/-/merge_requests/53) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3584024-batch-embeddings-for-improved-indexing-performance | 732 diff lines Description: Closes #3584024 --- COMMITS (2w) --- - [04220985](https://git.drupalcode.org/project/ai_search/-/commit/042209850e6777f84e2ae7f9477a599d42a79b25) #3584023: Set default to access check for the Rag Tool (2x) — Scott Euser (2026-06-24T10:20:41.000+01:00) ======================================================================== ## [27] summariseModule:field_widget_actions:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev) [1], Daniel Bosen (daniel.bosen), Edward Zwart (ezeedub) [1], project update bot (Project-Update-Bot) [1], Scott Euser (scotteuser), Volker Killesreiter (volkerk) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                              Field Widget Actions

                                              then use

                                              ,

                                              ,

                                                /
                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                tags. After the project summary prose, add a single subsection titled "

                                                How can I help on this project?

                                                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Field Widget Actions show in the "Add New Action" unavailable tools](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3536116) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, code Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !21 [Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/21) | State: merged 2026-06-23 | Author: Artem Dmitriiev (a.dmitriiev), 804 diff lines Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) >>> Problem/Motivation Field Widget Actions plugin has a method isAvailable, it is currently widely used in AI Automators. The main requirement for a plugin to be available in case of an automator, this automator should exist for that entity type and field. When displaying the dropdown list the availability is not checked, only the base field type/field widget checks are done. This leads to a confusion when a plugin is available in the list, but it can't be really added, because when "Add" button is… ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-30 | Author: Daniel Bosen (daniel.bosen) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !24 [create uuids in config action](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/24) | State: opened | Author: Daniel Bosen (daniel.bosen), 281 diff lines Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3547306) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [ezeedub](https://www.drupal.org/user/633844) Related to !893 >>> Problem/Motivation Currently, Field Widget Actions provide excellent automation for content generation, but once an automator generates content, users have limited options for refinement without manually editing or re-running the entire automator process. This creates a gap between fully automated content generation and user-controlled refinement. Users often want to iteratively improve AI-generated content with additional context or refinement instructions (e.g., "make it shorter", "… ### [Examples of plugins for more complex field widgets?](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3576699) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::support, code, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [peter törnstrand](https://www.drupal.org/user/293786) >>> I'm trying to create a field widget action for the Metatag widget metatag_firehose. I got it sort of working but the buttons are not added next to the individual metatag "sub fields" (title, description, abstract, tags) but at the end of the metatag widget. Wrappers are added correctly though. Does anybody know of any existing FieldWidgetAction plugins that exists for more complex field types such as Metatag? ### [Missing events in suggestion.js](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578820) State: closed | Updated: 2026-06-23 | Author: Volker Killesreiter (volkerk) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !18 [Trigger events in case of value update on suggestion](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/18) | State: merged 2026-06-23 | Author: Volker Killesreiter (volkerk), 181 diff lines Description: Selecting a suggestion sets target.value without dispatching input or change events, breaking integrations that rely on them (e.g. autosave, states, Tagify, etc.). Align suggestions.js to other instances of this module where this is handled correctly.                                                          ### [Automated Drupal 12 compatibility fixes for field_widget_actions 1.0.x-dev](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578822) State: closed | Updated: 2026-06-23 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Testing AI Workflow Automation](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578818) State: closed | Updated: 2026-06-23 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: Description: Some issue for testing ### [Allow other contrib modules to mark their field widgets as childless so FWA actions still appear](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578202) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !26 [Resolve "Allow other contrib modules to mark their field widgets as childless so FWA actions still appear"](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/26) | State: opened | Author: Scott Euser (scotteuser), 221 diff lines Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation As discussed in #3563961 and #3546465, field widget type dependencies (like `chosen_select` or `tagify`) are currently hard-coded as 'childless' elements for Field Widget Action plugins. Childless elements need wrapping in a parent in order for the FWA button to show up. There does not seem to be a straightforward way to detect whether a field widget has a {{ children }} element being output. Steps to reproduce Attempt to enable a Field Widget Action on a custom or unlisted fi… ### [Support for checkboxes/radio buttons using Ajax JS Commands](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578204) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !25 [Resolve "Support for checkboxes/radio buttons using Ajax JS Commands"](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/25) | State: opened | Author: Scott Euser (scotteuser), 433 diff lines Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation Support for Checkboxes and Radios was deferred from #3563961: Support select type widgets (select, tagify, etc) using ajax JS commands because they require a different field widget setup. Steps to reproduce Attempt to use Field Widget Actions that need JS commands to fill checkbox or radio input fields. Proposed resolution Implement FWA support specifically for Checkboxes/Radios widgets. Remaining tasks Create MR and add test coverage. User interface changes N/A API changes N/A… ### [Field Widget Button labels are not translatable via UI](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578824) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [fago](https://www.drupal.org/user/16747) >>> [Tracker] Update Summary: Field Widget Button labels are not translatable via UI Short Description: Button labels in field widget actions are configured via entity-form-displays. However, entity form displays have no UI for configuring translations, thus, there is no dedicated page and no entry at /admin/config/regional/config-translation Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem Button labels in field widget actions are configured vi… --- MERGE REQUESTS (2w) --- ### [Issue #3547306: Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/19) State: merged 2026-06-25 | Author: Edward Zwart (ezeedub) | Branch: 3547306-interactive-refinement | 3775 diff lines Description: Adds opt-in **interactive refinement** to Field Widget Actions: when enabled, an action button opens a modal that shows the generated content, lets the user iteratively refine it with follow-up prompts, and then inserts the result into the field. Refinement is off by default — existing actions are unaffected. ## Approach Built on the server-side **Form API** modal (`FieldWidgetFormActionBase`), per maintainer feedback — no custom modal JavaScript or CSS. The generated content and the refinement prompt are ordinary form elements; clicking **Refine** rebuilds the modal server-side (the same wa… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/23) State: merged 2026-06-23 | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 20 diff lines Description: Relates to #3578822. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-843071. --- COMMITS (2w) --- - [29559012](https://git.drupalcode.org/project/field_widget_actions/-/commit/29559012c2d78914615f33313712d169b95b3d07) Trigger events in case of value update on suggestion — Volker Killesreiter (2026-06-23T09:06:13.000+00:00) - [607eb11c](https://git.drupalcode.org/project/field_widget_actions/-/commit/607eb11c9c47fba18af2c6469efd90a7979443bf) Automated Project Update Bot fixes — project update bot (2026-06-23T08:08:53.000+00:00) - [2583a232](https://git.drupalcode.org/project/field_widget_actions/-/commit/2583a232164cc85c90c07b09c270116c52dff4df) Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form — Artem Dmitriiev (2026-06-23T07:59:58.000+00:00) - [69acdd60](https://git.drupalcode.org/project/field_widget_actions/-/commit/69acdd60d2250e309fdc1176d081d9e17a75af82) Issue #3547306: Add interactive refinement capability to Field Widget Actions — Edward Zwart (2026-06-25T09:58:36.000+00:00) ======================================================================== ## [28] summariseModule:ai_translate:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Miriam Nugent (Peacog), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                AI translate

                                                then use

                                                ,

                                                ,

                                                  /
                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                  tags. After the project summary prose, add a single subsection titled "

                                                  How can I help on this project?

                                                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [What's the point of the "Chat proxy to LLM" provider?](https://git.drupalcode.org/project/ai_translate/-/work_items/3585528) State: opened | Updated: 2026-06-23 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::support, priority::minor, state::accepted Description: I took a brief look at the code and the doc block description didn't help much: > The purpose is to implement 'translate_text' operation using more generic 'chat' operation supported by many LLM providers. I'm not questioning the need for it, but I'd like to understand why it is necessary... I have multiple providers installed on a site, but after selecting "Chat proxy to LLM", the only options in see in the "Model" select list are from the amazee.io provider (I also have OpenAI and Anthropic installed.) thanks, -mike ### [Aggregate a node's translatable field-columns into a single chat request (opt-in batch translation)](https://git.drupalcode.org/project/ai_translate/-/work_items/3585527) State: opened | Updated: 2026-06-22 | Author: Tamas Balog (tbalog) | Assigned: Tamas Balog (tbalog) | Labels: category::feature, priority::normal, state::accepted Description: --- ## Problem/Motivation `ai_translate` translates **one field-column per chat request**. `TextTranslator::translateContent()` is called once per column, and `ChatTranslationProvider::translateText()` rebuilds the full prompt (the configured translator prompt template + `setSystemPrompt('You are a helpful translator.')`) and calls `chat()` for each one. For a node with N translatable field-columns, that is N requests, each re-sending the **same** instruction block. For a typical 3-field node, roughly 1,000 of \~1,500 input tokens are the identical instructions sent three times. The redunda… ### [Refactor translation workflow to support Tool API and agent-driven translation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585523) State: opened | Updated: 2026-06-22 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: category::plan, code, priority::normal, state::needsWork Description: I am investigating whether I can have an AI Agent perform an entity translation, when a user requests this as part of an administrative AI agent interface. This would probably need some major refactoring of the module logic, since there are currently 2 endpoints: - UI batch translation - Drush command translation This would add a third one: Tool API translation So logic should be abstracted as much as possible where relevant, so all 3 entry points use the same code, rather than replicating it. I haven't investigated this further in detail, but already raising an issue here, in case someone … ### [HTML markup gets added after certain tags](https://git.drupalcode.org/project/ai_translate/-/work_items/3585526) State: opened | Updated: 2026-06-24 | Author: Tom Wauman (tom.wauman) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus ligt op een kennismaking met West-Vlaanderen én op het prachtig neogotisch erfgoedpand. Meer informatie een de inschrijvingslink vind je hieronder ``` Becomes: ``` 'The Secrets of the Court' is a series of six scavenger hunts for classes: from 1st grade up to and including 6th grade. The focus is on getting to know West Flanders as well as the magnificent Neo-Goth… ### [HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long)](https://git.drupalcode.org/project/ai_translate/-/work_items/3585525) State: opened | Updated: 2026-06-22 | Author: Carlos Busto Capeáns (cbccharlie) | Assigned: unassigned | Labels: automation::suggestionExists, category::bug, priority::normal, state::accepted Description: ## Problem/Motivation When using AI Translate to translate content that contains formatted text fields (`text_with_summary`, `text_long`) with HTML markup (e.g. ``, ``, ``, ``, etc.), the translated output does not preserve the original HTML structure. The AI model either strips, alters, or partially reconstructs the HTML tags, resulting in broken or invalid markup stored in the translated field value. This affects any content type that uses fields with a text format such as "Full HTML" or "Basic HTML" via CKEditor. ## Steps to reproduce 1. Install and configure the `ai_translate` submodul… ### [504 Time out on large content](https://git.drupalcode.org/project/ai_translate/-/work_items/3545381) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [doxigo](https://www.drupal.org/user/1331334) >>> When you run the translation on rather large page, eg. more than 1000 words and 300 ~ 400 HTML tags, you get: En AJAX HTTP-feil har oppstått.HTTP-resultatkode: 504Feilsøkingsinformasjon følger.Sti: /batch?id=341&op=do_nojs&op=doStatusTekst: errorSvarTekst: 504 Gateway Time-out504 Gateway Time-outnginx/1.18.0Suggestion: Divide the item into small batches with the chunks of it upon translation request. ### [Translation batch process does not handle translation errors](https://git.drupalcode.org/project/ai_translate/-/work_items/3542014) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: Ilia Nozadze (IliaNoz) | Labels: category::task, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [ilianoz](https://www.drupal.org/user/3614794) Related to !837 >>> Problem/Motivation Currently, translation errors are not handled at all. Errors are collected during the batch process, but they are never used or displayed. Fields are translated one by one using a batch operation. Some of these translations may fail, but the user has no way of knowing which ones failed. In some cases, every field translation can fail, yet the translation entity is still created and saved with the original (untranslated) data. This leads to confusion and potentially… ### [Automated Drupal 12 compatibility fixes for ai_translate 2.0.x-dev](https://git.drupalcode.org/project/ai_translate/-/work_items/3585524) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Issue #3545381 Split large HTML fields into chunks of a maximum number of characters](https://git.drupalcode.org/project/ai_translate/-/merge_requests/24) State: opened | Author: Miriam Nugent (Peacog) | Branch: 3545381-504-time-out-on-large-content | 200 diff lines Description: Closes #3545381 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_translate/-/merge_requests/23) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 409 diff lines Description: Relates to #3585524. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [29] summariseModule:ai_vdb_provider_pinecone:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Pinecone VDB Provider (machine name: ai_vdb_provider_pinecone) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                  Pinecone VDB Provider

                                                  then use

                                                  ,

                                                  ,

                                                    /
                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                    tags. After the project summary prose, add a single subsection titled "

                                                    How can I help on this project?

                                                    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-06-30 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Issue #3586209: Add support for batching on indexing operations (2.0.x)](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32) | State: opened | Author: Rob Loach (robloach), 333 diff lines Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (2w) --- ### [Issue #3586209: Add support for batching operations (1.1.x)](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/33) State: opened | Author: Rob Loach (robloach) | Branch: 3586209-pinecone-indexing-1 | 342 diff lines Description: While the other was targeting 2.x, this hits `1.1.x`. Closes #3586209 --- COMMITS (2w) --- (none) ======================================================================== ## [30] summariseModule:ai_search_block:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI powered Search Block (machine name: ai_search_block) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                    AI powered Search Block

                                                    then use

                                                    ,

                                                    ,

                                                      /
                                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                      tags. After the project summary prose, add a single subsection titled "

                                                      How can I help on this project?

                                                      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/40) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 21 diff lines Description: Relates to #3594805. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-856789. ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/43) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 753 diff lines Description: Relates to #3606122. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [feat: #3582452 Add guardrail set selection to ai_search_block](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3582452-add-guardrail-set | 799 diff lines Description: By: nikro Closes #3582452 --- COMMITS (2w) --- (none) ======================================================================== ## [31] stripNameAttribution:ai_search_block ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                      AI powered Search Block

                                                      The AI powered Search Block module saw several open merge requests during this period, though no commits were merged. feat: #3582452 Add guardrail set selection to ai_search_block was opened, introducing guardrail set selection functionality with 799 lines of changes. Two automated Project Update Bot merge requests (MR !40 and MR !43) were also opened, containing automated fixes with 21 and 753 diff lines respectively.

                                                      No issues were updated during the reporting period, and no commits were merged to the main branch, indicating that pending merge requests are awaiting review before integration.

                                                      How can I help on this project?

                                                      Review the open merge request for guardrail set selection to help move this feature forward. The automated Project Update Bot merge requests (!40 and !43) also need review to ensure compatibility and code quality standards are met.

                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot) ======================================================================== ## [32] summariseModule:flowdrop:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop (machine name: flowdrop) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                      FlowDrop

                                                      then use

                                                      ,

                                                      ,

                                                        /
                                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                        tags. After the project summary prose, add a single subsection titled "

                                                        How can I help on this project?

                                                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev](https://git.drupalcode.org/project/flowdrop/-/work_items/3592077) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/flowdrop/-/merge_requests/11) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 4588 diff lines Description: Relates to #3592077. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [33] stripNameAttribution:flowdrop ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                        FlowDrop

                                                        Activity this period centered on automated Drupal 12 compatibility work. The issue Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev was opened to track removal of deprecated API uses. An associated merge request, Automated Project Update Bot fixes, was created containing automated compatibility changes spanning over 4,500 lines of diff. The MR remains open and unmerged at the end of the reporting period. No commits were pushed to the main branch during this window, indicating that progress is blocked pending review and merging of the compatibility fixes.

                                                        How can I help on this project?

                                                        Review the open Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes. Test the patched code against Drupal 12 to ensure deprecated API removals don't introduce regressions. Help move this blocking work forward so the module can ship a compatible release.

                                                        Contributors: project update bot (Project-Update-Bot) ======================================================================== ## [34] summariseModule:flowdrop_ui_agents:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop UI Agents (machine name: flowdrop_ui_agents) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                        FlowDrop UI Agents

                                                        then use

                                                        ,

                                                        ,

                                                          /
                                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                          tags. After the project summary prose, add a single subsection titled "

                                                          How can I help on this project?

                                                          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev](https://git.drupalcode.org/project/flowdrop_ui_agents/-/work_items/3584958) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/flowdrop_ui_agents/-/merge_requests/27) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 232 diff lines Description: Relates to #3584958. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [35] stripNameAttribution:flowdrop_ui_agents ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                          FlowDrop UI Agents

                                                          Activity this period focused on Drupal 12 compatibility preparation. An Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev issue was opened to track automated removal of deprecated API uses. A corresponding merge request, Automated Project Update Bot fixes, was created containing compatibility changes across 232 diff lines. The MR remains open for review. No commits were merged during this period, leaving the Drupal 12 compatibility work as the primary item blocking forward progress on the 1.0.x development branch.

                                                          How can I help on this project?

                                                          • Review the pending Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes and help move it toward merge.
                                                          • Test the compatibility fixes in MR 27 against Drupal 12 to identify any issues introduced by the automated refactoring.

                                                          Contributors: project update bot (Project-Update-Bot)

                                                          ======================================================================== ## [36] summariseModule:langfuse:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Langfuse (machine name: langfuse) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                          Langfuse

                                                          then use

                                                          ,

                                                          ,

                                                            /
                                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                            tags. After the project summary prose, add a single subsection titled "

                                                            How can I help on this project?

                                                            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/langfuse/-/merge_requests/5) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 179 diff lines Description: Relates to #3599498. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [37] stripNameAttribution:langfuse ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                            Langfuse

                                                            Activity this period was limited to automated maintenance. A merge request titled Automated Project Update Bot fixes was opened, containing 179 lines of diff generated by the Project Update Bot. The MR remains open and awaiting review. No issues were updated, and no commits were pushed during the reporting period.

                                                            How can I help on this project?

                                                            Review the open Automated Project Update Bot fixes merge request to validate the automated changes and help move it toward merge. Check the issue queue for unaddressed bugs or feature requests that need attention.

                                                            Contributors: project update bot (Project-Update-Bot)

                                                            ======================================================================== ## [38] summariseModule:orchestration:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Orchestration (machine name: orchestration) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                            Orchestration

                                                            then use

                                                            ,

                                                            ,

                                                              /
                                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                              tags. After the project summary prose, add a single subsection titled "

                                                              How can I help on this project?

                                                              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Using JSON Schema to define "input", "output" and "config"](https://git.drupalcode.org/project/orchestration/-/work_items/3554622) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [d34dman](https://www.drupal.org/user/751698) >>> Problem/Motivation JSON Schema gives you a portable contract for each “thing” (task/node) and lets you auto-validate, auto-document, and even auto-generate forms. For an orchestration layer, a clean split into input, output, and config per node is intuitive and scales. Why JSON-Schema fits? - Contracts at the edges: Each node publishes exactly what it consumes (input) and emits (output), so composition is safe. - Runtime safety: Validate at design-time (when building a workflow) and at run… ### [Integrate with n8n](https://git.drupalcode.org/project/orchestration/-/work_items/3551197) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Stephen Mulvihill (smulvihill) | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) >>> Problem/Motivation Extend the Orchestration module to support n8n as an automation provider, similar to existing Activepieces integration. This enhancement will enable bidirectional communication between Drupal and n8n, allowing workflows to both trigger n8n automations from Drupal entity events (create, update, delete, publish) and perform actions in Drupal (create/update entities, media, users, taxonomy, etc.) via n8n nodes. The implementation will include: A new N8nDriver in the Orchestration m… ### [[orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services](https://git.drupalcode.org/project/orchestration/-/work_items/3575105) State: opened | Updated: 2026-06-28 | Author: Shibin Das (D34dMan) | Assigned: Shibin Das (D34dMan) | Labels: category::feature, state::accepted, v1.0.x-dev Description: ## Problem / Motivation The `orchestration_eca` submodule currently bridges ECA and the Orchestration module in one direction only: it exposes ECA models _as_ Orchestration services, so external callers can invoke ECA workflows via the Orchestration HTTP API. The reverse direction is missing. There is no ECA Action plugin that allows an ECA model to `_invoke_` a registered Orchestration service. This means ECA cannot use its rich event and condition system to trigger any of the services registered by other `ServicesProviderInterface` implementations. Current: External → Orchestration → E… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [39] summariseModule:agui:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                              AG-UI

                                                              then use

                                                              ,

                                                              ,

                                                                /
                                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                tags. After the project summary prose, add a single subsection titled "

                                                                How can I help on this project?

                                                                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for agui 1.0.x-dev](https://git.drupalcode.org/project/agui/-/work_items/3590037) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/agui/-/merge_requests/30) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 41 diff lines Description: Relates to #3590037. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [40] stripNameAttribution:agui ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot)" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                                AG-UI

                                                                The AG-UI module saw minimal activity during the reporting period. An automated compatibility issue, Automated Drupal 12 compatibility fixes for agui 1.0.x-dev, was opened to address deprecated API uses in preparation for Drupal 12. A corresponding merge request containing automated fixes from the Project Update Bot was opened but remains unmerged.

                                                                The meta issue [META] Improve Drupal Assistant Implementation was updated. This issue tracks work to refactor the Drupal Assistant proof-of-concept on the demo page to align with and potentially replace the ai_chatbot (Deepchat) module. The proposed approach involves integrating with the Polling service and emitting ag-ui events, with the goal of using a single, non-streamed request pattern.

                                                                No commits were pushed and no merge requests were merged during this period, indicating ongoing planning and review phases rather than active integration work.

                                                                How can I help on this project?

                                                                Review the automated Drupal 12 compatibility MR to verify the changes are safe and complete. Investigate the technical requirements for the Drupal Assistant refactor in the meta issue to help define implementation tasks.

                                                                Contributors: project update bot (Project-Update-Bot) ======================================================================== ## [41] summariseModule:ai_related_content:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Related Content (machine name: ai_related_content) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                AI Related Content

                                                                then use

                                                                ,

                                                                ,

                                                                  /
                                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                  tags. After the project summary prose, add a single subsection titled "

                                                                  How can I help on this project?

                                                                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev](https://git.drupalcode.org/project/ai_related_content/-/work_items/3576575) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Pinecone: fix `getVectorFromNode()` returning no results](https://git.drupalcode.org/project/ai_related_content/-/work_items/3576574) State: closed | Updated: 2026-06-25 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, code, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !17 [Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 2x](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/17) | State: merged 2026-06-25 | Author: Scott Euser (scotteuser), 72 diff lines Description: **File:** `src/Plugin/views/filter/AIRelatedContentNodeFilter.php` **Problem:** Two bugs in `getVectorFromNode()` cause the related content view to return zero results when using Pinecone: 1. `addCondition('drupal_entity_id', ...)` is silently ignored by Pinecone because `drupal_entity_id` is not a Search API index field. Without a working filter, the query returns random semantic matches for "Title" — none of which pass the ID check — so `getVectorFromNode()` always returns `null` and the query is aborted. 2. The ID check used strict equality (`!==`), which would also fail for chunk-suffix… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/19) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 239 diff lines Description: Relates to #3576575. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 1x](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/18) State: merged 2026-06-25 | Author: Scott Euser (scotteuser) | Branch: 3576574-pinecone-fix | 47 diff lines Description: Closes #3576574 --- COMMITS (2w) --- - [7c135f78](https://git.drupalcode.org/project/ai_related_content/-/commit/7c135f78817c00faf2c8143dd2ae4f8207db7cfc) bug: #3576574 Pinecone: fix `getVectorFromNode()` returning no results — Scott Euser (2026-06-25T10:48:57.000+00:00) ======================================================================== ## [42] stripNameAttribution:ai_related_content ======================================================================== You are correcting a project digest section. The prose wrongly attributes work to specific people. Rewrite only the sentences that name any of these people so they describe the work in the passive voice without naming anyone: project update bot Rules: - Do not name any of those people anywhere except a trailing "Contributors:" line. - Keep the trailing "Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1]" line exactly as-is (add it if missing). - Leave every other sentence, HTML tag, link, and citation exactly as-is. - Output the full corrected fragment and nothing else. --- SECTION ---

                                                                  AI Related Content

                                                                  A critical bug affecting Pinecone vector search was fixed during this period. The issue Pinecone: fix getVectorFromNode() returning no results addressed two bugs in the AIRelatedContentNodeFilter class that caused related content views to return zero results. The first bug involved addCondition('drupal_entity_id', ...) being silently ignored because drupal_entity_id is not a Search API index field, causing the query to return random semantic matches that failed ID validation. The second bug used strict equality checks that would fail for chunk-suffix IDs. The fix was merged via MR !18.

                                                                  Work continues on Drupal 12 compatibility through the Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev issue. An automated merge request (MR !19) containing deprecated API removal changes has been opened and awaits review.

                                                                  How can I help on this project?

                                                                  Review the pending Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes. Test the module with different vector database providers to ensure the recent Pinecone fix didn't introduce regressions.

                                                                  Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1] ======================================================================== ## [43] generateTldr:developer ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a technical developer audience. Be specific — name modules, merged features, and critical bugs. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                                                                • elements must be inside the
                                                                    , never outside it):

                                                                    Shipped

                                                                    1. Title here — One sentence explanation [1].
                                                                    2. Another title — One sentence explanation.

                                                                    Ongoing

                                                                    1. Title here — One sentence explanation [2].
                                                                    Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] Regression in 1.4x release vs 1.3.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586546 [2] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [3] AiPromptSubForm validates inline prompt against stale prompt type when multiple ai_prompt elements exist (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586548 [4] Taxonomy automator clears valid term values when the LLM returns HTML-encoded entities (e.g. &) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586553 [5] Remove access deepchat api permission and use Assistant access as the single source of truth (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586552 [6] Permissions to use AI Assistant are confusing (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3498873 [7] Create AI assistant API session only after the first message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554797 [8] Add Extractive Question Answering operation type (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584371 [9] How to use AI file entity defined in file src/Entity/AiFile.php ? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586551 [10] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [11] Improve ai_ckeditor UX when no provider modules are installed (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586549 [12] Issue when creating content and click on AI Assistant on Ckeditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586545 [13] Use ai_provider_configuration form element in RestrictToTopic configuration form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586472 [14] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [15] Rename Guardrails "RegExp guardrail" plugin to just "RegEx" (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586475 [16] Automated Drupal 12 compatibility fixes for ai 1.4.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586555 [17] lb asymetric translation not translating content anymore. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586554 [18] DeepChat Block invisible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554969 [19] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [20] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [21] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [22] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [23] Support long running chunking in 1.x branch for AI Search 1.x readiness (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586557 [24] Improve summarizer for AI request input and output data for logs and spans (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566762 [25] First load of ai_provider_configuration is slow (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579392 [26] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [27] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [28] Move Automators to Structured Output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577170 [29] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [32] Missing "Submit" button from "RAG/Vector Search" tool Configuration modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586533 [33] Fiber branch in OpenAiBasedProviderClientBase::chat() drops token usage from the reconstructed ChatOutput (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586522 [34] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [35] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [36] Inaccurate description in Generated Content External Link Security (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586560 [37] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [38] Add mariadb to vdb registry (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586559 [39] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [40] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [41] Add info about initiative and release differences to project page (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586568 [42] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [43] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [44] Allow vector database providers to opt in as the default VDB when none is set (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586500 [45] AI CKEditor regression in 1.5.x? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586567 [46] Release 1.2.17, 1.3.8, 1.4.3 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586565 [47] Add AIDmi to Other modules/recipes that work with the AI module (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586566 [48] Add AI Assistant API ChatProcessor plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585075 [49] Integrate ChatProcessor plugin system into AI Chatbot DeepChat block (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585077 [50] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [51] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [52] Uninstalling ai_ckeditor leaves stale toolbar items in editor.editor.* configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586570 [53] Add "throttle API requests" control? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561243 [54] [Discuss] Shift focus from provider plugins to operation type plugins in AI Core (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3559800 [55] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [56] Tools UI overview page does not load (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579979 [57] Move out AI Content Suggestions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3552885 [58] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [59] [Discuss] Consider adding Agents.md (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3573186 [60] Drupal AI Contribution meeting 2026-02-09 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3570259 [61] Create agents as Tools (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556380 [62] Implement Process System Integration for Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3493291 [63] [Discuss] Allow usage of Tool API in Agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556140 [64] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [65] Plan: Add cancel button to AI Chatbot (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499583 [66] Use core Json::encode() and Json::decode everywhere possible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3480683 [67] Move Prompt Library menu link under AI Infrastructure instead of Vector Database Configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586499 [68] Prompt Library menu item missing due to incorrect parent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585596 [69] [Discuss] Core support for browser providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577202 [70] Research better practices for recipes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577175 [71] Improvement suggestions for ai_automators docs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572751 [72] Create an HTML to Markdown API and service (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574246 [73] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [74] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [75] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [76] Unable to override the 'Calling agents' / 'Contacting agents' text (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586389 [77] Glossary for the Drupal AI initiative (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577844 [78] Automated Drupal 12 compatibility fixes for ai 2.0.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586525 [79] Field Widget Button labels are not translatable via UI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3567027 [80] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [81] Add ai_budget_control to the ecosystem / related modules list (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583958 [82] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [83] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [84] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [85] Validation of unexisting fields on paragraphs actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571033 [86] ai_content_suggestions: On-focus button un-hide rule misses .field-widget-action-widget-button for field--type-string-long (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583883 [87] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [88] Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586572 [89] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [90] Add metadata to VectorDBGenerator in AI-API-Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3549175 [91] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [92] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [93] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [94] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [95] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [96] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [97] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [98] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [99] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [100] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [101] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [102] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [103] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [104] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [105] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [106] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [107] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [108] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [109] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [110] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [111] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [112] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [113] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [114] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [115] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [116] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [117] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [118] Only one AI Automator worker queue item is processed per cron execution (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575190 [119] non streaming broken (fiber branch) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586457 [120] InputLengthLimit guardrail does not consistently scan user messages (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586578 [121] ImageClassificationItem returns string from getConfidenceScorePercentage and uses uppercase NULL in hints (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584863 [122] Drupal Eval Commons umbrella (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586445 [123] [Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586479 [124] Type error and infinite AJAX request loop when the Agent is unable to resolve a request job (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3547470 [125] ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586473 [126] fix: Validates inline prompt against stale prompt type when multiple ai prompt elements exists (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1686 [127] Issue #3582743: Set temp directory for encoderProvider. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1685 [128] Issue #3554797: Start session after first interaction (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/978 [129] Issue #3586541 Show last-modified date on documentation pages... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1684 [130] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [131] Draft: Fix lb asymetric translation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1687 [132] feat: #3586427 Adopt symfony/ai component v0.8 as platform provider (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1619 [133] Automated Project Update Bot fixes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1688 [134] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1628 [135] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1679 [136] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1690 [137] #3586470 "Make API explorer work with Symfony platform and legacy providers" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1613 [138] #3582633: Add Functional JavaScript testing conventions and validation script (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1432 [139] Resolve #3586531 "Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1702 [140] feat(ai_ckeditor): warn users when no AI provider is installed in the CKEditor settings tab (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1701 [141] feat: #3577170 Move Automators to Structured Output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1291 [142] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1700 [143] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1699 [144] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1697 [145] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1695 [146] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1696 [147] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1694 [148] Issue #3586521: Fix tests with MDXEditor for 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1698 [149] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1693 [150] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1692 [151] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1691 [152] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [153] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [154] Issue #3586559: Add MariaDB VDB provider to matrix (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1705 [155] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [156] Allow batching for embedding and vector DB operations (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1126 [157] Remove access deepchat api permission and use Assistant roles as the single source of truth (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1703 [158] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1716 [159] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1717 [160] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [161] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1713 [162] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1715 [163] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1714 [164] Issue #3586517: Check if any Vdb provider is setup (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1660 [165] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1712 [166] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1711 [167] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1656 [168] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1710 [169] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1621 [170] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1709 [171] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [172] #3585077: Integrate chatprocessor plugin (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1706 [173] #3585075: Add ai assistant chat processor (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1707 [174] #3585075: Add ai assistant chat processor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1496 [175] #3585077: Integrate chatprocessor plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1497 [176] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [177] task: #3586561 Add a setup-guardrails agent skill to configure guardrails,... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1724 [178] Remove ai_content_suggestions module for ai core (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1042 [179] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1522 [180] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1521 [181] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1523 [182] docs: #3572751 Add docs for the Field widget Actions automator worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1293 [183] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1187 [184] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1201 [185] feat: #3586538 Add hook_requirements and hook_update_10001 for ai_validations deprecation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1725 [186] Issue #3586389: Add agent delegation message setting (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1539 [187] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1723 [188] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1722 [189] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1719 [190] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1721 [191] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1720 [192] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1670 [193] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1718 [194] ai-3586569: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1728 [195] fix(ai_ckeditor): remove stale toolbar items on uninstall and warn on confirm page (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1731 [196] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1730 [197] Resolve "Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1645 [198] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [199] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [200] Add AICKeditor tests (Target 1.4.x) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1577 [201] Added Functional JavaScript Tests (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1257 [202] fix: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1727 [203] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [204] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [205] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [206] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [207] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [208] Issue #3571498: Rethrow queue worker exceptions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1535 [209] Issue #3575190: Add configurable queue items per cron for AI Automators (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1647 [210] Issue #3586457: Add ChatInput::setForceSynchronous() and fix Fiber branch to use ChatFiberSupport capability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1646 [211] Resolve #3566613 "Commit message mike" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1285 [212] Resolve #3579088 "Guardrail plugins only" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1467 [213] Remove obsoleted #default_value (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1221 [214] feat: #3586479 Add gen_ai.* semantic conventions to ai_observability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1662 [215] fix: #3586473 Finalize streaming OTel spans on the terminal event (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1627 [216] Issue #3545462: Refactor StructuredOutputSchema to use Symfony validation attributes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1114 [217] Fix/token usage dto cached write tool use 3586576 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1736 [218] Add StructuredOutputSchema DTO and improve ChatInput validation. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/873 [219] Idea: AI Cost & Usage module — local cost dashboard + opt-in aggregated community telemetry (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586519 [220] Drupal AI UX meeting 15 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584833 [221] organise social media (MARIA) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586574 [222] find dutch volonteers to help with the event (human wayfinder / timekeeping / registration) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586573 [223] submit offer to ThomsonReuters / CIONet / VOKA / Beltug for cooperation. (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586572 [224] Make forms for the sponsors to submit their contacts/leads/clients for a free ticket (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586571 [225] Make the site look nice on mobile (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586570 [226] Update sponsors + subpages on Enterprise AI summit website (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586569 [227] Source case studies from AI Summit Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586557 [228] Drupal AI UX meeting 22 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584834 [229] Mockup: AI page creation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586581 [230] Mockup: AI review notifications (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586582 [231] Mockup: AI review on edit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586583 [232] Mockup: AI search (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586584 [233] Mockup: AI field automation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586585 [234] Mockup: AI search & replace (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586586 [235] Mockup: AI page translations (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586587 [236] Mockup: AI dashboard setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586588 [237] [Meta] AI roadmap feature mockups May 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586580 [238] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [239] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [240] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [241] [META] 2026 Outside-in / Innovation Roadmap (draft) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3576908 [242] Add standardized GitLab issue templates for initiative work (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586461 [243] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [244] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [245] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [246] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [247] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [248] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [249] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [250] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [251] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [252] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [253] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [254] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [255] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [256] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [257] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [258] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [259] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [260] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [261] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [262] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [263] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [264] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [265] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [266] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [267] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [268] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [269] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [270] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [271] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [272] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [273] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [274] Automated Drupal 12 compatibility fixes for ai_integration_eca 1.0.x-dev (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585018 [275] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [276] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [277] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [278] Issue #3585009: Added ECA execute action for Summarization. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/11 [279] Issue #3585010: Added ECA execute action for Text Classification. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/10 [280] Automated Project Update Bot fixes (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/13 [281] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [282] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [283] Respect skip_moderation, add test coverage for it (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/76 [284] Resolve #3593019 "Add imagetoimage possibilities" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/72 [285] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [286] fix: #3590873 Dall-E 3 has been deprecated and should be removed as default (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/71 [287] Automated Project Update Bot fixes (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/77 [288] Issue #3590963: Bump SDK constraint and drop method_exists defensive check (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/28 [289] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [290] Automated Project Update Bot fixes (mcp_client, MR) — https://git.drupalcode.org/project/mcp_client/-/merge_requests/19 [291] pgsql ext dependency missing in composer.json (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586235 [292] Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586234 [293] fix(#3586231): check that key identifiers are non-empty strings before loading keys (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/74 [294] chore: require ext-pgsql (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/76 [295] Automated Project Update Bot fixes (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/77 [296] ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588223 [297] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [298] Fix pre-existing PHPStan failures (deprecation issues) (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589186 [299] Automated Drupal 12 compatibility fixes for gemini_provider 1.x-dev (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589187 [300] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [301] #3588223: Resolved value error. (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/36 [302] Support batch embeddings (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37 [303] Issue #3589186: Ignore known PHPStan false positives (upstream ai docblock... (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/40 [304] Automated Project Update Bot fixes (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/41 [305] Resolve #3584375 "Add extractive question" (ai_provider_huggingface, MR) — https://git.drupalcode.org/project/ai_provider_huggingface/-/merge_requests/9 [306] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [307] Automated Project Update Bot fixes (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/50 [308] Issue #3607151: Remove hard ext-pgsql dependency (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/28 [309] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [310] Automated Drupal 12 compatibility fixes for mcp 1.x-dev (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3587790 [311] Automated Project Update Bot fixes (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/53 [312] AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586032 [313] Change "AI Agent" to "AI Agents" in admin menu (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586030 [314] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [315] Schema error for AI Agents CKEditor plugin (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3565169 [316] Exceptions in tool execute break the UI for the user (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3537123 [317] Add a way to mark the executor on agent runner (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3557417 [318] ContentEntitySeeder crashes on double-wrapped entity_array when ComplexToolItems + multiple=TRUE context definition produces nested array schema (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3578197 [319] UpdateViewPlugins: display option updates on non-default displays do not override defaults inheritance (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582781 [320] Views agent: style/row and filters/filter_groups must be overridden as pairs on non-default displays (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582782 [321] return_directly tool results are missing tool_id (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585054 [322] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [323] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [324] Fix streaming (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577520 [325] Automated Drupal 12 compatibility fixes for ai_agents 1.4.x-dev (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586038 [326] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [327] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [328] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [329] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [330] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [331] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [332] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [333] Resolve #3586032 "AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)" (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/286 [334] Issue #3547994: Add per-tool error catching to prevent agent crashes. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/220 [335] Add CKEditor schema for ai_agents (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/221 [336] Move AI Agents under Tools & Automation menu section (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/278 [337] Issue #3537123 by jurgenhaas: Exceptions in tool execute break the UI for the user (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/163 [338] Issue #3547995: Add deterministic tool usage limits. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/224 [339] Automated Project Update Bot fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/282 [340] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [341] Issue #3578197: Fix double-wrapped entity_array issue (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/244 [342] Issue #ai_agents-3582782: Fix AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/289 [343] Issue #ai_agents-3582781: review update AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/288 [344] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [345] Add skills for generating Tools (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582936 [346] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [347] tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582942 [348] [Tool] Create tools to save/update/delete SDC components (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3556021 [349] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [350] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [351] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [352] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [353] Change "Tools API" to "Tool API" in ToolsApi PHP attribute (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582940 [354] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [355] Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/92 [356] Issue #3582939: Fix getSupportedTypes() in MapDefinitionNormalizer and... (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/95 [357] languageSelect.spec.ts Failing in 1.x (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591705 [358] Only show default-language entities when reviewing auto-saved (pending) changes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591704 [359] Symmetric translation: component instance version updates must propagate to all translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591596 [360] Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591703 [361] Fatal error (AssertionError on dev env) when a component instance's image references a deleted file (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591702 [362] Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591693 [363] Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591699 [364] Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591701 [365] Coalesce reference fields whose values are consumed only through nested objects (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591678 [366] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [367] Support `content-entity-reference` props in CLI and Workbench (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591700 [368] Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3575644 [369] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [370] Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591695 [371] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [372] Release symmetrical translation functionality: drop the `canvas_dev_translation` feature flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591698 [373] Update Canvas component auditing UI to include translation labels (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591612 [374] Simple approach to bringing advanced metadata into Canvas AI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545816 [375] Add "page" extension type for full-screen Canvas extensions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591662 [376] Canvas AI: canvas_ai_post_update_0003 strips the orchestrator agent UUID via setData() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591660 [377] `redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591689 [378] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [379] UriOverride double-encodes file URIs on export causing images to be deleted on re-import (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591696 [380] Deleting media references causes InvalidComponentException and AssertionError (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590029 [381] Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591680 [382] Submodule info.yml core requirements are not in sync with canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591706 [383] [upstream] Introduce `composer run lint:chase-upstream` + `chase-upstream`: use Rector rules to semi-automate Drupal 12 compatibility while retaining BC layers for Canvas' minimum version (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589155 [384] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [385] Prevention of publishing on Conflict in Canvas UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587526 [386] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [387] Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591591 [388] [Notifications] notification storage and service (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580209 [389] [Notifications] cron cleanup (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580212 [390] Add content entity cache tags to auto-saves/pending endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588546 [391] Refactor auto-save endpoint response to encapsulate entries in top-level "data" key, like JSON:API, to enable adding errors later (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588038 [392] Detect conflicts for Page entities during the handling of auto-saves/pending calls (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589076 [393] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [394] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [395] UI changes for detection of conflicts caused by external updates to underlying entity of auto-save entry (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3585970 [396] Expand conflict detection and resolution added by 3587587 to additional entity types (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [397] [META] Review of changes and Conflict resolution (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587587 [398] [Plan] Canvas AI Roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3579796 [399] Remove deprecated upload and download CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591707 [400] Ensure type ignore schema props are ignore (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591710 [401] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [402] Update JS packages (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591709 [403] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [404] Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591679 [405] Refactor RequestTrait to prevent request stack mutation during kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591708 [406] Introduce `EntityFieldBasedPropExpressionInterface::getFieldDefinition()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591676 [407] AI continues to use unsupported React libraries while creating a component (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3564656 [408] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [409] Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591723 [410] Split the PHPUnit-Kernel CI test suite across 4 parallel jobs instead of 3 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591722 [411] Follow-up for #3591596: add PHPat rules for keeping `StagedLanguageConfigOverride` config entity type-agnostic (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591721 [412] [11.3] Adopt Core's stream wrapper for JSON schema references (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580762 [413] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [414] Language dropdown "edit" link should immediately change to "add" on deletion (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591720 [415] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [416] Avoid registering draft asset-library JS URLs to prevent locale's js_alter from treating them as local files (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591719 [417] Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591717 [418] Canvas Page Preview Fails After Language Code Update for Existing Translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591713 [419] Canvas AI: Chatbot generates page title and description without user request (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591718 [420] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [421] Translating unpublished page crashes canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591714 [422] Give AI more context around the styling of the site (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3544132 [423] Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591726 [424] Put conflict detection behind a dev mode flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591725 [425] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [426] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [427] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [428] Canvas icon / logo for Project Browser and project page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545468 [429] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [430] Strengthen test coverage for multi-translation multi-component instance automatic version updating (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591730 [431] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [432] Canvas AI: Remove hardcoded component source IDs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591652 [433] Refactor away the brittle`PageRegion::forAutoSaveData()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591728 [434] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [435] Symmetrically translatable config-defined component trees, STEP 2: change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3582478 [436] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [437] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [438] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [439] Add Code Component prop type for multiline plain text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591741 [440] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [441] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job for some component trees (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [442] Bump drupal-canvas package to 0.4.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591694 [443] Add translation metadata to code component's `mainEntity` data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591738 [444] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [445] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [446] Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3581133 [447] Non-Canvas (foreign) Drupal form textareas rendered inside Canvas are read-only and lose their #default_value (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591737 [448] CKEditor's source element is not tagged with the active text format inside Canvas, breaking modules that rely on core's editor-attach contract (e.g. ai_ckeditor) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591735 [449] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [450] Remove `canvas_dev_cd` flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591732 [451] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [452] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [453] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [454] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [455] Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [456] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [457] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [458] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [459] Enabling content translation of Canvas pages results in an unsupported state (asymmetrical translations) by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [460] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [461] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [462] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [463] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [464] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [465] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [466] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [467] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [468] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [469] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [470] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [471] Support entity-context frame type in _linkPropToEntityValue for PropSource binding (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591757 [472] Reconciling media in CLI should respect sync settings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591756 [473] Introduce `ComponentSourceInterface::getLabelForExplicitInputKey()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586490 [474] Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591683 [475] [later phase] Add alter hook for marking additional SDC/code component prop shapes AND/OR specific props as translatable (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584178 [476] Decouple component_tree translation logic from TMGMT (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591754 [477] PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586673 [478] DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591753 [479] "block" ComponentSource plugin should never store inputs for `label` and `label_display`, because they're not available for Canvas users (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3572850 [480] Add side-by-side review flow for selected Page changes before publishing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591752 [481] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [482] feat(Component sources): #3591596 Symmetric translation: component instance version updates must propagate to all translations" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1163 [483] fix: #3591704 Hide non-default-translation auto-saves from the pending-changes GET response (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1263 [484] #3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1254 [485] #3591693: Validate `LanguageConfigOverride`s (targeting translatable Canvas config entities) saves against config schema (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1257 [486] fix(Data model): #3591699 Never expose entity-reference inputs (e.g. image src) as translatable (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1262 [487] feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1194 [488] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [489] fix(Tests): #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1261 [490] feat(Theme builder): #3585355 `content-entity-reference` prop selection UI: a "Typed Data browser" to let a Code Component Developer pick which data to consume (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1182 [491] feat(CLI Tool): #3591700 Support `content-entity-reference` props in CLI and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1259 [492] Resolve #3591701 "Make kernel tests pass on Drupal core 11.3" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1260 [493] feat(Data model): #3591678 Coalesce reference fields consumed only through nested objects (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1252 [494] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [495] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [496] #3583379: `Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/876 [497] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [498] Add conflict detection and resolution UI for selective publishing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/945 [499] Create tools and update agents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/719 [500] Add "page" extension type for full-screen Canvas extensions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1233 [501] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1172 [502] Issue #3591660: Preserve agent UUID in canvas_ai post_update 0003 and repair affected sites (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1230 [503] #3591689: Too many redirects in invalid langcode as path-prefix (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1249 [504] Issue #3591696 : Prevent URIOverride from double-encoding file URIs on export (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1256 [505] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [506] refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of strings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1268 [507] Resolve languageSelect.spec.ts Failing in 1.x - round 2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1269 [508] #3591705 language select test failing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1265 [509] chore: #3591706 Sync submodule info.yml core requirements to ^11.2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1267 [510] Resolve #3589155 "Rector ci job" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1142 [511] Resolve "Page editor fatals (AssertionError) in `ComputedUrlWithQueryString` when a component's image references a deleted file" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1264 [512] #3587711 fix: code component exceptions after prop type change (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1015 [513] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [514] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [515] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [516] Issue #3584136: Fix canvas_component_agent prompt bugs (Image import,... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1237 [517] Issues/3591591: Add fixture support for layout to use in tests (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1159 [518] Issue #3580209: [Notifications] notification storage and service (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/762 [519] Issue #3580212: [Notifications] cron cleanup (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/830 [520] Resolve #3588546: Add content entity cache tags to auto-saves/pending response cacheability (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1057 [521] Resolve #3588038 "Refactor auto save endpoint" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1047 [522] feat(Conflict detection): #3589076 "Detect conflicts during auto-save polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1213 [523] fix(Conflict detection): Exclude computed internal fields from Page entity normalization (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1202 [524] revert(Conflict detection) #3589076 Detect conflicts during autosave polling (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1205 [525] Resolve #3589076 "Detect conflicts during autosave polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1107 [526] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [527] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [528] feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1271 [529] chore(CLI Tool): Remove deprecated upload and download CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1270 [530] ensure to ignore type ignore (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1278 [531] #3591697 "Boolean default false prop values not retained correctly " (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1281 [532] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [533] chore(Theme builder): #3591711 Add feature flag for content entity reference props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1279 [534] chore: Update JavaScript packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1277 [535] #3591654 "Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1234 [536] chore(Data model): #3591679 Use string representations of expressions in... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1275 [537] 🤖 Resolve #3591708 "RequestTrait::request() should not result in mutated request_stack" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1274 [538] Issue #3575644: Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1276 [539] chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1288 [540] feat(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [541] Draft: #3591720 update/edit toggles on language delete (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1287 [542] fix(ui): #3591716 boolean props auto-enable when another prop is changed (1.6.0) (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1286 [543] fix(ui): #3591716 boolean props auto-enable when another prop is changed (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1285 [544] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [545] fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1284 [546] Fix flat named component ESLint entrypoint detection (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1283 [547] #3591714: Resolve "Translating unpublished page crashes canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1282 [548] Put conflict detection behind feature flag (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1290 [549] Issue #3591726: Compare component inputs order-independently in tests and enforce it via PHPStan (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1291 [550] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [551] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1293 [552] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1292 [553] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [554] Issue #3591652: Replace hardcoded component source plugin IDs with SOURCE_PLUGIN_ID constants (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1255 [555] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [556] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [557] Draft: fix(Internal HTTP API, Translation): #3591713 Fix Canvas page preview for translated pages when the URL prefix differs from the langcode (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1304 [558] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [559] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [560] Draft: chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [561] #3591738 add translation data to code component provider (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1301 [562] feat(Drush): #3585531 Add commands to list, audit, and generate Canvas components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/937 [563] #3581133: Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1297 [564] Issue #3591737: Make foreign Drupal form textareas editable in Canvas by... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1299 [565] Issue #3591735: AI CKEditor text format (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1298 [566] AI-generated. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/797 [567] Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [568] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [569] Draft: #3492065 move to canvas repo (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/709 [570] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [571] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [572] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [573] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [574] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [575] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [576] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [577] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [578] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [579] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [580] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [581] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [582] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [583] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [584] #3591683: Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1322 [585] fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1323 [586] #3586673: PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1321 [587] Add solution to onboarding with content translation to disable tree... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1318 [588] Resolve #3590840 "Simplify codeowners further" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1120 [589] Draft: Resolve #3586673 "Phpcs actually selectively exclude" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/975 [590] #3591753: DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1319 [591] Draft: feat(Conflict detection): #3591591 Expand conflict resolution UI with... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1317 [592] Create Learners Club CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586266 [593] Create Bluefly CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586265 [594] Automated Drupal 12 compatibility fixes for ai_context 1.0.x-dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586269 [595] Add context settings validation: max_global_items must not exceed max_items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586272 [596] Create Document Loader submodule for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586275 [597] Create GitLab issue and merge request templates for ai_context project (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586155 [598] Update max context items in general settings (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586212 [599] Update overview page description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586252 [600] Create SECURITY.md file for AI Context (CCC) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586267 [601] Clarify Context scope: Tags in documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586270 [602] UX improvements on new context listing page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586274 [603] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [604] hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586246 [605] Move scheduler feature to submodule or progressive enhancement (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3577429 [606] Create list of modules and configuration steps for how to integrate CCC with Document Loader MDXEditor submodule (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586228 [607] Show this overview page checkbox is misaligned on vanilla Drupal 11 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586260 [608] [Discuss] Extensible "role" architecture for context items (examples, rubrics, and future types) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586273 [609] Provide test context items for testing CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586244 [610] Document supported vs internal CCC APIs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586241 [611] Conditional Subcontext Provider Calls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586207 [612] Update subcontext feature description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586251 [613] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [614] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [615] Sprint 12 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586277 [616] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [617] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [618] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [619] Review and update CCC permissions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574937 [620] Introduce explicit scope types and item inclusion modes; clarify selection in UI and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586281 [621] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [622] Fix eslint errors in GitLab UI even when pipeline is green (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3576093 [623] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [624] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [625] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [626] Test AI Best Practices skills on AI Context codebase (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586258 [627] Copy and layout updates on context item scope form (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586284 [628] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [629] [Discuss] Context scope matching semantics: additive OR, filters, and UX clarity (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586196 [630] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [631] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [632] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [633] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [634] Allow scope plugins to declare an optional icon for UI display (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586262 [635] Clean up bundleless context item follow-ups (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586261 [636] Add opt-in AiContextSelectionDiagnostics to selection results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586242 [637] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [638] Gather CCC contribution stats for code and non-code contributions for release notes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586222 [639] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [640] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [641] CCC beta / pre-rc1 community testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586234 [642] Evaluate empathy CCC integration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586249 [643] `hook_ai_context_scope_values_alter()` is ignored by scope forms and labels (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586286 [644] Add Configure Link in Modules Page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586285 [645] No public API for building scope subscription forms; consumers must depend on the internal scope manager (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586287 [646] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [647] Update core_version_requirement for all CCC submodules to be same as parent module (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586288 [648] Test Chicago Driesnote repo with cheaper models (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586221 [649] Avoid Full Published-ID Scans Before Scope Prefiltering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586206 [650] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [651] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [652] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [653] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [654] CCC Usage Tracking Query/Save Pattern (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586209 [655] Add webpage (URL) context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574414 [656] Add MD context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574928 [657] Add PDF context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574413 [658] Store the context source file or URL when using document loader (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586291 [659] [Meta] Context source plugin feature (context from PDF/MD/TXT/URL) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3569310 [660] Create context starter templates (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586255 [661] Error when running database updates from beta2 to latest -dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586290 [662] Question about "Subcontext type = Conditional - included based on relevance" (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586149 [663] Fix PHPStan failures in CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586238 [664] Fix phpstan error in AiContextSubcontextToggleTrait (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586259 [665] CCC UX sync 27 May 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586236 [666] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [667] [Discuss] Moderation status of subcontext vs parent context items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586264 [668] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [669] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [670] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [671] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [672] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [673] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [674] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [675] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [676] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [677] Add warning on subcontext edit form if parent is unpublished (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586297 [678] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [679] CCC beta2 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586156 [680] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [681] CCC beta3 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586294 [682] Create CCC beta2 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3585920 [683] CCC beta2 codebase review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586202 [684] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [685] Update CCC overview page with hide option and new wording (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586211 [686] Handle the case when scope plugin values are no longer available (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586145 [687] Clean up follow-ups from target entity decoupling review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586082 [688] Issue #3577429: Make Scheduler an optional progressive feature. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/178 [689] Issue #3586272: Add validation that max_global_items cannot exceed max_items (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/181 [690] Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/176 [691] Issue #3586155: Add GitLab issue and merge request templates (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/182 [692] Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/184 [693] Issue #3586252: Update overview page help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/170 [694] Issue #3586270: Document how the Tag scope works (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/183 [695] Issue #3586251: Update subcontext feature help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/169 [696] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [697] Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/177 [698] Issue #3586267: Added SECURITY.md file (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/179 [699] Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11" (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/180 [700] Issue #3586241: Document Supported vs Internal APIs (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/186 [701] Issue #3586244: Add example context items from the Chicago Driesnote demo. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/185 [702] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [703] Issue #3586209: Batch N+1 queries in AiContextUsageTracker (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/174 [704] Automated Project Update Bot fixes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/175 [705] Issue #3586269: Fix linting. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/187 [706] Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/166 [707] Issue #3586284: Clarify context item scope form copy and layout. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/189 [708] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [709] Issue #3586285: Add configure links to Context Control Center. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/190 [710] Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/191 [711] Issue #3586288: Update submodule requirements. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/192 [712] Issue #3586207: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [713] Issue #3586264: Show warning when subcontext parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/193 [714] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [715] Issue #3586297: Add warning on subcontext edit form if parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/196 [716] Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/197 [717] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [718] Issue #3586261: Clean up bundleless context item follow-ups. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/198 [719] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [720] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [721] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [722] Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/203 [723] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [724] Improve AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585220 [725] AI Recipe modal is missing the argument (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585216 [726] Issue #3585220: Improve AI Ecosystem (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/24 [727] Attempt long running chunk indexing for 1.x branch without BC (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584014 [728] Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584010 [729] How to Apply Filters in VDB for RAG Chatbot (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3547016 [730] [Plan] AI Search 2.0.x and roadmap to stable (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3485449 [731] Views should have a warnings when creating a view that has 1+ non full text Filters using an AI Search backend (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3479025 [732] Convert search query to markdown (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3525470 [733] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [734] The title field not found if machine name is different (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3553711 [735] Fix support of non-content entity SearchAPI datasources (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3575999 [736] Consider standard naming conventions for vector dbs (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3539213 [737] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [738] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [739] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [740] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [741] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [742] #3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/45 [743] Issue #3584010: Add FilterableRagTool with per-index derivatives and attribute filtering (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/38 [744] Resolve "Batch embeddings for improved indexing performance" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/53 [745] Field Widget Actions show in the "Add New Action" unavailable tools (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3536116 [746] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [747] Add interactive refinement capability to Field Widget Actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3547306 [748] Examples of plugins for more complex field widgets? (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3576699 [749] Missing events in suggestion.js (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578820 [750] Automated Drupal 12 compatibility fixes for field_widget_actions 1.0.x-dev (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578822 [751] Testing AI Workflow Automation (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578818 [752] Allow other contrib modules to mark their field widgets as childless so FWA actions still appear (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578202 [753] Support for checkboxes/radio buttons using Ajax JS Commands (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578204 [754] Field Widget Button labels are not translatable via UI (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578824 [755] Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/21 [756] create uuids in config action (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/24 [757] Issue #3547306: Add interactive refinement capability to Field Widget Actions (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/19 [758] Trigger events in case of value update on suggestion (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/18 [759] Automated Project Update Bot fixes (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/23 [760] Resolve "Allow other contrib modules to mark their field widgets as childless so FWA actions still appear" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/26 [761] Resolve "Support for checkboxes/radio buttons using Ajax JS Commands" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/25 [762] What's the point of the "Chat proxy to LLM" provider? (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585528 [763] Aggregate a node's translatable field-columns into a single chat request (opt-in batch translation) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585527 [764] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [765] HTML markup gets added after certain tags (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585526 [766] HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585525 [767] 504 Time out on large content (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3545381 [768] Translation batch process does not handle translation errors (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3542014 [769] Automated Drupal 12 compatibility fixes for ai_translate 2.0.x-dev (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585524 [770] Issue #3545381 Split large HTML fields into chunks of a maximum number of characters (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/24 [771] Automated Project Update Bot fixes (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/23 [772] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [773] Issue #3586209: Add support for batching on indexing operations (2.0.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [774] Issue #3586209: Add support for batching operations (1.1.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/33 [775] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/40 [776] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/43 [777] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [778] Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592077 [779] Automated Project Update Bot fixes (flowdrop, MR) — https://git.drupalcode.org/project/flowdrop/-/merge_requests/11 [780] Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev (flowdrop_ui_agents, Issue) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/work_items/3584958 [781] Automated Project Update Bot fixes (flowdrop_ui_agents, MR) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/merge_requests/27 [782] Automated Project Update Bot fixes (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/5 [783] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [784] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [785] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [786] Automated Drupal 12 compatibility fixes for agui 1.0.x-dev (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590037 [787] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 [788] Automated Project Update Bot fixes (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/30 [789] Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576575 [790] Pinecone: fix `getVectorFromNode()` returning no results (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576574 [791] Automated Project Update Bot fixes (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/19 [792] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 2x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/17 [793] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 1x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/18 --- MODULE SUMMARIES ---

                                                                    AI (Artificial Intelligence)

                                                                    The AI module saw significant structural activity during the reporting period, with work concentrated on preparing 1.5.x for release, streamlining configuration, and moving bundled submodules to standalone contrib projects.

                                                                    On the core module side, the RestrictToTopic guardrail plugin was switched to use the new ai_provider_configuration form element, unifying provider/model selection across the admin UI. A mechanism for VDB providers to opt in as the default was merged, mirroring the existing pattern for operation-type providers. The regression discovered in 1.4.x vs 1.3.x was closed after cherry-picks reconciled missing commits across branches. Token usage tracking in streamed chat outputs was fixed in the Fiber branch via MR !1670, ensuring TokenUsageDto is preserved when ChatOutput is reconstructed from the stream.

                                                                    Automators completed its migration to structured output (merged via MR !1291), replacing pseudo-JSON prompts with JSON Schema. Long-running chunking support was backported to 1.x to reach feature parity with AI Search 1.x. A configurable queue-items-per-cron setting was added after reports that only one automator queue item was processed per execution.

                                                                    The AI Content Suggestions module was fully removed from Core and published as a standalone contrib project. The deprecated field_widget_actions bundled copy now has an open issue to remove it and require the standalone package, to avoid machine-name collisions. Several issues track further submodule spin-outs (AI Validations, AI Translate) and a research task explores a repeatable deprecate-and-switch playbook.

                                                                    Observability was aligned to OpenTelemetry GenAI semantic conventions (gen_ai.*) in MR !1662, and streaming span finalization was fixed so token usage is captured on the terminal event. A Drupal Eval Commons umbrella proposes a shared eval-case format across ai_eval, ai_agents_test, ai_best_practices, and Core.

                                                                    Two CKEditor bugs were addressed: the modal-form crash in ai_ckeditor is ready to be committed, and uninstall now cleans stale toolbar items. The access deepchat api permission removal MR is open, consolidating chatbot access onto Assistant role checks. Progress is blocked on UX and architecture discussions around unconfigured provider state and provider model upgrade notifications.

                                                                    How can I help on this project?

                                                                    Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), AKHIL BABU (AkhilBabu) [1], Alphons Jaimon (AJV009), Ann Mary Sruthy (annmarysruthy), Arnaud Willame (arwillame), Artem Dmitriiev (a.dmitriiev) [3], Avinash jha (avinash.jha), Bryan Sharpe (b_sharpe), David Galeano (gxleano), Dimitar Rupov (mrupal), Eric Homanchuk (erichomanchuk), George Kastanis (zorz) [2], Hrishikesh Dalal (hrishikesh-dalal), Javier Destefanis (javierdestefanis), Joshua Fernandes (joshua1234511), Juan Martinez (jcmartinez), Jérôme Tchania (codeitwisely) [1], Levente Besenyei (LeventeB), m4olivei, Marcus Johansson (Marcus_Johansson) [2], Mukeysh, Omar Mohamad - El Hassan Lopesino (omarlopesino), Paul Sheldrake (paulsheldrake), Prabhavathi Vanipenta (prabha1997), Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Ricardo Castañeda (cadence96), Rob Loach (robloach), Ronald te Brake (ronaldtebrake), Scott Euser (scotteuser), scott falconer (scottfalconer), Shivam Sen (shivamsen_12579), Sujal Kshatri (sujal_31), Sven Decabooter (svendecabooter), Thomas Werthmüller (weri), velmir_taky (root_emarketing), Wolfgang Ziegler (fago)

                                                                    ---

                                                                    Drupal AI Initiative

                                                                    The past two weeks saw significant progress on UX design, demo infrastructure, and partner onboarding. A batch of eight interactive editorial AI mockups covering page creation, review notifications, search, field automation, search-and-replace, translations, and dashboard setup were delivered and closed. These mockups provide a shared reference for the initiative's editorial UX direction.

                                                                    Two core AI UX meetings refined the Canvas AI build experience, introducing component-by-component generation with canvas locking during builds, planning-step placeholder boxes, and a quality/cost/speed model selector. The AI ecosystem page in the AI Dashboard module shipped with searchable, filterable module and recipe lists, plus GitLab API integration to discover modules requiring drupal/ai.

                                                                    Infrastructure work advanced on the AI CMS Demo System: repository setup, technical concept documentation, the main-branch POC, and an amazee.io hoster branch were all closed, establishing the branching model and contribution workflow for partner-specific demo instances. A new Gold partner, Reading Room, was onboarded and added to mailing lists, Slack channels, and meetings.

                                                                    New exploration issues opened around Module Finder beta testing, hosting-provider deployment skills (including DevPanel API research), an AI Cost & Usage module for local cost dashboards and opt-in community telemetry, and GitLab workflow automation for issue and MR housekeeping. Work continues on AI Review functionality (UX and technical concept phases), AI Validations and Automators recipes, and DrupalPod QA image setup.

                                                                    How can I help on this project?

                                                                    • Contribute to the technical concept for AI Review Functionality, defining the review pipeline architecture and validation rule framework.
                                                                    • Help document best practices for creating DrupalForge-testable issues that span multiple dev module versions.
                                                                    • Pick up research on the DevPanel API to scope what deployment and environment automation is feasible for agent skills.
                                                                    ---

                                                                    AI Integration - ECA

                                                                    The past two weeks focused on expanding ECA action coverage for AI operation types and improving developer experience. A meta issue tracking [Meta] Cover remaining AI operation types with ECA execute actions was updated as nine child issues were opened, proposing new action plugins for AudioToAudio, ImageClassification, ImageToImage, ImageToVideo, ObjectDetection, SpeechToSpeech, Summarization, TextClassification, TextToImage, and TranslateText operation types. Each would extend AiConfigActionBase following the pattern established by the existing Chat action. Three merge requests were opened: Summarization and TextClassification actions (each around 200 lines), and a larger 2375-line MR tackling nine different new actions together.

                                                                    On the configuration side, Simplify structured output configuration in the Chat action proposes replacing the raw JSON text field in src/Plugin/Action/Chat.php with the AI module's '#type' => 'ai_json_schema' form element to improve validation and editor affordances. An automated Drupal 12 compatibility MR was also opened by the Project Update Bot.

                                                                    How can I help on this project?

                                                                    Review the three open merge requests for Summarization, TextClassification, or the combined nine-operation actions MR. Pick up unassigned issues like AudioToAudio, TranslateText, or structured output simplification that have no open MRs yet.

                                                                    Contributors: Joshua Fernandes (joshua1234511), Marcus Johansson (Marcus_Johansson), project update bot (Project-Update-Bot) ---

                                                                    AI Agents Test

                                                                    The AI Agents Test module saw limited activity during this period, with two issues receiving updates. The Research: merging ai_agents_test with ai_eval (and AiLlm test harness) issue was closed during the period, marking progress on the strategic question of consolidating three overlapping testing approaches in the Drupal AI ecosystem. This research addressed whether ai_agents_test should be merged with the ai_eval module and how the core AI module's tests/src/AiLlm harness relates to both.

                                                                    The Run more than one test group in Bulk - Test Collections? task remains open, proposing bulk operations UI for running multiple test groups simultaneously, useful for prompt engineering and model comparison workflows. No merge requests were merged and no commits were pushed during this period.

                                                                    How can I help on this project?

                                                                    Review the open merge request (!11) related to bulk test execution. Pick up work on the Run more than one test group in Bulk issue if the MR needs additional development. Help document outcomes from the recently closed research issue to guide future consolidation efforts.

                                                                    ---

                                                                    OpenAI Provider

                                                                    Two significant merge requests landed during this period. Image-to-image transformation capabilities were added through the imagetoimage possibilities merge request, which was integrated on June 26. Additionally, the default image generation model was updated when the Dall-E 3 deprecation fix was merged on June 24, removing the deprecated model as the default option.

                                                                    Three merge requests remain open and under review. Work continues on respecting skip_moderation with test coverage, which addresses moderation bypass functionality. The batch embeddings support merge request adds the ability to process embeddings in batches. An automated Project Update Bot fixes merge request is also pending.

                                                                    How can I help on this project?

                                                                    Review the skip_moderation merge request to validate test coverage and functionality. Test the batch embeddings implementation with real-world embedding workloads to verify performance improvements.

                                                                    Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser)

                                                                    ---

                                                                    Anthropic Provider

                                                                    A major update was merged bringing native SDK prompt caching support and PDF document input to the 1.3.x branch. The work landed via Bump SDK constraint and drop method_exists defensive check, adding an admin UI toggle for prompt caching with TTL selectors (5 minute and 1 hour options). System prompts are now sent as typed TextBlockParam objects with cache_control metadata when caching is enabled; the 1 hour TTL operates in general availability without requiring beta headers. The merge removes defensive method_exists checks that are no longer needed following the SDK constraint bump.

                                                                    An open merge request addresses a conversation flow issue where chat requests are rejected when conversations end with a non-user role. Anthropic's API requires the final message to come from the user, but multi-agent handoff scenarios (such as Drupal Canvas AI) can produce trailing assistant or system messages. The proposed fix overrides the chat method to append a minimal "Continue." user message when needed.

                                                                    How can I help on this project?

                                                                    Review and test the trailing user message fix in multi-agent scenarios to validate the conversation flow patch. Check whether the prompt caching feature works correctly with your Anthropic API key and document any edge cases encountered.

                                                                    Contributors: Carlos Ospina (camoa), Rajab Natshah (RajabNatshah)

                                                                    ---

                                                                    Fireworks AI

                                                                    The Fireworks AI module saw maintenance activity during the reporting period, with three commits pushed to the repository. Work focused on fixing requirements and implementing reranking functionality using a base class. The commits addressed requirement issues and integrated reranking capabilities with improved class inheritance.

                                                                    No merge requests were opened or merged during this period, and no issue tracker activity was recorded. Development appears focused on direct commits to address specific technical improvements.

                                                                    How can I help on this project?

                                                                    Review the module's issue queue on drupal.org to identify any open bugs or feature requests that need attention. Test the recent reranking implementation and requirement fixes in a development environment to verify functionality. Consider contributing documentation for the reranking feature and base class usage patterns.

                                                                    Contributors: Marcus Johansson [3]

                                                                    ---

                                                                    MCP Client

                                                                    Activity during this period was limited to automated maintenance. An Automated Project Update Bot fixes merge request was opened, containing 180 lines of automated project maintenance changes. No issues were updated, and no commits were pushed to the main branch during the reporting period.

                                                                    How can I help on this project?

                                                                    Review the pending Automated Project Update Bot fixes merge request to ensure the automated changes are appropriate. Check the issue queue for any unresolved bugs or feature requests that need attention.

                                                                    Contributors: project update bot (Project-Update-Bot)

                                                                    ---

                                                                    amazee.ai Private AI Provider

                                                                    Two merge requests were completed during this period. A fix was merged to address a fatal error in PostgresPgvectorClient->getConnection() caused by a missing ext-pgsql dependency in composer.json. The chore: require ext-pgsql MR added the required PHP extension declaration.

                                                                    A second merge request resolved an issue where empty or invalid key identifiers could cause errors when loading keys. The fix: check that key identifiers are non-empty strings before loading keys MR added validation to ensure key identifiers are non-empty strings before attempting to load them.

                                                                    Work on Drupal 12 compatibility continues, with Automated Project Update Bot fixes currently open for review. This MR addresses deprecated API uses across 388 diff lines as part of Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev.

                                                                    How can I help on this project?

                                                                    Review the Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes and test for regressions. Check the module's issue queue for unassigned bugs or feature requests that need attention.

                                                                    Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot) ---

                                                                    Gemini Provider

                                                                    The Gemini Provider module saw focused activity on embeddings and error handling during the reporting period, though no merge requests were completed.

                                                                    Work continued on Add support for batch embeddings, with an open merge request implementing the batchEmbedContents method from the Gemini client to handle multiple embeddings efficiently. A related feature request for Image Embeddings remains in discussion, exploring support for Gemini's file embedding capabilities beyond text.

                                                                    A critical bug fix is under review for ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned. The proposed solution guards against empty candidates in GeminiProvider.php when Gemini blocks a prompt and returns zero candidates.

                                                                    Fix pre-existing PHPStan failures (deprecation issues) was closed during the period, though an open MR remains to address upstream docblock issues. Automated Drupal 12 compatibility updates were also proposed.

                                                                    How can I help on this project?

                                                                    Review the open merge request for #3588223: Resolved value error to validate the error handling approach. Test the batch embeddings implementation in MR !37. Contribute technical design feedback on image embedding support for the feature request.

                                                                    Contributors: Artem Dmitriiev (a.dmitriiev), Ishani Patel (IshaniPatel), Joshua Fernandes (joshua1234511), project update bot (Project-Update-Bot)

                                                                    ---

                                                                    Huggingface Provider

                                                                    Activity this period focused on extending the module's capabilities. A merge request for Resolve #3584375 "Add extractive question" was opened, introducing 113 lines of changes to add extractive question answering functionality to the provider. The merge request is currently awaiting review.

                                                                    No commits were pushed directly to the main branch during this period, and no existing issues received updates or status changes.

                                                                    How can I help on this project?

                                                                    • Review the open extractive question answering merge request to help move it toward acceptance.
                                                                    • Test the Huggingface provider integration with various models and report any compatibility issues or API inconsistencies.

                                                                    Contributors: Ahmad Khader (Ahmad-Khader)

                                                                    ---

                                                                    Microsoft Azure AI

                                                                    The Microsoft Azure AI module saw continued development during the reporting period, with improvements to the Text To Image functionality committed in late June. No merge requests were merged or opened during this window, and no issues saw updates or status changes.

                                                                    How can I help on this project?

                                                                    Developers looking to contribute can review the issue queue for outstanding bugs or feature requests that need attention, test the recent Text To Image improvements against their Azure AI setup, or assist with documentation updates to reflect the latest API changes.

                                                                    Contributors: Marcus Johansson [1]

                                                                    ---

                                                                    Milvus VDB Provider

                                                                    Development activity during this period focused on new merge requests rather than merged code. A new MR proposes add support for batching on indexing operations, introducing batch processing capabilities for index operations across nearly 300 lines of changes. This enhancement targets performance improvements when indexing vector data into Milvus collections.

                                                                    Additionally, automated maintenance continues with automated fixes addressing routine project upkeep tasks. No commits were merged during the reporting period, leaving both MRs awaiting review.

                                                                    How can I help on this project?

                                                                    Review the batching support MR for code quality, performance implications, and API consistency. Test the batch indexing functionality against various data volumes to validate performance gains. Review the Project Update Bot MR to help maintain project standards.

                                                                    Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot) ---

                                                                    Postgres VDB Provider

                                                                    Activity this period focused on dependency management improvements. A merge request for Remove hard ext-pgsql dependency was opened, proposing substantial changes across 735 lines of diff. This work addresses the requirement for the PHP PostgreSQL extension, potentially improving installation flexibility and compatibility across different hosting environments.

                                                                    No commits were merged during this reporting period, leaving the ext-pgsql dependency refactor pending review.

                                                                    How can I help on this project?

                                                                    • Review the open ext-pgsql dependency removal merge request, testing the changes against various PostgreSQL configurations to validate compatibility.
                                                                    • Check the module's issue queue for bugs or feature requests that lack merge requests and could benefit from development work.

                                                                    Contributors: Emiel Bloem (emielb)

                                                                    ---

                                                                    AI Image Alt Text

                                                                    Development activity in the past two weeks has been limited to a single open merge request. Support for newer versions of drupal/ai has been proposed to address compatibility with updated releases of the AI module. The MR remains open and awaits review, with no commits merged during this period.

                                                                    No bugs were fixed, APIs changed, or releases shipped in this reporting window. The merge request targeting compatibility updates represents the only blocking work visible in the current pipeline.

                                                                    How can I help on this project?

                                                                    Review and test the open merge request for drupal/ai compatibility to help move it toward merge. Check the issue queue for unassigned issues that need patches or triage.

                                                                    Contributors: Peter Philipp (daspeter)

                                                                    ---

                                                                    Model Context Protocol

                                                                    The Model Context Protocol module saw limited activity during this period, primarily focused on Drupal 12 compatibility preparation. An automated Drupal 12 compatibility fixes issue was opened to track the removal of deprecated API uses. A corresponding merge request was created automatically, containing compatibility changes across 254 diff lines. The merge request remains open and awaiting review. No commits were merged during this reporting period, leaving the Drupal 12 compatibility work as the primary item blocking forward progress on the module's compatibility with the next major Drupal version.

                                                                    How can I help on this project?

                                                                    Review the automated Drupal 12 compatibility merge request to validate the proposed changes and test them against Drupal 12 development builds. Help identify any additional deprecated API uses that may need manual intervention beyond automated fixes.

                                                                    Contributors: project update bot (Project-Update-Bot)

                                                                    ---

                                                                    AI Agents

                                                                    Development activity over the past two weeks focused on menu organization, schema validation, and tool execution improvements. The AI Agents admin menu categorization was updated to align with AI 1.4.x's restructured menu, moving agent configuration under Tools & Automation. A schema definition for the CKEditor plugin was added to eliminate configuration errors.

                                                                    Several tool execution bugs received attention. A fix for missing tool_id in return_directly results reached RTBC status. Work continued on exception handling to prevent UI breakage when tool definitions fail. Progress was made on deterministic tool usage limits and per-tool error catching to prevent agent crashes.

                                                                    The Views agent saw bug fixes for display option inheritance and paired option overrides. A token replacement warning when values are arrays was identified and patched. An entity form validation issue preventing machine name collisions with code-plugin IDs reached RTBC. The ChatProcessor integration proposal also reached RTBC status.

                                                                    How can I help on this project?

                                                                    Review the open merge requests for menu categorization, UpdateViewPlugins display inheritance, or token array coercion. Test the streaming fix or pick up the unassigned admin menu naming consistency issue.

                                                                    Contributors: Ahmad Khader (Ahmad-Khader), Bharat Kelotra (bharatkelotra), David Galeano (gxleano), Jürgen Haas (jurgenhaas), Marcus Johansson [1], Nicolae Procopan (thebumikgmail.com), Prabhavathi Vanipenta (prabha1997), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Sven Decabooter (svendecabooter)

                                                                    ---

                                                                    Tool API

                                                                    A fix was merged to address tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool. The drush tool:run command previously threw a ContextException when a tool returned ExecutableResult::failure(), masking the actual failure message. The command now guards getOutputValues() behind a success check, bringing it in line with the MCP bridge pattern.

                                                                    Two issues were closed: Add skills for generating Tools and Change "Tools API" to "Tool API" in ToolsApi PHP attribute, addressing naming consistency across the API.

                                                                    Active discussion continued on several fronts. MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization has an open MR addressing getSupportedTypes() issues. Work is ongoing on Allow controlling Tool return format to separate raw results from textual output. Research continues on File Input Handling for secure file operations. Broader architectural discussions cover Introduce support for Discovery, Planning and Execute calls for MCP and Agents and Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema.

                                                                    How can I help on this project?

                                                                    Review the open MR for MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization to validate the getSupportedTypes() fix. Help define requirements for Allow controlling Tool return format, which has no assigned owner or MR yet. Contribute to architectural planning on Discovery, Planning and Execute calls.

                                                                    Contributors: Abhisek Mazumdar (abhisekmazumdar), Marcus Johansson (Marcus_Johansson), Matt Glaman (mglaman) [1]

                                                                    ---

                                                                    Drupal Canvas

                                                                    Translation and Symmetric Translation

                                                                    Major progress on symmetric translation: component instance version updates now propagate across all translations of both content and config entities. The new ComponentTreeSymmetricalTranslationConstraintValidator ensures that when a component schema changes—adding or removing props, changing types—all translations are updated atomically, preventing data drift. A new StagedLanguageConfigOverride subsystem treats config translations similarly to content translations, enabling uniform validation. Configuration schema for LanguageConfigOverrides is now validated even though core skips it, surfacing issues early. Entity-reference inputs (e.g. image src) are no longer marked translatable, fixing rendering crashes in non-default languages. The auto-save pending endpoint now returns only default-language entities, hiding per-translation rows that could trigger unsafe discard or publish flows. Language-aware indexing was added for ContentTemplate-rendered content. Several translation UI bugs were closed: the language switcher now shows actual titles for ContentTemplates instead of "Untitled page," and Canvas pages can no longer be created in non-default languages via the UI or API (enforced by validation). An endless redirect loop when using invalid langcode prefixes was fixed. Test coverage expanded to confirm multi-translation multi-component instance automatic version updating.

                                                                    Conflict Detection and Resolution

                                                                    Conflict detection during auto-save polling was merged (initially reverted, then re-landed after fixes). Conflicts caused by external entity updates are now detected and surfaced in the selective-publishing UI, which disables selection for conflicted changes and shows a conflict counter. The Rudimentary conflict resolution UI MR remains open, adding a paginated side-by-side viewport for resolving conflicts. Conflicted auto-save items can be marked as resolved via a new PATCH endpoint. The published entity's layout can now be fetched for comparison. All conflict-detection work is gated behind the canvas_dev_cd feature flag module pending UI finalization.

                                                                    Data Model and Component Sources

                                                                    The Coalescer was refactored to operate on EntityFieldBasedPropExpressionInterface objects instead of raw strings, improving maintainability. Reference fields consumed only via nested objects are now fully coalesced into single expressions. A fatal error when component instances reference deleted files was fixed by making ComputedUrlWithQueryString handle missing URLs gracefully. Boolean prop default values no longer flip when unrelated props change, fixing a rendering regression. Component inputs key order is now order-independent in tests to handle database-backend differences. The PageRegion::forAutoSaveData() brittle pattern and the "dangling component tree" concept are slated for refactoring. Deleting optional props from SDC/code components currently causes validation errors in config-defined component trees—a follow-up fix is planned. A new canvas_dev_er flag gates content-entity-reference prop UI.

                                                                    Canvas AI

                                                                    The orchestrator agent's UUID, previously lost by setData() in a post-update hook, is now preserved and repaired on affected sites. Hardcoded component source IDs were replaced with SOURCE_PLUGIN_ID constants. The component agent prompt was updated to support slots, restrict imports, use dynamic prompts, and fix hardcoded error messages. Block component props are now exposed to AI agents. Required-prop flags in component context metadata were restored. Layout fixture support was added so page-builder and template-builder agent tests run against realistic layouts. In-progress chat messages no longer disappear when page metadata is edited mid-run. AI-created code components now compile server-side, fixing [object Object] rendering.

                                                                    CLI and Tooling

                                                                    The deprecated upload and download commands were removed; push and pull are now the standard. CLI output was cleaned up across all commands, improving both human and LLM readability. The reconcile-media command now respects sync settings. Global asset library updates are merged into a single PATCH during push to avoid intermediate-state races. Flat named component ESLint entrypoint detection was fixed to catch sibling components. PHPCS now behaves identically locally and on CI with a dev dependency on drupal/coder and MissingShort excluded. JavaScript packages were updated. The PHPUnit-Kernel test suite is now split across four parallel CI jobs instead of three, reducing wall-clock time. LLM guardrails were refined in /AGENTS.md and /docs/adr/AGENTS.md based on real-world contributor experience.

                                                                    Additional Fixes and Features

                                                                    A "page" extension type was added for full-screen Canvas extensions. Draft asset library JS is now registered as external so locale's JS scan skips it, preventing file_get_contents() warnings. Content entity cache tags are added to the auto-save pending endpoint response. The pending endpoint response structure was refactored to wrap entries in a top-level data key, matching JSON:API conventions. Notifications cron cleanup now purges stale processing notifications and deletes expired entries. Tests pass on Drupal 11.3 after handling block config schema changes. Submodule info.yml core requirements were synced to ^11.2. The languageSelect.spec.ts test was stabilized. CODEOWNERS was simplified, requiring extra scrutiny only for data-integrity MRs. Rector CI job groundwork is underway to automate Drupal 12 compatibility.

                                                                    How can I help on this project?

                                                                    Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Adam G-H (phenaproxima), Ahmad Khalil (ahmad-khalil-imagex) [1], AKHIL BABU (AkhilBabu) [3], Alamgir Hossain (alamgir.hossain.cse), Andrew Belcher (andrewbelcher), Ben Mullins (bnjmnm) [3], Björn Brala (bbrala) [1], Bálint Kléri (balintbrews) [7], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [8], Feliksas Mazeikis (f.mazeikis) [2], Gábor Hojtsy (goba), Jakob P (japerry), Kunal Sachdev (kunal.sachdev) [2], Lauri Timmanee (lauriii) [1], Matt Glaman (mglaman) [2], Narendra Singh Rathore (NarendraR) [1], Oleksandr Antonchyk (Anton4yk), Priyanka Patel (priyankapatel), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [2], Sally Young (justafish), scott falconer (scottfalconer), Shubham Prakash (shubham.prakash), Ted Bowman (tedbow) [1], utkarsh_33 (Utkarsh_33) [1], Wim Leers (wimleers) [7], wotnak

                                                                    ---

                                                                    Context Control Center (CCC)

                                                                    The reporting period saw 24 merge requests merged across selection, UI, documentation, and progressive enhancement. Validation was added to enforce that max_global_items cannot exceed max_items. The ai_context_document_loader submodule was merged, enabling PDF, text, and URL imports via MDXEditor integration with the Document Loader module. Scheduler became an optional progressive feature, reducing mandatory dependencies. The hook_ai_context_scope_values_alter() bug was fixed—the hook now correctly affects both form widgets and scope matching via a new AiContextScopeManager::buildScopeValueOptions() method.

                                                                    UX improvements included merging the Use Cases and Scope columns into a single cascading-filter interface on the context listing page (issue 3586274), and a redesigned full view layout for canonical and revision pages. Supported vs internal APIs were documented, clarifying AiContextRequestFactory, selector pipeline events, and internal services. A public API was added for contrib modules to build scope subscription forms without depending on internal managers. Conditional subcontext gained a toggle, cap, and per-request cache, with usage tracker N+1 queries batched. GitLab issue and MR templates, SECURITY.md, configure links, and PHPUnit test attribute updates rounded out the period.

                                                                    Progress toward beta3 is blocked by open MRs for subcontext scope override (MR !159), conditional subcontext ignored-when-disabled (MR !194), and accessibility cleanup issues. Several follow-ups from the AI Best Practices review remain open under the meta issue 3586298.

                                                                    How can I help on this project?

                                                                    Contributors: Abhisek Mazumdar (abhisekmazumdar) [2], Ahmad Khader (Ahmad-Khader) [1], Anikó Viola (violaniko) [1], Daniel Rodriguez (danrod) [1], Eric Homanchuk (erichomanchuk) [1], Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [2], Kristen Pol (kepol) [9], Matt Glaman (mglaman) [5], Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Rob Loach (robloach) [2], Tamas Balog (tbalog)

                                                                    ---

                                                                    AI Dashboard

                                                                    Activity over the past two weeks centered on documentation and ecosystem improvements. The Improve AI Ecosystem issue saw continued work on the AI ecosystem browser, with MR !24 remaining open for review. The CSS has been refined to improve readability of filters, and preparation work continues on integrating a JSON manifest directly into the module to enable browsing AI-related modules from within Drupal sites. Outstanding tasks include implementing a cron rebuild process to fetch module updates from Drupal.org and improving category detection logic, which currently falls back to "Utility" when it cannot classify modules appropriately.

                                                                    The AI Recipe modal is missing the <path> argument bug was closed as postponed. The issue identified that recipe command modals were displaying incomplete commands, making the "View Commands" buttons non-functional without the required path argument.

                                                                    No merge requests were merged and no commits were pushed during this period.

                                                                    How can I help on this project?

                                                                    • Review MR !24 for the ecosystem improvements, testing the AI module browser functionality and providing feedback on the category detection logic.
                                                                    • Implement the cron rebuild process to synchronize AI module data from Drupal.org as outlined in the ecosystem issue.

                                                                    Contributors: Rob Loach (robloach)

                                                                    ---

                                                                    AI Search

                                                                    The 1.x branch received support for long-running chunk indexing without breaking changes in #3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC", merged on 2026-06-22. This brings functionality previously added to 2.x while gracefully falling back when methods don't exist.

                                                                    Work continues on Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions, with an open MR introducing a deriver-based FunctionCall plugin that generates one derivative per Search API index and exposes attribute fields as optional context definitions for LLM-driven filter queries. How to Apply Filters in VDB for RAG Chatbot was closed after discussion on query-time filtering approaches.

                                                                    Several critical bugs were identified in late June: Logger not injected in `create()`, causing fatal error on error paths, PluginException from getSearchVectorInput() is not caught, returning empty results with no error, and Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal all remain open. Progress on the 2.x branch remains blocked pending resolution of Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated, which awaits upstream AI Core changes.

                                                                    How can I help on this project?

                                                                    Fix one of the fatal error issues: add logger injection to SearchApiAiSearchBackend::create(), wrap getSearchVectorInput() calls in try/catch blocks, or correct parameter spreading in doSearch(). Review the open FilterableRagTool MR for API design and test coverage.

                                                                    Contributors: Artem Dmitriiev (a.dmitriiev), m4olivei, Scott Euser (scotteuser)

                                                                    ---

                                                                    Field Widget Actions

                                                                    The Field Widget Actions module saw significant feature development and bug fixes during the reporting period. Three merge requests were completed, adding interactive refinement capabilities, fixing plugin availability filtering, and addressing missing JavaScript events.

                                                                    The interactive refinement feature was merged, introducing an opt-in modal workflow that allows users to iteratively refine AI-generated content with follow-up prompts before inserting it into fields. The implementation uses server-side Form API modals (FieldWidgetFormActionBase) and is disabled by default to preserve existing behavior.

                                                                    A bug preventing unavailable plugins from being filtered in the "Add New Action" dropdown was resolved via MR !21. Previously, plugins that failed isAvailable() checks appeared in the list but could not actually be added, causing confusion. Configuration forms now properly omit these plugins.

                                                                    JavaScript event handling in suggestion.js was fixed through MR !18, which now dispatches input and change events when suggestion values are set, restoring compatibility with autosave, states, and libraries like Tagify. Automated Drupal 12 compatibility updates were also applied.

                                                                    Two feature requests remain in progress: UUID generation for config actions to prevent collisions when multiple suggestion buttons are declared in recipes, and support for marking third-party widgets as childless to ensure FWA buttons display correctly. An open bug tracks that button labels are not translatable via the UI, as entity form displays lack a config translation page.

                                                                    How can I help on this project?

                                                                    • Review MR !24 for UUID generation in config actions to prevent button collisions in recipes.
                                                                    • Test MR !26 or MR !25 for checkbox/radio and childless widget support.
                                                                    • Investigate solutions for the button label translation bug, which currently has no patch.

                                                                    Contributors: Artem Dmitriiev (a.dmitriiev) [1], Daniel Bosen (daniel.bosen), Edward Zwart (ezeedub) [1], project update bot (Project-Update-Bot) [1], Scott Euser (scotteuser), Volker Killesreiter (volkerk) [1]

                                                                    ---

                                                                    AI translate

                                                                    Development activity over the past two weeks focused on several technical challenges around HTML preservation, large content handling, and architectural planning.

                                                                    Two key bugs were refined: HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long) and the related HTML markup gets added after certain tags issue, where LLM responses insert unwanted line breaks after block-level elements. For large content that triggers timeouts, a merge request splitting large HTML fields into chunks was opened to address 504 Time out on large content.

                                                                    A planning issue for refactoring translation workflow to support Tool API and agent-driven translation was opened, proposing to abstract the translation logic currently duplicated across UI, Drush, and the planned Tool API entry points. A feature request for aggregating a node's translatable field-columns into a single chat request was discussed to reduce redundant prompt tokens. Additionally, automated Drupal 12 compatibility fixes were prepared.

                                                                    How can I help on this project?

                                                                    Review the chunking approach in MR !24 for handling large content. Help investigate and propose solutions for the HTML preservation bugs affecting formatted text fields. Consider the architectural approach for the Tool API refactoring and provide feedback on the planning issue.

                                                                    Contributors: Miriam Nugent (Peacog), project update bot (Project-Update-Bot)

                                                                    ---

                                                                    Pinecone VDB Provider

                                                                    Work progressed on Support batching on indexing operations during this period. Two merge requests are now available for review: MR !32 targeting the 2.0.x branch and MR !33 targeting 1.1.x. Both implement batching functionality inspired by similar work in the Milvus provider. The feature remains in review with no merges completed during this period.

                                                                    How can I help on this project?

                                                                    Review and test the open merge requests for batching support (MR !32 for 2.0.x or MR !33 for 1.1.x). Validate the batching implementation against the Pinecone API documentation and test with various batch sizes to ensure performance improvements.

                                                                    Contributors: Rob Loach (robloach) ---

                                                                    AI powered Search Block

                                                                    The AI powered Search Block module saw several open merge requests during this period, though no commits were merged. feat: #3582452 Add guardrail set selection to ai_search_block was opened, introducing guardrail set selection functionality with 799 lines of changes. Two automated merge requests (MR !40 and MR !43) were also opened, containing automated fixes with 21 and 753 diff lines respectively.

                                                                    No issues were updated during the reporting period, and no commits were merged to the main branch, indicating that pending merge requests are awaiting review before integration.

                                                                    How can I help on this project?

                                                                    Review the open merge request for guardrail set selection to help move this feature forward. The automated merge requests (!40 and !43) also need review to ensure compatibility and code quality standards are met.

                                                                    Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot) ---

                                                                    FlowDrop

                                                                    Activity this period centered on automated Drupal 12 compatibility work. The issue Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev was opened to track removal of deprecated API uses. An associated merge request, Automated Project Update Bot fixes, was created containing automated compatibility changes spanning over 4,500 lines of diff. The MR remains open and unmerged at the end of the reporting period. No commits were pushed to the main branch during this window, indicating that progress is blocked pending review and merging of the compatibility fixes.

                                                                    How can I help on this project?

                                                                    Review the open Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes. Test the patched code against Drupal 12 to ensure deprecated API removals don't introduce regressions. Help move this blocking work forward so the module can ship a compatible release.

                                                                    Contributors: project update bot (Project-Update-Bot) ---

                                                                    FlowDrop UI Agents

                                                                    Activity this period focused on Drupal 12 compatibility preparation. An Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev issue was opened to track automated removal of deprecated API uses. A corresponding merge request, Automated Project Update Bot fixes, was created containing compatibility changes across 232 diff lines. The MR remains open for review. No commits were merged during this period, leaving the Drupal 12 compatibility work as the primary item blocking forward progress on the 1.0.x development branch.

                                                                    How can I help on this project?

                                                                    • Review the pending Automated Project Update Bot fixes merge request to validate the Drupal 12 compatibility changes and help move it toward merge.
                                                                    • Test the compatibility fixes in MR 27 against Drupal 12 to identify any issues introduced by the automated refactoring.

                                                                    Contributors: project update bot (Project-Update-Bot)

                                                                    ---

                                                                    Langfuse

                                                                    Activity this period was limited to automated maintenance. A merge request titled Automated Project Update Bot fixes was opened, containing 179 lines of diff. The MR remains open and awaiting review. No issues were updated, and no commits were pushed during the reporting period.

                                                                    How can I help on this project?

                                                                    Review the open Automated Project Update Bot fixes merge request to validate the automated changes and help move it toward merge. Check the issue queue for unaddressed bugs or feature requests that need attention.

                                                                    Contributors: project update bot (Project-Update-Bot)

                                                                    ---

                                                                    Orchestration

                                                                    The Orchestration module saw planning and design discussions during this period, but no merge activity or commits. Three feature proposals were updated in late June, all focused on expanding the module's capabilities.

                                                                    Work continues on Using JSON Schema to define "input", "output" and "config", which proposes a portable contract system for workflow nodes with runtime validation and auto-generated forms. Separately, Integrate with n8n aims to add n8n as an automation provider alongside the existing Activepieces integration, enabling bidirectional communication between Drupal and n8n workflows.

                                                                    The [orchestration_eca] Add "Execute Orchestration service" ECA action proposal addresses a gap in the orchestration_eca submodule: while ECA models can currently be exposed as Orchestration services, ECA cannot invoke registered Orchestration services. The proposed action plugin would enable ECA's event and condition system to trigger services from other providers.

                                                                    No merge requests were opened or merged during the period, and forward progress appears blocked on implementation work for these three features.

                                                                    How can I help on this project?

                                                                    • Pick up the unassigned JSON Schema definition issue and draft an API proposal for input/output/config contracts.
                                                                    • Review the technical approach for the ECA action plugin and provide feedback on the ServicesProviderInterface integration.
                                                                    ---

                                                                    AG-UI

                                                                    The AG-UI module saw minimal activity during the reporting period. An automated compatibility issue, Automated Drupal 12 compatibility fixes for agui 1.0.x-dev, was opened to address deprecated API uses in preparation for Drupal 12. A corresponding merge request containing automated fixes was opened but remains unmerged.

                                                                    The meta issue [META] Improve Drupal Assistant Implementation was updated. This issue tracks work to refactor the Drupal Assistant proof-of-concept on the demo page to align with and potentially replace the ai_chatbot (Deepchat) module. The proposed approach involves integrating with the Polling service and emitting ag-ui events, with the goal of using a single, non-streamed request pattern.

                                                                    No commits were pushed and no merge requests were merged during this period, indicating ongoing planning and review phases rather than active integration work.

                                                                    How can I help on this project?

                                                                    Review the automated Drupal 12 compatibility MR to verify the changes are safe and complete. Investigate the technical requirements for the Drupal Assistant refactor in the meta issue to help define implementation tasks.

                                                                    Contributors: project update bot (Project-Update-Bot) ---

                                                                    AI Related Content

                                                                    A critical bug affecting Pinecone vector search was fixed during this period. The issue Pinecone: fix getVectorFromNode() returning no results addressed two bugs in the AIRelatedContentNodeFilter class that caused related content views to return zero results. The first bug involved addCondition('drupal_entity_id', ...) being silently ignored because drupal_entity_id is not a Search API index field, causing the query to return random semantic matches that failed ID validation. The second bug used strict equality checks that would fail for chunk-suffix IDs. The fix was merged via MR !18.

                                                                    Work continues on Drupal 12 compatibility through the Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev issue. An automated merge request (MR !19) containing deprecated API removal changes has been opened and awaits review.

                                                                    How can I help on this project?

                                                                    Review the pending automated fixes merge request to validate the Drupal 12 compatibility changes. Test the module with different vector database providers to ensure the recent Pinecone fix didn't introduce regressions.

                                                                    Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1] ======================================================================== ## [44] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 0 Judge flags: 10 ======================================================================== ## [45] summariseModule:ai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), AKHIL BABU (AkhilBabu) [1], Alphons Jaimon (AJV009), Ann Mary Sruthy (annmarysruthy), Arnaud Willame (arwillame), Artem Dmitriiev (a.dmitriiev) [3], Avinash jha (avinash.jha), Bryan Sharpe (b_sharpe), David Galeano (gxleano), Dimitar Rupov (mrupal), Eric Homanchuk (erichomanchuk), George Kastanis (zorz) [2], Hrishikesh Dalal (hrishikesh-dalal), Javier Destefanis (javierdestefanis), Joshua Fernandes (joshua1234511), Juan Martinez (jcmartinez), Jérôme Tchania (codeitwisely) [1], Levente Besenyei (LeventeB), m4olivei, Marcus Johansson (Marcus_Johansson) [2], Mukeysh, Omar Mohamad - El Hassan Lopesino (omarlopesino), Paul Sheldrake (paulsheldrake), Prabhavathi Vanipenta (prabha1997), Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Ricardo Castañeda (cadence96), Rob Loach (robloach), Ronald te Brake (ronaldtebrake), Scott Euser (scotteuser), scott falconer (scottfalconer), Shivam Sen (shivamsen_12579), Sujal Kshatri (sujal_31), Sven Decabooter (svendecabooter), Thomas Werthmüller (weri), velmir_taky (root_emarketing), Wolfgang Ziegler (fago)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                    AI (Artificial Intelligence)

                                                                    then use

                                                                    ,

                                                                    ,

                                                                      /
                                                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                      tags. After the project summary prose, add a single subsection titled "

                                                                      How can I help on this project?

                                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Regression in 1.4x release vs 1.3.x](https://git.drupalcode.org/project/ai/-/work_items/3586546) State: closed | Updated: 2026-06-19 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: ## Description I was surprised to see that https://git.drupalcode.org/project/ai/-/work_items/3582743 existed in 1.3.x (1.3.3 release) but was missing from 1.4.2. This led me to wonder if it was a wider problem. I have not checked the below commit by commit, but I got Claude to write a quick script to find all commits that exist in 1.3.x that were cherry-picked to 1.x BUT were cherry-picked after 1.4.x was branched off and never brought into 1.4.x (they do all seem to exist in 1.5.x at a glance). E.g. https://git.drupalcode.org/project/ai/-/tags/1.3.3 here is 1.3.3 release containing https:/… ### [Add Summarization operation type support to the echoai test provider](https://git.drupalcode.org/project/ai/-/work_items/3586537) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Easy Wins, category::task Description: ## Description The echoai mock provider (`Drupal\ai_test\Plugin\AiProvider\EchoProvider`, in the `ai_test` submodule) implements several operation types so that downstream modules can kernel-test their integrations against a deterministic provider. It does not yet implement the **Summarization** operation type. ## Acceptance criteria * `echoai__ai` reports support for the `summarize` operation type and is selectable for it. * Calling `summarize()` with text `Foo` returns a `SummarizationOutput` whose normalized value is `Summary of: Foo`. * Consumers (e.g. the `ai_integration_eca` Summariz… ### [AiPromptSubForm validates inline prompt against stale prompt type when multiple ai_prompt elements exist](https://git.drupalcode.org/project/ai/-/work_items/3586548) State: opened | Updated: 2026-06-24 | Author: Javier Destefanis (javierdestefanis) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Description: ## Summary When a settings form contains multiple `#type => ai_prompt` elements with different prompt types, inline prompt creation can validate against the wrong prompt type. We reproduced this with four prompt selectors on the same config form: * `content_audit_preview_system`, no required variables * `content_audit_preview_user`, requires `{PAGE_CONTENT}` and `{VISITOR_QUESTION}` Note: Creating the same `content_audit_preview_system` prompt from the standalone Prompt Entities admin form works correctly, so the prompt type config itself is valid. Temporary logging inside `AiPromptSubfor… ### [Taxonomy automator clears valid term values when the LLM returns HTML-encoded entities (e.g. &)](https://git.drupalcode.org/project/ai/-/work_items/3586553) State: opened | Updated: 2026-06-22 | Author: Nicholas Stees (NicholasS) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: ## Summary When an AI Automator targets a taxonomy/entity-reference field, valid LLM responses are silently discarded if the term name contains a character that the model returns HTML-encoded (e.g. an ampersand returned as `&` instead of `&`). The value passes generation but is stripped in `verifyValue()` because the comparison against the real term names is an exact string match, so the field is never filled. ## Steps to reproduce 1. Create a taxonomy vocabulary with a term whose name contains an ampersand, e.g. `Kids, Youth & Family`. 2. Add an entity reference (taxonomy) field to … ### [Remove access deepchat api permission and use Assistant access as the single source of truth](https://git.drupalcode.org/project/ai/-/work_items/3586552) State: opened | Updated: 2026-06-30 | Author: Vidit Anjaria (vidit-anjaria) | Assigned: unassigned | Labels: category::task, state::needsReview, why::needsInfo Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1703 [Remove access deepchat api permission and use Assistant roles as the single source of truth](https://git.drupalcode.org/project/ai/-/merge_requests/1703) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 143 diff lines Description: **Problem** The current chatbot access model requires administrators to configure both: The access deepchat api Drupal permission The Assistant entity's allowed roles These checks overlap and can become inconsistent. When they do not match, users may either not see the chatbot at all or see it but encounter access errors. This makes chatbot permissions harder to understand and configure. **Proposed solution** Remove the access deepchat api permission and rely on Assistant access checks as the single source of truth. **Potential implementation:** - [ ] Move to a more lenient permission (… ### [Permissions to use AI Assistant are confusing](https://git.drupalcode.org/project/ai/-/work_items/3498873) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAssistantsApi, category::task Description: >>> [!note] Migrated issue Reported by: [poker10](https://www.drupal.org/user/272316) >>> Problem/Motivation If you would like to add a permission to another role to use AI Assistant, you will probably go to permissions settings. There is only a Access DeepChat API permission, which will not allow usage for the other role. In /admin/config/ai/ai-assistant/drupal_agent_assistant there is an Advance settings where you can allow other role. However this will only display chatbot for the role, but the communication will not work without the Access DeepChat API permission. This seems to be con… ### [Create AI assistant API session only after the first message](https://git.drupalcode.org/project/ai/-/work_items/3554797) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAssistantsApi, category::bug Description: >>> [!note] Migrated issue Reported by: [omarlopesino](https://www.drupal.org/user/2853043) Related to !978 >>> Problem/Motivation Currently, when the chatbot is added in the site for anonymous users, a new session is started in order to create the thread. This is necessary, but it can be optimized. Creating a session invalidates reverse proxy caches like Varnish or any kind of CDN, decreasing the site's performance. The session may be only created after the first interaction with the chatbot. Steps to reproduce (required for bugs, but not feature requests) Create an assistant with AI a… ### [Add Extractive Question Answering operation type](https://git.drupalcode.org/project/ai/-/work_items/3584371) State: closed | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1481 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The AI module currently has no operation type for extractive question answering — a task where the model receives a question and a context passage and extracts the answer span directly from the context, along with a confid… ### [How to use AI file entity defined in file src/Entity/AiFile.php ?](https://git.drupalcode.org/project/ai/-/work_items/3586551) State: opened | Updated: 2026-06-18 | Author: fishfree | Assigned: unassigned | Labels: category::support, priority::minor, state::accepted Description: On page /admin/config/ai/files, it says _There are no ai file entities yet._. I'm confused how to use this feature. Searched no related docs. ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-06-29 | Author: ro-no-lo | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [Improve ai_ckeditor UX when no provider modules are installed](https://git.drupalcode.org/project/ai/-/work_items/3586549) State: opened | Updated: 2026-06-25 | Author: Ricardo Castañeda (cadence96) | Assigned: unassigned | Labels: Needs UX review, category::feature, priority::minor, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1701 [feat(ai_ckeditor): warn users when no AI provider is installed in the CKEditor settings tab](https://git.drupalcode.org/project/ai/-/merge_requests/1701) | State: opened | Author: Ricardo Castañeda (cadence96), 56 diff lines Description: ## Summary `ai_ckeditor` currently assumes that at least one provider module is installed. If no provider module (such as `ai_provider_openai`) is available, the CKEditor AI functionality does not work and may result in confusing behavior or errors. The module could provide clearer feedback to site builders or explicitly require provider modules. ## Problem `ai_ckeditor` can be enabled without installing any provider modules. From a site builder perspective, the module appears to be configured correctly because the CKEditor buttons are available, but attempting to use them fails. This c… ### [Issue when creating content and click on AI Assistant on Ckeditor](https://git.drupalcode.org/project/ai/-/work_items/3586545) State: opened | Updated: 2026-06-25 | Author: Jean-Marc PAMBRUN (dpalicepeio-at-drupbuilder.org) | Assigned: unassigned | Labels: Is Contextualized, category::bug, priority::major, state::rtbc Description: Drupal 11.4.0-rc1 with [AI (Artificial Intelligence)](https://www.drupal.org/project/ai) 1.4.2 When creating content using ckeditor 5, when click on ai assitant a red message appears "Oops, something went wrong. Check your browser's developer console for more details." And the db_logs shows "Error: Call to a member function get() on null in Drupal\\ai_ckeditor\\AiCKEditorPluginBase-\>buildCkEditorModalForm() (line 214 of /home/drupbut/www/modules/contrib/ai/modules/ai_ckeditor/src/AiCKEditorPluginBase.php" Contextual information for getting started ## Context The AI CKEditor module (`ai_… ### [Use ai_provider_configuration form element in RestrictToTopic configuration form](https://git.drupalcode.org/project/ai/-/work_items/3586472) State: closed | Updated: 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1621 [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1621) | State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev), 240 diff lines Description: RestrictToTopic still uses old AiProviderFormHelper service for selection of provider and model. This should be changed to use the form element instead. ### [Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project)](https://git.drupalcode.org/project/ai/-/work_items/3586556) State: opened | Updated: 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation The `ai` module ships a deprecated copy of Field Widget Actions at `ai/modules/field_widget_actions/`. Its `field_widget_actions.info.yml` is already marked: `lifecycle: deprecated lifecycle_link: https://www.drupal.org/node/3568339 ` This bundled copy has the **same machine name** (`field_widget_actions`) **and the same PHP namespace** (`Drupal\field_widget_actions\`) as the standalone contrib project https://www.drupal.org/project/field_widget_actions. When both are present in a codebase — which happens for any project that has `drupal/ai` as a (dev) dependency alon… ### [Rename Guardrails "RegExp guardrail" plugin to just "RegEx"](https://git.drupalcode.org/project/ai/-/work_items/3586475) State: opened | Updated: 2026-06-19 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::task, priority::minor, state::needsReview Description: As of 1.4.0, the three guardrail plugins are: 1. Restrict to Topic 2. RegExp guardrail 3. Input Length Limit I think "RegExp guardrail" should be changed to just "RegEx" because: 1. "RegEx" is much more commonly used than "RegExp". 2. If we're going to use "guardrail" in the label, then we should use it in all of the plugins. But, I don't think it is necessary to do that, so let's just keep things consistent and remove it. -mike ### [Automated Drupal 12 compatibility fixes for ai 1.4.x-dev](https://git.drupalcode.org/project/ai/-/work_items/3586555) State: opened | Updated: 2026-06-22 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: No Estimation Available Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [lb asymetric translation not translating content anymore.](https://git.drupalcode.org/project/ai/-/work_items/3586554) State: opened | Updated: 2026-06-22 | Author: Arnaud Willame (arwillame) | Assigned: unassigned | Labels: why::needsInfo Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1687 [Draft: Fix lb asymetric translation](https://git.drupalcode.org/project/ai/-/merge_requests/1687) | State: opened | Author: Arnaud Willame (arwillame), 759 diff lines Description: ## Summary Layout Builder inline block translations are processed by AI Translate extractors, but translated values are not applied to rendered block content. The extractor runs successfully and returns translated text, but the final block content displayed in Layout Builder remains unchanged. The issue appears specific to inline blocks inside Layout Builder sections when used with AI Translate + asymmetric translation mode. ## Steps to reproduce - Create a content type with Layout Builder enabled. - Enable asymmetric Layout Builder translation mode (via layout_builder_at or equivalent con… ### [DeepChat Block invisible](https://git.drupalcode.org/project/ai/-/work_items/3554969) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Julien MARY (jmary) | Labels: Needs steps to reproduce, aiChatbot, category::bug, priority Description: >>> [!note] Migrated issue Reported by: [jmary](https://www.drupal.org/user/100894) >>> Problem/Motivation The deepchat block is invisible. Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Place the deepchat block anywhere, limited to a specific page. Go to the page. The block is not visible. After research the reasons comes from the css: .block-ai-deepchat-block {  position: fixed;  left: 0;  top: 0;  bottom: 0;  width: 0;  opacity: 0;  transition: width … ### [[Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations)](https://git.drupalcode.org/project/ai/-/work_items/3586538) State: closed | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiValidations, category::plan Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1725 [feat: #3586538 Add hook_requirements and hook_update_10001 for ai_validations deprecation](https://git.drupalcode.org/project/ai/-/merge_requests/1725) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 81 diff lines Description: ## Summary Research and define a **repeatable mechanism** for forcing a site off a **deprecated bundled submodule** (shipped inside AI Core) and onto the **standalone contrib module** of the same machine name. Use **`ai_validations`** as the first concrete case, then generalise the outcome into a documented "deprecate-and-switch" playbook for the other submodules being moved to contrib. This is the missing *"how"* behind the deprecation work already started in #3552888 (Move out AI Validations), #3554535 / [CR 3570275](https://www.drupal.org/node/3570275) (AI Translate) and #3586497 (AI Sear… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiChatbot Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1428 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The chatbot was greatly improved with #3554510: Sync Design of Toolbar Chatbot with Canvas AI Chatbot, but one issue is that if you have a local storage to remember the position, when its open on page load it runs the open up… ### [Add rich-text image description support to AI Automators](https://git.drupalcode.org/project/ai/-/work_items/3586478) State: opened | Updated: 2026-06-29 | Author: Levente Besenyei (LeventeB) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1628 [Issue #3586478: "Add rich-text image description support to AI Automators"](https://git.drupalcode.org/project/ai/-/merge_requests/1628) | State: opened | Author: Levente Besenyei (LeventeB), 2629 diff lines Description: ## Summary Add optional rich-text image description support to AI Automators for AI-based formatted text fields, including metadata storage for generated image descriptions. Related/source issue: https://git.drupalcode.org/project/ai_initiative/-/work_items/3585695 ## Problem AI Automators can use formatted text as input, but images embedded in that text are currently ignored unless they are already available through a separate image/media field. This makes automations less accurate for content that depends on visual context (for example: summaries, quality checks, and editorial pre-screen… ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: opened | Updated: 2026-06-28 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add support for interactive refinement in ai_automators Field Widget Action plugins, allowing users to iteratively improve AI-generated content through conversational prompts before accepting it into a field. This is the companion issue to https://www.drupal.org/project/field_widget_actions/issues/3547306, which adds the modal infrastructure. This issue covers wiring up the automator plugins to use it. ## Problem Field Widg… ### [Support long running chunking in 1.x branch for AI Search 1.x readiness](https://git.drupalcode.org/project/ai/-/work_items/3586557) State: closed | Updated: 2026-06-24 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAgent, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1690 [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1690) | State: merged 2026-06-22 | Author: Scott Euser (scotteuser), 57 diff lines Description: ## Summary AI Search 1.x cannot handle unlimited length content items (items longer than 10 chunks). As agreed with Marcus and Artem, we update 1.x AI Search to be as close to feature parity as possible without BC while we wait for further Symfony AI platform foundations. This is one of those issues. Originally added to 2.x AI Search only because of all the BC. - Original 2x issue: https://git.drupalcode.org/project/ai/-/work_items/3487487 - AI Search 1.x attempt at backport https://git.drupalcode.org/project/ai_search/-/work_items/3584014 ## Problem src/Base/AiVdbProviderClientBase.php … ### [Improve summarizer for AI request input and output data for logs and spans](https://git.drupalcode.org/project/ai/-/work_items/3566762) State: opened | Updated: 2026-06-21 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiObservability, category::feature Description: >>> [!note] Migrated issue Reported by: [murz](https://www.drupal.org/user/157092) Related to !1330 >>> [Tracker] Update Summary: Short Description: Improve summarizer for AI request input and output data for logs and spans Check-in Date: 01/10/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation AI input and output data can be quite long. Logs and spans can consume large data objects, but in most cases it doesn't worth wasting storage resources to store the full input and output. But storing nothing is not good either! Also, some input … ### [First load of ai_provider_configuration is slow](https://git.drupalcode.org/project/ai/-/work_items/3579392) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Loading /admin/ai/context/settings/general is slower than it should be, though it seems like the first load it's slow and then it's okay. Proposed resolution TBD Target date or deadline TBD Remaining tasks TBD AI … ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)](https://git.drupalcode.org/project/ai/-/work_items/3586531) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, aiExternalModeration Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1702 [Resolve #3586531 "Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)"](https://git.drupalcode.org/project/ai/-/merge_requests/1702) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 403 diff lines Description: ## Goal Add a single configurable **Moderation Guardrail** plugin to the **Guardrails** system, so any moderation provider/model can be used as a guardrail. This makes "each moderation provider becomes a possible guardrail" achievable through configuration of one plugin, and is the foundation for folding external moderation into Guardrails. This issue covers **only creating the plugin**. The migration of existing `ai.external_moderation` configuration onto guardrail sets, and the deprecation of the old moderation runner, are handled separately in **#3586528** (which is blocked by this issue)… ### [Move Automators to Structured Output](https://git.drupalcode.org/project/ai/-/work_items/3577170) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1291 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently Automators is using pseudo json to create the output that is required when calling AI. This has historical reasons that are all explained here: #3565806: [Discuss] Move Automators to Structured Output. The main reas… ### [Config action to verify if any vector database is there and it is setup](https://git.drupalcode.org/project/ai/-/work_items/3586517) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1660 [Issue #3586517: Check if any Vdb provider is setup](https://git.drupalcode.org/project/ai/-/merge_requests/1660) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 75 diff lines Description: ## Summary At the moment there is a config action `verifySetupAi` that is able to check whether the specific vector database provider is there in the system and it is setup. This is possible with `vdb_provider_is_setup` payload. In the real use case the plugin name of the vdb provider is not that relevant, as it is needed to know that any vdb provider is there and it is properly configured (setup) to create a search api server. One (any) would be enough without actually specifying which one. ## Problem There is no way at the moment to check that any vdb provider is installed and configured… ### [Generalize behaviour of FWA with Automators (AI Core v2)](https://git.drupalcode.org/project/ai/-/work_items/3586515) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::task Description: The refactor was done for version 1.x (1.4.x and 1.5.x). It was not possible to easily cherry-pick the changes to 2.x and 2.0.x. This issue is to port changes from https://git.drupalcode.org/project/ai/-/merge_requests/1536 to 2.x and 2.0.x branches. ### [Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/work_items/3586536) State: opened | Updated: 2026-06-29 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1680 [Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/merge_requests/1680) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 142 diff lines Description: # Title Support the `ai_json_schema` element inside off-canvas dialogs (correct rendering + value sync) ## Description The `ai_json_schema` form element (`Drupal\ai\Element\AiJsonSchema`) is documented for use "in any Drupal form", but it does not work when rendered inside Drupal's **off-canvas dialog** — which is how the `bpmn_io` modeller shows configuration forms. Upstream the element is only used on full-page forms (e.g. AI API Explorer), where it works; off-canvas has never been exercised, so this is not a regression — it is making the element robust in a context new consumers need. T… ### [Missing "Submit" button from "RAG/Vector Search" tool Configuration modal](https://git.drupalcode.org/project/ai/-/work_items/3586533) State: opened | Updated: 2026-06-22 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: When trying to configure the "RAG/Vector Search" tool, there is no "Submit" button on the Configuration modal (shrunk to show entire modal): This is on a mostly fresh local Drupal site using AI 1.4.2 -mike ### [Fiber branch in OpenAiBasedProviderClientBase::chat() drops token usage from the reconstructed ChatOutput](https://git.drupalcode.org/project/ai/-/work_items/3586522) State: closed | Updated: 2026-06-25 | Author: Jérôme Tchania (codeitwisely) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1670 [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1670) | State: merged 2026-06-25 | Author: Jérôme Tchania (codeitwisely), 261 diff lines Description: ## Problem/Motivation `OpenAiBasedProviderClientBase::chat()` loses all token usage data when it runs inside a PHP Fiber. The Fiber branch (line ~341 on `1.x`) consumes the stream, then reconstructs the final output: ```php // Create the final message from accumulated data. $message = $stream->reconstructChatOutput()->getNormalized(); $chat_output = new ChatOutput($message, $response, []); ``` `reconstructChatOutput()` returns a `ChatOutput` that already carries the correct token usage — but only `getNormalized()` is kept, and the new `ChatOutput` is built with an empty `TokenUsageDto`. Th… ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Preserve HTML in streamed output](https://git.drupalcode.org/project/ai/-/work_items/3586558) State: opened | Updated: 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1734 [Resolve #3586558 "Preserve HTML in streamed output"](https://git.drupalcode.org/project/ai/-/merge_requests/1734) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 212 diff lines Description: ## Summary As reported in https://git.drupalcode.org/project/ai_translate/-/work_items/3585526, there seems to be an issue with HTML processing in streamed outputs. I wasn't able to look into the issue much closer, but the proposed fix seems to imply changes to the AI core module. ## Environment - Drupal version: 11.3.10 - Paragraphs: 8.x-1.20 Original Issue When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus lig… ### [Inaccurate description in Generated Content External Link Security](https://git.drupalcode.org/project/ai/-/work_items/3586560) State: opened | Updated: 2026-06-24 | Author: Darren Oh (darrenoh) | Assigned: unassigned | Labels: Novice, aiCoreModule, category::bug, documentation Description: ## Summary The Generated Content External Link Security in the AI Settings form says, “[Links to your own site and relative paths are always allowed.](https://git.drupalcode.org/project/ai/-/blob/1.x/src/Form/AiSettingsForm.php?ref_type=heads#L190)” This is not true. Links to your own site are only allowed if the domain is trusted or they are relative paths. ### Screenshots ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1704 [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/merge_requests/1704) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 286 diff lines - MR !1126 [Allow batching for embedding and vector DB operations](https://git.drupalcode.org/project/ai/-/merge_requests/1126) | State: opened | Author: Paul Sheldrake (paulsheldrake), 480 diff lines Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [Add mariadb to vdb registry](https://git.drupalcode.org/project/ai/-/work_items/3586559) State: opened | Updated: 2026-06-24 | Author: Juan Martinez (jcmartinez) | Assigned: unassigned | Labels: category::feature, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1705 [Issue #3586559: Add MariaDB VDB provider to matrix](https://git.drupalcode.org/project/ai/-/merge_requests/1705) | State: opened | Author: Juan Martinez (jcmartinez), 36 diff lines Description: ## Summary Without this registry entry, the ai_vdb_provider_mariadb module can be installed; however, the MariaDB VDB provider would not appear in UI discovery forms, automated dependency resolution, or documentation lookups. ## Problem The registry only shows entries for existing providers (e.g., SQLite). ## Proposed solution - Add the MariaDB VDB provider. ### [Guardrail plugins only evaluate the last message](https://git.drupalcode.org/project/ai/-/work_items/3579088) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1467 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Both RegexpGuardrail and RestrictToTopic only inspect the last message in a conversation. The full chat history is passed in via ChatInput, but both plugins call end($messages) and evaluate that single message only. In a mult… ### [Indexing breaks with custom SearchAPI DataSource](https://git.drupalcode.org/project/ai/-/work_items/3575992) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !1321 !1248 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Wh… ### [Add info about initiative and release differences to project page](https://git.drupalcode.org/project/ai/-/work_items/3586568) State: opened | Updated: 2026-06-26 | Author: Heather Wozniak (heatherwoz) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: ## Summary The project page could do a better job explaining the difference between the minor releases (1.2, 1.3, 1.4) and leading people to information about the overall initiative. ## Problem There is a lot of information in the project description, but nothing that helps developers understand which minor version to choose or what to expect when upgrading minor or major versions. This is standard info on many Drupal project pages and would be helpful to add here. Some of this info exists in blog posts and on the initiative page, but there is no path to those pages from the project descri… ### [Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1724 [task: #3586561 Add a setup-guardrails agent skill to configure guardrails,...](https://git.drupalcode.org/project/ai/-/merge_requests/1724) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 1682 diff lines Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 1042 diff lines Description: ## Description Following the same pattern as the `setup-guardrails` skill (#3586561), the AI module would benefit from a companion skill that configures the module's **general settings** on a running site, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. Today these settings can only be inspected and changed through the admin UI at `/admin/config/ai/settings`. This task adds a `configure-ai-settings` skill (sibling of `create-guardrail-plugin` and `setup-guardrails`, under `ai/.agents/skills/`) covering the core operational settings stored i… ### [Allow vector database providers to opt in as the default VDB when none is set](https://git.drupalcode.org/project/ai/-/work_items/3586500) State: closed | Updated: 2026-06-25 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1656 [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1656) | State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev), 345 diff lines Description: ## Problem/Motivation An AI provider can already opt in to become the **default provider** for a given operation type when none is set yet (the provider declares this and the AI module picks it up automatically if no default exists). The AI module also supports setting a **default vector database (VDB) provider**, but there is currently **no equivalent opt-in mechanism** for VDB providers. A VDB provider cannot declare "make me the default vector database if none is set", so the default always has to be configured manually. ## Proposed resolution Add the same opt-in capability for vector d… ### [AI CKEditor regression in 1.5.x?](https://git.drupalcode.org/project/ai/-/work_items/3586567) State: closed | Updated: 2026-06-25 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: toBeTriaged, why::needsInfo Description: Is there any chance that AI CKEditor in 1.4.x is ahead of 1.5.x? I ask because I've been trying to test AI CCC -dev with AI 1.5.x and what I'm seeing doesn't look quite right. See https://git.drupalcode.org/project/ai_context/-/work_items/3581955#note_1270334 -mike ### [Release 1.2.17, 1.3.8, 1.4.3](https://git.drupalcode.org/project/ai/-/work_items/3586565) State: opened | Updated: 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: Artem Dmitriiev (a.dmitriiev) | Labels: category::task, priority::normal, release, state::accepted Description: Creating patch releases for 1.2.x, 1.3.x and 1.4.x branches. ### [Add AIDmi to Other modules/recipes that work with the AI module](https://git.drupalcode.org/project/ai/-/work_items/3586566) State: opened | Updated: 2026-06-24 | Author: Mike Feranda (mferanda) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: Please add AIDmi to your list of Drupal AI other modules. [AIDmi](https://www.drupal.org/project/aidmi) - AI, describe my image! - CKEditor image accessibility plugin for Alt/Caption text generation https://www.drupal.org/project/aidmi ### [Add AI Assistant API ChatProcessor plugin](https://git.drupalcode.org/project/ai/-/work_items/3585075) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1496 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolution Create an AiAssistantApiProcessor ChatProcessor plugin tha… ### [Integrate ChatProcessor plugin system into AI Chatbot DeepChat block](https://git.drupalcode.org/project/ai/-/work_items/3585077) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [ahmad khader](https://www.drupal.org/user/3727855) Related to !1497 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Integrate the ChatProcessor plugin system (added in #3492940) into the AI Chatbot module's DeepChat block. This allows site builders to select which ChatProcessor plugin handles chat interactions, decoupling the chatbot UI from … ### [[2.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586564) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [Uninstalling ai_ckeditor leaves stale toolbar items in editor.editor.* configuration](https://git.drupalcode.org/project/ai/-/work_items/3586570) State: opened | Updated: 2026-06-26 | Author: Ricardo Castañeda (cadence96) | Assigned: unassigned | Labels: aiCkeditor, category::bug, priority::normal, state::needsReview Description: ## Summary When `ai_ckeditor` is uninstalled, it does not remove its toolbar button from existing CKEditor 5 editor configurations (`editor.editor.*`). If the **AI Balloon Menu** has been added to a text format toolbar, the configuration still references the removed plugin after uninstall. As a result, the text format configuration page can no longer build the toolbar correctly. ## Steps to reproduce 1. Install `ai_ckeditor`. 2. Go to **Configuration → Content authoring → Text formats and editors**. 3. Edit a CKEditor 5 text format (for example **Full HTML**). 4. Add the **AI Balloon Menu*… ### [Add "throttle API requests" control?](https://git.drupalcode.org/project/ai/-/work_items/3561243) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [ultimike](https://www.drupal.org/user/51132) >>> [Tracker] Update Summary: Would a "throttle" control be useful? Short Description: Being able to control how quickly API calls are sent to LLMs might help users on lower tiers avoid hitting rate limits. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Would it make sense to add some type of "Throttle" control that allows site-builder to limit how many (or how often) LLM API calls are made? While experimenting with AI Agents, I… ### [[Discuss] Shift focus from provider plugins to operation type plugins in AI Core](https://git.drupalcode.org/project/ai/-/work_items/3559800) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, discussion, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation While investigating what approaches could be applied for #3552919: Remove ProviderProxy and use template method pattern, I had a thought, that AI Core is mainly focused on the provider plugins and providers themselves. As AI Core is a framework, I… ### [Plugin shouldn't show any fields if no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3557016) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCkeditor, category::feature, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [damienmckenna](https://www.drupal.org/user/108450) Related to !1117 >>> Problem/Motivation When opening a ckeditor plugin, if no text is selected the UI shows the "You must select some text before you can summarize it." message, but then will also show some of the other fields from the specific plugin, e.g. the Tone plugin shows the "Choose tone" selector. Proposed resolution Don't show anything in the ckeditor plugin popup (particularly for the Tone plugin) if no text has been selected. Remaining tasks Don't show anything in the ckeditor plugin po… ### [Tools UI overview page does not load](https://git.drupalcode.org/project/ai/-/work_items/3579979) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) Related to !1443 !1329 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation If you enable AI mode + Tools module + MCP without making other changes, then /admin/config/ai/tools leads to The website encountered an unexpected error. Try again later.InvalidArgumentException: The opener ID parameter i… ### [Move out AI Content Suggestions](https://git.drupalcode.org/project/ai/-/work_items/3552885) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Needs UX review, aiContentSuggestions, beta blocker, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1042 !1064 >>> --- AI TRACKER METADATA --- Update Summary: Move out AI Content Suggestions Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation We are moving out AI Content Suggestions for 2.… ### [AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3575346) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCkeditor, category::bug, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [annmarysruthy](https://www.drupal.org/user/3664314) Related to !1240 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: All AI CKEditor plugins display "You must select some text before you can summarize it" even when the active plugin is Translate, Tone, or SpellFix.[One-line issue summary for stakeholders] Check-in Date: 02/24/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Most AI CKEditor plugins (e.g., Translate, Tone, SpellFix, etc.) require selec… ### [[Discuss] Consider adding Agents.md](https://git.drupalcode.org/project/ai/-/work_items/3573186) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, discussion, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [valthebald](https://www.drupal.org/user/239562) >>> [Tracker] Update Summary: Consider adding Agents.md Short Description: Consider adding Agents.md Check-in Date: 02/12/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Inspired by discussion in the core issue #3568936: Embrace the chaos, add a couple of AGENTS.md file to core. That one was closed after heated discussion as "works as designed" (i.e. no Agents.md will be added to core for now), but reasoning (and hopefully, the discussion tone) co… ### [Drupal AI Contribution meeting 2026-02-09](https://git.drupalcode.org/project/ai/-/work_items/3570259) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, meetings, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [valthebald](https://www.drupal.org/user/239562) >>> Drupal AI Contribution meeting from Feb 09 at 17:00 UTC to Feb 10, 2026 17:00 UTC (Check your local time at https://www.timebie.com/std/universal.php?q=17) Previous meeting #3568422: Drupal AI Contribution meeting 2026-01-26 Where #ai-contrib channel in Drupal Slack Agenda Attendees self-intro and interests Follow-up to topics of previous meeting Suggest your topic in comments Add the issue you want to discuss as a related issue to this meeting ### [Create agents as Tools](https://git.drupalcode.org/project/ai/-/work_items/3556380) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiAgent, category::task, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation This issue assumes that #1, #2 or #3 will be the decisions in #3556140: [Discuss] Allow usage of Tool API in Agents. If not, we can close this issue. We want to move our agents from being function calls to being tools. This means that we need to add some differences onto the output. By default the output, can just change to a string, but if we have #3556378: Create assisted structured output generation in place, the output should conform to whatever the JSON Schema is. This… ### [Implement Process System Integration for Automators](https://git.drupalcode.org/project/ai/-/work_items/3493291) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiAutomators, category::plan, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [seogow](https://www.drupal.org/user/3065779) >>> Problem/Motivation Integrate Automators with the new Process Abstraction Layer and implement process visualization UI, providing better management and monitoring of automation operations. Currently, Automators lack: Standardized process management Visual progress tracking Operation history Real-time status updates Easy way to monitor and manage running automations Ability to review and re-run previous automations Proposed resolution Process Integration Convert Automator operations to use Process A… ### [[Discuss] Allow usage of Tool API in Agents](https://git.drupalcode.org/project/ai/-/work_items/3556140) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, discussion, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently we have a module in Tool API that does create deriatives of the tools into function calling standards. Since we want to move Tool API to be the first and foremost way of how you do function calling in AI Core, we want to prepare for this. For the sake of the conversation its important for people to know that there are currently four ways of abstracting the function calls: ToolsInterface - in AI Core. This is pure abstraction, for different providers to have a com… ### [ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/work_items/3586569) State: opened | Updated: 2026-06-29 | Author: mxh (hauptm) | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::needsReview Description: ## Summary When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Problem Making this status information optional improves general UX. ## Proposed solution *(optional)* Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Workaroun… ### [Plan: Add cancel button to AI Chatbot](https://git.drupalcode.org/project/ai/-/work_items/3499583) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiChatbot, category::plan, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation The AI Chatbot currently does not follow the similar UX design as popular chatbots where you can cancel the request in the middle of it. While Deepchat seems to support it, without a common UI element for it, this will also require the possibility to revert things like agent changes, so it might need some testing or planning. Currently the revert only happens with premature destruction, errors or certain logical cases. Remaining tasks Research what is needed both on the Cha… ### [Use core Json::encode() and Json::decode everywhere possible](https://git.drupalcode.org/project/ai/-/work_items/3480683) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::task, priority::major, state::postponed Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) Related to !1019 !434 >>> Problem/Motivation We have a bunch of instances of json_encode and json_decode. Let's just use the ones from core to avoid issues and leave the security of it to core. json_decode does very little. json_encode provides some escaping defaults. Steps to reproduce N/A Proposed resolution MR Remaining tasks MR User interface changes N/A API changes N/A Data model changes N/A ### [Move Prompt Library menu link under AI Infrastructure instead of Vector Database Configuration](https://git.drupalcode.org/project/ai/-/work_items/3586499) State: closed | Updated: 2026-06-25 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::closed Description: ## Problem/Motivation The **Prompt Library** menu link (`entity.ai_prompt.collection`) is currently nested under **Vector Database Configuration** (`ai.admin_vdb_providers`) in the AI admin menu. This is the wrong location — the Prompt Library has nothing to do with vector database providers, and placing it there makes it hard to discover. It should live directly under **AI Infrastructure** (`ai.admin_config_infrastructure`), alongside the other top-level infrastructure items (AI Platform Providers, Vector Database Configuration, Default Models, AI Files). ## Steps to reproduce 1. Navigate… ### [Prompt Library menu item missing due to incorrect parent](https://git.drupalcode.org/project/ai/-/work_items/3585596) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [drupov](https://www.drupal.org/user/433066) Related to !1523 !1522 !1521 >>> Update Summary: Fix menu link parent for Prompt Library Short Description: Prompt Library menu item missing due to incorrect parent Check-in Date: 04/19/2026 Problem/Motivation The "Prompt Library" menu item is not visible in the admin UI because it is assigned to an incorrect parent in ai.links.menu.yml. Steps to reproduce 1. Enable the AI module. 2. Go to Configuration → AI. 3. Observe that "Prompt Library" is missing. Proposed resolution Change the parent of entity… ### [[Discuss] Core support for browser providers](https://git.drupalcode.org/project/ai/-/work_items/3577202) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::plan, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation There are coming some providers built into the browsers - mainly Chrome with their AI on Chrome. Some of it experimental, but some of it already available. We have a provider that supports this in the Browser Provider using polling and session… ### [Research better practices for recipes](https://git.drupalcode.org/project/ai/-/work_items/3577175) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::plan, priority::normal, state::postponed Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation In AI 1.0.0 we did add a config action called SetupAiProvider for Drupal CMS launch - we have since added some other ones, but all of them are more or less workarounds to patch problems that existed in recipes at the time. What we need is: A … ### [Improvement suggestions for ai_automators docs](https://git.drupalcode.org/project/ai/-/work_items/3572751) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Novice, aiAutomators, category::task, needs port to 2.x Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1202 !1201 !1187 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation While working on #3566577 AI pointed out that the ai/docs/modules/ai_automators/index.md need some updates about point 9. **Automator Worker**: to have new point about Field Widget Proposed resolution Add a 4th po… ### [Create an HTML to Markdown API and service](https://git.drupalcode.org/project/ai/-/work_items/3574246) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, priority::normal, state::accepted, toBeTriaged Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation League\HTMLToMarkdown\HtmlConverter is initiated 3 times with 3 different configurations in current code, when #3574004: Generate a markdown version of (formatted) text field values gets solved that becomes the 4th one. https://git.drupalcode.org/search… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation This is the second time we have hit a WSOD with the Gemini provider where simply enabling the module can break pages that instantiate AI provider clients. See #3572638: WSOD after module enabled. At the moment, this does not look like something that can… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [Unable to override the 'Calling agents' / 'Contacting agents' text](https://git.drupalcode.org/project/ai/-/work_items/3586389) State: opened | Updated: 2026-06-25 | Author: m4olivei | Assigned: unassigned | Labels: category::feature, priority::minor, state::rtbc, v1.4.x-dev Description: ### Problem/Motivation The deepchat conversational UI shows the the text 'Calling agents..' or 'Contacting agents..' when the system is off delgating to agents. Depending on the client / use case, this language can be confusing and/or unfamiliar, ultimately not helpful to the end user. This task is to allow this text to be overriden in configuration. I'd also suggest that the text be made consistent. By my read 'Contacting agents..' is more appropriate, as its more general than 'Calling', which we probably mean in the developer sense of 'Calling an API', but may users would read as a liter… ### [Glossary for the Drupal AI initiative](https://git.drupalcode.org/project/ai/-/work_items/3577844) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: Needs issue summary update, category::plan, documentation, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) >>> This is a first-pass glossary intended to align Drupal AI with common AI language, current framework language, and Drupal's existing terminology. The goal is to freeze the core terms now, avoid overloaded words, and refine edge cases later. Where a plain-language term and a provider-specific term both exist, prefer the plain-language term in public-facing docs and UI. Use the more precise technical term when architecture, runtime behavior, or interoperability matters. AX and shared-interface ter… ### [Automated Drupal 12 compatibility fixes for ai 2.0.x-dev](https://git.drupalcode.org/project/ai/-/work_items/3586525) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Field Widget Button labels are not translatable via UI](https://git.drupalcode.org/project/ai/-/work_items/3567027) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, fieldWidgetActions, priority::normal, shouldMove Description: >>> [!note] Migrated issue Reported by: [fago](https://www.drupal.org/user/16747) >>> [Tracker] Update Summary: Field Widget Button labels are not translatable via UI Short Description: Button labels in field widget actions are configured via entity-form-displays. However, entity form displays have no UI for configuring translations, thus, there is no dedicated page and no entry at /admin/config/regional/config-translation Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem Button labels in field widget actions are configured vi… ### [Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy](https://git.drupalcode.org/project/ai/-/work_items/3586573) State: opened | Updated: 2026-06-29 | Author: Thomas Werthmüller (weri) | Assigned: unassigned | Labels: category::feature, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1730 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1730) | State: closed | Author: Thomas Werthmüller (weri), 153 diff lines - MR !1733 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1733) | State: opened | Author: Thomas Werthmüller (weri), 38 diff lines Description: ## Summary When I create a taxonomy for the tone of voice and allow to translate the terms, in the UI of the CKEditor always the default language is displayed and also the description of this term is used for prompting and not the translated version. ## Environment - Drupal version: 11 - Module version: 1.4.3 ### Screenshots ![CleanShot_2026-06-26_at_16.30.17](https://git.drupalcode.org/-/project/106525/uploads/0df4b3af6167109ba085e44a575e6a88/CleanShot_2026-06-26_at_16.30.17.png){width="725" height="600"} ### [Add ai_budget_control to the ecosystem / related modules list](https://git.drupalcode.org/project/ai/-/work_items/3583958) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, priority::normal, state::closed, v2.0.x-dev Description: >>> [!note] Migrated issue Reported by: [tchida](https://www.drupal.org/user/3835690) Related to !1483 >>> [Tracker] Update Summary: Request to list ai_budget_control in the AI ecosystem. Short Description: Add ai_budget_control to the project page and README to help users manage API costs. Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Users of the main ai module need tools to control API costs and prevent abuse. I released AI Budget Control to provide API provider "Hard Limits" and native Flood API quotas. Add… ### [Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/work_items/3536912) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: #drupalpune-sprint, aiAutomators, category::feature, priority Description: >>> [!note] Migrated issue Reported by: [mandclu](https://www.drupal.org/user/52136) >>> Problem/Motivation The new field widget actions are great! In many ways these recreate the experience that drew me into developing for the Augmentor AI module. One thing I do miss is a simple way to choose which generated tags to choose. Augmentor achieves this with an interim widget, showing the suggested tags as tiles that when clicked add the suggestion into the tags field. I think we could achieve something similar if we could have a field widget action that worked with the Tagify widget. It would … ### [Document the AI module ecosystem: a categorized list of related modules with links and summaries](https://git.drupalcode.org/project/ai/-/work_items/3586482) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Rob Loach (robloach) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: ## Description The AI module has grown a large ecosystem of companion projects on drupal.org — providers, vector database (VDB) providers, agents, recipes, tools, automators, and full distributions/CMS profiles. Today there is no single, curated page in the AI module's documentation that tells a site builder or developer **what exists, where to find it, and what each project does.** Discovering these modules currently means searching drupal.org by hand or relying on word of mouth. A maintained ecosystem index would make the AI module dramatically easier to adopt: people could see at a glance… ### [Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object](https://git.drupalcode.org/project/ai/-/work_items/3586437) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiContentSuggestions, category::feature Description: ## Summary At the moment the settings of AI Content Suggestion plugins are splitted between 3 config objects: - ai_content_suggestions.settings - ai_content_suggestions.prompts - ai_content_suggestions.tone ## Problem Content object `ai_content_suggestions.settings` needs to have all plugin settings to avoid loading unnecessary configurations, this way the plugin instantiation could be easier as configuration will exist in the same config file. > Change record: [#3591233](https://www.drupal.org/node/3591233) ### [Validation of unexisting fields on paragraphs actions](https://git.drupalcode.org/project/ai/-/work_items/3571033) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiContentSuggestions, category::bug, priority::normal, shouldMove Description: >>> [!note] Migrated issue Reported by: [aaron gil martinez](https://www.drupal.org/user/3605526) Related to !1150 >>> Problem/Motivation When a node form uses Paragraphs, the AI Content Suggestions “Select the field(s) you wish to send to the LLM” list does not update after Paragraphs AJAX actions (collapse/edit/add). This makes it possible to select stale/hidden paragraph fields or miss newly added ones or even display errors because of validation on non-existing fields in the list. Steps to reproduce (required for bugs, but not feature requests) Enable ai_content_suggestio… ### [ai_content_suggestions: On-focus button un-hide rule misses .field-widget-action-widget-button for field--type-string-long](https://git.drupalcode.org/project/ai/-/work_items/3583883) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: aiContentSuggestions, category::bug, priority::minor, shouldMove Description: >>> [!note] Migrated issue Reported by: [jjchinquist](https://www.drupal.org/user/286806) >>> [Tracker] Update Summary: Bug report, AI Suggestions button stays hidden on focus for string_long textarea fields. Short Description: On-focus un-hide CSS rule in ai_content_suggestions misses .field-widget-action-widget-button for field--type-string-long. Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation When the display_on_focus setting is enabled on a field widget action plugin attached to a field--type-string-long fie… ### [Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab](https://git.drupalcode.org/project/ai/-/work_items/3586488) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: ## Description The provider/operation-type matrix at `docs/providers/matris.md` is maintained by hand. Today the only way it stays current is a note at the bottom asking contributors to open a pull request when their provider is missing — so it drifts out of date and is incomplete. We should add a **deterministic** script under `scripts/` that discovers every AI provider plugin published on `git.drupalcode.org`, works out which operation types each one supports, and regenerates `docs/providers/matris.md` from that data. Determinism matters so the script can run in CI / on a schedule and prod… ### [Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer](https://git.drupalcode.org/project/ai/-/work_items/3586572) State: opened | Updated: 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Is Contextualized, aiApiExplorer, category::task, priority::normal Description: ## Summary The **Chat Generation Explorer** (`ChatGenerator` plugin) in the AI API Explorer should also display the response **metadata** returned by the provider — specifically **token usage** and, when the provider exposes it, **rate limit** information. ## Problem When you run a chat through the explorer, the response object (`\Drupal\ai\OperationType\Chat\ChatOutput`) already carries this metadata, but the explorer throws it away. `ChatOutput` already exposes everything we need: - `getTokenUsage(): \Drupal\ai\Dto\TokenUsageDto` — `input`, `output`, `total`, `reasoning`, `cached` toke… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-06-28 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, why::needsInfo Description: ## Description The current AI Chatbot module is tightly coupled to the DeepChat library. DeepChat does more than render the UI - it also handles the API communication, chat state, and message history. Functionality such as tool calling, conversation history, and thread management is implemented in a DeepChat-specific way, making it difficult to swap in alternative chat interfaces. [assistant-ui](https://www.assistant-ui.com/) was identified as a promising alternative - a React-based component library that supports custom API endpoints and offers significantly easier customization than DeepCha… ### [Add metadata to VectorDBGenerator in AI-API-Explorer](https://git.drupalcode.org/project/ai/-/work_items/3549175) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: Isaac Trogdon (dotist) | Labels: aiApiExplorer, category::task, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [d0t15t](https://www.drupal.org/user/132353) >>> Problem/Motivation It would be great to see the available metadata in the VDB results, for instance - to add the drupal_long_id. ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Add event hook to ai_ckeditor to allow context injection](https://git.drupalcode.org/project/ai/-/work_items/3581952) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Jesse Hofmann-Smith (jessehs) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !1469 !1425 >>> Problem/Motivation The ai_ckeditor module provides AI-powered CKEditor 5 actions (Tone, Translate, Summarize, etc.) but has zero entity awareness — it doesn't know what content type, bundle, or entity ID the editor is attached to. The ai_context module provides a sophisticated scope-based context selection system that can inject bundle-specific writing guidelines into AI prompts. These two modules cannot communicate because: ai_ckeditor does not pass entity information (… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bruno Bruno (bbruno) | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [[AI Prompts] Update the Type Casing of Entities/Permissions](https://git.drupalcode.org/project/ai/-/work_items/3574417) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [robloach](https://www.drupal.org/user/61114) Related to !1223 >>> [Tracker] Update Summary: Created the issue Short Description: Update the casing of AI Prompt Types Check-in Date: 02/18/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Following #3567796: UX: AI Prompts: Improve UX around initial setup, the AI Prompts user interface has a mix of letter casing. For example: "AI Prompt type". Would be good to consolidate them so that they're all using Title Case, as similar with other entities ac… ### [Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches](https://git.drupalcode.org/project/ai/-/work_items/3566613) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1285 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We want better traceability between code changes and Drupal.org issues by ensuring that anything merged into main branches (e.g. 1.2.x, 1.3.x, 2.0.x) references the relevant issue num… ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: harivansh sharma (harivansh) | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Create validator for structured content](https://git.drupalcode.org/project/ai/-/work_items/3561971) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1385 !1242 !1210 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Create a validator of structured content Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently we have an input in specific places like ECA, AI Agents or AI API Explorer where you can provide a structured content as a big json or yaml blob in a textarea. Since there are very specific rules about ho… ### [Fix Translate Text Explorer form functionality](https://git.drupalcode.org/project/ai/-/work_items/3553353) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs tests, aiApiExplorer Description: >>> [!note] Migrated issue Reported by: [jhuhta](https://www.drupal.org/user/3387868) Related to !1333 !963 >>> Problem/Motivation When using the Translate Text Explorer, it always results in an exception: An error occurred The following error occurred while processing your request: Form errors cannot be set after form validation has finished. Of the following exception type: LogicException The reason seem to be the inconsistent use of a prefix in the form code. Steps to reproduce (required for bugs, but not feature requests) Have an translate text type of a provider (like ai_provider_d… ### [The chatbot config, default avatar does not accept tokens](https://git.drupalcode.org/project/ai/-/work_items/3546675) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [anaconda777](https://www.drupal.org/user/3595801) Related to !1255 >>> Problem/Motivation In the block settings of the chat bot, the defaul avatar always shows User picture. Some sites may not use User picture image, instead a image field from user Profile. For example tokens in the field "Default Avatar" wont work, instead the default user pic is showed: [current-user:profile:field_profile_image] [current-user:profile:field_profile_image:entity] Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI mo… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [Provide AI usage reports in Drupal admin panel](https://git.drupalcode.org/project/ai/-/work_items/3535260) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alexey Korepov (murz) | Labels: AI Initiative Sprint, AI Product Development, Vienna2025, aiLogging Description: >>> [!note] Migrated issue Reported by: [tonytosta](https://www.drupal.org/user/262359) Related to !826 >>> The AI module bundle should provide an easy way to view calls to AI providers - log requests and responses locally, build usage reports, available directly in the Drupal admin panel out of the box, without using any external tools. Steps to reproduce (required for bugs, but not feature requests) I will list these steps even though it is not required: Install AI module Install AI Usage Reports module See usage reports in the Drupal admin panel: logs of requests and responses, aggreg… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::bug Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !1277 >>> Problem/Motivation ChatBot closes itself, and impossible to reopen-it, without refreshing the page Steps to reproduce 1. Create new content with CKEditor, for example basic page 2. Open ChatBot 3. Add Media into Ckeditor, we can see ChatBot closes 4. Include the Media 5. It's impossible to reopen the ChatBot > Related issue: [Issue #3505569](https://www.drupal.org/node/3505569) ### [Create plugins for interacting with multimedia in AI](https://git.drupalcode.org/project/ai/-/work_items/3463843) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alphons Jaimon (AJV009) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::task Description: >>> [!note] Migrated issue Reported by: [kevinquillen](https://www.drupal.org/user/317279) Related to !1431 !761 >>> Problem/Motivation Now that #3462674: Create a generic AI plugin layer for CKEditor is pending a merge, one of the final OOTB AI plugins for CKEditor is generating an image from providers and saving the result back to the media library in Drupal. This would be a core piece of CKEditor plugin functionality. This is true for text to speech or audio providers as well. This is more of an intermediate task as I assume the plugin would need to understand how to convert the saved … ### [ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models](https://git.drupalcode.org/project/ai/-/work_items/3586425) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: **Problem / Motivation** `AiRequest.php` calls `setStreamedOutput(TRUE)` for all providers. The PHP client `gemini-api-php` sends a malformed request body when calling `streamGenerateContent` against Gemini 2.x models, resulting in `400 Bad Request`. The non-streaming endpoint `generateContent` works correctly with the same payload. The error in logs: `Error invoking model response: Client error: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent resulted in a 400 Bad Request response` Confirmed: the identical payload sent to `generateConten… ### [AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin](https://git.drupalcode.org/project/ai/-/work_items/3586449) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, priority::normal, state::rtbc Description: Project: AI\ Component: AI Assistant API\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** Drupal\\ai_assistant_api\\Service\\AgentRunner::runAsAgent() resolves the assistant's underlying agent through the plugin.manager.ai_agents plugin manager: // AgentRunner.php:74\\ $agent = this-\>aiAgentPluginManager-\>createInstance(assistant_id); The plugin manager surfaces two kinds of definitions under a single ID namespace: 1. Code-defined AiAgent plugins, which extend AiAgentBase. 2. Config-entity agents, which are wrapped at discovery time in AiAgentEntityWrapper. When a code plugin a… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-29 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1732 [Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification](https://git.drupalcode.org/project/ai/-/merge_requests/1732) | State: opened | Author: Ronald te Brake (ronaldtebrake), 11 diff lines Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… ### [Tool Explorer does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582473) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1446 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Tool Explorer does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The Tool Explorer UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the Tool Explorer has styling issues that make it diffi… ### [MDX Editor does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582474) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1445 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: MDX Editor does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The MDX Editor UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the MDX Editor has styling issues that make it difficult to u… ### [force_value + hide_property in tool_usage_limits does not inject value at tool execution time](https://git.drupalcode.org/project/ai/-/work_items/3586577) State: opened | Updated: 2026-06-30 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: (Written with the help of Claude Sonnet 4.6) I've been testing AI Search (1.3.0-alpha3) with AI (1.5.x-dev) and I think I have found an issue. After creating a search assistant pointing at a vector DB index, it does not work. I looked at the configuration of the AI agent that was created when I created the assistant, and it looks like if both force_value and hide_property are enabled, the forced value is never actually injected when the tool executes. The result is a validation error: > Invalid value for [parameter] in [tool]: This value should not be null. Claude seems to think this is… ### [Rethrow exceptions from queue processor](https://git.drupalcode.org/project/ai/-/work_items/3571498) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [nicxvan](https://www.drupal.org/user/531480) >>> [Tracker] Update Summary: Exceptions should be rethrown so custom processors can handle them Short Description: Rethrow exceptions Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to handle unstructured and other exceptions ourselves in a process runner Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolutio… ### [Add cache-write and tool-use prompt tokens to TokenUsageDto](https://git.drupalcode.org/project/ai/-/work_items/3586576) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, v1.5.x-dev Description: ## Problem/Motivation `TokenUsageDto` (`src/Dto/TokenUsageDto.php`) only models five token counts: ```php public ?int $input = NULL, public ?int $output = NULL, public ?int $total = NULL, public ?int $reasoning = NULL, public ?int $cached = NULL, ``` Two token-usage values reported by the major providers have nowhere to live in this DTO, so they are silently dropped before reaching logging/observability or any cost-reporting layer: ### 1. Cache **write** / cache creation tokens The current `cached` field maps only to **cache reads** (`prompt_tokens_details.cached_tokens` in `OpenAiBasedPr… ### [Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) State: closed | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: Valery Lourie (valthebald) | Labels: category::plan, priority::normal, state::accepted Description: Drupal AI Contribution meeting from June 15 at 18:00 to June 16, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586480: Drupal AI Contribution meeting 2026-06-01](https://git.drupalcode.org/project/ai/-/work_items/3586480) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [[META] AI background / autonamous agents](https://git.drupalcode.org/project/ai/-/work_items/3560619) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [guptahemant](https://www.drupal.org/user/3278073) >>> [Tracker] Update Summary: Background Agent Processing - We have a plan for the intial preparation of background agents Short Description: Allows Agents to work on the sever without direct user involvement enabling many automation features such as firing on cron or in response to content changes. Includes significant Architecture improvements. Check-in Date: 07/12/2025 Additional Collaborators: @guptahemant, @harivansh Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker]… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ricardo Castañeda (cadence96) | Labels: UX, aiAutomators, category::feature, priority::normal Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Only one AI Automator worker queue item is processed per cron execution](https://git.drupalcode.org/project/ai/-/work_items/3575190) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1647 [Issue #3575190: Add configurable queue items per cron for AI Automators](https://git.drupalcode.org/project/ai/-/merge_requests/1647) | State: merged 2026-06-30 | Author: Abhisek Mazumdar (abhisekmazumdar), 575 diff lines Description: >>> [!note] Migrated issue Reported by: [sgavilan](https://www.drupal.org/user/3569880) Related to !1253 !1252 >>> [Tracker] Update Summary: AI Automator queue items run once per cron execution[One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: 23/02/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Each cron execution queues several items to be processed but only one item is processed each time. Is there a way to configure number of queue items to be processed in each e… ### [non streaming broken (fiber branch)](https://git.drupalcode.org/project/ai/-/work_items/3586457) State: opened | Updated: 2026-06-30 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: AI, AI Product Development, priority::major, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1646 [Issue #3586457: Add ChatInput::setForceSynchronous() and fix Fiber branch to use ChatFiberSupport capability](https://git.drupalcode.org/project/ai/-/merge_requests/1646) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 91 diff lines Description: ## Summary `OpenAiBasedProviderClientBase::chat()` contains a Fiber branch (line 341) that silently forces streaming on any call executed inside a PHP Fiber, even when the caller never requested streaming. This breaks non-streaming AI calls made from within Fiber-based execution contexts (e.g. `ai_search_block` with streaming disabled in block config). ## Root cause The condition on line 341 is: ```php elseif (\Fiber::getCurrent() && in_array(AiProviderCapability::StreamChatOutput, $this->getSupportedCapabilities())) { ``` `\Fiber::getCurrent()` alone is too broad — it fires for any code … ### [InputLengthLimit guardrail does not consistently scan user messages](https://git.drupalcode.org/project/ai/-/work_items/3586578) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::bug, v1.4.x-dev Description: ## Summary Follow-up to #3579088. The `InputLengthLimit` guardrail (added in 1.4.x) has the same message-selection defect that #3579088 fixed for `RegexpGuardrail` and `RestrictToTopic`: it does not consistently scan **user** messages across a conversation. The fix in [!1467](https://git.drupalcode.org/project/ai/-/merge_requests/1467) centralized this into a reusable `UserMessageSelectionTrait` (a role-filtered `selectUserMessages()` helper plus a shared "Scan all user messages" checkbox via `buildScanAllUserMessagesElement()`). `InputLengthLimit` was not part of that MR because it landed s… ### [ImageClassificationItem returns string from getConfidenceScorePercentage and uses uppercase NULL in hints](https://git.drupalcode.org/project/ai/-/work_items/3584863) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: ImageClassificationItem::getConfidenceScorePercentage() is typed as string and returns mixed float/string; type hints also use uppercase NULL instead of lowercase null. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation In src/OperationType/ImageClassification/ImageClassificationItem.php, getConfidenceScorePercentage() is declared with return type string but the docblock says float|null, and the body r… ### [Drupal Eval Commons umbrella](https://git.drupalcode.org/project/ai/-/work_items/3586445) State: opened | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::plan, priority::normal, state::rtbc Description: ## TL;DR Four Drupal AI projects (`drupal/ai`, `ai_eval`, `ai_agents_test`, `ai_best_practices`) are each working on pieces of the same puzzle: how to write, run, and share evals for AI features. Today there is no shared format for eval cases or results, so the same work risks being redone in incompatible ways. This umbrella suggests splitting the problem into five layers and agreeing on the lowest layer first, so the other layers can move in parallel without one blocking the rest. Nothing in your current module has to change today; the proposal is additive, and a module adopts each layer whe… ### [[Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*)](https://git.drupalcode.org/project/ai/-/work_items/3586479) State: closed | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1662 [feat: #3586479 Add gen_ai.* semantic conventions to ai_observability](https://git.drupalcode.org/project/ai/-/merge_requests/1662) | State: merged 2026-06-30 | Author: George Kastanis (zorz), 1133 diff lines Description: ## Problem `ai_observability` has emitted OTel spans + metrics (since the 1.3.x series) with ad-hoc names (`provider`, `operation_type`, `model`, `token_usage` as a serialized array; counters `ai_token_usage_`) rather than the OTel [GenAI semantic conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/). The Layer 2 envelope tracker (#3586453) needs one attribute schema across modules so the translator reads a single shape. ## Proposed approach — additive, dual-emit, no config toggle Emit `gen_ai.*` **alongside** the existing ad-hoc attributes/metrics, unconditionally, when OTel ex… ### [Type error and infinite AJAX request loop when the Agent is unable to resolve a request job](https://git.drupalcode.org/project/ai/-/work_items/3547470) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiAssistantsApi, category::task, needs backport to 1.1.x, needs backport to 1.2.x Description: >>> [!note] Migrated issue Reported by: [codebymikey](https://www.drupal.org/user/3573206) Related to !1021 !894 >>> Problem/Motivation When the AI agent is unable to solve a job, the following exception is thrown: <?phpTypeError: Drupal\ai\OperationType\Chat\ChatMessage::__construct(): Argument #2 ($text) must be of type string, null given, called in /app/application/web/modules/contrib/ai/modules/ai_assistant_api/src/Service/AgentRunner.php on line 85 inDrupal\ai\OperationType\Chat\ChatMessage->__construct() (line 61 of /app/application/web/modules/contrib/ai/src/OperationType/Ch… ### [ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator)](https://git.drupalcode.org/project/ai/-/work_items/3586473) State: closed | Updated: 2026-06-30 | Author: George Kastanis (zorz) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1627 [fix: #3586473 Finalize streaming OTel spans on the terminal event](https://git.drupalcode.org/project/ai/-/merge_requests/1627) | State: merged 2026-06-30 | Author: George Kastanis (zorz), 248 diff lines Description: ## Problem Streaming chat OTel spans record no final token usage. `AiOtelSpansEventSubscriber` sends both `PostGenerateResponseEvent` and `PostStreamingResponseEvent` to one handler. It ends the span on the first event, before the stream is consumed, so token usage is empty. The terminal event carries the real usage, but the span is already ended and OTel ignores attributes set after `end()`. The stored span is also never unset, so `$otelSpans` grows unbounded. Two related gaps on the terminal event: - `operationType` and `configuration` are empty. `attachStreamMetadata()` sets `providerC… --- MERGE REQUESTS (2w) --- ### [fix: Validates inline prompt against stale prompt type when multiple ai prompt elements exists](https://git.drupalcode.org/project/ai/-/merge_requests/1686) State: opened | Author: Javier Destefanis (javierdestefanis) | Branch: 3586548-aipromptsubform-validates-inline-prompt-against-stale-prompt-type-when-multiple-ai-prompt-elements-exist | 247 diff lines Description: ## Description #3586548 I have not created tests. ## Testing instructions 1. 1. Create a settings form with multiple `#type => ai_prompt` elements. 2. Configure at least two different prompt types: * one prompt type with required variables; * one prompt type with no required variables. 3. Use the inline “Create new prompt” form for the prompt type that has no required variables. 4. Fill in the required fields and submit the inline prompt form. 2. ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-r… ### [Issue #3582743: Set temp directory for encoderProvider.](https://git.drupalcode.org/project/ai/-/merge_requests/1685) State: merged 2026-06-18 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-28c609c3 | 225 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3554797: Start session after first interaction](https://git.drupalcode.org/project/ai/-/merge_requests/978) State: opened | Author: Omar Mohamad - El Hassan Lopesino (omarlopesino) | Branch: 3554797-create-ai-assistant | 610 diff lines Description: Closes #3554797 ### [Issue #3586541 Show last-modified date on documentation pages...](https://git.drupalcode.org/project/ai/-/merge_requests/1684) State: opened | Author: Avinash jha (avinash.jha) | Branch: 3586541-show-last-modified-date-on-documentation-pages-mkdocs-git-revision-date-localized-plugin | 67 diff lines ### [Issue #3586475: Rename the RegExp Guardrail labels to RegEx](https://git.drupalcode.org/project/ai/-/merge_requests/1689) State: opened | Author: Rob Loach (robloach) | Branch: 3586475-guardrails-regex-plugin-name | 205 diff lines Description: ## Description This renames the regexp guardrail labels to "RegEx" for consistency within the UI. It doesn't change the machine IDs, or class names, just the labels. ## Testing instructions 1. Visit the Guardrails administration screen 2. Expect to see RegEx, instead of regexp Closes #3586475 ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-review of my own code - [x] I have added or updated tests, or explained in the description why this change is not covered by tests - [x] I have updated documentation for any new or chan… ### [feat: #3586427 Adopt symfony/ai component v0.8 as platform provider](https://git.drupalcode.org/project/ai/-/merge_requests/1619) State: opened | Author: Wolfgang Ziegler (fago) | Branch: 3586427-adopt-symfonyai-08 | 4751 diff lines Description: ## Dependencies !! This MR builds upon the MR [#1613](https://git.drupalcode.org/project/ai/-/merge_requests/1613) - please review this one first! ## Description - New `ai_inference_provider` plugin type + config entity (one inference backend with API key / base URL / model list); ships `Generic` (OpenAI-compatible) and `Gemini`. Plugin namespace `Plugin/ai/InferenceProvider/`. - New `ai_model_router` plugin type; ships `CatalogBasedModelRouter` (default). - New `ai_platform` plugin type with two derivers: - **EntityPlatform** — one derivative per `ai_platform` config entity. … ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai/-/merge_requests/1688) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2204 diff lines Description: Relates to #3586555. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-856789. ### [Issue #3586478: "Add rich-text image description support to AI Automators"](https://git.drupalcode.org/project/ai/-/merge_requests/1679) State: opened | Author: Levente Besenyei (LeventeB) | Branch: 3586478-issue-branch-2x | 2434 diff lines Description: ## Description Ports the resolution of #3586478 from the 1.x line to the 2.x branch. This introduces rich-text image awareness to AI Automators so supported text-based automators can discover embedded images, generate AI image descriptions, include those descriptions in prompt context, and optionally store image metadata for auditability. For AI content pre-moderation, this enables the moderation automator to evaluate visual content from Article body fields in addition to text content. If embedded images cannot be fully processed (for example, configured image limit exceeded, unreachable/in… ### [#3586470 "Make API explorer work with Symfony platform and legacy providers"](https://git.drupalcode.org/project/ai/-/merge_requests/1613) State: opened | Author: Wolfgang Ziegler (fago) | Branch: 3586470-make-api-explorer-wo | 281 diff lines Description: ## Description Closes #3586470 Makes `ai_api_explorer` (and any other consumer of `AiProviderFormHelper`) work with the new `AiPlatform`-backed providers while keeping legacy `AiProvider` plugins fully supported during the migration window. The MR also does some small UI-changes (menu links) and names legacy AI providers legacy in the UI, to avoid confusion. ## Changes - **`AiProviderPluginManager::getProvidersForOperationType()`** now returns **both** kinds in one listing: - Legacy `AiProvider` plugins (bare-id keys, e.g. `echoai`) — label prefixed with `Legacy:` so dropd… ### [#3582633: Add Functional JavaScript testing conventions and validation script](https://git.drupalcode.org/project/ai/-/merge_requests/1432) State: opened | Author: Shivam Sen (shivamsen_12579) | Branch: 3582633-document-functionaljavascript-test | 162 diff lines Description: (cherry picked from commit 20c8ac18d15a25ffd0db807b6e427e8b41d34cf7) Closes #3582633 ### [feat: #3577170 Move Automators to Structured Output](https://git.drupalcode.org/project/ai/-/merge_requests/1291) State: merged 2026-06-24 | Author: Ann Mary Sruthy (annmarysruthy) | Branch: 3577170-move-automators-to | 1961 diff lines Description: Closes #3577170 ### [Issue #3586515: Port FWA/Automators generalization from !1536 to 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1700) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3586515-generalize-behaviour-of-fwa-with-automators-ai-core-v2-2.0.x | 3627 diff lines Description: ## Summary Backport of MR #1 (→ 2.x) to 2.0.x for #3586515. Same change as the parent issue #3577050 / !1536, ported across the major-version boundary. Because the FieldWidgetAction plugins and the kernel test are byte-identical between 2.x and 2.0.x, this is a clean `git cherry-pick -x` of the 2.x commit — no manual conflict resolution was needed on top of the 2.x work. > Cherry picked from the 2.x branch (commit `c60b0854`). Please review/merge after MR #1 lands on 2.x. ## What changed The per-widget automator dispatch logic is generalized into `AutomatorBaseAction`: - `runAutomatorSub… ### [Issue #3586515: Port FWA/Automators generalization from !1536 to 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1699) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3586515-generalize-behaviour-of-fwa-with-automators-ai-core-v2 | 3627 diff lines Description: ## Summary Ports the field widget action (FWA) / Automators generalization from !1536 (issue #3577050, merged to 1.4.x) onto 2.x, as requested in #3586515. The 1.x work could not be cherry-picked directly across the major-version boundary, so this is a 3-way port of the same change set. ## What changed The per-widget automator dispatch logic is generalized into `AutomatorBaseAction`: - `runAutomatorSubmit()` runs the automator once during the submit phase and `setFormInput()` writes results into `$form_state` user input, so the rebuilt form scaffolds enough delta slots for every value retu… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1697) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-6 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1695) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-4 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1696) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-5 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1694) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-3 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586521: Fix tests with MDXEditor for 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1698) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-1f4ca30a | 176 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1693) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849-2 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1692) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d2fad849 | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Update file .gitlab-ci.yml](https://git.drupalcode.org/project/ai/-/merge_requests/1691) State: merged 2026-06-22 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: fix-pipeline-composer | 13 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode.](https://git.drupalcode.org/project/ai/-/merge_requests/1529) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3584977-restricttotopic-guardrail-add | 895 diff lines Description: Closes #3584977 ### [Cherry-pick changes from #3586500](https://git.drupalcode.org/project/ai/-/merge_requests/1716) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3586500-2x | 209 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry pick 3586472 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1717) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-80302a5d | 304 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1629) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3586468-interactive-refineme | 3038 diff lines Description: ## Description ## Testing instructions 1. Create an AI Automator Setup for content_type → entity → field_content with rule llm_text_long , point the base field to the title, and add a prompt something like "You must write a short blog paragraph about: {{ context }}. Return ONLY the paragraph text, nothing else." 2. Enable the Field Widget Action with refinement Go to /admin/structure/types/manage/blog/form-display Click the gear on field_content, under Field Widget Actions enable "Automator Text Suggestion" Pick the automator, check "Enable Refinement", save 3. Edit an entity Click the… ### [Cherry pick 3586472 2.x](https://git.drupalcode.org/project/ai/-/merge_requests/1713) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3586472-2.x | 304 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1715) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-c366c40d-2 | 345 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586500: Get default Vdb provider if none yet selected](https://git.drupalcode.org/project/ai/-/merge_requests/1714) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-c366c40d | 345 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1712) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-b7459475-2 | 240 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586472: Use ai provider configuration form element and use proper...](https://git.drupalcode.org/project/ai/-/merge_requests/1711) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-b7459475 | 240 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1710) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-2467d85a-2 | 57 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Non-BC support for long running chunks](https://git.drupalcode.org/project/ai/-/merge_requests/1709) State: merged 2026-06-24 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-2467d85a | 57 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [#3585077: Integrate chatprocessor plugin (1.x backport)](https://git.drupalcode.org/project/ai/-/merge_requests/1706) State: closed | Author: David Galeano (gxleano) | Branch: 3585077-chatprocessor-1x | 1310 diff lines ### [#3585075: Add ai assistant chat processor (1.x backport)](https://git.drupalcode.org/project/ai/-/merge_requests/1707) State: opened | Author: David Galeano (gxleano) | Branch: 3585075-add-ai-assistant-1x | 253 diff lines ### [#3585075: Add ai assistant chat processor](https://git.drupalcode.org/project/ai/-/merge_requests/1496) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3585075-add-ai-assistant | 253 diff lines Description: Closes #3585075 ### [#3585077: Integrate chatprocessor plugin](https://git.drupalcode.org/project/ai/-/merge_requests/1497) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3585077-integrate-chatprocessor-plugin | 1317 diff lines Description: Closes #3585077 ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… ### [Remove ai_content_suggestions module for ai core](https://git.drupalcode.org/project/ai/-/merge_requests/1042) State: merged 2026-06-25 | Author: Eric Homanchuk (erichomanchuk) | Branch: 3552885-move-out-ai | 3777 diff lines Description: The module will now be a contrib module and has a project at https://www.drupal.org/project/ai_content_suggestions Closes #3552885 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1522) State: merged 2026-06-25 | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-1.4.x | 13 diff lines Description: Closes #3585596 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1521) State: merged 2026-06-25 | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-2.0.x | 13 diff lines Description: Closes #3585596 ### [Issue #3585596: Move Prompt Library under AI Infrastrcture](https://git.drupalcode.org/project/ai/-/merge_requests/1523) State: closed | Author: Dimitar Rupov (mrupal) | Branch: 3585596-prompt-library-parent-1.3.x | 13 diff lines Description: Closes #3585596 ### [docs: #3572751 Add docs for the Field widget Actions automator worker](https://git.drupalcode.org/project/ai/-/merge_requests/1293) State: merged 2026-06-25 | Author: Wolfgang Ziegler (fago) | Branch: cherry-pick-c72530aa | 22 diff lines Description: By: abhisekmazumdar By: sujal kshatri By: scontzen (cherry picked from commit c72530aa54564650b47754b622a266792694f4f4) ce3d22c7 docs: #3572751 Improvement suggestions for ai_automators docs Co-authored-by: Abhisek Mazumdar ### [Adding a new point about Automator Worker](https://git.drupalcode.org/project/ai/-/merge_requests/1187) State: closed | Author: Sujal Kshatri (sujal_31) | Branch: 2.0.x | 44218 diff lines Description: Documentation for **Automator Worker** in `ai/docs/modules/ai_automators/index.md` , Added a new point describing the **Field Widget worker type** ### [Adding a new point about Automator Worker](https://git.drupalcode.org/project/ai/-/merge_requests/1201) State: closed | Author: Sujal Kshatri (sujal_31) | Branch: 1.3.x | 19 diff lines Description: Documentation for **Automator Worker** in `ai/docs/modules/ai_automators/index.md` , Added a new point describing the **Field Widget worker type** ### [Issue #3586389: Add agent delegation message setting](https://git.drupalcode.org/project/ai/-/merge_requests/1539) State: opened | Author: m4olivei | Branch: 3586389-unable-to-override-t | 69 diff lines Description: Closes #3586389 ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1723) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-5 | 255 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1722) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-4 | 255 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1719) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1721) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-3 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586522: Keep token usage in the chat() Fiber branch](https://git.drupalcode.org/project/ai/-/merge_requests/1720) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4be58dd8-2 | 261 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick changes from #3586500](https://git.drupalcode.org/project/ai/-/merge_requests/1718) State: merged 2026-06-25 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-56a8ae4c | 209 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [ai-3586569: ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/merge_requests/1728) State: opened | Author: Mukeysh | Branch: 3586569-ai-ckeditor-add-option-to-show-or-hide-the-ai-writer-status-information | 181 diff lines Description: ## Description When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Solution Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Testing instructions 1. Enable AI + AI CKEditor. Run `npm ci && npm run build` in modules/ai_cked… ### [fix(ai_ckeditor): remove stale toolbar items on uninstall and warn on confirm page](https://git.drupalcode.org/project/ai/-/merge_requests/1731) State: opened | Author: Ricardo Castañeda (cadence96) | Branch: 3586570-uninstalling-ai-ckeditor-leaves-stale-toolbar-items-in-editoreditor-configuration | 108 diff lines Description: ## Description Fixes an issue where uninstalling `ai_ckeditor` left stale toolbar references in existing `editor.editor.*` configuration entities, causing CKEditor 5 text format configuration pages to break. Two changes in `ai_ckeditor.install`: - **`hook_module_preuninstall()`**: Before the module is removed, iterates over all `editor.editor.*` configs and strips the `aickeditor` and `ai_balloon_menu` toolbar items, as well as the `ai_ckeditor_ai` plugin configuration block. - **`hook_form_FORM_ID_alter()` for `system_modules_uninstall_confirm_form`**: Reads the pending modules from the ex… ### [Resolve "Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab"](https://git.drupalcode.org/project/ai/-/merge_requests/1645) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3586488-add-a-deterministic-script-to-auto-generate-the-providersoperation-types-matrix-from-gitlab | 1157 diff lines ### [Issue #3586543: Add AI reranking processor for Search API.](https://git.drupalcode.org/project/ai/-/merge_requests/1729) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3586543-add-ai-reranking-processor-for-search-api | 617 diff lines Description: ## Description A new Search API processor plugin (`ai_reranker`) that re-orders query results using the `rerank` operation type already in AI Core. The `rerank` operation was added in #3488114 but nothing consumed it for Search API. #3557901 proposed putting reranking in `ai_search`, but reranking is a generic capability. It belongs in the `ai` core module where the operation type itself lives, so it works with any Search API backend (database, Solr, anything), not just the vector backend. **New files:** - `src/Plugin/search_api/processor/AiReranker.php`: `ProcessorPluginBase` plugin runni… ### [Issue #3477173: Add functional tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/merge_requests/1302) State: opened | Author: velmir_taky (root_emarketing) | Branch: 3477173-add-functional-tests-all | 635 diff lines Description: Closes #3477173 ### [Add AICKeditor tests (Target 1.4.x)](https://git.drupalcode.org/project/ai/-/merge_requests/1577) State: merged 2026-06-26 | Author: AKHIL BABU (AkhilBabu) | Branch: 3477173-add-functional-tests-all-1.4.x | 649 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Added Functional JavaScript Tests](https://git.drupalcode.org/project/ai/-/merge_requests/1257) State: closed | Author: Hrishikesh Dalal (hrishikesh-dalal) | Branch: 3477173-add-functional-tests-for-ckeditor | 319 diff lines Description: Closes #3477173 ### [fix: ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/merge_requests/1727) State: closed | Author: Mukeysh | Branch: 3586569-ai-ckeditor-add-option-to-show-or-hide-the-ai-writer-status-information | 15752 diff lines Description: ## Description ### [Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone.](https://git.drupalcode.org/project/ai/-/merge_requests/1735) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/remove-bundled-field-widget-actions-3586556 | 3221 diff lines Description: Finishes the deprecation of the bundled field_widget_actions sub-module: - Adds drupal/field_widget_actions: ^1.0 to composer.json require so the standalone package (same machine name, same PHP namespace) is always present on composer update. - Deletes modules/field_widget_actions/ (34 files) entirely. Sites that had the bundled module enabled continue to work seamlessly: the standalone has an identical machine name and namespace, so core.extension entries resolve without any migration. ai_automators.info.yml is left unchanged (optional integration); FieldWidgetProcessing.php already gu… ### [Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes.](https://git.drupalcode.org/project/ai/-/merge_requests/1277) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3499451-chatbot-closes-itself | 63 diff lines Description: Closes #3499451 ### [Issue #3571498: Rethrow queue worker exceptions](https://git.drupalcode.org/project/ai/-/merge_requests/1535) State: opened | Author: scott falconer (scottfalconer) | Branch: 3571498-rethrow-queue-exceptions | 331 diff lines Description: Closes #3571498 ### [Resolve #3566613 "Commit message mike"](https://git.drupalcode.org/project/ai/-/merge_requests/1285) State: merged 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3566613-commit-message-mike | 14 diff lines Description: Closes #3566613 ### [Resolve #3579088 "Guardrail plugins only"](https://git.drupalcode.org/project/ai/-/merge_requests/1467) State: opened | Author: Alphons Jaimon (AJV009) | Branch: 3579088-guardrail-plugins-only | 804 diff lines Description: Closes #3579088 ### [Remove obsoleted #default_value](https://git.drupalcode.org/project/ai/-/merge_requests/1221) State: merged 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Branch: 3574499-clean-up-aiobservability | 151 diff lines Description: Closes #3574499 ### [Issue #3545462: Refactor StructuredOutputSchema to use Symfony validation attributes](https://git.drupalcode.org/project/ai/-/merge_requests/1114) State: merged 2026-06-30 | Author: Bryan Sharpe (b_sharpe) | Branch: 3545462-move-the-input | 225 diff lines Description: Refactored StructuredOutputSchema DTO to use Symfony validation attributes directly on properties with constructor property promotion. - Added validation attributes (Type, Regex, Collection) on properties - Removed DtoBaseMethodsTrait to prevent validation bypass - Replaced create() with fromArray() that validates input - Added toArray() that excludes internal properties - Updated setters to validate before setting values - Updated ChatInput to use toArray() method - Added comprehensive tests Closes #3545462 ### [Fix/token usage dto cached write tool use 3586576](https://git.drupalcode.org/project/ai/-/merge_requests/1736) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/token-usage-dto-cached-write-tool-use-3586576 | 240 diff lines Description: ### Summary * Added support for two additional AI token usage types: * **Cache write tokens** (`cachedWrite`) * **Tool use tokens** (`toolUse`) * This ensures token usage data from AI providers is captured more completely for observability. ### Changes * Added `cachedWrite: ?int` and `toolUse: ?int` fields to `TokenUsageDto` with `NULL` defaults to maintain backward compatibility. * Updated `StreamedChatMessageInterface` by adding: * `setCachedWriteTokenUsage()` * `getCachedWriteTokenUsage()` * `setToolUseTokenUsage()` * `getToolUseTokenUsage()` * Implemented all four new meth… ### [Add StructuredOutputSchema DTO and improve ChatInput validation.](https://git.drupalcode.org/project/ai/-/merge_requests/873) State: closed | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3545462-move-the-input | 59489 diff lines Description: Closes #3545462 --- COMMITS (2w) --- - [d2fad849](https://git.drupalcode.org/project/ai/-/commit/d2fad8495c4d96362983532ab1b79d21ebcd409a) Update file .gitlab-ci.yml — Artem Dmitriiev (2026-06-22T16:04:37.000+00:00) - [c366c40d](https://git.drupalcode.org/project/ai/-/commit/c366c40d96361d15879feafd3ff3973f6aac0580) Issue #3586500: Get default Vdb provider if none yet selected — Artem Dmitriiev (2026-06-24T15:06:03.000+00:00) - [b7459475](https://git.drupalcode.org/project/ai/-/commit/b745947526274a43c5dbaf2fed82eb1e87dbd4e4) Issue #3586472: Use ai provider configuration form element and use proper... — Artem Dmitriiev (2026-06-24T15:00:06.000+00:00) - [59a51b09](https://git.drupalcode.org/project/ai/-/commit/59a51b0927d6ef919b4cb3d2f5fc5f00701f30dc) Remove whitespace — Marcus Johansson (2026-06-24T09:32:23.000+02:00) - [5d7d6a5b](https://git.drupalcode.org/project/ai/-/commit/5d7d6a5ba324b4380d5f7963b611f20062e2f2c6) Issue #3585596: Move Prompt Library under AI Infrastrcture — Dimitar Rupov (2026-04-19T11:14:26.000+03:00) - [4be58dd8](https://git.drupalcode.org/project/ai/-/commit/4be58dd8e4a0b2c05bff7275dbb4c281b53bb6b6) Issue #3586522: Keep token usage in the chat() Fiber branch — Jérôme Tchania (2026-06-25T08:34:34.000+00:00) - [5c914934](https://git.drupalcode.org/project/ai/-/commit/5c914934931bd40fcb0ddf7631d5b1b5358c1909) Add AICKeditor tests (Target 1.4.x) — AKHIL BABU (2026-06-26T09:21:35.000+00:00) - [a6cff593](https://git.drupalcode.org/project/ai/-/commit/a6cff5931a95c36694ec098b49ba67ede80bd362) Issue #3575190: Add configurable queue items per cron for AI Automators — Abhisek Mazumdar (2026-06-30T13:33:20.000+00:00) - [506c988c](https://git.drupalcode.org/project/ai/-/commit/506c988c7d9bbd135fe9aede246666c9518baa13) Resolve #3566613 "Commit message mike" — Marcus Johansson (2026-06-30T12:24:27.000+00:00) - [bdb63000](https://git.drupalcode.org/project/ai/-/commit/bdb630002f6deff973c0024bf48e09685f4c588c) feat: #3586479 Add gen_ai.* semantic conventions to ai_observability — George Kastanis (2026-06-30T10:49:51.000+00:00) - [973d36e6](https://git.drupalcode.org/project/ai/-/commit/973d36e6e79c98fa13ea1c42c1237b0aba6ea2f1) fix: #3586473 Finalize streaming OTel spans on the terminal event — George Kastanis (2026-06-30T08:23:26.000+00:00) ======================================================================== ## [46] summariseModule:ai_initiative:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                                      Drupal AI Initiative

                                                                      then use

                                                                      ,

                                                                      ,

                                                                        /
                                                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                        tags. After the project summary prose, add a single subsection titled "

                                                                        How can I help on this project?

                                                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Idea: AI Cost & Usage module — local cost dashboard + opt-in aggregated community telemetry](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586519) State: opened | Updated: 2026-06-18 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Product Development, category::task, concept, ideas Description: ## Summary Explore building an **AI Cost & Usage** module that gives site owners a local dashboard of their AI spending and usage, and (optionally, opt‑in) shares aggregated, obfuscated usage data back to a community endpoint so the AI Initiative can see how the AI module and its providers are actually being used in the wild. ## Motivation There are two needs that overlap nicely: 1. **Site owners** routinely ask for visibility into AI costs: tokens per request, $/day, which model/provider/feature is responsible for spend, and what their usage looks like compared to similar sites. Today thi… ### [Drupal AI UX meeting 15 June 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3584833) State: opened | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: category::task, meetings, priority::normal, state::accepted Description: **Attendees:** Aidan, Marcus, Rob Loach, Emma, Darren, Vidit, Kati (first time joining) ### **AI ecosystem page (RobLoach)** * New searchable, filterable list of AI modules and recipes, shipped in the AI Dashboard module * Module list is for advanced site builders and developers; recipes are the site-builder surface * AI Initiative maintained shown as a filter plus badge, not a list limiter; support flag is tiered, not Boolean * Add a GitLab API search for modules requiring drupal/ai, which finds about 40% more ### **Categories and naming** * Reconcile the page filters with the existing AI… ### [organise social media (MARIA)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586574) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: organise social media (MARIA) ### [find dutch volonteers to help with the event (human wayfinder / timekeeping / registration)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586573) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: find dutch volonteers to help with the event (human wayfinder / timekeeping / registration) ### [submit offer to ThomsonReuters / CIONet / VOKA / Beltug for cooperation.](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586572) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: unassigned | Labels: Enterprise AI Summit Description: We need to decide on the cooperation with member organisations. They have the audience, we have the event. ### [Make forms for the sponsors to submit their contacts/leads/clients for a free ticket](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586571) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: wouters_f (wouters_frederik) | Labels: Enterprise AI Summit ### [Make the site look nice on mobile](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586570) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: Scott Lawrence (slawrence10) | Labels: Enterprise AI Summit Description: Make the site look nice on mobile enterprise AI Summit ### [Update sponsors + subpages on Enterprise AI summit website](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586569) State: opened | Updated: 2026-06-23 | Author: wouters_f (wouters_frederik) | Assigned: Scott Lawrence (slawrence10) | Labels: Enterprise AI Summit Description: UPDATE ON THE SPONSORS: 3 gold spots: ? 2 silver: CKeditor), Yourself, 3 holds (Tag1, Upsun, FG) on silver, so only 1 silver free. We have 1 bronze confirmed (Amazee). UPDATE sub pages - make them look as nice as the frontpage, ### [Source case studies from AI Summit Rotterdam](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586557) State: opened | Updated: 2026-06-27 | Author: Paul Johnson (pdjohnson) | Assigned: Rosie Gladden (rgladden) | Labels: AI Marketing, Drupal AI Success Stories, Enterprise AI Summit Description: ## Summary The Enterprise AI Summit is gathering session submissions ready for the event in September. This may surface case studies which are new to us. ## Work Track AI marketing ## Context / Background ## Tasks - [x] Collaborate with @wouters_frederik to gain access to the session submissions - [ ] Use the submissions as an input to case studies for Drupal AI - [ ] Make contact with the originator so that we can enrich the data / invite to webinars / ask them to write an article etc ## Acceptance Criteria - [ ] All new cases are curated - [ ] We are in contact with the creator ### [Drupal AI UX meeting 22 June 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3584834) State: opened | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: category::task, meetings, priority::normal, state::accepted Description: ## **Meeting Overview** **Date:** Monday, June 22, 2026 **Attendees:** Aidan, Marcus, Bruno, Emma, Darren, Vidit, Ángela ### **Canvas AI build-state UX** * Generation now runs component by component; editing the canvas mid-build breaks it, so the canvas locks during a build * Build UI: a Stop and a separate Stop-and-undo on the chat, a building indicator, and an optional follow-along scroll * Planning step renders as gray placeholder boxes in the canvas (Lovable-style), with a thumbnail minimap for orientation * Model is a quality/cost/speed dial (Opus best but slow and pricey; mini models … ### [Mockup: AI page creation](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586581) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted page/content creation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-page-creation All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI review notifications](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586582) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI review notifications surfaced to editors. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-review-notifications All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI review on edit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586583) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI review triggered during content editing. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-review-on-edit All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI search](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586584) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-powered search. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-search All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI field automation](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586585) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted field population/automation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-field-automation All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI search & replace](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586586) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: Niels Aers (nielsaers) | Labels: Description: Mockup for AI-driven search and replace across content. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-search-replace All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI page translations](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586587) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for AI-assisted page translation. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-page-translations All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [Mockup: AI dashboard setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586588) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: Mockup for the AI dashboard / setup & configuration screen. Spec: https://drupalaimockups.shared.sites.dropsolid-sites.com/spec.html?mockup=ai-dashboard-setup All mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ Part of meta #3586580. ## AI Usage - [x] AI Assisted Issue: generated with AI assistance, reviewed and refined by the creator. ### [[Meta] AI roadmap feature mockups May 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586580) State: closed | Updated: 2026-06-24 | Author: Niels Aers (nielsaers) | Assigned: unassigned | Labels: Description: ## Summary Editorial AI UX mockups contributed by Dropsolid for the AI Initiative. Eight interactive mockups covering AI-assisted authoring, review, search and translation flows. This meta tracks them and holds one sub-issue per mockup. Live mockups: https://drupalaimockups.shared.sites.dropsolid-sites.com/ ## Goals - Capture each delivered mockup as its own issue for review and crediting. - Give the initiative a shared reference for AI editorial UX direction. ## Work Track UX mockups ## Owner / Lead nielsa ## Sub-issues - [x] #3586581 AI page creation - [x] #3586582 AI review notificatio… ### [Module Finder: recruit beta testers and drive incremental improvements](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, feedback Description: ## Summary Recruit beta testers for the **Module Finder** and use their feedback to make incremental improvements. Module Finder is an AI-powered semantic search over all Drupal contributed modules: it has a UI for searching, and an agent skill that does the same search so a coding agent can check whether functionality already exists in the community **before** writing custom code — avoiding reinventing what contrib already provides. The immediate goal is to put it in front of real users, collect "what could be done better", and iterate in small increments. A beta link will be shared with an… ### [[Meta] Skills for hosting providers: control deployment and environment setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Summary Across the AI Initiative we want agent skills that can control **deployment and environment setup** on the various hosting providers Drupal sites run on. The goal is that a developer can set up and deploy environments through normal text instructions, with the skill translating that intent into the provider's own API or CLI. This meta tracks the effort and holds one sub-issue per hosting provider. ## Goals - A consistent pattern for provider "deployment & environment" skills, reusable across hosts. - For each supported provider: create/configure an environment and deploy to it fr… ### [Research: DevPanel API — what deployment & environment automation is possible](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Sprint13-2026, ai::outside Description: ## Research Question Can [DevPanel](https://devpanel.com) environment setup and deployment be driven programmatically — enough that an agent skill could set up and deploy to **real** DevPanel environments from natural-language instructions? What does the DevPanel API/CLI expose, and where are its limits? ## Background Part of the hosting-provider skills meta #3586575. Before building a DevPanel deployment skill, we need to know what the platform actually allows through its API/CLI — authentication, environment lifecycle, deploys — so we can scope (or rule out) a skill realistically. ## Sco… ### [[META] 2026 Outside-in / Innovation Roadmap (draft)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3576908) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: category::plan, priority::normal, roadmap, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) >>> Problem/Motivation: Optimize Drupal for agents by optimizing the platform itself: a reliable, governable action surface. Agents should be allowed to attempt real work, while the system enforces deterministic rules: schema validation, permissions, workflow state, auditability, delivery gates, and blast-radius limits. Outside-in is a first-class requirement: assume users will bring external agents/orchestrators, in addition to built-in agents. Priority 0: Identity + Reliability + Guardrails Tr… ### [Add standardized GitLab issue templates for initiative work](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586461) State: closed | Updated: 2026-06-25 | Author: Christoph Breidert (breidert) | Assigned: unassigned | Labels: AI Initiative Sprint, category::task, priority::normal, state::rtbc Description: ## Summary Introduce a standardized set of GitLab issue templates to organize all work within the Drupal AI Initiative. Templates should cover the main types of work the initiative produces — coordination, research, decisions, meetings, and community activities — and follow a consistent structure so contributors across all tracks can create well-formed issues quickly. ## Work Track Cross-track ## Context / Background The Drupal AI Initiative coordinates work across four tracks (AI Core, AI Products, AI Marketing, AI UX) and a growing contributor base. Without a shared template structure, … ### [Create AI Validations Recipe](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Description We want to create a new Drupal AI recipe in a separate project ai_recipe_validations, that provides a turnkey configuration for the AI Validations module. This recipe is intended to be used in the Drupal AI Demo and must be fully compatible with Drupal CMS (Starshot). Instead of creating new… ### [Recipe: AI Automators comment-spam scoring and auto-unpublish](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, ideas Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Ship a recipe that wires AI Automators onto the core Comment entity to score spam on a custom_field and auto-unpublish comments scoring 8 or higher, with a View for triage. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation AI Automators is powerful but the on-ramp is still "wire it up yourself" - even for the canonical moderation use case of scoring comments for spam. We want a Drupal recipe that site… ### [Create documentation on how to create issues that are testable on DrupalForge](https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [afoster](https://www.drupal.org/user/594458) >>> [Tracker] Update Summary: Blocked — document how to create DrupalForge-testable issues spanning multiple dev module versions Check-in Date: 04/13/2026 Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Many AI issues span multiple modules at once. For example, when we work on UI improvements in the AI module and need to use those same improvements in CCC, reviewers need dev versions of both modules installed together to t… ### [[Meta] Create AI Review Functionality / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Based on the agreed functional concept and UX design, define the technical approach for implementing the AI-powered content review system. This concept will be the foundation for implementation in the next sprint. Tasks Define the architecture of the review pipeline: how reviews are triggered, … ### [[Meta] Create AI Review Functionality / Create UX](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Angela Saldaña (angela_saldana) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Design the user experience for the AI-powered content review system, covering all key interactions an editor encounters when working with review results. Tasks Review and align with the UX briefing provided by the functional concept before starting design work Design the "Review with AI" trigge… ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Start setting up AI Starterkit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research and initial setup for AI Starterkit showcase website Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation There is a growing need to demonstrate the full production capabilities of the AI Initiatives ecosystem in a concrete, opinionated, and easy-to-consume way. While the AI module and related projects provide powerful building blocks, there is currently no canonical showcase that ties these tog… ### [Create QA image for DrupalPod](https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Tawny Bartlett (littlepixiez) | Labels: AI Initiative Sprint, AI Product Development, Quality Assurance, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently its very hard to do QA on some issue in the AI issue queue, because you have to setup a lot of things locally. DrupalPod+DrupalForge has a solution for this: https://www.drupal.org/docs/develop/development-tools/drupalpod/drupalpod-drupal-forge Per discussions with Salman and Darren at DrupalForge, the easiest is that we create our own base image and work from that. This exists here: https://github.com/drupalforge/DrupalPod-AI-QA We need to fill that with all the … ### [[Meta] AI Content Review Workflow](https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::plan, planning Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> Goals & Guiding Principles Provide a native Drupal way to review content with the help of AI through an intuitive user interface. This functionality should integrate seamlessly with Drupal's existing content management workflows while offering AI-powered assistance for common editorial tasks. Key principles: Examples include AI-powered content rating systems, automated suggestions for guideline compliance, content flagging for review, brand voice consistency checks, and legal/regulatory complianc… ### [GitLab workflow automation for AI Initiative repos (exploration + rollout)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative, AI Initiative Sprint, AI Innovation, AI Product Development Description: ## Summary Build out an automated GitLab workflow layer for the Drupal AI Initiative's GitLab projects (`project/ai`, `project/ai_agents`, providers, etc.) so that issue and MR housekeeping — state transitions, label hygiene, completeness checks, dependency review pings — happens automatically instead of requiring manual maintainer effort. This is split into two phases: 1. **Exploration** — evaluate which Drupal-side platform is the right host for the automation logic (Rules, ECA, or a custom module on top of [`gitlab_api`](https://www.drupal.org/project/gitlab_api)). 2. **Automation rollou… ### [Onboard Gold AI partner: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Gold partner: Reading Room ## Proposed resolution Go through onboarding form and do what I can and then hand off to dev, marketing, UX, and QA teams as needed. ## Target date or deadline June 2026 ## Remaining tasks - [x] Create partner onboarding tab from template - [x] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [x] Add to mailing lists - [x] Add to private Slack channels (partners/contributors) - [x] Add to public Slack channels (marketing/UX/QA/ai-contrib) - [x] Add to non-dev meeting invites (marketing/UX) - [x] A… ### [Run AI partner audit report: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586591+s We want to make sure they were successfully onboarded to the right places. ### Proposed resolution Run the audit report for this partner after a week or two to look for gaps. ### Target date or deadline July 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report > Related issue: [Issue #3579583](https://www.drupal.org/node/3579583) ### [Add Gold AI partner to d.o pages: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586591+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** https://www.drupal.org/reading-room **100 word text:** Reading Room is an independent digital agency specialising in complex, mission-critical digital platforms. Since 1996, the agency has helped organisations modernise, scale and continuously improve the digital products and services their audiences rely on. Our multidisciplinary teams provide the strategic thinking, engineering capability and ongoing partnership needed to deliver robust, secure and high-performing digital service… ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> > [!note] Migrated issue > > > > > > Reported by: [kristen pol](https://www.drupal.org/user/8389) [Tracker] **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Additional Collaborators:** *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields are available [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ON… ### [Convert partner templates into GitLab templates](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority::normal, state::accepted Description: ## Problem/motivation Partner issue templates were created when we were using d.o issues: - #3579583+ - #3579591+ - #3579584+ We should use GitLab templates. ## Solution Convert to GitLab templates. ## Tasks - Create templates - Review and test ### [Gitlab Control Server - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: CNAME gitlab.drupal-ai-initiative.org => forgespotclustertogw9g.elb.devpanel.com ### [Module Finder - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: Point module-finder.drupal-ai-initiative.org towards dp-yosnzdse.elb.devpanel.com --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [47] summariseModule:ai_integration_eca:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Integration - ECA (machine name: ai_integration_eca) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Joshua Fernandes (joshua1234511), Marcus Johansson (Marcus_Johansson), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                        AI Integration - ECA

                                                                        then use

                                                                        ,

                                                                        ,

                                                                          /
                                                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                          tags. After the project summary prose, add a single subsection titled "

                                                                          How can I help on this project?

                                                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-06-24 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Jürgen Haas (jurgenhaas) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The Chat action exposes the structured-output JSON schema as a plain text field in its config form (`src/Plugin/Action/Chat.php:46–50`) and stores it as a raw JSON string that is `json_decode()`d at runtime (line 115). That makes it cumbersome to **add** (no validation, no editor affordances, easy to ship malformed JSON) and hard to **look at** once saved — it's a wall of escaped JSON in the form. ### Proposed resolution Investigate replacing the raw text input with the AI module's dedicated `'#type' => 'ai_json_schema'` form element (`Drupal\ai\Element\AiJsonSchema`)… ### [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `AudioToAudio` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `AudioToAudio` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\AudioToAudio` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_audio_to_audio` - Builds the matching Input class from `Drupal\ai\OperationType\AudioToAudio\` and dispatches it through the configu… ### [Add ECA execute action for Image Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_classification` - Builds the matching Input class from `Drupal\ai\OperationType\ImageClassification\` and… ### [Add ECA execute action for Image to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToImage\` and dispatches it through the configu… ### [Add ECA execute action for Image to Video](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToVideo` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToVideo` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToVideo` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_video` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToVideo\` and dispatches it through the configu… ### [Add ECA execute action for Object Detection](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ObjectDetection` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ObjectDetection` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ObjectDetection` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_object_detection` - Builds the matching Input class from `Drupal\ai\OperationType\ObjectDetection\` and dispatches it throu… ### [Add ECA execute action for Speech to Speech](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `SpeechToSpeech` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `SpeechToSpeech` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\SpeechToSpeech` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_speech_to_speech` - Builds the matching Input class from `Drupal\ai\OperationType\SpeechToSpeech\` and dispatches it through t… ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !11 [Issue #3585009: Added ECA execute action for Summarization.](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/11) | State: opened | Author: Joshua Fernandes (joshua1234511), 198 diff lines Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add ECA execute action for Text Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !10 [Issue #3585010: Added ECA execute action for Text Classification.](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/10) | State: opened | Author: Joshua Fernandes (joshua1234511), 205 diff lines Description: ### Problem/Motivation The AI module's `TextClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_classification` - Builds the matching Input class from `Drupal\ai\OperationType\TextClassification\` and disp… ### [Add ECA execute action for Text to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011) State: opened | Updated: 2026-06-23 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !9 [Resolve "9 different new actions"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9) | State: opened | Author: Marcus Johansson (Marcus_Johansson), 2375 diff lines Description: ### Problem/Motivation The AI module's `TextToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\TextToImage\` and dispatches it through the configured p… ### [Automated Drupal 12 compatibility fixes for ai_integration_eca 1.0.x-dev](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585018) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::minor, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [[Meta] Cover remaining AI operation types with ECA execute actions](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013) State: opened | Updated: 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, automation::error Description: ### Background The AI module exposes ~18 operation types, but this module only ships ECA execute actions for 5: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). This meta tracks adding execute actions for the rest so ECA flows can drive every supported AI operation without custom plugins. ### Scope **Out of scope (deferred):** `ImageAndAudioToVideo` — provider support is minimal. **In scope — one child issue per operation type:** - [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) - [A… ### [Add ECA execute action for Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/13) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 210 diff lines Description: Relates to #3585018. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [48] summariseModule:ai_agents_test:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                                          AI Agents Test

                                                                          then use

                                                                          ,

                                                                          ,

                                                                            /
                                                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                            tags. After the project summary prose, add a single subsection titled "

                                                                            How can I help on this project?

                                                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Run more than one test group in Bulk - Test Collections?](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) Related to !11 >>> Problem/Motivation When doing automated tests or just trying different models and not using Tests to help with prompt engineering its good to just fire off all the same tests you want and get the overall results. Steps to reproduce Proposed resolution Maybe make views bulk operation style UI so you can click a checkbox next to the test groups you want to run and also run all. Or we could have a Tag on test groups and run all of a specific tag? Maybe this is better if we are goin… ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [49] summariseModule:ai_provider_openai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: OpenAI Provider (machine name: ai_provider_openai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                            OpenAI Provider

                                                                            then use

                                                                            ,

                                                                            ,

                                                                              /
                                                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                              tags. After the project summary prose, add a single subsection titled "

                                                                              How can I help on this project?

                                                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Respect skip_moderation, add test coverage for it](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/76) State: opened | Author: Scott Euser (scotteuser) | Branch: 3604130-respect-skip-moderation | 325 diff lines Description: Closes #3604130 ### [Resolve #3593019 "Add imagetoimage possibilities"](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/72) State: merged 2026-06-26 | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3593019-add-imagetoimage-possibilities | 307 diff lines Description: Closes #3593019 ### [add support for batch embeddings](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59) State: opened | Author: Paul Sheldrake (paulsheldrake) | Branch: 3568659-support-batched-embeddings | 284 diff lines Description: Closes #3568659 ### [fix: #3590873 Dall-E 3 has been deprecated and should be removed as default](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/71) State: merged 2026-06-24 | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3590873-dall-e-3-has | 76 diff lines Description: Closes #3590873 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/77) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 13 diff lines Description: Relates to #3606117. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- - [d6a14dca](https://git.drupalcode.org/project/ai_provider_openai/-/commit/d6a14dcaac652ed81c3790bb6e1b7a9e382076ac) fix: #3590873 Dall-E 3 has been deprecated and should be removed as default — Abhisek Mazumdar (2026-06-24T09:18:34.000+00:00) ======================================================================== ## [50] summariseModule:ai_provider_anthropic:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Carlos Ospina (camoa), Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                              Anthropic Provider

                                                                              then use

                                                                              ,

                                                                              ,

                                                                                /
                                                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                tags. After the project summary prose, add a single subsection titled "

                                                                                How can I help on this project?

                                                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Issue #3590963: Bump SDK constraint and drop method_exists defensive check](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/28) State: merged 2026-06-26 | Author: Carlos Ospina (camoa) | Branch: 3590963-add-prompt-caching | 1677 diff lines Description: Phase 2 of the Anthropic provider native-SDK work (#3590963): prompt caching admin UI + PDF document input. Builds on Phase 1 (#3572402, merged in `d1e078a1`). Targets `1.3.x`; fast-forward mergeable. ## What this delivers **Prompt caching** - Admin UI: "Enable prompt caching" toggle and TTL selector (5m / 1h), `#states`-gated in the provider settings form. - System prompt sent as a typed `TextBlockParam` with `cache_control` when caching is on (caching a bare string is a no-op; the breakpoint must sit on a content block). - 1h TTL is GA and works without any beta header (verified live). - `… ### [fix: #3607044 Append a trailing user message when a conversation ends with a non-user role](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3607044-chat-requests-rejected | 158 diff lines Description: Fixes #3607044. `AnthropicProvider::chat()` forwards messages as-is; Anthropic rejects a conversation whose last message is not from the user ("the conversation must end with a user message" / no assistant prefill). The AI Agents multi-agent handoff (e.g. Drupal Canvas AI) can end a conversation with a trailing assistant or system message, producing a generic "Something went wrong" in Canvas AI. This overrides `chat()` to append a minimal trailing `user` message ("Continue.") whenever the last message role is not `user` (covering both trailing assistant and system). Tested on Drupal 11.3, a… --- COMMITS (2w) --- (none) ======================================================================== ## [51] summariseModule:fireworksai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Fireworks AI (machine name: fireworksai) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Marcus Johansson [3]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                Fireworks AI

                                                                                then use

                                                                                ,

                                                                                ,

                                                                                  /
                                                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                  tags. After the project summary prose, add a single subsection titled "

                                                                                  How can I help on this project?

                                                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- - [ee2c30ef](https://git.drupalcode.org/project/fireworksai/-/commit/ee2c30ef5b295f812de054b8581c74b1eaafaa51) Fix requirement — Marcus Johansson (2026-06-26T12:52:35.000+02:00) - [b519a9c3](https://git.drupalcode.org/project/fireworksai/-/commit/b519a9c3f06bb5eaba11a8ca2a404c67c2d9a46e) Fix requirement — Marcus Johansson (2026-06-26T12:52:20.000+02:00) - [9071dce2](https://git.drupalcode.org/project/fireworksai/-/commit/9071dce2838aa88ac08b60dd5dfe979031dd98c7) Rerank and use the base class — Marcus Johansson (2026-06-26T12:51:40.000+02:00) ======================================================================== ## [52] summariseModule:mcp_client:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: MCP Client (machine name: mcp_client) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                  MCP Client

                                                                                  then use

                                                                                  ,

                                                                                  ,

                                                                                    /
                                                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                    tags. After the project summary prose, add a single subsection titled "

                                                                                    How can I help on this project?

                                                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/mcp_client/-/merge_requests/19) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 180 diff lines Description: Relates to #3601462. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [53] summariseModule:ai_provider_amazeeio:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: amazee.ai Private AI Provider (machine name: ai_provider_amazeeio) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                    amazee.ai Private AI Provider

                                                                                    then use

                                                                                    ,

                                                                                    ,

                                                                                      /
                                                                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                      tags. After the project summary prose, add a single subsection titled "

                                                                                      How can I help on this project?

                                                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [pgsql ext dependency missing in composer.json](https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586235) State: closed | Updated: 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Assigned: unassigned | Labels: Description: Error: Call to undefined function Drupal\ai_provider_amazeeio\Vdb\Postgres\pg_connect() in Drupal\ai_provider_amazeeio\Vdb\Postgres\PostgresPgvectorClient->getConnection() (regel 80 van /app/web/modules/contrib/ai_provider_amazeeio/src/Vdb/Postgres/PostgresPgvectorClient.php). ### [Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev](https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586234) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [fix(#3586231): check that key identifiers are non-empty strings before loading keys](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/74) State: merged 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Branch: 3586231-issue-branch | 30 diff lines Description: Closes #3586231 ### [chore: require ext-pgsql](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/76) State: merged 2026-06-25 | Author: Dan Lemon (dan2k3k4) | Branch: add-ext-psql | 75 diff lines ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/77) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 388 diff lines Description: Relates to #3586234. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [54] summariseModule:gemini_provider:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Gemini Provider (machine name: gemini_provider) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), Ishani Patel (IshaniPatel), Joshua Fernandes (joshua1234511), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                      Gemini Provider

                                                                                      then use

                                                                                      ,

                                                                                      ,

                                                                                        /
                                                                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                        tags. After the project summary prose, add a single subsection titled "

                                                                                        How can I help on this project?

                                                                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588223) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [stijnstroobants](https://www.drupal.org/user/1787140) Related to !36 >>> When Gemini blocks a prompt, it returns zero candidates, and calling $response->parts() throws a ValueError. I think the fix is to guard against empty candidates in GeminiProvider.php. Error: ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned. Check the `GenerateContentResponse::$promptFeedback` to see if the prompt was blocked. in Gemini\Responses\GenerativeModel\GenerateContentResponse->parts() (re… ### [Add support for batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) Related to !37 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation As a follow up to this issue https://git.drupalcode.org/project/ai/-/work_items/3568648 it would be nice to add support of batch embeddings as Gemini models can do that. Proposed resolution Use method batchEmbedContents from Gemini client when EmbeddingsInput conta… ### [Fix pre-existing PHPStan failures (deprecation issues)](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589186) State: closed | Updated: 2026-06-24 | Author: Joshua Fernandes (joshua1234511) | Assigned: unassigned | Labels: category::bug, code, v1.x-dev Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !40 [Issue #3589186: Ignore known PHPStan false positives (upstream ai docblock...](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/40) | State: opened | Author: Joshua Fernandes (joshua1234511), 35 diff lines Description: The PHPStan job (`phpstan.neon`, level 3) reports errors that are **unrelated to any current feature work** — they exist on `1.x` independently. CI stays red because of them, masking the real status of feature MRs (e.g. https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183#note_1000755 https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37). ### Steps to reproduce 1. Check out `1.x` (or any feature branch). 2. Run the PHPStan job (or `vendor/bin/phpstan analyse` with the module's `phpstan.neon`). 3. Observe the errors below. ### The errors https://git.dru… ### [Automated Drupal 12 compatibility fixes for gemini_provider 1.x-dev](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589187) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Image Embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !35 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Gemini is one of the only providers that has file embeddings, outside of AWS Titan. This means that you can index and search using an image and image likeness. Currently the embedding solution only allows for text, we should add at least images here (and think … --- MERGE REQUESTS (2w) --- ### [#3588223: Resolved value error.](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/36) State: opened | Author: Ishani Patel (IshaniPatel) | Branch: 3588223-valueerror-the-generatecontentresponseparts | 31 diff lines Description: Closes #3588223 ### [Support batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3589183-add-support-for | 389 diff lines Description: Closes #3589183 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/gemini_provider/-/merge_requests/41) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 62 diff lines Description: Relates to #3589187. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [55] summariseModule:ai_provider_huggingface:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Huggingface Provider (machine name: ai_provider_huggingface) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                        Huggingface Provider

                                                                                        then use

                                                                                        ,

                                                                                        ,

                                                                                          /
                                                                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                          tags. After the project summary prose, add a single subsection titled "

                                                                                          How can I help on this project?

                                                                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Resolve #3584375 "Add extractive question"](https://git.drupalcode.org/project/ai_provider_huggingface/-/merge_requests/9) State: opened | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3584375-add-extractive-question | 113 diff lines Description: Closes #3584375 --- COMMITS (2w) --- (none) ======================================================================== ## [56] summariseModule:ai_provider_azure:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Microsoft Azure AI (machine name: ai_provider_azure) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Marcus Johansson [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                          Microsoft Azure AI

                                                                                          then use

                                                                                          ,

                                                                                          ,

                                                                                            /
                                                                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                            tags. After the project summary prose, add a single subsection titled "

                                                                                            How can I help on this project?

                                                                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- - [826006ac](https://git.drupalcode.org/project/ai_provider_azure/-/commit/826006acd8e3bd8681fee4eaf10e1f3b1e60dc4c) Improved Text To Image — Marcus Johansson (2026-06-24T11:58:22.000+02:00) ======================================================================== ## [57] summariseModule:ai_vdb_provider_milvus:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Milvus VDB Provider (machine name: ai_vdb_provider_milvus) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                            Milvus VDB Provider

                                                                                            then use

                                                                                            ,

                                                                                            ,

                                                                                              /
                                                                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                              tags. After the project summary prose, add a single subsection titled "

                                                                                              How can I help on this project?

                                                                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3568651-batch-inserts-index-only | 297 diff lines Description: Closes #3568651 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/50) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 13 diff lines Description: Relates to #3606124. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [58] summariseModule:ai_vdb_provider_postgres:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Postgres VDB Provider (machine name: ai_vdb_provider_postgres) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Emiel Bloem (emielb)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                              Postgres VDB Provider

                                                                                              then use

                                                                                              ,

                                                                                              ,

                                                                                                /
                                                                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                tags. After the project summary prose, add a single subsection titled "

                                                                                                How can I help on this project?

                                                                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Issue #3607151: Remove hard ext-pgsql dependency](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/28) State: opened | Author: Emiel Bloem (emielb) | Branch: 3607151---remove | 735 diff lines Description: Closes #3607151 --- COMMITS (2w) --- (none) ======================================================================== ## [59] summariseModule:ai_image_alt_text:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Image Alt Text (machine name: ai_image_alt_text) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Peter Philipp (daspeter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                AI Image Alt Text

                                                                                                then use

                                                                                                ,

                                                                                                ,

                                                                                                  /
                                                                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                  tags. After the project summary prose, add a single subsection titled "

                                                                                                  How can I help on this project?

                                                                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [task: #3606995 Support newer versions of drupal/ai](https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31) State: opened | Author: Peter Philipp (daspeter) | Branch: 3606995-support-newer-versions | 12 diff lines Description: Closes #3606995 --- COMMITS (2w) --- (none) ======================================================================== ## [60] summariseModule:mcp:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                  Model Context Protocol

                                                                                                  then use

                                                                                                  ,

                                                                                                  ,

                                                                                                    /
                                                                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                    tags. After the project summary prose, add a single subsection titled "

                                                                                                    How can I help on this project?

                                                                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for mcp 1.x-dev](https://git.drupalcode.org/project/mcp/-/work_items/3587790) State: opened | Updated: 2026-06-26 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/mcp/-/merge_requests/53) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 254 diff lines Description: Relates to #3587790. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [61] summariseModule:ai_agents:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader), Bharat Kelotra (bharatkelotra), David Galeano (gxleano), Jürgen Haas (jurgenhaas), Marcus Johansson [1], Nicolae Procopan (thebumikgmail.com), Prabhavathi Vanipenta (prabha1997), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Sven Decabooter (svendecabooter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                    AI Agents

                                                                                                    then use

                                                                                                    ,

                                                                                                    ,

                                                                                                      /
                                                                                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                      tags. After the project summary prose, add a single subsection titled "

                                                                                                      How can I help on this project?

                                                                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586032) State: opened | Updated: 2026-06-24 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !286 [Resolve #3586032 "AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)"](https://git.drupalcode.org/project/ai_agents/-/merge_requests/286) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 114 diff lines Description: ## Summary The AI module (`ai`) restructured its administration menu in 1.4.x into themed sub-sections under **Configuration → AI** (`ai.admin_settings`), e.g.: - AI Infrastructure (`ai.admin_config_infrastructure`) - **Tools & Automation** (`ai.admin_config_tools`) — *"Configure AI tools, agents, and automation workflows."* - Content Creation & Support (`ai.admin_config_content`) - People, Accounts & Users (`ai.admin_config_people`) - Safety & Compliance (`ai.admin_config_safety`) - Search & Discovery (`ai.admin_config_search`) - Site Building & Design (`ai.admin_config_site_building`) **A… ### [Change "AI Agent" to "AI Agents" in admin menu](https://git.drupalcode.org/project/ai_agents/-/work_items/3586030) State: opened | Updated: 2026-06-18 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, state::needsWork Description: I noticed that in the Configuration | AI section of the admin menu, there is a link for "AI Agent", not "AI Agents" - this seems wrong to me. MR incoming. -mike ### [Add possibility to catch all errors on a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3547994) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs screenshots, Needs tests Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !220 >>> Problem/Motivation Right now you have to throw specific errors for the agent to continue running. However this should be possible for an agent creator to decide themselves. If you for instance don't have permissions to run a tool, currently the whole run dies and it stops executing there and the UI has to take care of presenting this to the end user. But there could easily be agents that should be available to different roles, where it should be possible for certain roles to… ### [Schema error for AI Agents CKEditor plugin](https://git.drupalcode.org/project/ai_agents/-/work_items/3565169) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, code Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !221 >>> Problem/Motivation The AI Agents module comes with an AICKEditor plugin, to integrate AI Agents into the AI CKeditor module. However, there is no schema for this integration, resulting in schema errors reported by Drupal. ### [Exceptions in tool execute break the UI for the user](https://git.drupalcode.org/project/ai_agents/-/work_items/3537123) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) Related to !163 >>> Problem/Motivation When using the AI Agent Explorer and run an agent that has an issue with a tool definition, e.g. if the context definition isn't accurate, Drupal throws an exception and the UI in the explorer is broken with an error message in the browser console. The user doesn't get any feedback, that the process failed. The same is likely to happen in other contexts, too, e.g. in the chat. Proposed resolution Let's try and catch such exceptions and provide the exception messa… ### [Add a way to mark the executor on agent runner](https://git.drupalcode.org/project/ai_agents/-/work_items/3557417) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Sounds morbid! We need a way for any executor, meaning whomever starts an agent, to set that they did start it. When you are using the events you might want to hook in on specific moments and change them depending on who is using them. So, when you start an agent, you should have the possibility to set that you are the executor of that agent. This is only needed for config agents. It needs to propagate to subagents as well. Remaining tasks * Add a optional method called set… ### [ContentEntitySeeder crashes on double-wrapped entity_array when ComplexToolItems + multiple=TRUE context definition produces nested array schema](https://git.drupalcode.org/project/ai_agents/-/work_items/3578197) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [gxleano](https://www.drupal.org/user/3591999) Related to !244 >>> Problem/Motivation When a context definition in ContentEntitySeeder uses both the ComplexToolItems constraint and multiple: TRUE, the ContextDefinitionNormalizer produces a double-wrapped JSON Schema This occurs because: The ComplexToolItems handler sets the property to type: array with items being the normalized complex tool schema. The isMultiple() handler then wraps that already-array property in another array type. The resulting schema instructs the LLM to produce nested array… ### [UpdateViewPlugins: display option updates on non-default displays do not override defaults inheritance](https://git.drupalcode.org/project/ai_agents/-/work_items/3582781) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !288 [Issue #ai_agents-3582781: review update AI agent](https://git.drupalcode.org/project/ai_agents/-/merge_requests/288) | State: opened | Author: Bharat Kelotra (bharatkelotra), 574 diff lines Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> Problem/Motivation When the Views agent calls UpdateViewPlugins to update a display option (e.g. title, path, style) on a non-default display such as page_1, the value is saved to the config array but the defaults flag for that option is never cleared on the display. At runtime, Views checks defaults[title] === true and still serves the default display's value instead of the one that was just written. This means a user prompt like "Update the title of the page display to Article Listing" appe… ### [Views agent: style/row and filters/filter_groups must be overridden as pairs on non-default displays](https://git.drupalcode.org/project/ai_agents/-/work_items/3582782) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !289 [Issue #ai_agents-3582782: Fix AI agent](https://git.drupalcode.org/project/ai_agents/-/merge_requests/289) | State: opened | Author: Bharat Kelotra (bharatkelotra), 574 diff lines Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> Problem/Motivation Views internally treats certain display options as coupled pairs: style and row are always set together — the row plugin must be compatible with the style plugin. filters and filter_groups are always set together — filter_groups holds the AND/OR operator config that applies to the filters. When the Views agent updates only one option of a pair on a non-default display, the result is a broken or inconsistent display. For example: A user asks "Change the format… ### [return_directly tool results are missing tool_id](https://git.drupalcode.org/project/ai_agents/-/work_items/3585054) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::rtbc Description: >>> [!note] Migrated issue Reported by: [tim bozeman](https://www.drupal.org/user/2241356) Related to !259 >>> Problem/Motivation In AiAgentEntityWrapper::determineSolvability(), when a tool has return_directly=true, the tool result ChatMessage is created without setting the tool_id: // return_directly path (line ~497) — tool_id is NOT set:$this->chatHistory[] = new ChatMessage('tool', $output);// Normal path (lines ~501-502) — tool_id IS set:$message = new ChatMessage('tool', $output);$message->setToolsId($tool->getToolsId());$this->chatHistory[] = $message;This c… ### [Add limits on how often a tool can run](https://git.drupalcode.org/project/ai_agents/-/work_items/3547995) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !224 >>> Problem/Motivation Right now we have to tell the system prompt how often it is allowed to use a specific tool. But there should also be a determenistic way, where if the tool gets stuck in a loop or searches to no awail in a RAG database for instance, we need to be able to programatically say how many times a tool can run. Proposed resolution Add a form value of how many times a tool can run. Add a form for setting the error message when this happens. If the tool has run tha… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsWork Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [Fix streaming](https://git.drupalcode.org/project/ai_agents/-/work_items/3577520) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [d0t15t](https://www.drupal.org/user/132353) Related to !243 >>> Problem/Motivation Streaming in the ai_chatbot does not work. Steps to reproduce Create an AI assistant and attach an agent to it. Enable streaming on the assistant's chatbot block. Submit a message — the response is not streamed; it waits for the full completion before rendering. Proposed resolution Add $streaming and $streamingIterator properties to AiAgentEntityWrapper. Pass setStreamedOutput($this->streaming) to the ChatInput before the provider call in determineSolvabi… ### [Automated Drupal 12 compatibility fixes for ai_agents 1.4.x-dev](https://git.drupalcode.org/project/ai_agents/-/work_items/3586038) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.)](https://git.drupalcode.org/project/ai_agents/-/work_items/3577241) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !249 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI Agents module currently allows defining and configuring agents inside Drupal. However, many modern AI ecosystems expect agents to exist inside external platforms such as Claude Code or services like VAPI. In many cases Drupal sh… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, AI Views, Workstream 4a Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) Related to !206 !172 >>> Problem/Motivation --- AI TRACKER METADATA --- Update Summary: This is an example bit of metadata to test things working with the tracker. Check-in Date: 09/01/2025 (US format) [When we should see progress/get an update] Due Date: 09/09/2025 (US format) [When the issue should be fully completed] Blocked by: #3528730: Create ShortTermMemoryPlugin(New issues on new lines) #3528549: Allow tool calling in streamed chat Additional Collaborators: jibran AI Tracker found here: https://… ### [Create an ChatProcessor](https://git.drupalcode.org/project/ai_agents/-/work_items/3585984) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::rtbc Description: With https://git.drupalcode.org/project/ai/-/work_items/3492940 the agents could create ChatProcessor that has the settings the AI Assistant layer has. Discussion has to be made if we already support multiple threads and want that in the future, so you can basically have one chat where you can pick the agent you talk to. But for 1-to-1 functionality parity, it means that the consumer sets one agent per chatbot. ### Proposed resolution Create a ChatProcessor for agent that has a form that sets:\ \* Agent\ \* Specific Error Messages (?)\ \* Allow History (?) We need to discuss how we store h… ### [AI Agent entity form should reject machine names that collide with existing code-plugin IDs](https://git.drupalcode.org/project/ai_agents/-/work_items/3586026) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, state::rtbc Description: Project: AI Agents\ Component: Code\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** AiAgentManager merges two types of plugin definitions under a single ID namespace: 1. Code-defined AiAgent plugins discovered via parent::findDefinitions(). 2. ai_agent config entities, merged in by AiAgentManager::findDefinitions() at src/PluginManager/AiAgentManager.php:196. When an admin saves an ai_agent config entity with a machine name that matches an existing code-plugin ID, two failure modes occur: 1. The config entity is silently dropped from plugin discovery — the merge in findDefinitions… ### [Let an agent use a role when running a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3518167) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !87 >>> Problem/Motivation Currently the modus operandi is that the permissions checks that happens in tools, happens on the session that is running it. In AI Agents Explorer or the AI Assistants API, this means the user that triggers the query. There are however cases where agents should be completely autonomous or where they are triggered in queues/cron jobs, where there is no sessions attached. In those cases it should be possible for the person that sets up the agent to be able to… ### [Allow agents to have permissions, user or a role](https://git.drupalcode.org/project/ai_agents/-/work_items/3586019) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: AI Initiative Sprint, AI Innovation, category::feature, group::ai-initiative Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation There are two problems right now in terms of agents and roles/permissions: 1. If we use only the end-users permissions, the agent itself will have the same permissions, and wide generic tools that are not constrained, might be used as attack vectors via prompt injection. 2. When autonomous agents runs in cron, ECA or something else, they run as an anonymous user, meaning that they might not be able to solve what they want to solve, because they don't have enough permissions… ### [Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586043) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !287 [fix: #3586043 Coerce array dynamical token values to string in applyTokens()](https://git.drupalcode.org/project/ai_agents/-/merge_requests/287) | State: opened | Author: Rajab Natshah (RajabNatshah), 144 diff lines Description: ### Problem On every AI Agent run, a PHP warning is logged (and shown as a status message inside the Drupal Canvas AI editor): ``` Warning: Array to string conversion in Drupal\Core\Utility\Token->doReplace() (line 283 of core/lib/Drupal/Core/Utility/Token.php). ``` ### Backtrace (abridged) ``` Token.php(283): str_replace() Token.php(214): Drupal\Core\Utility\Token->doReplace() token_or/src/Token.php(27): ...->replacePlain() eca/.../TokenDecoratorTrait.php(444): ... ai_agents/src/PluginBase/AiAgentEntityWrapper.php(1323): ...->replacePlain() ai_agents/src/PluginBase/AiAgentEntityWrapper.ph… --- MERGE REQUESTS (2w) --- ### [Issue #3547994: Add per-tool error catching to prevent agent crashes.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/220) State: opened | Author: Nicolae Procopan (thebumikgmail.com) | Branch: 3547994-add-possibility-to | 480 diff lines Description: Closes #3547994 ### [Add CKEditor schema for ai_agents](https://git.drupalcode.org/project/ai_agents/-/merge_requests/221) State: opened | Author: Sven Decabooter (svendecabooter) | Branch: 3565169-schema-error-for | 280 diff lines Description: Closes #3565169 ### [Move AI Agents under Tools & Automation menu section](https://git.drupalcode.org/project/ai_agents/-/merge_requests/278) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586032-ai-agents-admin-menu-does-not-follow-ai-14x-menu-categorization-tools-automation | 22 diff lines Description: Closes #3586032 ### [Issue #3537123 by jurgenhaas: Exceptions in tool execute break the UI for the user](https://git.drupalcode.org/project/ai_agents/-/merge_requests/163) State: opened | Author: Jürgen Haas (jurgenhaas) | Branch: 3537123-exceptions-in-tool | 295 diff lines Description: Closes #3537123 ### [Issue #3547995: Add deterministic tool usage limits.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/224) State: opened | Author: Nicolae Procopan (thebumikgmail.com) | Branch: 3547995-clean | 466 diff lines Description: Closes #3547995 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/282) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 1325 diff lines Description: Relates to #3586038. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Issue #3578197: Fix double-wrapped entity_array issue](https://git.drupalcode.org/project/ai_agents/-/merge_requests/244) State: opened | Author: David Galeano (gxleano) | Branch: 3578197-contententityseeder-crashes-on | 256 diff lines Description: Closes #3578197 --- COMMITS (2w) --- - [75243956](https://git.drupalcode.org/project/ai_agents/-/commit/75243956d4f2ede53616293d543af377f0561109) Document logger interface — Marcus Johansson (2026-06-24T10:27:18.000+02:00) ======================================================================== ## [62] summariseModule:tool:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar), Marcus Johansson (Marcus_Johansson), Matt Glaman (mglaman) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                      Tool API

                                                                                                      then use

                                                                                                      ,

                                                                                                      ,

                                                                                                        /
                                                                                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                        tags. After the project summary prose, add a single subsection titled "

                                                                                                        How can I help on this project?

                                                                                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… ### [Add skills for generating Tools](https://git.drupalcode.org/project/tool/-/work_items/3582936) State: closed | Updated: 2026-06-21 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Description: ### Problem/Motivation In https://www.drupal.org/project/ai_agents_experimental_collection there is an Claude Command to be able to generate agents and tools. Based on the vibe coding of the 100+ tools there, this works very well with Claude Code and Codex at least. We should put this here instead as a generic skill, so anyone could use https://www.drupal.org/project/ai_best_practices or Vercel Skills to load it into their project. This means that its open for any coding agent. ### Proposed resolution * Create a Drush template and generate command * Create one skill for creating tools und… ### [Allow controlling Tool return format](https://git.drupalcode.org/project/tool/-/work_items/3582933) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation Currently the return of a tool is textual which is fine for AI to analyze, but sometimes in MCP or other methods like AG-UI that want the raw result. Steps to reproduce Call a tool and observe the result, it will be something like: Tool Plugin executed successfully: View 'my_view' executed successfully.\nOutput for results: { actual tool result }Proposed resolution I see a few ways forward here Change to just spit out the raw result directly Separate the result from the text so … ### [tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool](https://git.drupalcode.org/project/tool/-/work_items/3582942) State: closed | Updated: 2026-06-25 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: state::fixed Description: ## Problem `drush tool:run` shows nothing useful when a tool fails. Instead of the failure message, it throws a `ContextException` and exits. The command reads the result, then unconditionally reads the outputs: ```php $success = $tool->getResultStatus(); $message = (string) $tool->getResultMessage(); $outputs = $tool->getOutputValues(); ``` A tool that returns `ExecutableResult::failure()` never sets its declared output contexts. `getOutputValues()` loops over every declared output and calls `getOutputValue()`, which throws on an unset context: ```php throw new ContextException(sprintf("… ### [[Tool] Create tools to save/update/delete SDC components](https://git.drupalcode.org/project/tool/-/work_items/3556021) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Product Development, category::feature, code, priority Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !57 >>> Problem/Motivation Create the following tools: write_sdc_definition This writes the definition file (.yml) of the component. It has to validate for allowed component name, if the theme or module exists and that the definition is valid. Create the component folder if it doesn't exist. Flush component cache after running. inputs: * component_name - the data name of the component * theme or module - the theme or module where the sdc definition should be added/updated. * def… ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-30 | Author: Stephan Huber (stmh) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !95 [Issue #3582939: Fix getSupportedTypes() in MapDefinitionNormalizer and...](https://git.drupalcode.org/project/tool/-/merge_requests/95) | State: opened | Author: Abhisek Mazumdar (abhisekmazumdar), 118 diff lines Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … ### [Allow tool execute to be previewed](https://git.drupalcode.org/project/tool/-/work_items/3558037) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation It's been requested that we allow tools to be 'previewed'. This would mostly only affect tools that write out a permanent change. This is helpful in UI's when you want to simulate a flow, or debug, and this may be helpful in AI to allow more advanced 'planning' strategies. Proposed resolution Implement a preview method: <?phppublic function preview() {  $tool->setPreview();  $tool->execute();  $tool->setPreview(FALSE);}$tool->preview();?> An… ### [Introduce support for Discovery, Planning and Execute calls for MCP and Agents](https://git.drupalcode.org/project/tool/-/work_items/3546292) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation The challenge with MCP right now is there seems to be a soft cap around 40 tools, and because all tools are sent on every request, more noise = more hallucinations and more failures. AI Agents on the other hand have similar degradation with tool counts, but are also currently lacking a reliable short term memory layer for better context management, meaning chaining many tool calls together quickly hits caps for requests/tokens. Proposed resolution We can reduce some of the to… ### [Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema](https://git.drupalcode.org/project/tool/-/work_items/3582943) State: opened | Updated: 2026-06-28 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Goal Tool stays consumer-agnostic. Give consumers — the Drush CLI, `mcp_server`, a future planner — enough *introspectable* metadata to understand and present a tool they didn't author, **before** invoking it. Most of what's needed already exists in the Tool API model; the work is mostly **surfacing** it over the CLI, plus **one genuinely additive** piece (richer input schema). Two deliverables (A additive, B surfacing); each can ship as its own MR. This issue is the umbrella proposal for a shared discussion. ## Background This comes out of building [`canvas_tools`](https://www.drupal.o… ### [Change "Tools API" to "Tool API" in ToolsApi PHP attribute](https://git.drupalcode.org/project/tool/-/work_items/3582940) State: opened | Updated: 2026-06-30 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: state::fixed Description: I think this minor change is necessary to keep things consistent from a naming perspective. These values are used in places like the AI module's _Tools Explorer_. The API name is singular everywhere else, so it should be singular here as well. -mike --- MERGE REQUESTS (2w) --- ### [Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)"](https://git.drupalcode.org/project/tool/-/merge_requests/93) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3582945-create-a-skill-for-generating-tool-plugins-best-practices-how-to-placement | 1354 diff lines Description: Closes #3582945 ### [Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool](https://git.drupalcode.org/project/tool/-/merge_requests/92) State: merged 2026-06-24 | Author: Matt Glaman (mglaman) | Branch: 3582942-issue-branch | 17 diff lines Description: `tool:run` calls `getOutputValues()` regardless of whether the tool succeeded. A tool that returns `ExecutableResult::failure()` never sets its declared output contexts, and `getOutputValues()` throws a `ContextException` on the first unset one — so the command dies before printing the failure message. Any tool that declares an output and can fail hits this. The MCP bridge already guards this (reads outputs only inside `if ($result->isSuccess())`); this brings `tool:run` in line. Verified against canvas_tools: before, a bad component id produced `The provided context 'uuid' is not valid.`; a… --- COMMITS (2w) --- - [b072f544](https://git.drupalcode.org/project/tool/-/commit/b072f5447c14264e9ec343b812f7c4db59828ac6) Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool — Matt Glaman (2026-06-24T17:28:50.000+00:00) ======================================================================== ## [63] summariseModule:canvas:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Adam G-H (phenaproxima), Ahmad Khalil (ahmad-khalil-imagex) [1], AKHIL BABU (AkhilBabu) [3], Alamgir Hossain (alamgir.hossain.cse), Andrew Belcher (andrewbelcher), Ben Mullins (bnjmnm) [3], Björn Brala (bbrala) [1], Bálint Kléri (balintbrews) [7], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [8], Feliksas Mazeikis (f.mazeikis) [2], Gábor Hojtsy (goba), Jakob P (japerry), Kunal Sachdev (kunal.sachdev) [2], Lauri Timmanee (lauriii) [1], Matt Glaman (mglaman) [2], Narendra Singh Rathore (NarendraR) [1], Oleksandr Antonchyk (Anton4yk), Priyanka Patel (priyankapatel), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [2], Sally Young (justafish), scott falconer (scottfalconer), Shubham Prakash (shubham.prakash), Ted Bowman (tedbow) [1], utkarsh_33 (Utkarsh_33) [1], Wim Leers (wimleers) [7], wotnak". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                        Drupal Canvas

                                                                                                        then use

                                                                                                        ,

                                                                                                        ,

                                                                                                          /
                                                                                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                          tags. After the project summary prose, add a single subsection titled "

                                                                                                          How can I help on this project?

                                                                                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [languageSelect.spec.ts Failing in 1.x](https://git.drupalcode.org/project/canvas/-/work_items/3591705) State: closed | Updated: 2026-06-22 | Author: Ted Bowman (tedbow) | Assigned: Ben Mullins (bnjmnm) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1269 [Resolve languageSelect.spec.ts Failing in 1.x - round 2](https://git.drupalcode.org/project/canvas/-/merge_requests/1269) | State: merged 2026-06-22 | Author: Ben Mullins (bnjmnm), 112 diff lines - MR !1265 [#3591705 language select test failing](https://git.drupalcode.org/project/canvas/-/merge_requests/1265) | State: merged 2026-06-19 | Author: Ben Mullins (bnjmnm), 115 diff lines - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines Description: 1st MR helped, but not completely 2nd MR: !1269 See https://git.drupalcode.org/project/canvas/-/jobs/10422775 latest 1.x run ``` Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('[data-state="open"][role="menu"]') Expected: visible Timeout: 10000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 10000ms - waiting for locator('[data-state="open"][role="menu"]') 329 | await expect( 330 | page.locato… ### [Only show default-language entities when reviewing auto-saved (pending) changes](https://git.drupalcode.org/project/canvas/-/work_items/3591704) State: closed | Updated: 2026-06-23 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, JavaScript, autoSave, blocker Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1263 [fix: #3591704 Hide non-default-translation auto-saves from the pending-changes GET response](https://git.drupalcode.org/project/canvas/-/merge_requests/1263) | State: merged 2026-06-23 | Author: Ted Bowman (tedbow), 416 diff lines Description: ### Overview The pending-changes review UI lists auto-saved drafts per translation: one row per langcode. Acting on a non-default translation row currently misbehaves — discarding deletes the default language instead (#3591703), and publishing a subset of translations corrupts the unselected ones. As an interim step for Symmetric Translation Phase 1, the review UI should list only the default-language entity for each pending change and hide per-translation rows. This prevents editors from triggering the per-translation discard and partial-publish paths until the langcode-aware endpoints land… ### [Symmetric translation: component instance version updates must propagate to all translations](https://git.drupalcode.org/project/canvas/-/work_items/3591596) State: closed | Updated: 2026-06-30 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, category::feature, dataModel, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1163 [feat(Component sources): #3591596 Symmetric translation: component instance version updates must propagate to all translations"](https://git.drupalcode.org/project/canvas/-/merge_requests/1163) | State: closed | Author: Christian López Espínola (penyaskito), 3338 diff lines - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines Description: ### Overview When a code component's props or slots change, Canvas's `ComponentInstanceUpdater` automatically reconciles existing component instances to the new version — removing orphaned props, injecting defaults for new required props, and removing children in deleted slots. This reconciliation currently only affects the language that happens to be loaded when the entity is opened for editing. In symmetric translation mode, `component_version` lives in the shared `tree` column group, so updating the version for one language inadvertently marks all translations as up-to-date. When a transl… ### [Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode)](https://git.drupalcode.org/project/canvas/-/work_items/3591703) State: opened | Updated: 2026-06-30 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: AI-accelerated, Needs tests, category::bug, internalHttpApi Description: ### Overview When a translatable Canvas content entity has pending auto-saves in more than one translation, discarding one translation's change deletes the wrong translation. The discard endpoint is `DELETE /canvas/api/v0/auto-saves/{entity_type}/{entity_id}` — it carries no langcode. `ApiAutoSaveController::delete()` removes the auto-save keyed by the entity's default language only. So discarding a non-default translation's change deletes the default language's draft instead, and leaves the intended translation pending. The client already knows each change's language (every pending-change … ### [Fatal error (AssertionError on dev env) when a component instance's image references a deleted file](https://git.drupalcode.org/project/canvas/-/work_items/3591702) State: closed | Updated: 2026-06-19 | Author: Christian López Espínola (penyaskito) | Assigned: Wim Leers (wimleers) | Labels: category::bug, dataModel, priority::critical, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1264 [Resolve "Page editor fatals (AssertionError) in `ComputedUrlWithQueryString` when a component's image references a deleted file"](https://git.drupalcode.org/project/canvas/-/merge_requests/1264) | State: merged 2026-06-19 | Author: Wim Leers (wimleers), 191 diff lines Description: ### Overview A Canvas page that contains a component with an image prop fails to open in the editor when the referenced image file no longer exists. Instead of degrading gracefully (empty image, rest of the page still rendering), the whole editor preview fatals with an `AssertionError` and returns a 500. The log fills with repeated `assert(\is_string($url->value))` failures from `ComputedUrlWithQueryString`. This happens whenever a component instance points at a deleted file/media — for example after a content reset, a partial re-import, or any workflow that removes a file an existing page s… ### [Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't](https://git.drupalcode.org/project/canvas/-/work_items/3591693) State: closed | Updated: 2026-06-18 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, Configuration schema, Needs upstream feature, blocker Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1257 [#3591693: Validate `LanguageConfigOverride`s (targeting translatable Canvas config entities) saves against config schema](https://git.drupalcode.org/project/canvas/-/merge_requests/1257) | State: merged 2026-06-18 | Author: Wim Leers (wimleers), 674 diff lines Description: Quoting `docs/adr/0010-dynamic-config-schema-for-component-tree-translatability.md`: > ### 3. Validation > > A related problem is the [12-year old core bug #2270399](https://www.drupal.org/project/drupal/issues/2270399): `LanguageConfigOverride`s are **never validated!** `LanguageConfigOverride::save()` only checks that values are scalars, arrays, or `NULL` — not objects. There is no schema validation, no constraint validation, and no check that translated values are structurally compatible with the base config. `ConfigSchemaChecker` (used in tests) explicitly skips non-default collections. `… ### [Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config](https://git.drupalcode.org/project/canvas/-/work_items/3591699) State: closed | Updated: 2026-06-19 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, category::bug, dataModel, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1262 [fix(Data model): #3591699 Never expose entity-reference inputs (e.g. image src) as translatable](https://git.drupalcode.org/project/canvas/-/merge_requests/1262) | State: merged 2026-06-18 | Author: Christian López Espínola (penyaskito), 126 diff lines Description: ### Overview When a component instance populates an entity-reference input — most commonly an image `src` backed by an image/file reference — and the host config (e.g. a `ContentTemplate` or `PageRegion`) is translated, the affected component fails to render in the non-default language. An exception is thrown during component rendering and logged (`canvas`, severity Error); the component is broken (renders empty / as an error) while the rest of the page still loads: > `Twig\Error\RuntimeError` … `[/src] NULL value found, but a string or an object is required.` The cause is in how component … ### [Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently](https://git.drupalcode.org/project/canvas/-/work_items/3591701) State: closed | Updated: 2026-06-19 | Author: Matt Glaman (mglaman) | Assigned: Matt Glaman (mglaman) | Labels: AI-accelerated, state::rtbc, technical debt Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1261 [fix(Tests): #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently](https://git.drupalcode.org/project/canvas/-/merge_requests/1261) | State: merged 2026-06-19 | Author: Matt Glaman (mglaman), 49 diff lines - MR !1260 [Resolve #3591701 "Make kernel tests pass on Drupal core 11.3"](https://git.drupalcode.org/project/canvas/-/merge_requests/1260) | State: closed | Author: Matt Glaman (mglaman) Description: ## Problem/Motivation The nightly pipeline on `1.x` ([pipeline 855595](https://git.drupalcode.org/project/canvas/-/pipelines/855595)) fails the PHPUnit kernel jobs on Drupal core 11.3 (`DRUPAL_CORE_NEXT_MINOR=11.3.10`). Two kernel test classes fail only on 11.3; they pass on 11.2. ### Failing jobs (11.3, all databases) - `phpunit (11.3 *): [PHPUnit-Kernel, 1, ...]` — `ComponentInputsEvolutionTest` - `phpunit (11.3 *): [PHPUnit-Kernel, 2, ...]` — `HostEntityPropSourceMatcherTest` ## Steps to reproduce ```bash composer require "drupal/core-recommended:~11.3.0" "drupal/core-dev:~11.3.0" --wi… ### [Coalesce reference fields whose values are consumed only through nested objects](https://git.drupalcode.org/project/canvas/-/work_items/3591678) State: closed | Updated: 2026-06-18 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, dataModel, priority::critical, state::fixed Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200321](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200321) and [note 1200324](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200324). ### Overview When *none* of a reference field's values are consumed directly — only via nested objects — the separate expressions could, since [commit 87f7b61dd](https://git.drupalcode.org/project/canvas/-/merge_requests/1112), be coalesced further into a single nested-object expression. For example: ``` ℹ︎… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-07-01 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [Support `content-entity-reference` props in CLI and Workbench](https://git.drupalcode.org/project/canvas/-/work_items/3591700) State: opened | Updated: 2026-06-19 | Author: wotnak | Assigned: wotnak | Labels: category::feature, cliTool, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1259 [feat(CLI Tool): #3591700 Support `content-entity-reference` props in CLI and Workbench](https://git.drupalcode.org/project/canvas/-/merge_requests/1259) | State: opened | Author: wotnak, 4816 diff lines Description: ### Overview Content entity reference props can be used by JavaScript components, but CLI and Workbench currently do not support authoring, validating, previewing, and rendering them. This means pulled content can lose the original entity reference shape, Workbench previews cannot reliably render components that depend on referenced content entities, and AI agents do not have enough generated context to work with these props. ### Proposed resolution Add CLI support for pulling, pushing, validating, and generating agent context for content entity reference props. Add Workbench support for … ### [Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached"](https://git.drupalcode.org/project/canvas/-/work_items/3575644) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1276 [Issue #3575644: Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached"](https://git.drupalcode.org/project/canvas/-/merge_requests/1276) | State: opened | Author: Matt Glaman (mglaman), 131 diff lines Description: >>> [!note] Migrated issue Reported by: [barakgalili](https://www.drupal.org/user/387269) >>> Overview The canvas module overrides the property definitions for the string_long field type in \Drupal\canvas\Plugin\Field\FieldTypeOverride\StringLongItemOverride. It currently adds a RegexConstraint to the value property with the pattern /(.|\r?\n)*/ to match any string, including newlines. When saving entities with large amounts of text (e.g., 10,000+ characters) in a string_long field, this specific regex pattern causes PHP's PCRE engine to hit the JIT stack limit (PREG_JIT_STACKLIMIT_ERROR, … ### [Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation](https://git.drupalcode.org/project/canvas/-/work_items/3591667) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, DX (Developer Experience), Needs ADR, data integrity Description: Title says it all. Context: Acquia Source has adopted Canvas long before it had a stable data model, and hence long before Canvas provided update paths. This has proven to cause seemingly random bugs during deployment, but time and time again the root cause has been data created _before_ Canvas provided update paths. This has been a time-consuming and costly affair (e.g. #3578865, #3579086). Canvas has invested _heavily_ into thorough validation to spot data integrity problems, to be able to guarantee that "if it passes validation, it will work [render + be editable with good UX]". ## Propo… ### [Include language-aware indexing for ContentTemplate-rendered Canvas content](https://git.drupalcode.org/project/canvas/-/work_items/3591695) State: closed | Updated: 2026-06-22 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers) | Labels: AI-accelerated, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1254 [#3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content](https://git.drupalcode.org/project/canvas/-/merge_requests/1254) | State: merged 2026-06-22 | Author: Ben Mullins (bnjmnm), 442 diff lines Description: Current \`ComponentTreeInputs\` does not index rendered ContentTemplate output. Add or explicitly exclude language-aware indexing for ContentTemplate-rendered static and dynamic values. ### [Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/work_items/3556922) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [akhil babu](https://www.drupal.org/user/3632866) > > Related to !813 ### Overview Getting the following error occasionally when generating a title, metadata, or adding components using the Page Builder agent from the chat interface. ![/files/issues/2025-11-10/Image-%201_0.png](https://www.drupal.org/files/issues/2025-11-10/Image-%201_0.png) This error usually occurs when new components are added or a full page is generated while the title and description are empty. Currently the UI has 3 separate handlers for adding/updating canvas page… ### [Release symmetrical translation functionality: drop the `canvas_dev_translation` feature flag module](https://git.drupalcode.org/project/canvas/-/work_items/3591698) State: opened | Updated: 2026-06-18 | Author: Wim Leers (wimleers) | Assigned: Ted Bowman (tedbow), Wim Leers (wimleers) | Labels: AI-accelerated, Configuration schema, category::task, configManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1258 [#3591698: Promote canvas_dev_translation into canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1258) | State: opened | Author: Wim Leers (wimleers), 287 diff lines Description: Once the critical pieces of %"Symmetric Translation: Phase 1" are done, we're going to release Symmetrical Translations to the public. That means dropping the `canvas_dev_translation` module, and: 1. moving all its functionality into the main module `\Drupal\canvas_dev_translation\Hook\ConfigTranslationSupportHooks` → `\Drupal\canvas\Hook\ConfigTranslationSupportHooks` 2. finding all uses of the `canvas_dev_translation` module and dropping them: stopping to install the module, addressing `@todo`s, dropping test coverage that tests the situation _without_ this module, etc. We should prepare t… ### [Update Canvas component auditing UI to include translation labels](https://git.drupalcode.org/project/canvas/-/work_items/3591612) State: closed | Updated: 2026-06-18 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: dataModel, state::fixed, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !876 [#3583379: `Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language](https://git.drupalcode.org/project/canvas/-/merge_requests/876) | State: merged 2026-06-18 | Author: Shubham Prakash (shubham.prakash), 1114 diff lines Description: Update the Canvas component auditing interface to display and correctly label translations for auditable components. To ensure the system remains fully auditable, the Canvas component auditing UI must be updated to include translation data. Specifically, when viewing the audit trail for a component, translations should be listed and explicitly labeled as such to distinguish them from the source content. The implementation should be verified at the following path: /admin/appearance/component/sdc.canvas_test_sdc.heading/audit Expected Outcome The auditing UI successfully lists all translation… ### [Simple approach to bringing advanced metadata into Canvas AI](https://git.drupalcode.org/project/canvas/-/work_items/3545816) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Innovation, AI Page Generation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [catia_penas](https://www.drupal.org/user/3725216) Related to !719 !349 >>> --- AI TRACKER METADATA --- Update Summary: Simple approach to bringing advanced metadata into Canvas AI Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Overview Currently we only have a one shot … ### [Add "page" extension type for full-screen Canvas extensions](https://git.drupalcode.org/project/canvas/-/work_items/3591662) State: closed | Updated: 2026-06-18 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1233 [Add "page" extension type for full-screen Canvas extensions](https://git.drupalcode.org/project/canvas/-/merge_requests/1233) | State: merged 2026-06-18 | Author: Lauri Timmanee (lauriii), 1177 diff lines Description: ## **Overview** Canvas extensions currently run inside a sidebar dialog overlay. This works well for extensions that need to stay close to the page being edited because they receive page context and can interact with the editor directly. However, some extensions perform standalone tasks (such as a translation dashboard, a content audit tool or a form builder) that do not need page context or editor interaction. Forcing those into the sidebar dialog wastes screen space and creates an awkward UX. There is no way for an extension to declare that it should occupy the full Canvas viewport as a se… ### [Canvas AI: canvas_ai_post_update_0003 strips the orchestrator agent UUID via setData()](https://git.drupalcode.org/project/canvas/-/work_items/3591660) State: closed | Updated: 2026-06-25 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1230 [Issue #3591660: Preserve agent UUID in canvas_ai post_update 0003 and repair affected sites](https://git.drupalcode.org/project/canvas/-/merge_requests/1230) | State: merged 2026-06-25 | Author: Matt Glaman (mglaman), 164 diff lines Description: ## Overview `canvas_ai_post_update_0003_reimport_orchestrator_agent()` in `modules/canvas_ai/canvas_ai.post_update.php` reimports the orchestrator agent to pick up a changed system prompt (follow-up to [#3582390](https://www.drupal.org/project/canvas/issues/3582390)). It reads `config/install/ai_agents.ai_agent.canvas_ai_orchestrator.yml` and calls `->setData($data)->save(TRUE)`. The install file has no top-level `uuid` key. `setData()` replaces the entire config record, so the existing `uuid` is dropped from the active `ai_agents.ai_agent.canvas_ai_orchestrator` config. The hook shipped in … ### [`redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix](https://git.drupalcode.org/project/canvas/-/work_items/3591689) State: closed | Updated: 2026-06-30 | Author: Narendra Singh Rathore (NarendraR) | Assigned: Narendra Singh Rathore (NarendraR) | Labels: Regression, category::bug, internalHttpApi, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1249 [#3591689: Too many redirects in invalid langcode as path-prefix](https://git.drupalcode.org/project/canvas/-/merge_requests/1249) | State: merged 2026-06-19 | Author: Narendra Singh Rathore (NarendraR), 82 diff lines Description: If we change language prefix and visit `/{language_prefix}/canvas` there is an infinite loop. Regression of https://git.drupalcode.org/project/canvas/-/work_items/3591585 Steps to reproduce: - Add additional language at `admin/config/regional/language/add` - Change path prefix to something random (frtest) at `/admin/config/regional/language/detection/url` - Visit /frtest/canvas to observe to get error ERR_TOO_MANY_REDIRECTS ### [Boolean prop values not retained correctly on SDC components with multiple boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591697) State: closed | Updated: 2026-06-30 | Author: Joery Lemmens (flyke) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1281 [#3591697 "Boolean default false prop values not retained correctly "](https://git.drupalcode.org/project/canvas/-/merge_requests/1281) | State: opened | Author: Ben Mullins (bnjmnm), 57 diff lines Description: This is a recreation of issue [#3492368](https://www.drupal.org/project/experience_builder/issues/3492368) in the experience_builder module so that the issue ends up on the correct module and issue que. Please watch the video in that issue! I am using Drupal 11.3.12 and I'm having an issue with boolean props on both canvas 1.6.0 and latest canvas dev. I have a (card) component with multiple boolean props where example and default are all set to false. I create a card (I dont change any boolean props) and when changing the text content, it seems that all boolean prop widgets are still uncheck… ### [UriOverride double-encodes file URIs on export causing images to be deleted on re-import](https://git.drupalcode.org/project/canvas/-/work_items/3591696) State: opened | Updated: 2026-06-18 | Author: Priyanka Patel (priyankapatel) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1256 [Issue #3591696 : Prevent URIOverride from double-encoding file URIs on export](https://git.drupalcode.org/project/canvas/-/merge_requests/1256) | State: opened | Author: Priyanka Patel (priyankapatel), 13 diff lines Description: When exporting canvas config that contains file/image URIs, `UriOverride.php` applies `UrlHelper::encodePath()` to a path that may already be URL-encoded. This causes double-encoding (e.g. `my%20file.jpg` becomes `my%2520file.jpg`). On re-import, the file URI no longer matches the actual file on disk, causing images to appear deleted. **Fix:** Decode the path before encoding to prevent double-encoding: `UrlHelper::encodePath(rawurldecode(rawurldecode($components['path'] ?? '')))` ### [Deleting media references causes InvalidComponentException and AssertionError](https://git.drupalcode.org/project/canvas/-/work_items/3590029) State: opened | Updated: 2026-06-18 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, configManagement, data integrity, priority::critical Description: >>> [!note] Migrated issue Reported by: [danepowell](https://www.drupal.org/user/339326) >>> Overview If you reference a media entity from a region (or other config component) and then delete the referenced entity, it causes at least two types of errors. On the page itself, you'll get an InvalidComponentException, which is ugly but recoverable. If you try to run canvas_post_update_0016_page_region_component_inputs_must_be_arrays, you'll get a nastier error that crashes updates: [error]  AssertionError: assert(Inspector::assertAllObjects($referenced_content_entities, FieldableEntityInt… ### [Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings](https://git.drupalcode.org/project/canvas/-/work_items/3591680) State: closed | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, dataModel, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1268 [refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of strings](https://git.drupalcode.org/project/canvas/-/merge_requests/1268) | State: merged 2026-06-22 | Author: Christian López Espínola (penyaskito), 458 diff lines Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see the "Optional follow-up tightening" list in [note 1200411](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200411). ### Overview `Coalescer` currently returns lists of strings throughout. It would be easier to maintain, debug, and understand if it operated on `EntityFieldBasedPropExpressionInterface` objects instead, converting to a list of strings only at the boundary where strings are actually needed. That conversion is trivial. This was deliberately left out of scope fo… ### [Submodule info.yml core requirements are not in sync with canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591706) State: closed | Updated: 2026-06-19 | Author: Björn Brala (bbrala) | Assigned: unassigned | Labels: category::task, priority::normal, projectManagement, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1267 [chore: #3591706 Sync submodule info.yml core requirements to ^11.2](https://git.drupalcode.org/project/canvas/-/merge_requests/1267) | State: merged 2026-06-19 | Author: Björn Brala (bbrala), 215 diff lines Description: While working on another issue i noticed the following: ``` ┌──────────────────────────────────────┬──────────────────────────┬────────┐ │ info.yml │ core_version_requirement │ floor │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ │ canvas.info.yml (root) │ ^11.2 │ 11.2.0 │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ │ canvas_ai, canvas_vite │ ^10 | ^11 / ^10 || ^11 │ 10.0.0 │ ├──────────────────────────────────────┼──────────────────────────┼────────┤ … ### [[upstream] Introduce `composer run lint:chase-upstream` + `chase-upstream`: use Rector rules to semi-automate Drupal 12 compatibility while retaining BC layers for Canvas' minimum version](https://git.drupalcode.org/project/canvas/-/work_items/3589155) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, Needs upstream feature Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1142 !1106 !1140 >>> Overview https://dri.es/ai-generated-rector-rules-for-drupal exists. Imagine this could help us semi-automatically get to Drupal 12 support? @bbrala has been jumping on this very same thing, and wrote https://www.linkedin.com/pulse/drupal-rector-rules-config-code-mostly-bj%C3%B6rn-brala-vfpwe/. We should wait for https://github.com/palantirnet/drupal-rector/pull/329 to get merged, and then use that. Proposed resolution Add composer run scripts: lint:chase-upstream (feed… ### [Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support](https://git.drupalcode.org/project/canvas/-/work_items/3584136) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1237 [Issue #3584136: Fix canvas_component_agent prompt bugs (Image import,...](https://git.drupalcode.org/project/canvas/-/merge_requests/1237) | State: merged 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex), 1765 diff lines Description: > [!note] Migrated issue > > > > > > Reported by: [subbu94](https://www.drupal.org/user/3513305) > > Related to !907 ### Overview The `canvas_component_agent` system prompt in `ai_agents.ai_agent.canvas_component_agent.yml` contains several bugs that cause the agent to generate invalid or broken code components. These problems were surfaced across four related issues: \[#3584114\], \[#3558216\], \[#3564656\], and \[#3551659\]. This issue consolidates them so they can be fixed together in a single pass over the agent configuration. ### Acceptance criteria When this issue is resolved, the … ### [Prevention of publishing on Conflict in Canvas UI](https://git.drupalcode.org/project/canvas/-/work_items/3587526) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::task, priority::critical, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1193 [feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity"](https://git.drupalcode.org/project/canvas/-/merge_requests/1193) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 861 diff lines Description: >>> [!note] Migrated issue Reported by: [ravi.maniyar.123](https://www.drupal.org/user/3867193) Related to !1018 >>> Overview: Whenever conflicts occur, we need to show the file name with indicator and with different styling. The file with conflicts cannot be selected for publish. This issue will only add this functionality for Canvas UI. There will be separate issue that will ensure conflict detection is performed during publishing of entities in similar fashion validation is performed. User interface changes: -- Item with a conflict has indicator icon -- Item with a conflict is marked i… ### [Automated Drupal 12 compatibility fixes for canvas 1.x-dev](https://git.drupalcode.org/project/canvas/-/work_items/3591603) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: Wim Leers (wimleers), Björn Brala (bbrala), project update bot (Project-Update-Bot) | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, priority::major Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout](https://git.drupalcode.org/project/canvas/-/work_items/3591591) State: closed | Updated: 2026-06-23 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::closed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1159 [Issues/3591591: Add fixture support for layout to use in tests](https://git.drupalcode.org/project/canvas/-/merge_requests/1159) | State: merged 2026-06-23 | Author: AKHIL BABU (AkhilBabu), 682 diff lines Description: ## Goal Create automated tests for the Canvas AI agents, so the manual testing otherwise needed every time an agent's system prompt changes can be avoided. ## Related issues This issue is one step toward that coverage. It builds on: - [#3579681 (closed)](https://git.drupalcode.org/project/canvas/-/work_items/3579681) — Added the `canvas_ai_agents_test` module and a framework to validate the YAML output produced by the page builder and template builder agents. - [#3582390 (closed)](https://git.drupalcode.org/project/canvas/-/work_items/3582390) — Added tests for the Canvas AI orchestrator a… ### [[Notifications] notification storage and service](https://git.drupalcode.org/project/canvas/-/work_items/3580209) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [justafish](https://www.drupal.org/user/161058) Related to !762 >>> Build the core notifications storage layer for Canvas. Create the NotificationService PHP class in the Canvas module that provides the core storage and retrieval layer for notifications. This service uses two custom database tables (canvas_notifications and canvas_notification_reads) with indexed columns for efficient queries. Run this on top of https://git.drupalcode.org/issue/canvas-3573776/-/tree/3573776-canvas-needs-a Notes A notification can have the following types: processing… ### [[Notifications] cron cleanup](https://git.drupalcode.org/project/canvas/-/work_items/3580212) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [justafish](https://www.drupal.org/user/161058) Related to !830 >>> Implement a cron hook that performs two distinct cleanup operations: Purge stale processing notifications: Processing notifications that have been active for more than 30 minutes are deleted and replaced with error notifications so the user is informed that the operation timed out. This only affects processing-type notifications. Delete expired notifications: All notifications (of any type) and their associated read entries older than 30 days are removed. Notifications are deleted … ### [Add content entity cache tags to auto-saves/pending endpoint](https://git.drupalcode.org/project/canvas/-/work_items/3588546) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: D8 cacheability, autoSave, caching, category::bug Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !1057 >>> Overview Currently when returning content entities such as Page from auto-saves/pending endpoint cache tags are missing. Let's fix that. Proposed resolution Add enforceIsNew(FALSE) call when creating new entity in AutoSaveManager::getAllAutoSaveList() and update tests accordingly. User interface changes None. > Related issue: [Issue #3587587](https://www.drupal.org/node/3587587) ### [Refactor auto-save endpoint response to encapsulate entries in top-level "data" key, like JSON:API, to enable adding errors later](https://git.drupalcode.org/project/canvas/-/work_items/3588038) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: unassigned | Labels: blocker, category::task, internalHttpApi, priority::normal Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !1047 >>> Overview Currently auto-saves/pending endpoint returns auto-save entries as a collection of objects: {  'entry_key:1' : {entry_1},   'entry_key:2' : {entry_2}}This worked fine until now, but going forward we should stick closer to JSON:API response structure, specifically the document top level format. Specifically, we should encapsulate the entries in data property on HTTP 200 responses: { 'data' : {   'entry_key:1' : {entry_1},    'entry_key:2' : {… ### [Detect conflicts for Page entities during the handling of auto-saves/pending calls](https://git.drupalcode.org/project/canvas/-/work_items/3589076) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: Ted Bowman (tedbow), Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1213 [feat(Conflict detection): #3589076 "Detect conflicts during auto-save polling"](https://git.drupalcode.org/project/canvas/-/merge_requests/1213) | State: merged 2026-06-16 | Author: Feliksas Mazeikis (f.mazeikis), 1128 diff lines - MR !1202 [fix(Conflict detection): Exclude computed internal fields from Page entity normalization](https://git.drupalcode.org/project/canvas/-/merge_requests/1202) | State: merged 2026-06-11 | Author: Feliksas Mazeikis (f.mazeikis), 122 diff lines - MR !1205 [revert(Conflict detection) #3589076 Detect conflicts during autosave polling](https://git.drupalcode.org/project/canvas/-/merge_requests/1205) | State: merged 2026-06-08 | Author: Feliksas Mazeikis (f.mazeikis), 941 diff lines - MR !1107 [Resolve #3589076 "Detect conflicts during autosave polling"](https://git.drupalcode.org/project/canvas/-/merge_requests/1107) | State: merged 2026-06-03 | Author: Feliksas Mazeikis (f.mazeikis), 941 diff lines Description: > [!warning] > > The main MR for this issue has been reverted in https://git.drupalcode.org/project/canvas/-/merge_requests/1205 and needs more work. > [!note] Migrated issue > > > > > > Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) > > Related to !1107 ### Overview As a first small step towards [#3587587](https://www.drupal.org/node/3587587) we should start detecting conflicts during the polling of auto-save endpoint.\ More specifically, conflicts that are caused by updating entity for which there is already an auto-save entry in Canvas. Current `openapi` definition of … ### [Rudimentary conflict resolution UI](https://git.drupalcode.org/project/canvas/-/work_items/3591601) State: opened | Updated: 2026-06-19 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1183 [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 3703 diff lines Description: ### Overview We are adding "Conflict resolution UI". This issue will add basic UI elements based on that allow users to open and interact with "Conflict resolution UI". ### Proposed resolution Add ability to open "Conflict resolution UI" using CTA button introduced in https://git.drupalcode.org/project/canvas/-/work_items/3585970. Create rudimentary version of the "Conflict resolution UI" which: * displays all of the conflicts in paginated (1 of X) UI with navigation controls ("\" * allows users to select which of the entities they want to use in order to resolve the conflict (auto-save v… ### [Text-based comparison of entities](https://git.drupalcode.org/project/canvas/-/work_items/3591668) State: opened | Updated: 2026-06-26 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, Needs design, Needs upstream feature, auto-save Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1266 [Draft: Issue #3591668: Add text-based comparison of entities UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1266) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 4644 diff lines - MR !1241 [Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API"](https://git.drupalcode.org/project/canvas/-/merge_requests/1241) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 305 diff lines Description: As part of #3587587 we need to be able to compare entities with conflicts not only using visual preview, but also using text-based side-by-side comparison. This issue adds this functionality for Page entities in Canvas. There will be an MR for BE and an MR for FE of this functionality. Designs and detailed description will be added soon. ### [UI changes for detection of conflicts caused by external updates to underlying entity of auto-save entry](https://git.drupalcode.org/project/canvas/-/work_items/3585970) State: closed | Updated: 2026-06-22 | Author: drupalbot | Assigned: Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !945 [Add conflict detection and resolution UI for selective publishing](https://git.drupalcode.org/project/canvas/-/merge_requests/945) | State: merged 2026-06-22 | Author: Ravi Maniyar (ravi.maniyar.123), 1365 diff lines Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) Related to !945 >>> Overview We are adding "Conflict resolution UI". This is the first task of the many and will add basic UI elements based on designs (meta issue with designs pending). Proposed resolution Add “Selective publishing error” UI element to the “Selective publishing dropdown” panel. Add a CTA button intended to open conflict resolution UI that also contains conflict counter. User interface changes When a "resolvable conflict" is detected in Canvas UI, the followin… ### [Expand conflict detection and resolution added by 3587587 to additional entity types](https://git.drupalcode.org/project/canvas/-/work_items/3591544) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview Initial implementation of #3587587 will expand current conflict detection and will add new "review of changes" and "conflict resolution UI". To limit the scope of work, new functionality will be added only to Page entities. This issue describes how this new functionality will be expanded to additional Canvas entity types. Specifically, this is a placeholder issue that will be used in BE child issues of #3587587 to document planned changes and link various @todo sections as the work progre… ### [[META] Review of changes and Conflict resolution](https://git.drupalcode.org/project/canvas/-/work_items/3587587) State: closed | Updated: 2026-06-19 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, UX, autoSave, category::plan Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview This is a meta to track work to add ability to add the following: Add conflict detection when underlying entity that auto-save entry has been based on is updated outside of Canvas UI Add ability to detect and resolve such conflicts using Canvas UI Build UI that allows to use side-by-side comparison when resolving such conflict Ability to conveniently Review changes to multiple entities re-using much of the same new UI Refer to child issues for actionable steps. 🟢 Description an… ### [[Plan] Canvas AI Roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3579796) State: opened | Updated: 2026-06-19 | Author: drupalbot | Assigned: Rakhi Mandhania (rakhimandhania) | Labels: AI Innovation, AI Page Generation, ai, category::plan Description: > [!note] Migrated issue > > > > > > Reported by: [rakhimandhania](https://www.drupal.org/user/2475028) \[Tracker\]\ **Update Summary:** Meta issue tracking the Canvas AI Page Generation roadmap — covering all deliverables from stable page building through to context control, code components, and SEO metadata generation.\ **Check-in Date:** 03/17/2026\ **Additional Collaborators:** \ _Metadata is used by the _[_AI Tracker._](https://www.drupalstarforge.ai/ "AI Tracker")_ Docs and additional fields _[_here_](https://www.drupalstarforge.ai/ai-dashboard/docs "AI Issue Tracker Documentation")_.… ### [Remove deprecated upload and download CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591707) State: closed | Updated: 2026-06-22 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1270 [chore(CLI Tool): Remove deprecated upload and download CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1270) | State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews), 5462 diff lines Description: The `upload` and `download` commands of Canvas CLI have been deprecated for a few months. Let's remove their implementation from the codebase. While doing this, we can also remove the `--no-tailwind` flag: We haven't really implemented this option in the `@drupal-canvas/discovery` package and the new build command, and there is no way to disable it in the in-browser code editor either, so it's best to not give the impression that the Tailwind CSS build can be skipped currently. Let's add back this option cleanly everywhere if/when the time is right. ### [Ensure type ignore schema props are ignore](https://git.drupalcode.org/project/canvas/-/work_items/3591710) State: closed | Updated: 2026-06-23 | Author: Ted Bowman (tedbow) | Assigned: Ted Bowman (tedbow) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1278 [ensure to ignore type ignore](https://git.drupalcode.org/project/canvas/-/merge_requests/1278) | State: closed | Author: Ted Bowman (tedbow), 13 diff lines Description: Test issue. Trying to reproduce a problem ### [Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591712) State: closed | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1280 [feat(CLI Tool): Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1280) | State: merged 2026-06-29 | Author: Bálint Kléri (balintbrews), 6501 diff lines Description: Now that the CLI tool has undergone a lot of development; the `upload` and `download` commands got deprecated in favor of `push` and `pull`, and the `build` command was rewritten from the ground up, we accumulated inconsistencies in the output of the various commands. Also, since the original output was designed about a year ago, AI coding agents became important consumers of these commands. It's time to consolidate, simplify, and rethink the output of all CLI commands. ### [Update JS packages](https://git.drupalcode.org/project/canvas/-/work_items/3591709) State: closed | Updated: 2026-06-22 | Author: Bálint Kléri (balintbrews) | Assigned: unassigned | Labels: category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1277 [chore: Update JavaScript packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1277) | State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews), 2301 diff lines Description: Update JavaScript packages in preparation for tagging Canvas 1.7.0. Do not update Astro, it will be handled in #3588803. ### [Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/work_items/3591711) State: closed | Updated: 2026-06-26 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: Content entity reference props are not fully stable yet, so the code editor should only show this prop type when an explicit dev feature flag is enabled. Add a hidden `canvas_dev_er` module. When enabled, Canvas exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor should show the Content entity reference prop type only when that setting is `true`. Existing components that already use content entity reference props should continue to show that prop type so they remain editable. ### [Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest`](https://git.drupalcode.org/project/canvas/-/work_items/3591679) State: closed | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, dataModel, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1275 [chore(Data model): #3591679 Use string representations of expressions in...](https://git.drupalcode.org/project/canvas/-/merge_requests/1275) | State: merged 2026-06-22 | Author: Christian López Espínola (penyaskito), 907 diff lines Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200328](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200328). ### Overview `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` express their expectations as `*PropExpression` object constructions. These are harder to scan than the equivalent string representations. A string representation is, post learning-curve, simpler for a human to read and preferable in test expectations. ### Proposed resolution Convert the expectation values in both tests from… ### [Refactor RequestTrait to prevent request stack mutation during kernel tests](https://git.drupalcode.org/project/canvas/-/work_items/3591708) State: closed | Updated: 2026-06-22 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, blocker, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1271 [feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly](https://git.drupalcode.org/project/canvas/-/merge_requests/1271) | State: merged 2026-06-25 | Author: Wim Leers (wimleers), 5559 diff lines - MR !1274 [🤖 Resolve #3591708 "RequestTrait::request() should not result in mutated request_stack"](https://git.drupalcode.org/project/canvas/-/merge_requests/1274) | State: merged 2026-06-22 | Author: Feliksas Mazeikis (f.mazeikis), 187 diff lines Description: **TL;DR**: `RequestTrait` in Canvas tests had issues, resulting in false `ApiAutoSaveControllerTest::testPost()` failures in !1193 that should not be happening due to mutation of request stack; **Longer** version: `RequesTrait` would clean the `request_stack` before making calls, but would not restore it and due to upstream shenanigans. This would leave orphaned request objects in `\Drupal::request()->getCurrentRequest();` . An example of such failure is this https://git.drupalcode.org/project/canvas/-/jobs/10441223#L735 -\> an assertion failure when running `$page->validate()` in the PHPU… ### [Introduce `EntityFieldBasedPropExpressionInterface::getFieldDefinition()`](https://git.drupalcode.org/project/canvas/-/work_items/3591676) State: opened | Updated: 2026-06-22 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: Novice, category::task, dataModel, priority::normal Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1200323](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200323). ### Overview Logic added in !1112 resolves a field definition from an entity-field-based prop expression in a way that is essentially identical to `\Drupal\canvas\PropExpressions\StructuredData\FieldPropExpression::calculateDependencies()`. The same field-definition-resolution logic now exists in more than one place. ### Proposed resolution Add `EntityFieldBasedPropExpressionInterface::getFieldDefinit… ### [AI continues to use unsupported React libraries while creating a component](https://git.drupalcode.org/project/canvas/-/work_items/3564656) State: closed | Updated: 2026-06-22 | Author: drupalbot | Assigned: Kunal Sachdev (kunal.sachdev) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [kunal.sachdev](https://www.drupal.org/user/3685163) Related to !441 >>> Overview In https://git.drupalcode.org/project/canvas/-/work_items/3548637, a fix was implemented to provide the AI with context regarding the specific libraries available within Canvas. The intention was to restrict the AI to only use these supported libraries. However, the AI continues to import external/unsupported libraries (e.g., when prompted to "render unsafe HTML safely," it attempts to import dompurify). This causes the preview to fail to load. This issue serves as a f… ### [Add heuristics for exposing fields/props to the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/work_items/3591669) State: opened | Updated: 2026-06-24 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii) | Labels: category::task, internalHttpApi, priority::critical, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1289 [feat(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1289) | State: opened | Author: Christian López Espínola (penyaskito), 273 diff lines Description: ### Overview When a Code Component Developer uses the `content-entity-reference` "Typed Data browser" UI (added in #3585354) to pick which entity data a prop consumes, the picker offers fields and properties it should not: - **Internal metadata** that storage would reject anyway (e.g. the `revision_default` / `workspace` base fields). - **A duplicated image URL**: the `image` field surfaces *"Resolved image URL with ?alternateWidths query parameter"* twice, because the `src` and `src_with_alternate_widths` computed properties share that label. `src` exists precisely as the developer-facing a… ### [Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests](https://git.drupalcode.org/project/canvas/-/work_items/3591723) State: opened | Updated: 2026-06-25 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::task, componentSources, data integrity, priority::major Description: ### Overview Two kernel test classes independently set up the same thing: a `JavaScriptComponent` fixture and a family of "prop-mutation" helpers that simulate a component evolving (adding/removing required and optional props, changing a prop's type, etc.). - `TranslationPropagationTestBase` (added in #3591596) — its fixture plus `addOptionalProp()`, `addRequiredProp()`, `removeOptionalProp()`, `changePropType()`, `removeAndAddProp()`, `removeBothProps()`. - `JsonSchemaPropsComponentInstanceUpdaterTest` — its own near-identical fixture plus `addOptionalProp()`, `addOptionalArrayProp()`, `rem… ### [Split the PHPUnit-Kernel CI test suite across 4 parallel jobs instead of 3](https://git.drupalcode.org/project/canvas/-/work_items/3591722) State: closed | Updated: 2026-06-24 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1288 [chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3](https://git.drupalcode.org/project/canvas/-/merge_requests/1288) | State: merged 2026-06-24 | Author: Christian López Espínola (penyaskito), 15 diff lines Description: ### Overview The `PHPUnit-Kernel` test suite in `.gitlab-ci.yml` runs across 3 parallel CI jobs (`CI_PARALLEL_NODE_TOTAL: '3'`). As the kernel suite has grown, each shard takes longer, increasing pipeline wall-clock time. Splitting the suite across 4 jobs instead of 3 reduces per-shard runtime. This was first done as a drive-by change inside MR !1271 (commit d6cfd28e, by Wim Leers), but it is a standalone CI-capacity change with no dependency on that issue's feature work, so it is split out here. ### Proposed resolution In `.gitlab-ci.yml`, change the `PHPUnit-Kernel` matrix entry to sprea… ### [Follow-up for #3591596: add PHPat rules for keeping `StagedLanguageConfigOverride` config entity type-agnostic](https://git.drupalcode.org/project/canvas/-/work_items/3591721) State: opened | Updated: 2026-06-23 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: projectManagement Description: The following discussion from !1271 should be addressed: - [ ] @penyaskito started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1268169): (+3 comments) > Shouldn't this be restricted to our known `ComponentTreeConfigEntityBase` implementers? ### [[11.3] Adopt Core's stream wrapper for JSON schema references](https://git.drupalcode.org/project/canvas/-/work_items/3580762) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Needs product manager review, category::task, priority::normal, shapeMatching Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !787 >>> Overview module:// and theme:// stream wrappers have been added to Drupal 11.3 to make it easier to reference certain files in modules or themes. Change notice: https://www.drupal.org/node/2352923 UI Patterns will adopt it and drop its custom ui-patterns:// wrapper: #3567610: Adopt Core's stream wrapper Canvas is still using its json-schema-definitions:// wrapper. Adopt Core's stream wrapper for JSON schema references must be possible right now thankw to https://git.drupalcode.org/pr… ### [Boolean props auto-enable when another prop is changed in the Canvas form](https://git.drupalcode.org/project/canvas/-/work_items/3591716) State: opened | Updated: 2026-07-01 | Author: Alamgir Hossain (alamgir.hossain.cse) | Assigned: unassigned | Labels: Description: ## Summary In Canvas, when editing a component that has boolean props (e.g. `card-program`), changing any non-boolean prop causes all boolean props to appear enabled (toggle switches flip to ON) even though the user never toggled them. ## Root causes Two bugs were identified: ### 1. `|| []` coerces boolean `false` to `[]` in `layoutModelSlice.ts` In `_addNewComponentToLayout` → `buildInitialData()`, when building the initial model for a newly dropped component: ```typescript // BEFORE (buggy): initialData.resolved[propName] = prop.default_values?.resolved || []; // For boolean false: fal… ### [Language dropdown "edit" link should immediately change to "add" on deletion](https://git.drupalcode.org/project/canvas/-/work_items/3591720) State: opened | Updated: 2026-06-23 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1287 [Draft: #3591720 update/edit toggles on language delete](https://git.drupalcode.org/project/canvas/-/merge_requests/1287) | State: opened | Author: Ben Mullins (bnjmnm), 650 diff lines ### [WIP: Apply saved config language override to auto-saved versions in layout](https://git.drupalcode.org/project/canvas/-/work_items/3583043) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ted Bowman (tedbow) | Labels: autoSave, category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !864 [Draft: Resolve #3583043 "Auto save config override"](https://git.drupalcode.org/project/canvas/-/merge_requests/864) | State: closed | Author: Ted Bowman (tedbow), 452 diff lines Description: >>> [!note] Migrated issue Reported by: [tedbow](https://www.drupal.org/user/240860) Related to !864 >>> Overview Experiment with applying Config Language Config override on API layout routes Proposed resolution User interface changes > Related issue: [Issue #3582464](https://www.drupal.org/node/3582464) ### [Avoid registering draft asset-library JS URLs to prevent locale's js_alter from treating them as local files](https://git.drupalcode.org/project/canvas/-/work_items/3591719) State: closed | Updated: 2026-06-26 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, priority::normal, state::closed, v1.x-dev Description: **Overview** This was found while working in https://git.drupalcode.org/project/canvas/-/work_items/3591654, see thread https://git.drupalcode.org/project/canvas/-/merge_requests/1234#note_1258003 In `LibraryHooks::libraryInfoBuild()`, the draft variant of each AssetLibrary entity registers its JS URL as a standard library asset: Because the path starts with / (but not //), Drupal's `LibraryDiscoveryParser` strips the leading slash and stores it as a root-relative type: file asset (`canvas/api/v0/auto-saves/js/asset_library/global`). When the locale module is installed, its `hook_js_alter()` … ### [Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints](https://git.drupalcode.org/project/canvas/-/work_items/3591717) State: closed | Updated: 2026-06-25 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::bug, cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1284 [fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints](https://git.drupalcode.org/project/canvas/-/merge_requests/1284) | State: merged 2026-06-25 | Author: Bálint Kléri (balintbrews), 177 diff lines Description: The CLI supports flat named components where multiple components share one directory: - `src/components/card.component.yml` - `src/components/card.tsx` - `src/components/pricing-table.component.yml` - `src/components/pricing-table.tsx` `@drupal-canvas/eslint-config` identifies only one named `*.component.yml` file in a directory when deciding whether a JavaScript or TypeScript file is a component entrypoint. Rules such as `component-exports` can skip sibling flat component entrypoints. **Out of scope** `@drupal-canvas/cli` validates each discovered component by linting its directory. When… ### [Canvas Page Preview Fails After Language Code Update for Existing Translations](https://git.drupalcode.org/project/canvas/-/work_items/3591713) State: opened | Updated: 2026-06-30 | Author: Vipin Mittal (vipin.mittal18) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: JavaScript, category::bug, priority::normal, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1304 [Draft: fix(Internal HTTP API, Translation): #3591713 Fix Canvas page preview for translated pages when the URL prefix differs from the langcode](https://git.drupalcode.org/project/canvas/-/merge_requests/1304) | State: opened | Author: Christian López Espínola (penyaskito), 251 diff lines Description: When a language code is updated in Language Detection settings, previewing existing translated Canvas pages for that language results in a syntax error. The preview process continues to reference the previous language code instead of the updated one. **Steps to Reproduce** 1. Create or translate a Canvas page into a secondary language. 2. Navigate to Language Detection settings. 3. Update the language code for the translated language. 4. Save the configuration. 5. Open the translated Canvas page and click Preview. **Current Behaviour** - The preview fails and displays a syntax error. - The u… ### [Canvas AI: Chatbot generates page title and description without user request](https://git.drupalcode.org/project/canvas/-/work_items/3591718) State: opened | Updated: 2026-06-23 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai, category::bug, priority::normal, state::active Description: ## Summary When a user opens a blank canvas page and sends a simple message like "Hi", the AI chatbot sometimes immediately generates a page title and description — even though the user did not ask for it. This is unexpected and confusing behaviour. ## Steps to reproduce 1. Open a canvas page that has no title and no description. 2. Open the AI chatbot panel. 3. Type "Hi" and send. 4. Observe that the chatbot may generate a page title and/or description without being prompted to do so. ## Root cause `CanvasAiPageBuilderHelper::generateVerboseContextForOrchestrator()` in `modules/canvas_ai… ### [Use toast messages to inform users about the detected conflicts](https://git.drupalcode.org/project/canvas/-/work_items/3591715) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, backend, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1295 [Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message"](https://git.drupalcode.org/project/canvas/-/merge_requests/1295) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 1052 diff lines Description: Original plan was to leverage Canvas notifications, but after some discussions with @8ballsteve , @amangrover90 and @ravi.maniyar.123 we've come to conclusion that purely client side toast messages that look similar to Canvas notifications, but aren't is a better fit at this time. MvP requirements for toast messages are: * Displayed on `HTTP 409` with errors containing items with code 4 from `HTTP GET` to `/auto-saves/pending` endpoint * Once displayed, we should store information required to make sure the toast notification is not being spammed on each `HTTP 409` response * Once dismisse… ### [Translating unpublished page crashes canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591714) State: opened | Updated: 2026-06-26 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, category::bug, pageBuilder, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1282 [#3591714: Resolve "Translating unpublished page crashes canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1282) | State: opened | Author: Kunal Sachdev (kunal.sachdev), 298 diff lines Description: **Overview** When a Canvas page has unpublished changes, completing a translation job for that page via the TMGMT breaks the Canvas editor UI, resulting in a 409 Conflict error. **Technical Cause** The problem is when TMGMT saves the translation as complete, it creates a new revision of the canvas page entity, which changes the revision ID. Since the original_hash stored in the auto-save no longer matches the current entity hash, Canvas flags this as a conflict and returns a 409 error. **Steps to reproduce** - Create a canvas page , add title as “Test Page“(do not publish it) - On canvas-ed… ### [Give AI more context around the styling of the site](https://git.drupalcode.org/project/canvas/-/work_items/3544132) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: ai, category::task, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [utkarsh_33](https://www.drupal.org/user/3727088) Related to !46 !26 !1504 >>> Overview While creating a code component the AI should get a context of existing styling of the site. This will help the AI to create similar type of components that closely match the styling of the site. In this issue we are focusing on JS components only. Proposed resolution So if a user wants to create a new component using AI then to match the component with the theme of the website we need to tell LLM about the current styling of the existing components. In this iss… ### [Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible](https://git.drupalcode.org/project/canvas/-/work_items/3591726) State: closed | Updated: 2026-06-26 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: AI-accelerated, backend, category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1291 [Issue #3591726: Compare component inputs order-independently in tests and enforce it via PHPStan](https://git.drupalcode.org/project/canvas/-/merge_requests/1291) | State: merged 2026-06-26 | Author: Christian López Espínola (penyaskito), 361 diff lines Description: ### Overview The kernel test `ComponentTreeFieldSymmetricalTranslationSynchronizerTest` fails on MySQL and PostgreSQL but passes on MariaDB and SQLite. The failure is an "arrays are identical" mismatch on a component instance's `inputs` where the values are correct but the key order differs (e.g. `href`/`text` swapped). The cause is database-backend-dependent: component `inputs` are stored in a native JSON column, and JSON object key order is not preserved uniformly across backends. MySQL (`json`) and PostgreSQL (`jsonb`) reorder object keys on storage, while MariaDB (where `json` is a `LONG… ### [Put conflict detection behind a dev mode flag](https://git.drupalcode.org/project/canvas/-/work_items/3591725) State: closed | Updated: 2026-06-25 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: 1.x-dev, Conflict resolution, backend, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1290 [Put conflict detection behind feature flag](https://git.drupalcode.org/project/canvas/-/merge_requests/1290) | State: merged 2026-06-25 | Author: Feliksas Mazeikis (f.mazeikis), 251 diff lines Description: Conflict detection is getting in the way of translations work. Considering this already has been a question on !1193 , let's put conflict detection BE changes behind dev flag. By @wimleers on slack: > :grimacing: :bug: Speaking of which, I just:Created a Page that uses a code component\ > Triggered a new version of that code component\ > Visited that Page via Canvas → auto-save created (only for the default translation aka en)\ > TRANSLATE that Page\ > Again visit that Page via Canvas → :warning: CONFLICT DETECTED! ### [Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat](https://git.drupalcode.org/project/canvas/-/work_items/3591724) State: opened | Updated: 2026-06-29 | Author: Aidan Foster (aidanfoster) | Assigned: unassigned | Labels: Description: **Source:** Drupal AI UX Weekly Meeting, June 22, 2026. @Marcus_Johansson reviewed and gave an update on the prototype Drupal Canvas AI brand @AkhilBabu based on the experimental prototype that creates components one-at-a-time on this experimental branch https://github.com/akhilbabu-qed-42/c2026/tree/canvas-ai-poc The approach looks very promising from early testing but we need to update the UI to accommodate the changes. ## **Problem / Motivation** Canvas AI now builds a page component by component. While it is building, interacting with the canvas (adding or removing components) breaks t… ### [Add support for file fields using custom stream wrappers (currently only `public` is supported)](https://git.drupalcode.org/project/canvas/-/work_items/3577155) State: opened | Updated: 2026-06-24 | Author: drupalbot | Assigned: Darrell Green (codefever) | Labels: Contributed project blocker, category::feature, priority::major, shapeMatching Description: >>> [!note] Migrated issue Reported by: [darrellhq](https://www.drupal.org/user/356505) >>> Overview FileUriItemOverride::propertyDefinitions() adds a UriSchemeConstraint to the file_uri field type's value property with a hardcoded allowedSchemes => ['public']. Because this override is applied globally via hook_field_info_alter() in ShapeMatchingHooks, it affects all file entities — not just those used within Canvas components. This causes entity validation failures for any site that stores files using a non-public:// stream wrapper (e.g., s3:// via the S3FS module, or private://)… ### [Canvas AI: Expose Props of Blocks to the Agent](https://git.drupalcode.org/project/canvas/-/work_items/3569120) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative, AI Product Development, ai, category::bug Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) Related to !498 >>> Overview Currently CanvasAiPageBuilderHelper::getAllComponentsKeyedBySource() does this <?php      if ($source === SingleDirectoryComponent::SOURCE_PLUGIN_ID) {        $this->processSdc($component, $sdc_definitions, $output);      }      elseif ($source === JsComponent::SOURCE_PLUGIN_ID) {        $this->processCodeComponents($co… ### [Canvas icon / logo for Project Browser and project page](https://git.drupalcode.org/project/canvas/-/work_items/3545468) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: Novice, category::task, miscellaneous, priority::normal Description: >>> [!note] Migrated issue Reported by: [darren oh](https://www.drupal.org/user/30772) >>> Overview We need a visual representation of the project. The logo candidates for Experience Builder are not relevant now that the project has been renamed. Proposed resolution Candidate 1 Candidate 2 Candidate 3 > Related issue: [Issue #3507188](https://www.drupal.org/node/3507188) ### [Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan](https://git.drupalcode.org/project/canvas/-/work_items/3591729) State: closed | Updated: 2026-06-29 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, autoSave, category::bug, internalHttpApi Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` The interface-translation system (`locale`) scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` / `Drupal.formatPlural()` strings, reading each one with `file_get_contents()`. Canvas registers the draft asset library's JS as a root-relative route URL (`/canvas/api… ### [Strengthen test coverage for multi-translation multi-component instance automatic version updating](https://git.drupalcode.org/project/canvas/-/work_items/3591730) State: opened | Updated: 2026-06-25 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: technical debt, translation Description: The following discussion from !1271 should be addressed: - [ ] @wimleers started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1271204): (+4 comments) > :bug: This is not what happens: not only _selected_ translations are published, they _all_ are published. Thanks to > ```php > $snapshots = AutoSaveManager::groupContentEntityAutoSaves($publish_auto_saves)[$group_key]; > ``` > in the `POST` controller. > > If that weren't the case, the `ComponentTreeSymmetricalTranslationConstraintValidator` would fail on content entities, a… ### [Canvas AI: Component context required props missing required flag](https://git.drupalcode.org/project/canvas/-/work_items/3591655) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: Tormi Tabor (tormi) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, Novice Description: ## Problem A regression in `CanvasAiPageBuilderHelper::processSdc()` causes the `required: true` flag to be dropped from component context metadata. Current code: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], TRUE)) { $output[$source_id]['components'][$component_id]['props'][$prop_name]['required'] = TRUE; } ` The flag should instead be added to the prop metadata: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], … ### [Canvas AI: Remove hardcoded component source IDs](https://git.drupalcode.org/project/canvas/-/work_items/3591652) State: closed | Updated: 2026-06-25 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: The Update hook added in #3573571 uses hardcoded plugin IDS, Replace them with constants See: https://git.drupalcode.org/project/canvas/-/merge_requests/606#note_1080422 ### [Refactor away the brittle`PageRegion::forAutoSaveData()`](https://git.drupalcode.org/project/canvas/-/work_items/3591728) State: opened | Updated: 2026-06-25 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: auto-save, technical debt Description: The following[discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273102) from !1271 should be addressed: > :thinking: In principle, this needs tests. > > But this has been thoroughly manually tested. During that manual testing, @tedbow found a bug, for example, and it was _not_ here: `::testPageRegionComponentPropRemovalCreatesAutoSavesForTranslation()`. > > :bug: > 1. There are 6 calls to this method in total. 5 of them in tests. The sole remaining one is the one that led to discovering this is wrong in HEAD. > 2. That `@todo` has been there for 1.5 year, and… ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, componentSources, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [Draft: chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: opened | Author: Christian López Espínola (penyaskito), 795 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Symmetrically translatable config-defined component trees, STEP 2: change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions](https://git.drupalcode.org/project/canvas/-/work_items/3582478) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, Configuration schema, category::task, configManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !898 !901 !868 >>> Approach For high-level overview, see the change record. ADR: !901 Implementation MR #1: !962 in #3586342: Symmetrically translatable component trees, STEP 1: introduce `ComponentInstanceInputsConfigSchemaGeneratorInterface` Implementation MR #2: !898, here Implementation MR #3: !831 in https://git.drupalcode.org/project/canvas/-/work_items/3582464 Overview The explicit inputs for a component instance in a config-defined component tree currently looks like this: diff --gi… ### [Changing Metadata Clears Canvas AI Prompt Text](https://git.drupalcode.org/project/canvas/-/work_items/3558257) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [vipin.mittal18](https://www.drupal.org/user/319716) Related to !530 >>> Overview When composing a prompt in Canvas AI, if any page metadata (such as meta description) is modified before submitting the prompt, all previously entered text in the Canvas AI prompt field is erased. Proposed resolution Updating any metadata field (title, description, etc.) should not clear the text entered in the Canvas AI prompt field. The data in the Canvas AI prompt and in the metadata fields should be managed independently without interference from one another. St… ### [Boolean field values resetting when using Patterns](https://git.drupalcode.org/project/canvas/-/work_items/3591637) State: opened | Updated: 2026-06-30 | Author: Amanda Donnelly (aadownie) | Assigned: unassigned | Labels: Description: When using Patterns in the 1.5 update, boolean values are not staying their set value when using Patterns after content is edited. To reproduce: Add a component that uses a boolean value, set with a default 'true', and a basic text field. In my example this boolean was used to show/hide a section of markup. Create a page with this component added, but set the boolean to 'false', then create a pattern with this layout. Add a new page, and drag the pattern over, which should have this boolean set to 'false' hiding the markup. Edit the text field. When the preview reloads, the formerly hidd… ### [Cast transform treats serialized "0" as true for boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591739) State: opened | Updated: 2026-06-30 | Author: Dirk Hacker (dehacker) | Assigned: unassigned | Labels: Description: **Summary:** * Unchecked Drupal checkboxes serialize as `"0"`. * `transforms.cast` only treats `'false'` as false, then `Boolean(value)`. * `Boolean("0") === true` → unchecked booleans flip to `true` on auto-save when another field changes. **Repro:** 1. Component with two boolean props (e.g. Hero Standard `popup_form` + `ppc_header`). 2. Open in Canvas editor; leave `popup_form` unchecked, toggle `ppc_header`. 3. Observe `popup_form` saved as `true`. **Fix:** Explicit handling when `to === 'boolean'` for `'0'`, `0`, `''`, `null`, `'false'`. ### [Add Code Component prop type for multiline plain text](https://git.drupalcode.org/project/canvas/-/work_items/3591741) State: opened | Updated: 2026-06-26 | Author: Alex Bronstein (effulgentsia) | Assigned: unassigned | Labels: Description: SDCs can have a prop schema of: ``` type: string pattern: "(.|\r?\n)*" ``` to signify a multi-line string. Canvas uses a textarea widget for the content entry for such a prop. The Code Component Editor currently doesn't provide either a dedicated prop type or a setting within the Text prop type for this. ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: Gábor Hojtsy (goba), Ted Bowman (tedbow) | Labels: Usability, state::needsReview, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1303 [Fix high level translation settings experience for Canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1303) | State: opened | Author: Gábor Hojtsy (goba), 113 diff lines Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job for some component trees](https://git.drupalcode.org/project/canvas/-/work_items/3591734) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: Narendra Singh Rathore (NarendraR), Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, componentSources, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1296 [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) | State: opened | Author: Narendra Singh Rathore (NarendraR), 575 diff lines - MR !1313 [fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1313) | State: merged 2026-06-30 | Author: Christian López Espínola (penyaskito), 292 diff lines Description: I went to try Canvas 1.7.0 translation today with a brand new install of Drupal CMS Haven. I don't think the issue is due to Haven, so submitting here. I think previously this config form had separate settings under the components for the tree and inputs but that is not an option that I have for some reason, so this is how I have it set up. ![Screenshot 2026-06-26 at 11.29.44.png](https://git.drupalcode.org/-/project/19391/uploads/fe3690f7cf31f5eafd12c4cf6de93f29/Screenshot_2026-06-26_at_11.29.44.png){width="755" height="600"} I have `canvas_dev_translation` enabled and `content|config|inte… ### [Bump drupal-canvas package to 0.4.2](https://git.drupalcode.org/project/canvas/-/work_items/3591694) State: closed | Updated: 2026-06-26 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: JavaScript, category::task, dependencies, priority::normal ### [Add translation metadata to code component's `mainEntity` data](https://git.drupalcode.org/project/canvas/-/work_items/3591738) State: opened | Updated: 2026-06-30 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers) | Labels: themeBuilder, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1301 [#3591738 add translation data to code component provider](https://git.drupalcode.org/project/canvas/-/merge_requests/1301) | State: opened | Author: Ben Mullins (bnjmnm), 579 diff lines Description: This would make it possible to have a language switcher code component ### [Access check when publishing auto-save items needs be performed earlier](https://git.drupalcode.org/project/canvas/-/work_items/3591736) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, category::bug, internalHttpApi Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1302 [#3591736 "Access check in ApiAutoSaveController::post() should be performed earlier"](https://git.drupalcode.org/project/canvas/-/merge_requests/1302) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 204 diff lines Description: With the changes in !1271 the access check happens too late in the handling of auto-save items publishing request. If a user submits a list to `ApiAutoSaveController::post()` of entities they have no access to, the entities get filtered out in `ApiAutoSaveController::getPublishableAutoSaves()` via: ``` $access = $item['entity']->access('view label', return_as_object: TRUE); ... return $access->isAllowed() && ($item['is_default_translation'] ?? TRUE); ``` This results in a s set of "publishable auto-save items" that misses the entities the user has submitted. This then fail… ### [Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/work_items/3571785) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1309 [Draft: #3571785: Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/merge_requests/1309) | State: opened | Author: Wim Leers (wimleers), 1771 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview One of the things that @phenaproxima has expressed multiple times as being very hard to understand for somebody proficient-at-Drupal-but-new-to-Canvas, is Canvas' concept of "dangling component trees". https://git.drupalcode.org/project/canvas/-/work_items/3571116 already got us a good chunk of the way there to eliminating/eradicating this altogether. Proposed resolution Completely eradicate it. User interface changes None. > Related issue: [Issue #3571116](https://www.drupal.org/node/35711… ### [Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing](https://git.drupalcode.org/project/canvas/-/work_items/3581133) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: Adam G-H (phenaproxima), Wim Leers (wimleers) | Labels: AI-accelerated, Chicago2026, DX (Developer Experience), Novice Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1297 [#3581133: Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing](https://git.drupalcode.org/project/canvas/-/merge_requests/1297) | State: opened | Author: Wim Leers (wimleers), 4716 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !797 >>> Overview :pray: Let's use the `FQCN::class` wherever we can. Reduces magic, makes it easier to navigate & understand these tests. — yours truly at https://git.drupalcode.org/project/canvas/-/merge_requests/651#note_727491 Proposed resolution Automate this feedback. User interface changes None. > Related issue: [Issue #3575719](https://www.drupal.org/node/3575719) ### [Non-Canvas (foreign) Drupal form textareas rendered inside Canvas are read-only and lose their #default_value](https://git.drupalcode.org/project/canvas/-/work_items/3591737) State: opened | Updated: 2026-06-26 | Author: Oleksandr Antonchyk (Anton4yk) | Assigned: unassigned | Labels: Description: When a Drupal form that is not one of Canvas's own react-hook-form–managed forms is rendered inside the Canvas UI (for example, content loaded into an AJAX modal dialog), its textarea fields render incorrectly in two ways. Canvas componentises such forms through hyperscriptify → DrupalTextArea → TextArea, but withRHF only enhances forms whose formId is page_data_form or component_instance_form (ui/src/components/form/react-hook-form/withRHF.tsx). For any other form, it returns the bare component, so the enhancements that those components depend on are missing. Bug 1 — … ### [CKEditor's source element is not tagged with the active text format inside Canvas, breaking modules that rely on core's editor-attach contract (e.g. ai_ckeditor)](https://git.drupalcode.org/project/canvas/-/work_items/3591735) State: opened | Updated: 2026-06-26 | Author: Oleksandr Antonchyk (Anton4yk) | Assigned: unassigned | Labels: Description: Canvas mounts CKEditor 5 through the React @ckeditor/ckeditor5-react component in ui/src/components/form/components/drupal/DrupalFormattedTextArea.tsx. Because of this, Drupal core's editor.js never runs for these editors. Core's editor.js is what normally sets data-editor-active-text-format on the editor's source element (core/modules/editor/js/editor.js). Any module th… ### [Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()](https://git.drupalcode.org/project/canvas/-/work_items/3591733) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Wim Leers (wimleers), Kunal Sachdev (kunal.sachdev) | Labels: autoSave, category::task, priority::minor, state::fixed Description: **Overview** There is a workaround to prevent locale's js_alter hook from trying to file_get_contents() the draft JS auto-save URL added in test `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` which was added in #3591654 and which also has a @todo to remove this workaround in #3591719 which is closed as a duplicate of #3591729 where the main issue was resolved. Now that the main issue is resolved in #3591729 so we can remove this workaround. ### [Remove `canvas_dev_cd` flag module](https://git.drupalcode.org/project/canvas/-/work_items/3591732) State: opened | Updated: 2026-06-26 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, auto-save, internalHttpApi Description: In !1290 we have put the conflict detection behind the `canvas_dev_cd` module. All the other MRs in the %"Review of changes and Conflict resolution" milestone will follow suit. Once the all of the MvP items are reviewed, approved and merged - we can remove the flag. ### [Canvas AI: In-progress chat messages disappear when editing page metadata during an active run](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-06-30 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::needsReview Description: Follow-up to #3558257. ### Problem While the AI agent is running, editing the page title or meta description removes the in-progress status messages from the chat UI. ### Steps to reproduce 1. Install Canvas AI on Drupal CMS 2 (starter recipe). 2. Open a new page and open the chatbot. 3. Prompt: `Add an "Our Plans" section for SportsFlix, a sports streaming platform`. 4. While it is still running, type in the description or title field. 5. The in-progress messages disappear from the chat UI. ### Root cause The in-progress status bubble is added imperatively in `startPolling()` via `chatEl.a… ### [canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side)](https://git.drupalcode.org/project/canvas/-/work_items/3591751) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1315 [fix: #3591751 Compile JSX server-side for AI-created code components](https://git.drupalcode.org/project/canvas/-/merge_requests/1315) | State: opened | Author: Rajab Natshah (RajabNatshah), 188 diff lines Description: ## Problem/Motivation Code components (`js_component`) created or edited **programmatically** — e.g. by the AI tools in `canvas_ai` — render as `[object Object]` in the editor preview and on the page. They never hydrate. ## Cause `canvas_ai` stores the source JSX but leaves the compiled JS empty: - `modules/canvas_ai/src/Plugin/AiFunctionCall/CreateComponent.php` → `"compiledJs" => ""` - `modules/canvas_ai/src/Plugin/AiFunctionCall/EditComponentJs.php` → `"compiledJs" => ""` Code components are normally compiled in the **browser** editor (swc/wasm) on save, which sets `compiledJs`. The pr… ### [Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/work_items/3591750) State: closed | Updated: 2026-06-30 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1314 [chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/merge_requests/1314) | State: merged 2026-06-30 | Author: Bálint Kléri (balintbrews), 531 diff lines Description: A CLI `push` can update `canvas.asset_library.global` in multiple steps during the same push. One update writes global CSS/JS fields, and a later update writes dependency manifest fields such as `imports`, `assets`, and `shared`. This is brittle because repeated `PATCH` requests to the same config entity in one `push` can depend on backend behavior around intermediate/staged config state. If a later `PATCH` is applied against an older version of the entity, fields from the earlier `PATCH` can be lost. Change the CLI push flow to: 1. Build and prepare the global CSS/JS asset library update. … ### [Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/work_items/3591746) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1310 [#3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/merge_requests/1310) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 33 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality: 1. `npm run lint:cspell` is almost always forgotten, probably because it currently says: _"ALWAYS run `npm run fix` when JavaScript code is updated.". (Which implies it's only necessary for front-end changes, which is not true) 2. Often, but definitely not always, are there PHPCS and/or PHPStan violations. 3. The most common PHPCS violation: 80 cols rule, and specifically fo… ### [Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s](https://git.drupalcode.org/project/canvas/-/work_items/3591744) State: closed | Updated: 2026-06-30 | Author: Vipin Mittal (vipin.mittal18) | Assigned: Ben Mullins (bnjmnm), Wim Leers (wimleers), utkarsh_33 (Utkarsh_33) | Labels: Needs screenshots, category::bug, state::fixed, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1308 [Resolve "Language Switcher displays "Untitled page" instead of Actual Title"](https://git.drupalcode.org/project/canvas/-/merge_requests/1308) | State: merged 2026-06-30 | Author: utkarsh_33 (Utkarsh_33), 50 diff lines Description: When translating a config template, the Language Switcher pop-up displays "Untitled Page" instead of the actual page title. **Steps to Reproduce** 1. Open a page associated with a `ContentTemplate`. 1. Open the Language Switcher pop-up to create or edit a translation. 1. Observe the title displayed in the pop-up. **Expected Result** The Language Switcher pop-up should display the actual page title so that users can easily identify the page being translated. ### [Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/work_items/3591747) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1311 [#3591747: Add `docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/merge_requests/1311) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 9 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality that introduced 2 new ADRs, both of which were AI-accelerated: 1. It referenced the current state of the implementation, pointing to prior issues, future issues and `@todo`s 2. In its writing, it would refer to concrete code in Drupal core, documentation handbook pages for Drupal core etc (which may change!) instead of referring exclusively to other ADRs ### [Have recipe imports validate prop value structure](https://git.drupalcode.org/project/canvas/-/work_items/3591749) State: opened | Updated: 2026-06-30 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Description: I ran into a scenario where a recipe included a page that had components with invald value structure The `text` property was a formatted text field, which expected a map with text and format properties. ``` components: - uuid: a548b48d-58a8-4077-aa04-da9405a6f418 component_id: js.text inputs: text: "You are not authorized to access this page." ``` This incorrectly formatted value imported fine, and even showed up in the canvas UI without issue but there was a fatal error when `\Drupal\canvas\Tmgmt\ComponentInputsTranslatablesExtractor` attempted to identify tra… ### [Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map](https://git.drupalcode.org/project/canvas/-/work_items/3591748) State: opened | Updated: 2026-06-29 | Author: Andrew Belcher (andrewbelcher) | Assigned: unassigned | Labels: category::bug, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1312 [🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope](https://git.drupalcode.org/project/canvas/-/merge_requests/1312) | State: opened | Author: Andrew Belcher (andrewbelcher), 153 diff lines Description: _Claude Code was used to trace and analyse the bug, and write up the issue._ ## Problem/Motivation When a code component (JavaScript component) imports another code component that *also* shares a dependency with it, the shared component forms a "diamond" — `Pricing` imports both `Card` and `Button`, and `Card` also imports `Button` (one shared leaf): ```mermaid graph TD Pricing -->|"@/components/demo_card"| Card Pricing -->|"@/components/demo_button"| Button Card -->|"@/components/demo_button"| Button ``` In the browser the page fails to hydrate with: ``` [astro-island] Error … ### [Enabling content translation of Canvas pages results in an unsupported state (asymmetrical translations) by default; forward port core's #3606969](https://git.drupalcode.org/project/canvas/-/work_items/3591745) State: opened | Updated: 2026-06-30 | Author: Gábor Hojtsy (goba) | Assigned: unassigned | Labels: category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1318 [Add solution to onboarding with content translation to disable tree...](https://git.drupalcode.org/project/canvas/-/merge_requests/1318) | State: opened | Author: Gábor Hojtsy (goba), 131 diff lines Description: Currently content translation allows to configure both inputs and component tree translation. However Canvas UI currently only supports inputs translation not different component trees. The default configuration on the content translation UI enables both, resulting in an unsupported combination. Talking to the Canvas team the component tree part is intended to be marked translatable, so it can be supported in the future. So instead of changing the translatability of that, the UI should be modified to disallow configuring the tree to be translatable. ![Screenshot 2026-06-29 at 12.28.19.png](h… ### [Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality](https://git.drupalcode.org/project/canvas/-/work_items/3591583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, category::task, priority::critical, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1151 >>> Overview It's 2026. The majority of software developers is either using AI LLMs (but everybody says "AI" despite it not actually being intelligent so I'll run with it anyway) voluntarily or is pressured to do so. Whichever your stance may be, it is the reality. In Drupal core (see #3585894: LLM harm reduction in Drupal core contribution, AGENTS.md guidelines). But also in Drupal Canvas. Drupal CMS already adopted it (https://git.drupalcode.org/project/drupal_cms/-/work_items/3569529… ### [Updated translation is not reflected on preview](https://git.drupalcode.org/project/canvas/-/work_items/3591743) State: closed | Updated: 2026-06-30 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Needs steps to reproduce, category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1307 [Fix translation for newly added component.](https://git.drupalcode.org/project/canvas/-/merge_requests/1307) | State: closed | Author: Chandan Singh (chandu7929), 37 diff lines Description: Adding translation for newly added component doesn't reflect on page preview: - Create a canvas page - Drag and drop heading component on the page - Publish changes - Translate the created canvas page - Navigate back to canvas - drag and drop text component on page - publish changes - Update translation by adding translation for text component as well. - Navigate to canvas - preview Afrikaans translation - observe only Heading component is present for Afrikaans translation where as for English heading and text both are present ### [Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent](https://git.drupalcode.org/project/canvas/-/work_items/3552818) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project soft blocker, DevDaysAthens2026, category::bug, code Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !961 >>> Problem/Motivation Canvas decorates plugin.manager.sdc: Drupal\canvas\Plugin\ComponentPluginManager: decorates: plugin.manager.sdc parent: Drupal\Core\Theme\ComponentPluginManager arguments: ['@entity_type.manager', '@Drupal\canvas\ComponentIncompatibilityReasonRepository'] tags: - { name: canvas.component_source } But the implementation may be incorrect: https://git.drupalcode.org/project/canvas/-/blob/1.x/src/Plugin/ComponentPluginManager.php It extends Drup… ### [Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity](https://git.drupalcode.org/project/canvas/-/work_items/3590840) State: closed | Updated: 2026-06-30 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1120 [Resolve #3590840 "Simplify codeowners further"](https://git.drupalcode.org/project/canvas/-/merge_requests/1120) | State: merged 2026-06-30 | Author: Wim Leers (wimleers), 157 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1120 >>> Overview https://git.drupalcode.org/project/canvas/-/work_items/3558237 made CODEOWNERS a lot simpler. It made it more pragmatic. 3 observations: It has helped to increase velocity. Especially with multiple teams working in parallel on various Canvas features. The most pain we've seen in the ~6 months since then are in the area of CI: flaky tests etc. @justafish has been the main driver towards fixing that velocity killer. The most risk we've seen since then is in the area of data … ### [Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()`](https://git.drupalcode.org/project/canvas/-/work_items/3530808) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, blocker, category::bug, componentSources Description: >>> [!note] Migrated issue Reported by: [phenaproxima](https://www.drupal.org/user/205645) Related to !448 !1157 >>> Overview If you have an SDC with a date prop, Experience Builder will mistakenly create a Component config entity for it that doesn't comply with config schema. The component entity will have a default_value: { value: 'whatever' }} structure, which doesn't match the field.value.datetime config schema type from core. Proposed resolution @larowlan already went down this rabbit hole and discovered that -- strange as this (and it really is) -- core's doing the right thing here.… ### [Prevent creation of Canvas pages in a non-default language at API level via validation constraint](https://git.drupalcode.org/project/canvas/-/work_items/3591742) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, data integrity, page Description: #3591625+ prevented the creation of Canvas `Page`s via the UI/entity form. Good. But not enough. @goba reported this in Slack: > I don't see a reason why Canvas can't force field values in this alter further, I agree only disabling this does not force the value per say, it assumes the value was disabled to begin with. But the field setting could be forced a similar way. He opened #3591740+ for improving the help text that `\Drupal\canvas\Hook\ModuleHooks::afterBuildCanvasPageLanguageSettings()` adds. But in addition to that, we should make Canvas' `Page`s fail validation when they're being… ### [Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context](https://git.drupalcode.org/project/canvas/-/work_items/3591654) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Ignacio Sánchez Holgueras (isholgueras), Kunal Sachdev (kunal.sachdev) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Description: **Overview** For content template in Canvas, the language selector in top bar shows a "Delete translation" option for languages that have a translation of the preview entity. However, the delete link generated by `ApiLayoutController::get()` currently always points to `canvas.api.content.translation.delete`, which is hardcoded to the `canvas_page` entity type and will fail to resolve for other entity types used as preview entities. **Proposed Solution** Use the dedicated `canvas.api.config.translation.delete` route in the template context - update `ApiLayoutController::get()` to point the de… ### [Prevent creation of Canvas pages in a non-default language in the UI/via the entity form](https://git.drupalcode.org/project/canvas/-/work_items/3591625) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: **Overview** - Currently, when creating a new Canvas page, the language selector displays all languages configured on the website, including both the default language and translated languages. - This behaviour allows users to create Canvas pages directly in non-default languages. However, Canvas pages should only be created in the site's default language (source language). - For non-default languages, users should not create separate Canvas pages. Instead, translated content should be managed through the translation interface, where translations are entered against the source-language Canvas … ### [[PP-1] Create Canvas pages in any enabled content language](https://git.drupalcode.org/project/canvas/-/work_items/3546597) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Needs followup, Needs tests, category::feature, page Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !494 >>> Overview Today, it is not possible to create a new Canvas page in a non-default language on the UI. Let's say we have 2 enabled languages in the website, English (default) and Spanish. It is not possible to create a Canvas page with langcode Spanish then. While it is possible, to create the Spanish language page on the command line or via Drupal recipes, once that is created, editing the page can be done only without the language prefix in the URL. With the language prefix in the URL, … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: opened | Updated: 2026-06-30 | Author: AKHIL BABU (AkhilBabu) | Assigned: Abhishek Dhariwal (adaptative) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… ### [Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent](https://git.drupalcode.org/project/canvas/-/work_items/3591457) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) >>> Overview This issue will get broken down in to several sub issues in future. https://git.drupalcode.org/project/canvas/-/work_items/3582390 would add automated tests for the Canvas AI Orchestrtator agent. In the same way create tests for the Page builder agent and template builder agent so that we could save a lot of time in manual testing whenevr their system prompts changes. On a high level, to achieve this. For the tests, the agent should only see the components available in the canvas_test_s… ### [Support entity-context frame type in _linkPropToEntityValue for PropSource binding](https://git.drupalcode.org/project/canvas/-/work_items/3591757) State: opened | Updated: 2026-07-01 | Author: kyotaro (kyk) | Assigned: unassigned | Labels: Description: ### Summary In `ui/src/features/layout/layoutModelSlice.ts`, the `_linkPropToEntityValue` Redux thunk constructs a `valuePayload` for `previewApi.endpoints.updateComponent.initiate()`. The `type` field of this payload is currently hardcoded to `'template'`: ```ts const valuePayload = { type: 'template' as EditorFrameContext, componentInstanceUuid: componentToUpdateId, componentType: `${selectedComponentType}@${version}`, ... }; ``` `EditorFrameContext` is a discriminated union representing what kind of editor frame is active — `'template'` for canvas_page editing, `'entity'` (or sim… ### [Reconciling media in CLI should respect sync settings](https://git.drupalcode.org/project/canvas/-/work_items/3591756) State: closed | Updated: 2026-06-30 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::bug, cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1323 [fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings](https://git.drupalcode.org/project/canvas/-/merge_requests/1323) | State: merged 2026-06-30 | Author: Bálint Kléri (balintbrews), 624 diff lines Description: The `reconcile-media` CLI command currently doesn't respect the `sync` settings from `canvas.config.json`. It should reconcile media only for those resources that are enabled for sync. Note that besides configuring `sync` in `canvas.config.json`, users can use CLI flags and legacy environment variables for the `push` command. The `reconcile media` should support the same options. ### [Introduce `ComponentSourceInterface::getLabelForExplicitInputKey()`](https://git.drupalcode.org/project/canvas/-/work_items/3586490) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, blocker, category::task, componentSources Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !968 >>> Overview Discovered at https://git.drupalcode.org/project/canvas/-/merge_requests/882#note_760120 For the component instance form of SDCs and code components, we need to know the label. Currently, the logic for that is hardcoded in \Drupal\canvas\Plugin\Canvas\ComponentSource\GeneratedFieldExplicitInputUxComponentSourceBase::buildComponentInstanceForm(). Which means it's not available for translation. Proposed resolution Add ComponentSourceInterface::getLabelForExplicitInput(). Refa… ### [Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions`](https://git.drupalcode.org/project/canvas/-/work_items/3591683) State: opened | Updated: 2026-06-30 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, Novice, autoSave, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1322 [#3591683: Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions`](https://git.drupalcode.org/project/canvas/-/merge_requests/1322) | State: opened | Author: Wim Leers (wimleers), 25 diff lines Description: The following discussion from !1189 should be addressed: - [ ] @larowlan started a [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1189#note_1199179): (+1 comment) > I think in another issue we patched core for this via our own .schema.yml file - [ ] @wimleers confirmed: > Indeed — #3583684 committed `config/schema/core_fix_forward_port.schema.yml` with `core.base_field_override.*.*.*.third_party.content_translation` — doesn't that mean this is not necessary? ⇒ we should be able to revert those config schema exclusions from the test coverage ### [[later phase] Add alter hook for marking additional SDC/code component prop shapes AND/OR specific props as translatable](https://git.drupalcode.org/project/canvas/-/work_items/3584178) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project blocker, Needs issue summary update, Needs upstream feature, category::feature Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview Follow-up to https://git.drupalcode.org/project/canvas/-/work_items/3582478. \Drupal\canvas\Plugin\Canvas\ComponentSource\GeneratedFieldExplicitInputUxComponentSourceBase::getExplicitInputDefinitionsAsConfigSchemaMapping() supports the following prop shapes:       // Plain strings, HTML strings and URLs are considered translatable. So:      // - type: string      // - type: string: format: iri    &… ### [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/work_items/3591754) State: opened | Updated: 2026-06-30 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1320 [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1320) | State: opened | Author: Lauri Timmanee (lauriii), 1366 diff lines Description: The logic that extracts a `component_tree` field's translatable strings and writes translations back lives in `ComponentTreeFieldProcessor`, which extends a `tmgmt_content` class. So it only loads when TMGMT is installed even though the logic itself does not use TMGMT. Non-TMGMT translation features (e.g. config translation) cannot reuse it without forking. ## Proposed Resolution Move the TMGMT-free logic into a standalone `ComponentTreeTranslator` service under `src/Translation/`, and make `ComponentTreeFieldProcessor` a thin TMGMT adapter that delegates to it. Behavior is unchanged. Add a … ### [PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively](https://git.drupalcode.org/project/canvas/-/work_items/3586673) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::minor, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1321 [#3586673: PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively](https://git.drupalcode.org/project/canvas/-/merge_requests/1321) | State: opened | Author: Wim Leers (wimleers), 425 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !975 >>> Overview While working on https://git.drupalcode.org/project/canvas/-/work_items/3586535, I discovered that the selective exclusions that #3511705: Update PHPCS config to match Drupal 11 introduced do not see to actually work. I noticed because we needed to add one new selective exclusion: https://git.drupalcode.org/project/canvas/-/merge_requests/969#note_807715 Proposed resolution Fix by following the same pattern. User interface changes > Related issue: [Issue #3586535](https://w… ### [DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort`](https://git.drupalcode.org/project/canvas/-/work_items/3591753) State: closed | Updated: 2026-06-30 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1319 [#3591753: DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort`](https://git.drupalcode.org/project/canvas/-/merge_requests/1319) | State: merged 2026-06-30 | Author: Wim Leers (wimleers), 24 diff lines Description: - CI: `phpcs` is green - locally: not. This slows down both humans _and_ LLMs. ```shell $ composer run phpcs > mkdir -p test-results && mkdir -p .cache/phpcs && composer --working-dir=$(composer run composer-root) exec phpcs -- --standard=$(pwd)/phpcs.xml --report-width=auto --colors -s --report-junit=$(pwd)/test-results/phpcs.xml --report-full --report-summary $(pwd) > d=.; i=0; while [ $i -lt 10 ]; do if [ -f "$d/composer.json" ] && cat "$d/composer.json" | grep -q '"type"' && cat "$d/composer.json" | grep -q '"project"'; then readlink -f "$d"; break; fi; d="../$d"; i=$((i+1)); done FILE… ### ["block" ComponentSource plugin should never store inputs for `label` and `label_display`, because they're not available for Canvas users](https://git.drupalcode.org/project/canvas/-/work_items/3572850) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Lauri Timmanee (lauriii) | Labels: Configuration schema, Needs issue summary update, Needs product manager review, category::task Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !584 >>> Overview Quoting https://git.drupalcode.org/project/canvas/-/work_items/3561392.2: The block ComponentSource plugin goes through great pains to hide label and label_display from Canvas users, but then 1) actually goes back and restores it just prior to saving, 2) doesn't actually validate these UNLESS there's other block plugin settings. It also means pointless data ends up being stored: INSERT INTO `canvas_page__components` (`bundle`, `deleted`, `entity_id`, `revision_id`, `langcod… ### [Add side-by-side review flow for selected Page changes before publishing](https://git.drupalcode.org/project/canvas/-/work_items/3591752) State: opened | Updated: 2026-06-30 | Author: Ravi Maniyar (ravi.maniyar.123) | Assigned: unassigned | Labels: React, ui Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1317 [Draft: feat(Conflict detection): #3591591 Expand conflict resolution UI with...](https://git.drupalcode.org/project/canvas/-/merge_requests/1317) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 6797 diff lines Description: Summary Add a “Review selected changes” flow for non-conflicted Page changes so editors can compare the published version against the current autosave before publishing. This should reuse the existing side-by-side comparison UI used by conflict resolution, but must not change conflict detection or conflict resolution behavior. Problem Currently, side-by-side comparison is mainly available during conflict resolution. Editors also need a way to review selected Page changes when there are no conflicts, especially to compare autosaved changes against the published version before publishing. R… --- MERGE REQUESTS (2w) --- ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities"](https://git.drupalcode.org/project/canvas/-/merge_requests/1194) State: opened | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591601-rudimentary-conflict-resolution-ui-be | 1198 diff lines Description: ## What this branch does **TL;DR:** Modifies the `ApiContentAutoSaveControllers::patch()` to allow updating auto-save item conflict as resolved; Adds optional argument to the `ApiLayoutController::get()` that allows fetching layout of a published entity; all new functionality is hidden behind `canvas_dev_cd` **Long version:** This MR adds "Ability to resolve conflict by keeping changes in the auto-save" and an "ability to load the visual preview of both auto-save and published version of the entity with conflict" capability described in the https://git.drupalcode.org/project/canvas/-/milest… ### [feat(Theme builder): #3585355 `content-entity-reference` prop selection UI: a "Typed Data browser" to let a Code Component Developer pick which data to consume](https://git.drupalcode.org/project/canvas/-/merge_requests/1182) State: merged 2026-06-17 | Author: wotnak | Branch: 3585355-entity-reference-sel | 2496 diff lines Description: Implements entity reference selection UI for managing content entity reference props in Canvas code editor. ([designs](https://www.figma.com/design/ZSlXxBDIGLV2riMAxCv9QE/Canvas-Code-Editor?node-id=158-33847&p=f&t=aRfFva3ijmO307ck-0)) AI-Generated: Yes (Used Claude Code and Codex to plan and iterate over the implementation). ## Testing instructions - [ ] pull changes, rebuild the ui (`npm run build -w ui`) and clear cache - [ ] open Canvas code components list and open one of the components in the code editor (or create a new one) - [ ] add a new prop of type `Content entity reference` - [ ]… ### [feat(Data model): #3591678 Coalesce reference fields consumed only through nested objects](https://git.drupalcode.org/project/canvas/-/merge_requests/1252) State: merged 2026-06-18 | Author: Christian López Espínola (penyaskito) | Branch: 3591678-coalesce-nested-only-refs | 505 diff lines Description: Follow-up to !1112 (notes [1200321](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200321) / [1200324](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200324)). ## What When a reference field has no directly-picked value and multiple references descend through it into the same bundle on different final fields, `Coalescer::coalesce()` merges them into one reference-only `FieldObjectPropsExpression`: ``` ℹ︎␜entity:node:article␝uid␞␟{mail↝entity␜␜entity:user␝mail␞␟value,name↝entity␜␜entity:user␝name␞␟value} ``` `buildReferencePayload()` descends su… ### [feat(Conflict detection): #3587526 "Client side prevention of publishing"](https://git.drupalcode.org/project/canvas/-/merge_requests/1018) State: merged 2026-06-29 | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3587526-prevention-of-publishing | 200 diff lines Description: Client side changes for https://git.drupalcode.org/project/canvas/-/work_items/3587526+ This MR adds conflict handling for pending auto-save changes so users cannot publish changes that have unresolved conflicts. When a pending change is marked as conflicted, the review UI now: - Shows a conflict warning in the unpublished changes panel - Disables selection for conflicted changes - Excludes conflicted changes from Select All - Still allows non-conflicted changes to be selectively published The pending changes API response is also normalized so the frontend can handle both normal pending ch… ### [Issues/Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/merge_requests/813) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3556922-canvas-ai-an | 278 diff lines Description: Closes #3556922 ### [Create tools and update agents](https://git.drupalcode.org/project/canvas/-/merge_requests/719) State: opened | Author: AKHIL BABU (AkhilBabu) | Branch: 3545816-simple-approach-to-v2 | 1004 diff lines Description: Closes #3545816 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/canvas/-/merge_requests/1172) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2669 diff lines Description: Relates to #3591603. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-testset-854160. ### [Resolve #3587161 "Integrate ddev local devepment enviroment into canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1014) State: opened | Author: Jakob P (japerry) | Branch: 3587161-integrate-ddev-drupal-contrib-into | 1948 diff lines Description: This MR is designed to converge the various add-ons used to support canvas into one centralized and recommended development environment. It uses the architecture from ddev-drupal-contrib (but doesn't bring in the addon, see below) to create an ephemeral Drupal environment within the module, and add scaffolding to support the various test systems used within Canvas, including phpunit, Cypress, and Playwright (via the Lullabot/ddev-playwright add-on). It also merges in UI commands from the ddev-drupal-xb-dev addon, which shouldn't be needed anymore once this MR lands. ## Why ddev-drupal-contrib… ### [Resolve #3589155 "Rector ci job"](https://git.drupalcode.org/project/canvas/-/merge_requests/1142) State: opened | Author: Wim Leers (wimleers) | Branch: 3589155-rector-CI-job | 421 diff lines Description: New CI job, that helps us chase upstream (PHP) changes. Initially, only core changes. Partially AI-accelerated (see commit prefixed by :robot:) ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3589155 ### [#3587711 fix: code component exceptions after prop type change](https://git.drupalcode.org/project/canvas/-/merge_requests/1015) State: opened | Author: Ted Bowman (tedbow) | Branch: 3587711-remove-check | 1246 diff lines Description: When a Js code component's prop type changes between saves (eg. `string` -> `integer`), any existing page instances crashes with an exception on the next edit. The reason is because `JsComponent` was using `GeneratedFieldExplicitInputUxComponentInstanceUpdater`, which blocks updates whenever a prop's storage type changes, making the component->validateProps to fail. **Fix**: Introduce a new `JsComponentInstanceUpdater` for Code Components to allow shape changes and data loss. ## Steps to test - [ ] Create a JS code component with a required `string` prop (`required_text`) and an optional `s… ### [Issue #3580209: [Notifications] notification storage and service](https://git.drupalcode.org/project/canvas/-/merge_requests/762) State: merged 2026-03-26 | Author: Sally Young (justafish) | Branch: 3580209-notifications-notification-storage | 803 diff lines Description: Closes #3580209 Builds on work in https://git.drupalcode.org/issue/canvas-3573776/-/tree/3573776-canvas-needs-a - [ ] Adds canvas_notification and canvas_notification_read database tables via hook_schema() and canvas_update_10014() - [ ] Implements CanvasNotificationHandler service with create(), getRecent(), markRead(), purgeStaleProcessing(), and deleteExpired() methods - [ ] Registers the service … ### [Issue #3580212: [Notifications] cron cleanup](https://git.drupalcode.org/project/canvas/-/merge_requests/830) State: merged 2026-04-01 | Author: Sally Young (justafish) | Branch: 3580212-notifications-cron-cleanup | 352 diff lines Description: Closes #3580212 - Adds automatic cleanup of stale and expired notifications via cron - Stale processing notifications (older than 30 minutes) are purged and replaced with error notifications - Expired notifications older than 30 days are deleted along with their associated read entries ## Testing instructions - [ ] Create a stale processing notification (31m old) ``` ddev drush php-eval " \$handler = \Drupal::service(… ### [Resolve #3588546: Add content entity cache tags to auto-saves/pending response cacheability](https://git.drupalcode.org/project/canvas/-/merge_requests/1057) State: merged 2026-05-07 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3588546-add-content-entity | 68 diff lines Description: Adds `enforceIsNew(FALSE)` call when creating a new entity in the `AutoSaveManager::getAllAutoSaveList()`. Updates existing tests accordingly. Adds additional tests to prove that endpoint cache clears on entity cache tag invalidation. Closes #3588546 ### [Resolve #3588038 "Refactor auto save endpoint"](https://git.drupalcode.org/project/canvas/-/merge_requests/1047) State: merged 2026-05-07 | Author: Shubham Prakash (shubham.prakash) | Branch: 3588038-refactor-auto-save-endpoint | 271 diff lines Description: Updates `openapi.yml`, controller, tests and react code to support `auto-saves/pending` returning all current auto-save entries in wrapped in a top level `data` property. I have not used any AI in this MR, but it seems that @shubham.prakash did, although unclear what tool he used and for what. ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3588038 ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [chore(Theme builder): #3591711 Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/merge_requests/1279) State: merged 2026-06-22 | Author: Bálint Kléri (balintbrews) | Branch: 3591711-issue-branch | 191 diff lines Description: Adds a hidden `canvas_dev_er` module that exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor only offers content entity reference props when the flag is enabled, while existing props remain editable. AI use: This merge request was prepared with assistance from OpenAI Codex. ### [#3591654 "Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context"](https://git.drupalcode.org/project/canvas/-/merge_requests/1234) State: merged 2026-06-24 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591654-update-the-delete-link-generation-in-apilayoutcontrollerphp-to-use-canvasapiconfigtranslationdelete-in-the-template-context | 488 diff lines Description: ## Testing instructions - [ ] Enable the `canvas` `canvas_test_sdc` `language` `canvas_dev_translation` `content_translation` `config_translation` modules. - [ ] Visit `/admin/config/regional/language` and add French. - [ ] Create an Article. - [ ] Visit the Canvas editor and add a template for article full content. - [ ] Add a Heading/Hero component to the template and publish the template. - [ ] Verify that checkmark is displayed only for english language in language selector drop down in top bar. - [ ] Visit `admin/structure/content-template/node.article.full/translate` to translate the con… ### [fix(ui): #3591716 boolean props auto-enable when another prop is changed (1.6.0)](https://git.drupalcode.org/project/canvas/-/merge_requests/1286) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3591716-1.6.0 | 4888 diff lines Description: Variant of MR !1285 based on the 1.6.0 release tag, for sites on Canvas 1.6.0. Same fix: twig checkbox template, DrupalToggle, react-hook-form getCurrentValueFromProps, and layoutModelSlice falsy-default preservation. Built ui/dist bundle is provided via the release patch (gitignored on dev). ### [fix(ui): #3591716 boolean props auto-enable when another prop is changed](https://git.drupalcode.org/project/canvas/-/merge_requests/1285) State: opened | Author: Alamgir Hossain (alamgir.hossain.cse) | Branch: 3591716-fix-boolean-props-auto-enable | 96 diff lines Description: ## Summary - Boolean props in Canvas component forms auto-enable when any other prop is changed. - Two root causes identified and fixed across 3 files. ## Root causes & fixes **1. `|| []` coerces `false` to `[]` — `layoutModelSlice.ts` lines 559 & 566** During component drop, `buildInitialData()` ran `prop.default_values?.resolved || []`. For boolean props with default `false`: `false || [] = []` (truthy empty array). Changed to `?? []` so `false` is preserved. **2. Twig renders `element['#value']` as `'0'` during AJAX rebuilds — `input--checkbox--inwidget-boolean-checkbox.html.twig`** D… ### [Fix flat named component ESLint entrypoint detection](https://git.drupalcode.org/project/canvas/-/merge_requests/1283) State: closed | Author: Bálint Kléri (balintbrews) | Branch: 3591717-flat-named-component-eslint-entrypoints | 177 diff lines Description: ## Summary - Detect every active flat named component entrypoint in `@drupal-canvas/eslint-config`. - Keep named metadata precedence aligned with component discovery. - Add regression coverage for sibling flat entrypoints and explicit entrypoint imports. ## Testing - [x] `npm run fix` - [x] `npm run test` in `packages/eslint-config` - [x] `npm run type-check` in `packages/eslint-config` ## AI use This merge request includes code and test changes written with OpenAI Codex under human direction. ### [Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent.](https://git.drupalcode.org/project/canvas/-/merge_requests/498) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3569120-canvas-ai-expose | 413 diff lines Description: Closes #3569120 ### [fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it](https://git.drupalcode.org/project/canvas/-/merge_requests/1293) State: merged 2026-06-25 | Author: Christian López Espínola (penyaskito) | Branch: 3591729-draft-asset-library-js-asset-registered-as-a-file-triggers-file-get-contents-warning-in-locales-js-scan | 19 diff lines Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` `locale` scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` strings, reading each one with `file_get_contents()`. Canvas registered the draft asset library JS as a root-relative route URL, which the library parser classified as a local `file`. `locale` then tried… ### [fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it](https://git.drupalcode.org/project/canvas/-/merge_requests/1292) State: closed | Author: Christian López Espínola (penyaskito) | Branch: 3591729-draft-asset-library-js-asset-registered-as-a-file-triggers-file-get-contents-warning-in-locales-js-scan Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` `locale` scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` strings, reading each one with `file_get_contents()`. Canvas registered the draft asset library JS as a root-relative route URL, which the library parser classified as a local `file`. `locale` then tried… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 1702 diff lines Description: Closes #3518272 ### [Issue #3591652: Replace hardcoded component source plugin IDs with SOURCE_PLUGIN_ID constants](https://git.drupalcode.org/project/canvas/-/merge_requests/1255) State: merged 2026-06-25 | Author: Abhishek Dhariwal (adaptative) | Branch: 3591652-remove-hardcoded-source-ids | 88 diff lines Description: Follow-up to #3573571 (MR !606), addressing https://git.drupalcode.org/project/canvas/-/merge_requests/606#note_1080422 ### Summary `canvas_ai_post_update_0005_normalize_component_description_settings()` listed the allowed component source plugin IDs as literal strings (`['sdc', 'js', 'block']`). This replaces them with the existing source plugin constants: - `SingleDirectoryComponent::SOURCE_PLUGIN_ID` - `JsComponent::SOURCE_PLUGIN_ID` - `BlockComponent::SOURCE_PLUGIN_ID` The values are unchanged, so the update hook behaves identically. Only `modules/canvas_ai/canvas_ai.post_update.php` ch… ### [Fix Canvas AI prompt reset on metadata changes](https://git.drupalcode.org/project/canvas/-/merge_requests/530) State: opened | Author: scott falconer (scottfalconer) | Branch: 3558257-changing-metadata-clears | 896 diff lines Description: ## Issue https://www.drupal.org/project/canvas/issues/3558257 ## Root cause `DeepChat` received inline object and function props — `images`, `requestBodyLimits`, the `connect` handler, and the style objects — recreated on every render. Editing page metadata re-rendered the component, so `DeepChat` saw new prop references, rebuilt its input, and cleared the typed prompt. ## Change - Memoize `DeepChat` and pass stable references. - Move static props to module-scope constants. - Move the `connect` handler into `useCallback`; it reads the latest values via refs. - Back the `onComponentRender` gu… ### [feat(Drush): #3585531 Add commands to list, audit, and generate Canvas components](https://git.drupalcode.org/project/canvas/-/merge_requests/937) State: opened | Author: Matt Glaman (mglaman) | Branch: 3585531-provide-a-drush | 498 diff lines Description: ## Overview Adds Drush commands that mirror the component management screens at `/admin/appearance/component` and `/admin/appearance/component/status`. These give site builders and CI pipelines a scriptable way to inventory, audit, and regenerate Canvas components without the UI. ## Commands | Command | Alias | Purpose | |---------|-------|---------| | `canvas:component:list` | `canvas-component-list` | Inventory: every component config entity with its source, status, version count, and usage count. | | `canvas:component:status` | `canvas-component-status` | Compatibility verdict per compon… ### [Issue #3591737: Make foreign Drupal form textareas editable in Canvas by...](https://git.drupalcode.org/project/canvas/-/merge_requests/1299) State: opened | Author: Oleksandr Antonchyk (Anton4yk) | Branch: 3591737-non-canvas-foreign-drupal-form-textareas-rendered-inside-canvas-are-read-only-and-lose-their-default-value | 44 diff lines ### [Issue #3591735: AI CKEditor text format](https://git.drupalcode.org/project/canvas/-/merge_requests/1298) State: opened | Author: Oleksandr Antonchyk (Anton4yk) | Branch: 3591735-ckeditors-source-element-is-not-tagged-with-the-active-text-format-inside-canvas-breaking-modules-that-rely-on-cores-editor-atta | 23 diff lines ### [AI-generated.](https://git.drupalcode.org/project/canvas/-/merge_requests/797) State: closed | Author: Wim Leers (wimleers) | Branch: 3581133-automate-review-drupal-service-class-constant | 1259 diff lines Description: Closes #3581133 ### [#3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()"](https://git.drupalcode.org/project/canvas/-/merge_requests/1294) State: merged 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591733-remove-workaround-in-apilayoutcontrollergettesttestconfigtranslationavailabilitylinksandpermissions | 34 diff lines ### [Draft: #3492065 move to canvas repo](https://git.drupalcode.org/project/canvas/-/merge_requests/709) State: opened | Author: Ben Mullins (bnjmnm) | Branch: 3492065-concur-2026 | 6856 diff lines Description: Closes #3492065 ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [feat: #3567225 Allow per-node override of Content Template via checkbox in node selector](https://git.drupalcode.org/project/canvas/-/merge_requests/948) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3567225-allow-per-node-override | 261 diff lines Description: Closes #3567225 ## Summary Allows editing a Canvas layout on an individual node, overriding its Content Template. - A per-node Canvas editor (`/canvas/editor/node/{node}`) edits the node's own layout. - Field linking (dynamic prop sources) resolves against the node as the host entity. When editing a Content Template, the preview entity remains the host. - The Page Data panel is hidden in the per-node editor, and when `drupalSettings.canvas.hidePageDataPanel` is `TRUE`. - Prop-source suggestions are offered for node layouts, not only Content Templates. ## Changes - Back end: `ApiLayoutCont… ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: opened | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [Draft: Resolve #3586673 "Phpcs actually selectively exclude"](https://git.drupalcode.org/project/canvas/-/merge_requests/975) State: closed | Author: Wim Leers (wimleers) | Branch: 3586673-phpcs-actually-selectively-exclude | 44 diff lines Description: Closes #3586673 --- COMMITS (2w) --- - [40e36b73](https://git.drupalcode.org/project/canvas/-/commit/40e36b738bda6d61f89b2046c3638e6bd78b910f) fix: #3591693 Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't — Wim Leers (2026-06-18T18:27:48.000+00:00) - [e1d774dc](https://git.drupalcode.org/project/canvas/-/commit/e1d774dce626f085fe3a6900ce5c79559e00c782) fix: #3591699 Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config — Christian López Espínola (2026-06-18T17:31:54.000+00:00) - [64436738](https://git.drupalcode.org/project/canvas/-/commit/64436738b0d6d574681504ae038f5844ad55f102) feat(Data model): #3591678 Coalesce reference fields whose values are consumed only through nested objects — Christian López Espínola (2026-06-18T15:58:57.000+00:00) - [d35f9bfc](https://git.drupalcode.org/project/canvas/-/commit/d35f9bfc1adbdd0c391ef445d7f36de1c4e1d674) feat(Extensions): #3591662 Add "page" extension type for full-screen Canvas extensions — Lauri Timmanee (2026-06-18T10:03:49.000+00:00) - [df0a8cb5](https://git.drupalcode.org/project/canvas/-/commit/df0a8cb5afd09e359940a792237cc9f34d3109e5) fix: #3591705 languageSelect.spec.ts Failing in 1.x — Ben Mullins (2026-06-19T18:58:34.000+00:00) - [bc8d5e51](https://git.drupalcode.org/project/canvas/-/commit/bc8d5e51a3a70dc7c93d202e7fc96ccb3f7f93e0) chore(Project management): #3591706 Submodule info.yml core requirements are not in sync with canvas — Björn Brala (2026-06-19T15:37:28.000+00:00) - [57bbee31](https://git.drupalcode.org/project/canvas/-/commit/57bbee31c09079303fbaddeec1d0f774941bbc7b) fix(Data model): #3591702 Fatal error (AssertionError on dev env) in `ComputedUrlWithQueryString` when a component instance's image references a deleted file — Wim Leers (2026-06-19T14:01:40.000+00:00) - [89742436](https://git.drupalcode.org/project/canvas/-/commit/897424363cc2cc1421d313d7b653f83f956c4795) fix(Internal HTTP API): #3591689 `redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix — Narendra Singh Rathore (2026-06-19T09:30:52.000+00:00) - [f53362df](https://git.drupalcode.org/project/canvas/-/commit/f53362dfa8abd02ea52b72ac6a07b92a833c0997) fix: #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently — Matt Glaman (2026-06-19T08:56:44.000+00:00) - [c83c8ea9](https://git.drupalcode.org/project/canvas/-/commit/c83c8ea9df6f264215586a737842aef459bd565d) chore: #3591711 Add feature flag for content entity reference props — Bálint Kléri (2026-06-22T22:09:39.000+00:00) - [473091b4](https://git.drupalcode.org/project/canvas/-/commit/473091b4990a5c8b74ee96a4140465a9516de7c1) chore: #3591709 Update JS packages — Bálint Kléri (2026-06-22T19:58:27.000+00:00) - [91e94f01](https://git.drupalcode.org/project/canvas/-/commit/91e94f01cae3f42c13b96b2701e11b4f552f4332) feat(Conflict detection): #3585970 Add conflict detection and resolution UI for selective publishing behind dev flag — Ravi Maniyar (2026-06-22T19:29:27.000+00:00) - [784dc11d](https://git.drupalcode.org/project/canvas/-/commit/784dc11d67452bd6ff2dbc9866cb2800dc14dcdc) chore(Data model): #3591679 Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` — Christian López Espínola (2026-06-22T18:24:43.000+00:00) - [e309c612](https://git.drupalcode.org/project/canvas/-/commit/e309c612c59ca2c2db7d128d1d761305c6504300) fix: #3591708 Refactor `RequestTrait` to prevent request stack mutation during kernel tests — Feliksas Mazeikis (2026-06-22T17:15:45.000+00:00) - [066944b6](https://git.drupalcode.org/project/canvas/-/commit/066944b6fd9876bc63c6de0a463139adcc5f536a) feat: #3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content — Ben Mullins (2026-06-22T15:03:52.000+00:00) - [80d22442](https://git.drupalcode.org/project/canvas/-/commit/80d22442eb2abe03fae6b5e52ad4fd184eebf891) fix: #3591705 languageSelect.spec.ts Failing in 1.x - round 2 — Ben Mullins (2026-06-22T14:19:38.000+00:00) - [01e0a107](https://git.drupalcode.org/project/canvas/-/commit/01e0a1078ec678cdae76f8d1fa34f3e3a1519766) refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings — Christian López Espínola (2026-06-22T13:20:46.000+00:00) - [ee2145bb](https://git.drupalcode.org/project/canvas/-/commit/ee2145bbab8cce1bbeae987c61ce03b4ed89c28d) chore(CLI Tool): #3591707 Remove deprecated upload and download CLI commands — Bálint Kléri (2026-06-22T11:48:52.000+00:00) - [9710db13](https://git.drupalcode.org/project/canvas/-/commit/9710db13b853af42c6c54ace49949603a82d28c7) chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3 — Christian López Espínola (2026-06-24T02:02:10.000+00:00) - [16541050](https://git.drupalcode.org/project/canvas/-/commit/16541050a83d287963855aecb1536a6e753ce02b) feat(Auto-save,Internal HTTP API): #3591704 Only show default-language entities when reviewing auto-saved (pending) changes — Ted Bowman (2026-06-23T10:13:08.000+00:00) - [3ead0b35](https://git.drupalcode.org/project/canvas/-/commit/3ead0b35afc8c5a0f6445f767bee849cb3504f46) task(AI): #3591591 Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout — AKHIL BABU (2026-06-23T05:25:22.000+00:00) - [1e310ac5](https://git.drupalcode.org/project/canvas/-/commit/1e310ac5f738914698ea629281f7506c77c18a57) task: #3591654 Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context — Kunal Sachdev (2026-06-24T18:09:13.000+00:00) - [595b4dc1](https://git.drupalcode.org/project/canvas/-/commit/595b4dc19f98309910ee6e9987cab0af6af5abb8) chore(Data model): #3591726 Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible — Christian López Espínola (2026-06-26T02:30:30.000+00:00) - [47da2b21](https://git.drupalcode.org/project/canvas/-/commit/47da2b211e2078afdb511071b57358cccad2e2b1) chore(Conflict detection): #3591725 Put conflict detection behind a dev mode flag — Feliksas Mazeikis (2026-06-25T22:12:11.000+00:00) - [49f7adb9](https://git.drupalcode.org/project/canvas/-/commit/49f7adb95f192213d48b712762fc07666615aa1c) feat(Data model, translation): #3591596 Symmetric translation: component instance version updates must propagate to all translations — Wim Leers (2026-06-25T21:49:51.000+00:00) - [3c5876ae](https://git.drupalcode.org/project/canvas/-/commit/3c5876ae084ecc76665f2a0bbaf17d30bb055095) fix(autoSave, internalHttpApi): #3591729 Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan — Christian López Espínola (2026-06-25T20:09:09.000+00:00) - [8bf3d75f](https://git.drupalcode.org/project/canvas/-/commit/8bf3d75ff5edd885197515d4946faebf5662c2e1) fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints — Bálint Kléri (2026-06-25T17:36:42.000+00:00) - [2d14167b](https://git.drupalcode.org/project/canvas/-/commit/2d14167b78f237255d5f3b4e35c8ba7f84bf6239) fix(AI): #3591660 Canvas AI: Fix orchestrator UUID lost by setData(); add UUID recovery — Matt Glaman (2026-06-25T17:29:04.000+00:00) - [bade3e9d](https://git.drupalcode.org/project/canvas/-/commit/bade3e9d55d1c637e52defe5fa6edd3d900c2dc5) refactor(AI): #3591652 Canvas AI: replace hardcoded component source IDs with SOURCE_PLUGIN_ID constants — Abhishek Dhariwal (2026-06-25T11:48:03.000+00:00) - [fdfed34a](https://git.drupalcode.org/project/canvas/-/commit/fdfed34a8160828e134f0aa553bcbff59c8da8f0) chore(Project management): #3591746 Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 — Wim Leers (2026-06-29T17:39:11.000+00:00) - [6a5e9014](https://git.drupalcode.org/project/canvas/-/commit/6a5e90149b5aaa7e5d7c85cfdc1ae85499258b60) chore(Project management): #3591747 Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` — Wim Leers (2026-06-29T17:27:13.000+00:00) - [de13400a](https://git.drupalcode.org/project/canvas/-/commit/de13400afc6441e8fe2cee2083ea62511d7702e4) chore(Auto-save): #3591733 Remove workaround in `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` — Kunal Sachdev (2026-06-29T12:46:28.000+00:00) - [b217c5b6](https://git.drupalcode.org/project/canvas/-/commit/b217c5b6dd05c9e4aece2f9be95eeaa8963a4a75) feat(CLI Tool): #3591712 Clean up the output of all CLI commands — Bálint Kléri (2026-06-29T11:42:41.000+00:00) - [a1b781c2](https://git.drupalcode.org/project/canvas/-/commit/a1b781c2ad551443617d0ebfb1fbb53d7eeb6282) fix(AI): #3569120 Canvas AI: Expose Props of Blocks to the Agent — AKHIL BABU (2026-06-29T10:55:56.000+00:00) - [0d1f16ec](https://git.drupalcode.org/project/canvas/-/commit/0d1f16ece5c3c0f7e7d4e18e273492bd1e342d59) feat(Conflict detection): #3587526 Client side prevention of publishing — Ravi Maniyar (2026-06-29T10:16:05.000+00:00) - [8f2c22b3](https://git.drupalcode.org/project/canvas/-/commit/8f2c22b39e283d2984400d7ae3b18cfe1f7fef11) fix(AI): #3556922 Canvas AI: consolidate Canvas page field updates into a single preview update — AKHIL BABU (2026-06-29T09:05:59.000+00:00) - [7331869c](https://git.drupalcode.org/project/canvas/-/commit/7331869cfda6a5992aa57792194b6852914834cd) fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT — Christian López Espínola (2026-06-30T18:54:03.000+00:00) - [fceb6640](https://git.drupalcode.org/project/canvas/-/commit/fceb6640dabade7c10fe4a20186dc4a94ad2f1c4) fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings — Bálint Kléri (2026-06-30T18:19:31.000+00:00) - [c889e9aa](https://git.drupalcode.org/project/canvas/-/commit/c889e9aa851bc16bff55b562c580c8c75b6a352a) fix(Page builder): #3591744 Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s — utkarsh_33 (2026-06-30T15:55:56.000+00:00) - [a0b7c124](https://git.drupalcode.org/project/canvas/-/commit/a0b7c124d08475948e07687a6feb0141cd0dcd3e) chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push — Bálint Kléri (2026-06-30T15:20:45.000+00:00) - [c82c4811](https://git.drupalcode.org/project/canvas/-/commit/c82c4811ad0e275a8414762646bdd5ac63c2e378) chore(Project management): #3590840 Simplify `CODEOWNERS` further, but require extra scrutiny for MRs affecting data integrity — Wim Leers (2026-06-30T13:24:47.000+00:00) - [7c7a3694](https://git.drupalcode.org/project/canvas/-/commit/7c7a3694c12439bb4ef60a6b9ba0f762e64f8814) fix(AI): #3584136 Canvas AI - update canvas_component_agent prompt and tools to support slots, restrict imports, dynamic prompts, and fix error messages — Ahmad Khalil (2026-06-30T12:41:10.000+00:00) - [c941c0b2](https://git.drupalcode.org/project/canvas/-/commit/c941c0b2580246264f652b8a7a5ff536173543c2) chore(Project management): #3591753 DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` — Wim Leers (2026-06-30T11:35:57.000+00:00) ======================================================================== ## [64] summariseModule:ai_context:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar) [2], Ahmad Khader (Ahmad-Khader) [1], Anikó Viola (violaniko) [1], Daniel Rodriguez (danrod) [1], Eric Homanchuk (erichomanchuk) [1], Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [2], Kristen Pol (kepol) [9], Matt Glaman (mglaman) [5], Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Rob Loach (robloach) [2], Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                          Context Control Center (CCC)

                                                                                                          then use

                                                                                                          ,

                                                                                                          ,

                                                                                                            /
                                                                                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                            tags. After the project summary prose, add a single subsection titled "

                                                                                                            How can I help on this project?

                                                                                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Create Learners Club CCC presentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586266) State: opened | Updated: 2026-06-19 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: ## Summary Present on CCC at the Learners Club meeting 26 June 2026. ## Tasks - [ ] Create slides - [ ] Present and Q&A - [ ] Send slides ### [Create Bluefly CCC presentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586265) State: opened | Updated: 2026-06-19 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: ## Summary Present on CCC at the Bluefly meeting 19 June 2026. ## Tasks - [ ] Create slides - [ ] Present and Q&A - [ ] Send slides ### [Automated Drupal 12 compatibility fixes for ai_context 1.0.x-dev](https://git.drupalcode.org/project/ai_context/-/work_items/3586269) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, category::feature, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !187 [Issue #3586269: Fix linting.](https://git.drupalcode.org/project/ai_context/-/merge_requests/187) | State: closed | Author: Kristen Pol (kepol), 422 diff lines Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Add context settings validation: max_global_items must not exceed max_items](https://git.drupalcode.org/project/ai_context/-/work_items/3586272) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !181 [Issue #3586272: Add validation that max_global_items cannot exceed max_items](https://git.drupalcode.org/project/ai_context/-/merge_requests/181) | State: merged 2026-06-23 | Author: Matt Glaman (mglaman), 1831 diff lines Description: **Follow-up to:** #3580910+s ## Problem General settings (`ai_context.settings`) and per-agent overrides (`ai_context.agents`) expose two related limits: - **Max global context items** (`max_global_items`, range 0–10) - **Max context items to inject** (`max_items`, range 1–20) Each field is validated independently (`Range` in schema; `#min`/`#max` on forms). Nothing enforces that `max_global_items max_items` is rejected with a clear validation message. - [ ] Importing config with the same invalid combination fails validation. - [ ] Per-agent overrides reject `max_global_items > max_item… ### [Create Document Loader submodule for CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586275) State: closed | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !176 [Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports.](https://git.drupalcode.org/project/ai_context/-/merge_requests/176) | State: merged 2026-06-21 | Author: Kristen Pol (kepol), 1571 diff lines Description: ## Problem/motivation Follow up to: - #3586247+s - #3586228+s ## Solution Create a submodule for document loader, e.g. ai_context_document_loader. Have it support the following in MDXEditor: - PDF - Text/MD - URL (singular) We might be able to get it set up so that we have one module and use progressive enhancement where if they add a module dependency then it just shows up. ## Tasks - [x] Finalize approach - [x] Update code - [ ] Review and test ### [Create GitLab issue and merge request templates for ai_context project](https://git.drupalcode.org/project/ai_context/-/work_items/3586155) State: closed | Updated: 2026-06-21 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !182 [Issue #3586155: Add GitLab issue and merge request templates](https://git.drupalcode.org/project/ai_context/-/merge_requests/182) | State: merged 2026-06-18 | Author: Matt Glaman (mglaman), 441 diff lines Description: Need to have our issue templates again! Copy ai core ones: https://git.drupalcode.org/project/ai/-/tree/1.x/.gitlab/issue_templates?ref_type=heads https://git.drupalcode.org/project/ai/-/blob/1.x/.gitlab/merge_request_templates/Default.md?ref_type=heads ### [Update max context items in general settings](https://git.drupalcode.org/project/ai_context/-/work_items/3586212) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: Follow up to: #3573715 ## Problem/motivation "Increase Max context items to inject default from 5 to 10. The current default is conservative for a system designed around bundling small, focused Context Items. A single text-editing task could reasonably want Brand Guidelines, Tone & Voice, Vocabulary, Content Structure, and Page Building rules to all apply, which already hits 5. Defaulting to 10 gives breathing room without being unbounded." ## Solution Update default to 10 and max to 20. ## Tasks - Update code - Review and test ## AI usage disclosures - [ ] AI assisted issue - [x] AI … ### [Update overview page description and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586252) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !170 [Issue #3586252: Update overview page help text and docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/170) | State: merged 2026-06-18 | Author: Kristen Pol (kepol), 214 diff lines Description: ## Summary Follow-up to: #3586240 ## Problem/motivation We need to make it clear what the overview page is for and make sure the docs are accurate. ## Solution Here's the [plan](https://git.drupalcode.org/-/project/191993/uploads/31ff8d2aa08ea8c961bcc986ea482fdd/overview-page-settings-docs-ui.md). ## Tasks - Refine UI/docs wording from plan if needed - Update code - Review and test ## AI usage - [x] AI assisted issue (for the plan) - [x] AI generated code ### [Create SECURITY.md file for AI Context (CCC)](https://git.drupalcode.org/project/ai_context/-/work_items/3586267) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !179 [Issue #3586267: Added SECURITY.md file](https://git.drupalcode.org/project/ai_context/-/merge_requests/179) | State: merged 2026-06-18 | Author: Daniel Rodriguez (danrod), 50 diff lines Description: ## Problem/motivation Need a SECURITY.md file so people know how to report security issues. ## Solution Copy the [one from AI core](https://git.drupalcode.org/project/ai/-/blob/0463789bab1680a69523b37108cee5b04f89fff6/SECURITY.md). ## Tasks - Update code - Review ### [Clarify Context scope: Tags in documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586270) State: closed | Updated: 2026-06-21 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !183 [Issue #3586270: Document how the Tag scope works](https://git.drupalcode.org/project/ai_context/-/merge_requests/183) | State: merged 2026-06-21 | Author: Matt Glaman (mglaman), 36 diff lines Description: How exactly is the Tags scope supposed to work? The [Documentation](https://ai-context-b13f05.pages.drupalcode.org/features/scopes/) isn't really fleshed out as far as I can tell and I'm having a difficult time figuring out (without diving into code) how they work. What I'm assuming is that I can add terms to the _AI Context Tags_ vocabulary and then add reference field(s) to the same vocabulary on content entities. Then, when using AI on the content entity, the proper Context items will be used for the content entity based on the _AI Context Tags_ terms added to it? Do I have this about righ… ### [UX improvements on new context listing page](https://git.drupalcode.org/project/ai_context/-/work_items/3586274) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation Follow up to: #3586219 Pasting from UX review call on 17 June: 1. Collapse Use Cases and Scope columns Order pills in order shown on the edit page (e.g. Use Cases first) 2. Filters - Remove Use Cases filter - Change how Scope filter works - One dropdown with the scope names, e.g. Use Cases, Site Sections, etc (ordered by order on edit page) - Dropdown defaults to "All" - Second dropdown that shows the values from what you choose from first drop down - All shows all values like now - if you choose a specific scope name, then it will restrict to that one, e… ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: closed | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !151 [Issue #3586220: Add single context item display.](https://git.drupalcode.org/project/ai_context/-/merge_requests/151) | State: merged 2026-06-30 | Author: Eric Homanchuk (erichomanchuk), 6124 diff lines Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [hook_ai_context_scope_values_alter() is not honored in scope value forms](https://git.drupalcode.org/project/ai_context/-/work_items/3586246) State: closed | Updated: 2026-06-26 | Author: Joshua Fernandes (joshua1234511) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !177 [Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms](https://git.drupalcode.org/project/ai_context/-/merge_requests/177) | State: merged 2026-06-23 | Author: Ahmad Khader (Ahmad-Khader), 1074 diff lines Description: ## Problem/Motivation While integrating ai_context into the AI Empathy Evaluation module (#3583739, built on the convenience API from #3584838), the main friction was extending scope values. A downstream module that wants to add a custom value — e.g. an "empathy_evaluation" use case — has no working extension point. hook_ai_context_scope_values_alter() looks like the intended mechanism, but it is only invoked in AiContextScopeManager::getAllScopeValues(), and nothing in the module consumes getAllScopeValues(). The scope subscription UI (AiContextAgentForm) and the context item form (AiContex… ### [Move scheduler feature to submodule or progressive enhancement](https://git.drupalcode.org/project/ai_context/-/work_items/3577429) State: closed | Updated: 2026-06-27 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !178 [Issue #3577429: Make Scheduler an optional progressive feature.](https://git.drupalcode.org/project/ai_context/-/merge_requests/178) | State: merged 2026-06-27 | Author: Matt Glaman (mglaman), 1163 diff lines Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !92 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3569967: [Discuss] Figure out which CCC features can be optional for MVP We are trying to reduce the number of dependencies for ai_context. The scheduler is one dependency that not e… ### [Create list of modules and configuration steps for how to integrate CCC with Document Loader MDXEditor submodule](https://git.drupalcode.org/project/ai_context/-/work_items/3586228) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3569310 We want to allow users to use a source for their markdown (e.g. MD, PDF, text file, URL). Document Loader has integrated with MDXEditor to make this easy: [#3580850](https://www.drupal.org/project/document_loader/issues/3580850) This has been fixed and there's a new release (2.0.1) that includes it. ## Solution Create explicit step-by-step instructions within this issue (not code) on how to integrate with Document Loader including the list of additional plugin modules, so we can add context from these four sources: MD, PDF, text file, and URL… ### [Show this overview page checkbox is misaligned on vanilla Drupal 11](https://git.drupalcode.org/project/ai_context/-/work_items/3586260) State: closed | Updated: 2026-06-18 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !180 [Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11"](https://git.drupalcode.org/project/ai_context/-/merge_requests/180) | State: merged 2026-06-18 | Author: Juan Correa (jucs7), 13 diff lines Description: ## Problem Show this overview page checkbox is misaligned on vanilla Drupal 11 ## Solution Fix it without breaking it on Drupal CMS. ## Tasks - Update code - Test and review ### [[Discuss] Extensible "role" architecture for context items (examples, rubrics, and future types)](https://git.drupalcode.org/project/ai_context/-/work_items/3586273) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 12, AI Sprint 13 Description: Follow up to: #3586250+s ## Problem/motivation In [#3584775] we removed `AiContextItemType` and made `ai_context_item` bundleless, concluding that bundles exist for entities that need *different fields*, and that the proposed good/bad example use case is a same-schema distinction (see also the [Discuss] thread on context item bundles). The agreed direction was: model the distinction as a field, provide UX separation via dedicated creation forms, and revisit bundles only if a genuinely distinct-fields requirement appears. This follow-up is about doing that well rather than ad hoc. The conte… ### [Provide test context items for testing CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586244) State: closed | Updated: 2026-06-26 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !185 [Issue #3586244: Add example context items from the Chicago Driesnote demo.](https://git.drupalcode.org/project/ai_context/-/merge_requests/185) | State: merged 2026-06-23 | Author: Anikó Viola (violaniko), 915 diff lines Description: ## Problem/motivation **Note that this issue evolved from what Mike was thinking (context items you could start with and tweak) to dummy/test context items to play with. The latter was implemented in this issue already, so the title has been updated, and we'll create a new issue for the former feature.** ### Original title Provide example context items ### Original problem/motivation It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to pr… ### [Document supported vs internal CCC APIs](https://git.drupalcode.org/project/ai_context/-/work_items/3586241) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !186 [Issue #3586241: Document Supported vs Internal APIs](https://git.drupalcode.org/project/ai_context/-/merge_requests/186) | State: merged 2026-06-21 | Author: Rob Loach (robloach), 389 diff lines Description: ## Summary Follow-up to: #3586169 AI Context needs a module-wide developer doc that defines the stable public surface vs internal implementation details. Issue `#3586162` documents the **selection extension model** (pipeline events, no service decoration), but that covers only one slice of the module. **Goal:** Add a clear public/internal boundary in developer docs so contrib and site builders know what they can rely on without reading selector internals. ## Solution **Public (document as supported):** - `AiContextRequestFactory` and `AiContextRequest` / `AiContextResult` - Selector pipe… ### [Conditional Subcontext Provider Calls](https://git.drupalcode.org/project/ai_context/-/work_items/3586207) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !166 [Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache.](https://git.drupalcode.org/project/ai_context/-/merge_requests/166) | State: merged 2026-06-23 | Author: Abhisek Mazumdar (abhisekmazumdar), 1902 diff lines - MR !194 [Issue #3586207: Ignore conditional context when disabled.](https://git.drupalcode.org/project/ai_context/-/merge_requests/194) | State: opened | Author: Kristen Pol (kepol), 1376 diff lines Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ _**Assess if this should be pre-RC1 or post-1.0 and move for the latter**_ `AiContextSubcontextResolver::resolveConditionalChildren()` can make one synchronous provider `chat()` call per selected parent that has conditional children. This may dominate agent latency and provider usage compared with normal selection and rendering. Treat this as RC1 work if conditional subcontext is part of the RC1 product promise. If it is advanced functionality, it can be deferred… ### [Update subcontext feature description and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586251) State: closed | Updated: 2026-06-20 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !169 [Issue #3586251: Update subcontext feature help text and docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/169) | State: merged 2026-06-20 | Author: Kristen Pol (kepol), 423 diff lines Description: ## Summary Follow-up to: #3586240 ## Problem/motivation We need to make it clear what the benefits and tradeoffs are for the subcontext feature and make sure the docs are accurate. ## Solution Here's the [plan](https://git.drupalcode.org/-/project/191993/uploads/45ca4af32312853086bc31d9151563f7/subcontext-settings-docs-ui.md). ## Tasks - Refine UI/docs wording from plan if needed - Update code - Review and test ## AI usage - [x] AI assisted issue (for the plan) - [x] AI generated code ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, category::task Description: ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 1467 diff lines Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… ### [Sprint 12 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586277) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 13 to 26 June 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Description Blocked by: #3586295+s ### Summary The scope plugin API was asymmetric: read and match were abstracted, but write, clear, index, cleanup, form integration, and save-time validation leaked storage details into callers. `AiContextItemForm`, entity presave, `hook_entity_delete()`, and `AiContextScopeIndexService` contained special cases — especially the `target_entities` DER field — that would repeat for every new scope. This issue completes the scope plugin value lifecycle contract before RC1. Callers delegate to `AiContextScopeManager` and scope plugins; custom storage (targ… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow up to: #3586198+s Blocked by: #3586243+s We do not have a scope plugin that allows associated context with the terms for content entities. Example: * Article **has terms**: foo, bar, hello * Blog post **has terms**: foo, whatever * One context item **has term**: foo * Another context item **has terms**: foo, bar * I'm on the article page, both context items should be relevant * I'm on the blog post, only the second context item should be relevant ## Solution Create a taxonomy scope plugin. The UI should be something like: * Vocabulary ABC \[textbox multis… ### [Review and update CCC permissions](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Follow-up to: #3563036+s Let's revisit this after beta3 is created: #3586295+s Permissions need to be revisited to see what's missing and what should be added. This would need to happen prior to full QA: #3573716+s ## Proposed resolution Review permissions, figure out what to add, and add them. ## Target date or deadline July 2026 ## Remaining tasks - Review existing perms - Figure out what's missing - Add perms - Review and test ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined… ### [Introduce explicit scope types and item inclusion modes; clarify selection in UI and docs](https://git.drupalcode.org/project/ai_context/-/work_items/3586281) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: - #3586243+s - #3586270+s - #3586196+s Blocked by: #3586243+s _**The two decisions still worth locking before this lands: **(1)** `type` derived vs declared, and **(2)** Entity bundle's default inclusion mode.**_ **Builds on (must land first):** #3586243+s — the scope plugin persistence API and capability-flag refactor. **Keep in mind when architecting:** #3586197+s — boundaries / exclusions builds on this. Beta feedback shows site builders don't have an accurate mental model of how context **scopes** decide what actually reaches an agent's prompt. After #35862… ### [Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/work_items/3586280) State: closed | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !203 [Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/merge_requests/203) | State: merged 2026-06-30 | Author: Juan Correa (jucs7), 217 diff lines Description: ## Description _**Verify the issue problem and solution before proceeding.**_ Drupal 11.3 deprecates kernel test classes that do not declare the PHPUnit `#[RunTestsInSeparateProcesses]` attribute. From Drupal 12.0, missing the attribute will throw an exception ([change record](https://www.drupal.org/node/3548485)). The ai_context module currently has **4 of 39** kernel test classes with the attribute: - `AiContextChildrenServiceTest` - `AiContextItemFormGlobalCountTest` - `AiContextTextFieldMigrationTest` - `AiContextUpdate10010Test` The remaining **35** kernel test classes need: ```php … ### [Fix eslint errors in GitLab UI even when pipeline is green](https://git.drupalcode.org/project/ai_context/-/work_items/3576093) State: closed | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !197 [Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green.](https://git.drupalcode.org/project/ai_context/-/merge_requests/197) | State: merged 2026-06-28 | Author: Kristen Pol (kepol), 130 diff lines Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !99 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Although the pipeline passes with no eslint issues, there are still failures shown on the test summary, e.g. https://git.drupalcode.org/project/ai_context/-/merge_requests/71 Test summary: 3 failed… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-06-21 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Sprint 10, AI Sprint 11 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - June 18: Beta3 release - July TBD: RC1 release - July TBD: 1.0 release --- ## Remaining tasks Milestones have the issues (both… ### [Provide real sample context items for end user use](https://git.drupalcode.org/project/ai_context/-/work_items/3586279) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Spin off from: #3586244+s Pulling the info from the other ticket. --- It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to provide a recipe for example content items (similar to this for AI Guardrails: https://www.drupal.org/project/ai_recipe_guardrails_pii) As I'm learning to use the module, I find that I have to spin up an instance of https://www.drupalforge.org/template/driesnote-chicago in order to see some type… ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-06-28 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, AI UX Description: Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deliver more accurate, relevant results. to > Context Control Center (CCC) helps Drupal AI **agents** use your content, rules,… ### [Test AI Best Practices skills on AI Context codebase](https://git.drupalcode.org/project/ai_context/-/work_items/3586258) State: closed | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation We have a project with skills (among other things) to help with Drupal coding called [AI Best Practices](https://www.drupal.org/project/ai_best_practices). AI Context (CCC) development heavily uses AI assigned and generated code. It may benefit from using the best practice skills. Right now there are these skills: - drupal-accessibility - drupal-automated-testing - drupal-configuration - drupal-expert-corrections - drupal-gitlab - drupal-render-pipeline - drupal-writing-documentation ## Solution Install skills from AI Best Practices and run a through code review with… ### [Copy and layout updates on context item scope form](https://git.drupalcode.org/project/ai_context/-/work_items/3586284) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !189 [Issue #3586284: Clarify context item scope form copy and layout.](https://git.drupalcode.org/project/ai_context/-/merge_requests/189) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 163 diff lines Description: ## Problem/motivation Follow-up to: #3586196+s **_Note that some of these things may have already been implemented in separate issues._** The **Context Scope** section on the context item edit form needs a few small copy and layout tweaks: clearer help text, less clutter, and a more logical order for the summary badges. No matching logic or scope model changes — just form presentation. ## Solution ### Context item form - [x] Remove the **Context Scope Settings** link from the section description. - [x] Update the section description to: > Control when this context item is included. … ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 10, AI Sprint 11 Description: ## Problem/motivation Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logic Could be a dropdown per scope item: - None (neutral/default) - Include… ### [[Discuss] Context scope matching semantics: additive OR, filters, and UX clarity](https://git.drupalcode.org/project/ai_context/-/work_items/3586196) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586195 Scope subscriptions are additive. If you subscribe to use case = "working with text" and tag = "campaign", you will get context items that are scoped to either of these. Meaning, the context item doesn't need *both* of them to be relevant. ## Solution - Review existing docs and update as needed - Review UI text and consider clarifying this to the user ### [Finalize Context Importer naming and review Extensions page UI/UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586283) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !188 [Draft: Issue #3586283: Finalize Context Importer and Extensions page.](https://git.drupalcode.org/project/ai_context/-/merge_requests/188) | State: opened | Author: Kristen Pol (kepol), 77 diff lines Description: ## Description Follow-up to: #3586275+s Required for: #3586282+s ### Summary [#3586275](https://www.drupal.org/project/ai_context/issues/3586275) introduced the `ai_context_document_loader` submodule and a reworked **Settings → Extensions** page (`/admin/config/ai/context/settings/extensions`). Initial UX feedback has been considered, but needs refinement. For now, the submodule has been renamed from “Document Loader: Markdown Importer” to **“Document Loader: Context Importer”**. Before the submodule stabilization follow-up (experimental → stable) (#3586282), we need a focused pass to *… ### [Promote Document Loader: Context Importer from experimental to stable](https://git.drupalcode.org/project/ai_context/-/work_items/3586282) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: - #3586275+s Blocked by: - canvas#3575644+s ### Summary The `ai_context_document_loader` submodule (Document Loader: Context Importer) is currently marked `lifecycle: experimental`. The initial integration work is largely complete: upstream dependencies are on stable constraints (`document_loader:^2.0.3`, `ai_file_to_text:^1.0`), and temporary Document Loader Composer patches have been removed. Before removing the experimental lifecycle flag, we should close out documentation, testing, and install-behavior follow-ups. The Canvas StringLongItemOverride patch … ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow-up to: #3586192 _**Verify the issue problem and solution before proceeding.**_ ## Title **AI Context: Consistency / DX cleanup (final, constructor promotion, snake_case locals, service interfaces)** --- ## Description Follow-up to #3586192 / naming & DX review. Addresses the remaining **consistency / DX** items that were explicitly out of scope for the naming MR. **No functional or API behavior changes** — style, clarity, and maintainability only. ### Background The naming/DX MR covered route/permission renames, dead code removal, `new self` in final classes, and snake_case fix… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Allow scope plugins to declare an optional icon for UI display](https://git.drupalcode.org/project/ai_context/-/work_items/3586262) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586220+s Blocked by: #3586243+s ### Summary Scope plugins are shown in several places across `ai_context` (and will likely appear in more over time). Today, when an icon is shown at all, it is hard-coded in the view layer — e.g. `AiContextItemViewBuilder::SCOPE_ICON_CLASSES` for the context item **Details** sidebar — with a generic funnel fallback for unknown plugins. This issue adds an **optional, plugin-level icon** on `AiContextScope` plugins so each scope can define a consistent visual identity wherever that plugin is rendered, without patching core ma… ### [Clean up bundleless context item follow-ups](https://git.drupalcode.org/project/ai_context/-/work_items/3586261) State: closed | Updated: 2026-07-01 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !198 [Issue #3586261: Clean up bundleless context item follow-ups.](https://git.drupalcode.org/project/ai_context/-/merge_requests/198) | State: merged 2026-07-01 | Author: Kristen Pol (kepol), 165 diff lines Description: Follow-up to: - #3584775+s - #3586220+s ## Description Follow-up after bundle removal (#3584775) and the context item full view MR (#3586220). Most bundle-less reconciliation was already on `1.0.x`; this MR closes the remaining gaps found during review. ## Changes ### 1. Drop bundle theme suggestions `hook_theme_suggestions_ai_context_item()` now adds only view-mode suggestions (e.g. `ai_context_item__full`). Removed bundle-based suggestions that referenced `$entity->bundle()`. ### 2. Fix context item edit form field order **Root cause:** `purpose` and `content` both used form weight `… ### [Add opt-in AiContextSelectionDiagnostics to selection results](https://git.drupalcode.org/project/ai_context/-/work_items/3586242) State: opened | Updated: 2026-06-22 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow up to: #3586169 Contrib and site debugging today rely on watchdog/`debug_logging` config, which is global, noisy, and can log sensitive task text. We need structured, **opt-in** selection diagnostics on the result object for preview tools, Drush commands, and developer UI — without leaking context content. **Goal:** When diagnostics are requested, `AiContextSelector::select()` accumulates a structured breakdown and exposes it on `AiContextResult`. ## Solution **Proposed API:** - `AiContextRequest::withDiagnostics(bool $enabled = TRUE)` (or equivalent factory/builder opt… ### [Recruit CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Note that Mike Anello (ultimike) is beta testing, but we will try to recruit more after beta3 is created: #3586295+s We want more beta testers. This issue was created for this: #3586234+s ## Solution Promote this in various channels: - Slack - LinkedIn - Planet Drupal? ## Tasks - ~~Create issue with resources~~ - ~~Post in the relevant Slack channels (ai, ai-contrib, ai-context, ai-partner-contributors)~~ - Create a blog post and/or LinkedIn post to promote ### [Gather CCC contribution stats for code and non-code contributions for release notes](https://git.drupalcode.org/project/ai_context/-/work_items/3586222) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The current tools for generating release notes are inadequate as they only focus on code commits. They also require the issue number to be in the commit message. I want to gather the stats for all contributors for a release including non-code contributions which there are many. ## Solution The result for release notes should be something like: ``` New Features * one * two Bug Fixes * one * two Tasks * one * two Non-Code Contributions * number of issues? Contributors: kristen pol (35), afoster (8), emma horrell (6), scott falconer (6), mglaman (3)... salsa (35),… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow up to: #3586194+s It would be good to get these in before this one: - #3586218+s - #3586292+s ## Problem/motivation Conditional subcontext logic needs to be fine-tuned. See related issue above. ## Solution Add the subcontext as an "index" to the parent when asking the LLM which conditional subcontext items are good to include. See issue above for some possible structure. Fill out more details here as this is thought through more. ## Tasks - Review existing logic and test - Document current workflow as needed - Define subcontext index format - Define the LLM workflow - Implement… ### [Inject context into ai_ckeditor requests](https://git.drupalcode.org/project/ai_context/-/work_items/3581955) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !116 [Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools.](https://git.drupalcode.org/project/ai_context/-/merge_requests/116) | State: opened | Author: Jesse Hofmann-Smith (jessehs), 479 diff lines Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !116 >>> Problem/Motivation The ai_context module cannot inject scope-matched context items into ai_ckeditor AI requests because ai_ckeditor bypasses the ai_agents pipeline (and its BuildSystemPromptEvent) entirely — it calls the AI provider directly in its own streaming controller. There is no event or hook point for ai_context to intercept. This issue is the ai_context companion to the ai_ckeditor entity context and event extensibility work tracked in the drupal/ai module issue queue. … ### [CCC beta / pre-rc1 community testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586234) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Michael Anello (ultimike) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Problem/motivation We want to get feedback from the community on CCC as we want to lock down our features soon so we can release rc1 and ultimately 1.0 soon. ## Solution Recruit CCC testers to help with this. ## Resources - [Project page](https://www.drupal.org/project/ai_context) - [Setup instructions](https://www.drupal.org/project/ai_context#install-testing-steps) - [Documentation](https://git.drupalcode.org/project/ai_context/-/tree/1.0.x/docs?ref_type=heads) - [NYC AI summit session](https://drupal.tv/events/drupal-ai-summit-new-york-city-2026/context-driven-ai-consistent-complian… ### [Evaluate empathy CCC integration](https://git.drupalcode.org/project/ai_context/-/work_items/3586249) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/motivation This is one of the first integrations with CCC: - https://www.linkedin.com/posts/joshua1234511_sharing-a-piece-of-work-i-recently-contributed-ugcPost-7466753343944724480-Rayx/ - https://www.drupal.org/project/ai_empathy ## Solution Review and test this, and see if this can inform the roadmap. ## Tasks - Read article - Test module - Review module code - Add thoughts - Create follow-up issues as needed ### [`hook_ai_context_scope_values_alter()` is ignored by scope forms and labels](https://git.drupalcode.org/project/ai_context/-/work_items/3586286) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: blocker::stable, category::bug, priority::major, state::accepted Description: ## Problem/Motivation `hook_ai_context_scope_values_alter()` is documented (in `ai_context.module` and `docs/developers/hooks.md`) to alter scope values "for display in forms or for matching." In practice it does neither. The alter is only invoked in `AiContextScopeManager::getAllScopeValues()`, which no form or resolver calls: - **Forms** (`AiContextItemForm`, `AiContextAgentForm`) build scope widgets via `$plugin->buildValueForm()`, which reads raw `AiContextScopeBase::getValues()` — the alter never runs. A value added by the hook (e.g. a custom `use_case`) cannot be selected in the UI. -… ### [Add Configure Link in Modules Page](https://git.drupalcode.org/project/ai_context/-/work_items/3586285) State: closed | Updated: 2026-06-25 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !190 [Issue #3586285: Add configure links to Context Control Center.](https://git.drupalcode.org/project/ai_context/-/merge_requests/190) | State: merged 2026-06-23 | Author: Rob Loach (robloach), 24 diff lines Description: ## Summary On the module page, add a Configure link on the Context Control Center. ## Problem When you look at the module page, it's nice to have Configure links for each module, because then you can get to the pages quickly in a standard UX pattern. ## Proposed solution *(optional)* Add the Configure links on the Context Control Center modules. ## Workaround *(optional)* Visiting `admin/index` and finding the link from there. ## Affected functional areas *(optional)* Administration UI > [!note] > Check the one that best describes your usage, or leave all unchecked if AI was … ### [No public API for building scope subscription forms; consumers must depend on the internal scope manager](https://git.drupalcode.org/project/ai_context/-/work_items/3586287) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !191 [Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager.](https://git.drupalcode.org/project/ai_context/-/merge_requests/191) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 667 diff lines Description: ## Problem/Motivation There is no supported way for a contrib module to render a scope-subscription UI (the "subscribe to these scope values" widget) outside of an AI agent. The only mechanism is `plugin.manager.ai_context_scope`, which `docs/developers/api-stability.md` explicitly lists as **internal**. As a result, any non-agent consumer that wants per-entity scope subscriptions must reimplement the logic already living in `AiContextAgentForm`: - iterate `getScopePlugins()`, skip disabled / `!supportsSubscriptions()` plugins, - call `buildValueForm(..., for_subscription: TRUE)` per plugin… ### [[Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations](https://git.drupalcode.org/project/ai_context/-/work_items/3586289) State: opened | Updated: 2026-06-30 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: #3586257+s ## Problem We built an external RAG integration on top of CCC (AI Knowledge Connector — a vector store + semantic retrieval module for Drupal 11) and hit three specific API gaps that currently require workarounds. We're raising these before rc1 so the team can evaluate whether a formal API would be worth adding to make the integration pattern stable and documented for the ecosystem. The current workaround path works (we're using `BuildSystemPromptEvent`) but it's fragile across agent types, bypasses CCC's token limit logic, and gives no observability … ### [Update core_version_requirement for all CCC submodules to be same as parent module](https://git.drupalcode.org/project/ai_context/-/work_items/3586288) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !192 [Issue #3586288: Update submodule requirements.](https://git.drupalcode.org/project/ai_context/-/merge_requests/192) | State: merged 2026-06-23 | Author: Kristen Pol (kepol), 38 diff lines Description: ## Problem/motivation grep -r core_version_requirement . ./tests/modules/ai_context_test_scope_values/ai_context_test_scope_values.info.yml:core_version_requirement: ^10.4 || ^11 ./tests/modules/ai_context_test/ai_context_test.info.yml:core_version_requirement: ^10.5 || ^11.2 ./tests/modules/ai_context_test_scope/ai_context_test_scope.info.yml:core_version_requirement: ^10.3 || ^11 ./tests/modules/ai_context_test_support/ai_context_test_support.info.yml:core_version_requirement: '^10.4 || ^11' ./tests/modules/ai_context_test_items/ai_context_test_items.info.yml:core_version_requirement: ^10.5… ### [Test Chicago Driesnote repo with cheaper models](https://git.drupalcode.org/project/ai_context/-/work_items/3586221) State: closed | Updated: 2026-06-23 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation The Chicago Driesnote demo videos were recorded with Open AI for Vector DB and Opus 4.6 for everything else. Opus 4.6 is expensive. It can cost $1 to $2 USD to create a page. We want to see if cheaper models can produce okay results. ## Solution Test with smaller/cheaper models and post results. ## Tasks - [x] Set up demo environment - [x] Test with 2 or 3 cheaper/smaller models - [x] Post results ### [Avoid Full Published-ID Scans Before Scope Prefiltering](https://git.drupalcode.org/project/ai_context/-/work_items/3586206) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ `AiContextSelector::getPrefilteredPublishedItemIds()` loads all published item IDs before applying `AiContextScopeIndexService::getItemIdsByScope()`. That means scoped agent selection can still begin with a full-catalog ID query and a large in-memory ID array, even though the scope index exists to narrow the candidate set. This should be fixed before RC1 because the common subscribed-agent path should scale with the matching scope set, not the total published cont… ### [CCC beta3 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586182) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/Motivation Planning issue for beta3 release See the [milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues ) for all issues. Key must have issues are listed here. --- ## Proposed Resolution **Many issues were already closed and noted here:** - #3567798: META CCC MVP 1.0 roadmap - #3577644: CCC beta1 release planning - #3585902: CCC beta2 release planning **These are the ones below have been the focus since 11 May 2026 for beta3.** --- ### Must haves _Note: Ones marked with `(*)` could be done in beta4._ #### Blocked - N/A #### Todo - #3586… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: opened | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, category::task Description: ## Problem/motivation We want beta testers, but we need to give them more info on how to get started. ## Solution Update the home page with some more information: - Links to session videos (suggest they watch one) - Link to DrupalCon Chicago Driesnote demo (they can use it and it will have example context to play with) - Point to the readme and docs - Point to how to create a support issue or bug ## Tasks - Gather session videos - Gather other links - Create a section on project page for beta testers - Add the videos and links ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [CCC Usage Tracking Query/Save Pattern](https://git.drupalcode.org/project/ai_context/-/work_items/3586209) State: closed | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !174 [Issue #3586209: Batch N+1 queries in AiContextUsageTracker](https://git.drupalcode.org/project/ai_context/-/merge_requests/174) | State: merged 2026-06-24 | Author: Abhisek Mazumdar (abhisekmazumdar), 1032 diff lines Description: ## Problem/motivation Follow-up to: #3586202 _**Verify this is still an issue and the solution approach before proceeding**_ _**Assess if this should be pre-RC1 or post-1.0 and move for the latter**_ `AiContextUsageTracker::recordUsage()` performs per-context entity query/load/save work. `attachEntity()` and `recordToolUsed()` can add additional loads and saves for all usage rows tied to a runner. This runs on the agent prompt path when tracking is enabled. Treat this as RC1 work if usage tracking is expected to be enabled in production by default or used heavily during RC1. ## Soluti… ### [Add webpage (URL) context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574414) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3547034: [Spike] Research URL support for CCC This requires a UX discussion before we work on it. Proposed resolution Review #3547034: [Spike] Research URL support for CCC, discuss UX options, pick … ### [Add MD context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574928) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We want to upload MD files as context. Proposed resolution Discuss, scope, and implement Target date or deadline Post-Chicago Remaining tasks Discuss and align Scope feature Update code Review and test AI usage … ### [Add PDF context source plugin to CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3574413) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Follow-up to: #3547035: [Spike] Research PDF upload support for CCC Ability to use PDF to source context. This requires a UX discussion before we work on it. Please take a look at comment #34 of that issue. Propos… ### [Store the context source file or URL when using document loader](https://git.drupalcode.org/project/ai_context/-/work_items/3586291) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::normal, state::postponed, what::code Description: ## Summary Follow-up to: - #3569310+s - #3586275+s We can load context content from files and URLs now. We still would like to track the source document for reference. ## Problem We don't track the source document when loading context content via document loader (mdxeditor load document button). ## Proposed solution *(optional)* Document loader doesn't currently have a way of grabbing this information. A new hook would be needed. Then we'd use that to store this information for reference. ## Workaround *(optional)* For files, the user actually uploads the file, so the file is … ### [[Meta] Context source plugin feature (context from PDF/MD/TXT/URL)](https://git.drupalcode.org/project/ai_context/-/work_items/3569310) State: closed | Updated: 2026-06-24 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !103 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We want a generic mechanism for adding context source plugins, such as loading context from a: PDF MD file Text file Single webpage (URL) And converting the info to markdown, and inserting it in… ### [Create context starter templates](https://git.drupalcode.org/project/ai_context/-/work_items/3586255) State: opened | Updated: 2026-06-24 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::major, state::postponed, what::ux Description: ## Problem/motivation Follow up to: #3586170 This issue could be repurposed as a discussion or design/UX issue. Provide starter templates for more common types of context that users can select from, e.g. brand guidelines, tone and voice, editorial standards. These can have a recommended structure with important headings and instructions in each heading, and example context items with everything filled in. ## Solution TBD ## Tasks - Discuss - Design/UX - Architecture - Implementation - Review and test ### [Error when running database updates from beta2 to latest -dev](https://git.drupalcode.org/project/ai_context/-/work_items/3586290) State: opened | Updated: 2026-06-25 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: I just tried running `drush updb` on a site that previously had CCC beta2 and now has the latest -dev. Most of the updates ran fine, but I couldn't get past this one: ``` $ ddev drush updb ------------ ----------------------------------- ------------- ------------------------------------------------------- Module Update ID Type Description ------------ ----------------------------------- ------------- ------------------------------------------------------- ai_context 0002_install_default_view_displa… ### [Question about "Subcontext type = Conditional - included based on relevance"](https://git.drupalcode.org/project/ai_context/-/work_items/3586149) State: closed | Updated: 2026-06-26 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: AI Initiative Sprint, category::support, priority::normal, state::fixed Description: I think this is more of a documentation issue/task, but I wanted to surface it regardless. When creating a Subcontext item, and "Subcontext type = Conditional - included based on relevance", does that mean that it will only be used if the LLM deems it worthy for inclusion via its "Purpose" content? thanks, -mike ### [Fix PHPStan failures in CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586238) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Fix PHPStan failures in ai_context **Type:** Code quality **PHPStan level:** 2 **Status:** `./lint.sh` fails with **16 errors** ### Reproduce ```bash php -d memory_limit=512M vendor/bin/phpstan analyze web/modules/custom/ai_context \ --configuration=web/modules/custom/ai_context/phpstan.neon.dist ``` ### Errors (3 groups) **1. Entity field typing (1)** — `src/Entity/AiContextItem.php:270` `FieldDefinitionInterface` has no `setLabel()`. Narrow to `BaseFieldDefinition` before chaining setters. **2. Diff builder return types (5)** — `DynamicEntityReferenceFieldBuilder.php` (4), `… ### [Fix phpstan error in AiContextSubcontextToggleTrait](https://git.drupalcode.org/project/ai_context/-/work_items/3586259) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 11 Description: ## Problem On local, running ./lint.sh on 1.0.x, phpstan errors show up but the pipeline was green ``` Running phpstan (static analysis)... 165/165 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100% ------ ------------------------------------------------------------------------------------------------------------- Line src/Service/AiContextSubcontextToggleTrait.php (in context of class Drupal\ai_context\Entity\AiContextItem) ------ ------------------------------------------------------------------------------------------------------------- 31 Call to an undefined method Drupal\Core\Typed… ### [CCC UX sync 27 May 2026](https://git.drupalcode.org/project/ai_context/-/work_items/3586236) State: closed | Updated: 2026-06-25 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation We have a lot of important UX issues to cover including: - https://git.drupalcode.org/project/ai_context/-/work_items/3586220 - https://git.drupalcode.org/project/ai_context/-/work_items/3586219 - https://git.drupalcode.org/project/ai_context/-/work_items/3586228 - https://git.drupalcode.org/project/ai_context/-/work_items/3586214 - https://git.drupalcode.org/project/ai_context/-/work_items/3586229 - https://git.drupalcode.org/project/ai_context/-/work_items/3586198 - https://git.drupalcode.org/project/ai_context/-/work_items/3586197 - https://git.drupalcode.org/project… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-07-01 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !159 [Issue #3586218: Allow subcontext scope to override parent scope.](https://git.drupalcode.org/project/ai_context/-/merge_requests/159) | State: opened | Author: Kristen Pol (kepol), 2502 diff lines Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code ### [[Discuss] Moderation status of subcontext vs parent context items](https://git.drupalcode.org/project/ai_context/-/work_items/3586264) State: closed | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !193 [Issue #3586264: Show warning when subcontext parent is unpublished.](https://git.drupalcode.org/project/ai_context/-/merge_requests/193) | State: closed | Author: Kristen Pol (kepol), 204 diff lines Description: ## Problem/motivation You can unpublish a parent context item while having published subcontext items. ## Solution Discuss what makes sense for the moderation of parent/child items. ## Tasks - [x] Discuss and decide on behavior - [x] ~~Create follow-up issues as needed~~ (did MR on this issue) ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes all improve test reliability and signal. They can be split further if the test changes become large. Includes: - Context prefix default alignment. - `getManageUrl()` docs update. - Optional `hook_help()` decision/follow-up. - `tests/README.md` environment guidance. ## Solution ### 7.1 Make integration-test process metadata consistent **Files:** - `… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 501 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !199 [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) | State: opened | Author: Joshua Fernandes (joshua1234511), 157 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Juan Correa (jucs7) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [Clean up CCC cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Add warning on subcontext edit form if parent is unpublished](https://git.drupalcode.org/project/ai_context/-/work_items/3586297) State: closed | Updated: 2026-06-27 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !196 [Issue #3586297: Add warning on subcontext edit form if parent is unpublished.](https://git.drupalcode.org/project/ai_context/-/merge_requests/196) | State: merged 2026-06-27 | Author: Kristen Pol (kepol), 197 diff lines Description: ## Problem/motivation Follow-up to: #3586264+s You can unpublish a parent context item while having published subcontext items. ## Solution Show a warning. ## Acceptance criteria - [x] If parent published and subcontext unpublished, do not show warning. - [x] If parent unpublished and subcontext unpublished, do not show warning. - [x] If parent published and subcontext published, do not show warning. - [x] If parent unpublished and subcontext published, show warning. ### [CCC beta3 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586296) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Blocked by: #3586294+s Need a QA script for beta 3 to go through and test before the release ## Proposed resolution Create script with at least all major features covered ## Target date or deadline **6 July 2026** ## Remaining tasks - Create script - Go through QA script --- ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human superv… ### [CCC beta2 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586156) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: > [!note] > Migrated issue > Migrated from issue #3577669 > Reported by: [kristen pol](https://www.drupal.org/user/8389) --- ## Tracker **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Blocked by:** - [#XXXXXX](https://www.drupal.org/project/ai_context/issues/XXXXXX) **Additional Collaborators:** @username1, @username2 _Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs)._ --- ## Problem/Motivation Need a QA script for beta… ### [Create CCC beta3 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586295) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ### Problem/Motivation Blocked by: #3586296+s Create CCC beta3 release. Tag: `1.0.0-beta3` ### Proposed resolution Create the release once at least the must-haves are done here: - #3586182+s - [beta3 milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues) ### Target date or deadline 6 July 2026 ### Remaining tasks - Wait on must-haves - Tag code - Create the release in UI - Celebrate! ### AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code … ### [CCC beta3 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586294) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Do this right before: #3586296+s in case there are any serious issues that need addressing before the release. Beta3 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Important performance issues - Important feature/API gaps - Security issues (major issues will not be reported here) ## Next steps - Run security review - Run performance revi… ### [Create CCC beta2 release](https://git.drupalcode.org/project/ai_context/-/work_items/3585920) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Create CCC beta2 release Tag: 1.0.0-beta2 Proposed resolution Create the release once at least the must-haves are done here: #3585902: CCC beta2 release planning Target date or deadline 4 May 2026 Remaining tasks … ### [CCC beta2 codebase review](https://git.drupalcode.org/project/ai_context/-/work_items/3586202) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: ## Problem/motivation Beta2 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Important performance issues - Important feature/API gaps - Security issues (these will not be reported here) ## Next steps - Run security review - Run performance review - Run api/feature review - Attach findings for here (not security) - Create follow-up issues as needed ### [Sprint 13 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586293) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 27 to 10 July 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Update CCC overview page with hide option and new wording](https://git.drupalcode.org/project/ai_context/-/work_items/3586211) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: Follow up to: #3573715 ## Problem/motivation 1. Right now you can disable showing the overview page by going to the general settings. It is useful to be able to also hide it when you are on the page and then the Context Items page because the main page. 2. Also, the text on the page isn't that user friendly. ## Solution 1. Add a "Hide this overview" link or button on the page. We will keep the option on the general settings if they want to add it back. 2. Change the welcome text to something like: **Context Control Center** Context Items are reusable pieces of information that your AI … ### [Handle the case when scope plugin values are no longer available](https://git.drupalcode.org/project/ai_context/-/work_items/3586145) State: closed | Updated: 2026-06-26 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 9 Description: **Problem:** Scope values can disappear after context items or agents have already selected them. For example: - A context item targets `node:1234`, then that node is deleted. - A context item or agent subscribes to the `hr` site section, then that site section is removed. - A context item or agent uses the `foobar` AI context tag, then that tag term is deleted. When this happens, the module should gracefully remove stale values from stored context item scope, agent scope subscriptions, and any related selection indexes. Target entity references should also be removed when the target entity… ### [Clean up follow-ups from target entity decoupling review](https://git.drupalcode.org/project/ai_context/-/work_items/3586082) State: closed | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> **Problem/Motivation** There was out-of-scope feedback on: #3577428 Feedback (PDF) Feedback (MD) **Description:** Follow up on the non-blocking items identified during the target entity / DER decoupling review. The MR made `dynamic_entity_reference` optional successfully, but a few cleanup tasks remain to reduce optional dependency coupling, improve documentation, and tighten safer render/input patterns. **Tasks:** - Remove the `DynamicEntityReferenceItem` import/reference from `AiContextItem:… --- MERGE REQUESTS (2w) --- ### [Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter](https://git.drupalcode.org/project/ai_context/-/merge_requests/184) State: merged 2026-06-27 | Author: Matt Glaman (mglaman) | Branch: 3586274-issue-branch | 1135 diff lines Description: ## Description Implements the finalized UX from the 17 June review (see issue), following up #3586219. **Columns** - Merge the **Use cases** and **Scope** columns into a single **Scopes** column. Pills are ordered as on the edit page (scope plugins are weight-sorted, so Use Cases lead). **Filters** - Remove the standalone **Use cases** filter. - Replace the single scope filter with a cascade: - First select: scope name (ordered as the edit page), defaulting to **All scopes**. - Second select: values for the chosen scope, defaulting to **All**. With "All scopes" selected it lists every… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_context/-/merge_requests/175) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2451 diff lines Description: Relates to #3586269. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/201) State: closed | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/context-prefix-and-manage-docs-3586298 | 45 diff lines Description: Fixes two RC1-blocking items from the AI Best Practices review: 1. Context prefix default alignment: The fallback string in AiContextSystemPromptSubscriber did not match the value shipped in config/install/ai_context.settings.yml. Aligned to the canonical config default. 2. Stale getManageUrl() docs: scope_api.md and custom_scopes.md still referenced the nonexistent getManageUrl(): ?string method. Updated to document the actual getManageRoute(): ?array method with the correct return type and structure. ### [Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/202) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/documentation-api-consistency-3586305 | 45 diff lines Description: Fixed 6.1 and 6.2 6.1 — Context prefix alignment The fallback string in AiContextSystemPromptSubscriber didn't match the value in config/install/ai_context.settings.yml. Aligned the PHP fallback to the canonical config default. 6.2 — Stale getManageUrl() docs scope_api.md and custom_scopes.md were still referencing getManageUrl(): ?string which no longer exists. Updated both files to document the actual getManageRoute(): ?array method with the correct return structure. --- COMMITS (2w) --- - [cd623c23](https://git.drupalcode.org/project/ai_context/-/commit/cd623c239ca6b801f9080e30d131b0d0b34999fa) Issue #3586155: Add GitLab issue and merge request templates — Matt Glaman (2026-06-18T22:44:14.000+00:00) - [28ad25c9](https://git.drupalcode.org/project/ai_context/-/commit/28ad25c9e27c7ce7f60a86c59f8d0989f2205941) Issue #3586252: Update overview page help text and docs. — Kristen Pol (2026-06-18T21:12:44.000+00:00) - [b50b992a](https://git.drupalcode.org/project/ai_context/-/commit/b50b992a6142ec6cdddd7dc7ec19bafc4a9e17b2) Issue #3586267: Added SECURITY.md file — Daniel Rodriguez (2026-06-18T15:15:05.000+00:00) - [abb2ab42](https://git.drupalcode.org/project/ai_context/-/commit/abb2ab423e092aafd956b0e6b38491a26e95470a) Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11" — Juan Correa (2026-06-18T14:51:24.000+00:00) - [d0b32de1](https://git.drupalcode.org/project/ai_context/-/commit/d0b32de1894c4f3af997875a7a2631a9a8cbccf3) Issue #3586270: Document how the Tag scope works — Matt Glaman (2026-06-21T04:53:19.000+00:00) - [0cee6f4d](https://git.drupalcode.org/project/ai_context/-/commit/0cee6f4db5f9382463769bbccc3f259ffa1b2e89) Issue #3586241: Document Supported vs Internal APIs — Rob Loach (2026-06-21T04:27:28.000+00:00) - [c3af5872](https://git.drupalcode.org/project/ai_context/-/commit/c3af587205e783a94dbbcc6d5df8cd1d9e57179d) Issue #3586251: Update subcontext feature help text and docs. — Kristen Pol (2026-06-20T23:48:20.000+00:00) - [8c163a5b](https://git.drupalcode.org/project/ai_context/-/commit/8c163a5b3770a8b9c0c7c85451eb7da52d4fe51b) Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports. — Kristen Pol (2026-06-21T17:17:26.000+00:00) - [861bca21](https://git.drupalcode.org/project/ai_context/-/commit/861bca2160e3fd0a9d2ad63aaacf85cc376f2d0d) Issue #3586284: Clarify context item scope form copy and layout. — Kristen Pol (2026-06-23T02:58:53.000+00:00) - [0ff30026](https://git.drupalcode.org/project/ai_context/-/commit/0ff30026ed134bb69dadfecdf5dc1610ee2db5b4) Issue #3586272: Add validation that max_global_items cannot exceed max_items — Matt Glaman (2026-06-23T02:51:20.000+00:00) - [426e21c6](https://git.drupalcode.org/project/ai_context/-/commit/426e21c69476209ac4a8003bcc8c26c2e931efcf) Issue #3586285: Add configure links to Context Control Center. — Rob Loach (2026-06-23T01:00:08.000+00:00) - [641dfa64](https://git.drupalcode.org/project/ai_context/-/commit/641dfa6405be90616b188689e3ca05acb965c384) Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager. — Kristen Pol (2026-06-23T21:42:30.000+00:00) - [fd20a9b0](https://git.drupalcode.org/project/ai_context/-/commit/fd20a9b07a46e35bec41b8dcfbbfc101e6f2c198) Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache. — Abhisek Mazumdar (2026-06-23T20:18:27.000+00:00) - [048a8620](https://git.drupalcode.org/project/ai_context/-/commit/048a86207fdc40bfd6afee51ab7fb4f6dc9c98fe) Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms — Ahmad Khader (2026-06-23T18:32:47.000+00:00) - [ed2065e0](https://git.drupalcode.org/project/ai_context/-/commit/ed2065e0dc3d95626bde615ddad6ee60549e7e82) Issue #3586288: Update submodule requirements. — Kristen Pol (2026-06-23T11:05:19.000-07:00) - [a19061ba](https://git.drupalcode.org/project/ai_context/-/commit/a19061ba4e2242a1a3736ca55c383e290b2bf708) Issue #3586244: Add example context items from the Chicago Driesnote demo. — Anikó Viola (2026-06-23T18:09:24.000+00:00) - [5c40b302](https://git.drupalcode.org/project/ai_context/-/commit/5c40b3020c850e2674ff0eab9c8145554a703eb9) Issue #3586209: Batch N+1 queries in AiContextUsageTracker — Abhisek Mazumdar (2026-06-24T16:07:58.000+00:00) - [fdb5b4a0](https://git.drupalcode.org/project/ai_context/-/commit/fdb5b4a0f9e81ace3dce7fc36d1bf1976de74c22) Issue #3577429: Make Scheduler an optional progressive feature. — Matt Glaman (2026-06-27T02:11:36.000+00:00) - [55bceeb9](https://git.drupalcode.org/project/ai_context/-/commit/55bceeb9efca4ea613af0bc8f632928f07a0f2db) Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green. — Kristen Pol (2026-06-28T01:30:54.000+00:00) - [da3549d8](https://git.drupalcode.org/project/ai_context/-/commit/da3549d824ac126399e2e765e673bd6e9830c81f) Issue #3586297: Add warning on subcontext edit form if parent is unpublished. — Kristen Pol (2026-06-27T21:09:55.000+00:00) - [35098852](https://git.drupalcode.org/project/ai_context/-/commit/3509885235b6c3ca00c97f34d3ec72cc9be7f689) Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter — Matt Glaman (2026-06-27T18:52:52.000+00:00) - [1a9ec8e9](https://git.drupalcode.org/project/ai_context/-/commit/1a9ec8e9c17e6cdf48366d11d130390f8ae2052e) Issue #3586261: Clean up bundleless context item follow-ups. — Kristen Pol (2026-07-01T00:09:36.000+00:00) - [2f8470ed](https://git.drupalcode.org/project/ai_context/-/commit/2f8470ed1a8a063b19ebe33a2fa45e8402fc194b) Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes — Juan Correa (2026-06-30T17:01:31.000-05:00) - [2d0bc88f](https://git.drupalcode.org/project/ai_context/-/commit/2d0bc88f4f592ee8f4b3c1d5d8db496a1f2f5304) Issue #3586220: Add single context item display. — Eric Homanchuk (2026-06-30T20:44:23.000+00:00) ======================================================================== ## [65] summariseModule:ai_dashboard:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Dashboard (machine name: ai_dashboard) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                            AI Dashboard

                                                                                                            then use

                                                                                                            ,

                                                                                                            ,

                                                                                                              /
                                                                                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                              tags. After the project summary prose, add a single subsection titled "

                                                                                                              How can I help on this project?

                                                                                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Improve AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585220) State: opened | Updated: 2026-06-26 | Author: Rob Loach (robloach) | Assigned: Rob Loach (robloach) | Labels: documentation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !24 [Issue #3585220: Improve AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/24) | State: opened | Author: Rob Loach (robloach), 7674 diff lines Description: https://ai-dashboard-41c651.pages.drupalcode.org/ecosystem/ - [x] I find the Zensical CSS makes the font pretty small, and hard to see the "Filter". Could be tweaked. - [x] We could likely use the JSON manifest from this directly in the AI Dashboard module itself to allow users to browse modules from their own site - [ ] Need to add a cron rebuild process to grab the new modules from Drupal.org - [ ] The Category detection could use more tweaks. Uses the Name and Description, and when it can't find an appropriate one, it fallsback to Utility. - [ ] Add a column for whether or not the module i… ### [AI Recipe modal is missing the argument](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585216) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, priority::normal, state::postponed, userInterface Description: >>> [!note] Migrated issue Reported by: [ro-no-lo](https://www.drupal.org/user/174449) Related to !18 >>> When I scroll to the "Features" Section I see 7 results: AI Assistent, AI Image Classification, AI SEO Optimizer, etc. When I click ANY "View Commands" button I see this: cd /Users/foobar/code/mypage.ai/Applications/barfoo/bin/php/php8.3.0/bin/php /Users/foobar/code/mypage.ai/core/scripts/drupal recipe When executing via vendor/bin/drush recipe or as noted in the modal I get Not enough arguments (missing: "path"). So any button is currently useless or incomplete. I have no idea what t… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [66] summariseModule:ai_search:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev), m4olivei, Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                              AI Search

                                                                                                              then use

                                                                                                              ,

                                                                                                              ,

                                                                                                                /
                                                                                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                tags. After the project summary prose, add a single subsection titled "

                                                                                                                How can I help on this project?

                                                                                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Attempt long running chunk indexing for 1.x branch without BC](https://git.drupalcode.org/project/ai_search/-/work_items/3584014) State: closed | Updated: 2026-06-22 | Author: Scott Euser (scotteuser) | Assigned: Scott Euser (scotteuser) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: # Problem/motivation In https://git.drupalcode.org/project/ai/-/work_items/3487487 we added this for 2.x branch. It has interface changes however. # Proposed resolution Make a version of it that works for 1.x but without any breaking changes. E.g. testing if methods exist and gracefully falling back in stead. Test coverage should still be applied ### [Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions](https://git.drupalcode.org/project/ai_search/-/work_items/3584010) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: m4olivei | Labels: Needs issue summary update, category::feature, code, priority::normal Description: >>> [!note] Migrated issue Reported by: [m4olivei](https://www.drupal.org/user/410384) Related to !1476 !38 !37 >>> --- [Tracker] Update Summary: Initial implementation pushed, seeking review Short Description: RagTool::execute() ignores additional context_definitions added via alter hook, preventing dynamic metadata filtering Check-in Date: 04/09/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation For sites making use of the RagTool FunctionCall plugin, it would be useful if we could extend the FunctionCall to advertise to the LLM addit… ### [How to Apply Filters in VDB for RAG Chatbot](https://git.drupalcode.org/project/ai_search/-/work_items/3547016) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: Search API, category::feature, code, filters Description: >>> [!note] Migrated issue Reported by: [yijin928@163.com](https://www.drupal.org/user/3848766) >>> Problem/Motivation I’m integrating a Zilliz vector database with an AI-powered RAG chatbot. I have filterable attributes (e.g., case studies, approaches) stored as integers. When I query the VDB via the AI explorer, these attributes are returned, but I’m not sure how to pass filters into the query so that results are pre-filtered. In short, I want to apply filters at query time so Zilliz returns only the filtered chunks. Steps to reproduce Use Zilliz for AI search and connect… ### [[Plan] AI Search 2.0.x and roadmap to stable](https://git.drupalcode.org/project/ai_search/-/work_items/3485449) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, code, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) >>> Backports needed for AI Search 1.0.x stable release Duplicated from the list below in _shoulds_: [2x only] #3584015 - 2x branch is currently broken as a result of Symfony Platform integration [2x only, but could be backported] #3547137: Title is duplicated in chunk if present in the index as contextual content - Fix double title [2x only, needs backport to 1x] #3520606: Long node titles can trigger exception 'The minimum overlap cannot be equal to or exceed the maximum chunk size.' when index… ### [Views should have a warnings when creating a view that has 1+ non full text Filters using an AI Search backend](https://git.drupalcode.org/project/ai_search/-/work_items/3479025) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::minor, state::accepted Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation Filters will only ever minimally work and the complexity allowed in Views for Filters (Exposed and not) will likely never be fully supported by the more limited filtering options provided by Vector Databases like Pinecone or Milvus/Zilliz (Postgres and SOLR vector indexing could change that) Non "Filterable Attributes" should be prevented altogether. Users likely need to use the traditional combined with AI Search options (see documentation from AI module hopepage -> AI Sear… ### [Convert search query to markdown](https://git.drupalcode.org/project/ai_search/-/work_items/3525470) State: opened | Updated: 2026-06-22 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [ayrmax](https://www.drupal.org/user/1625944) Related to !622 >>> Problem/Motivation When searching for reference-style identifiers such as A1_345/2003 or E6_627/2024, the search index does not return the expected content as the top result. This appears to be due to markdown-sensitive characters not being handled in the query string, while they are escaped during indexing. Steps to reproduce Add content with identifiers like A1_345/2003. Index the content. Search using the raw identifier (e.g., A1_345/2003) in Vector DB Explorer. Observe that… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-29 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [The title field not found if machine name is different](https://git.drupalcode.org/project/ai_search/-/work_items/3553711) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [calmforce](https://www.drupal.org/user/915444) >>> Problem The bug is found in EmbeddingBase.php, function groupFieldData(), lines 181-182. The call $field->getFieldIdentifier() returns the field machine name that can be set to anything during the Index creation, and it will not be equal to $label_key in this case. It should be the call $field->getPropertyPath() which will always return 'title' for the node title field, same as $label_key. Steps to reproduce (required for bugs, but not feature requests) 1. Specify machine name for the title fi… ### [Fix support of non-content entity SearchAPI datasources](https://git.drupalcode.org/project/ai_search/-/work_items/3575999) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: Needs tests, category::bug, code, needs backport to 1.x Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !25 >>> Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Adding field from that data source is not possible OOTB due to how \Drupal\ai_search\Form\AiSearchIndexFieldsForm::buildForm() alters Search API's own form and hardcoded entity data source dependency. After that issue gets mitigated and you try to index data from that data source t… ### [Consider standard naming conventions for vector dbs](https://git.drupalcode.org/project/ai_search/-/work_items/3539213) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::task, code, priority::minor, state::postponed Description: >>> [!note] Migrated issue Reported by: [kim.pepper](https://www.drupal.org/user/370574) >>> Problem/Motivation Currently we have a mix of concepts: Collection Database Namespace Index Database and collection seem to be combined to make a unique index in some providers, and a database table name in pgsql and mysql. Index is used by some. Can we clarify what each means and come up with a standard naming convention? Steps to reproduce (required for bugs, but not feature requests) Proposed resolution Remaining tasks Optional: Other details as applicable (e.g., User interface changes, API c… ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-29 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, priority::major, state::postponed Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers ### [Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal](https://git.drupalcode.org/project/ai_search/-/work_items/3584028) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` assigns `vector_input` and `query` into `$params` before the `if/else` branch: ```php $params['vector_input'] = $vector_input; $params['query'] = $query; if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); // $params still has vector_input and query } ``` `querySearch()` does not accept `vector_input` or `query` as parameters. Spreading `$params` into it causes a PHP fatal: ``` PHP Fatal error: Unknown named argument $vector_input ``` ## Steps to reproduce 1. Install `ai_se… ### [PluginException from getSearchVectorInput() is not caught, returning empty results with no error](https://git.drupalcode.org/project/ai_search/-/work_items/3584026) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem When the configured embeddings engine plugin cannot be instantiated, `getSearchVectorInput()` throws a `PluginException`. Nothing catches it in the search path. The search returns empty results with no error logged and no message shown to the user or admin. There is no way to tell from the outside whether the search ran and found nothing, or crashed before running at all. Common triggers: - The AI provider module is disabled or uninstalled - `embeddings_engine` in config references a provider ID that no longer exists - The provider is not fully configured ## Steps to reproduce … ### [Logger not injected in `create()`, causing fatal error on error paths](https://git.drupalcode.org/project/ai_search/-/work_items/3584025) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `SearchApiAiSearchBackend::create()` does not inject the logger service. The class calls `$this->logger->error()` inside `doSearch()` when something goes wrong. Because the property is never set, any error path throws a PHP fatal instead of writing a log entry. In practice this means a misconfigured provider produces a fatal error rather than a clear watchdog message. The real problem is hidden. ## Steps to reproduce 1. Install `ai_search`. 2. Configure a Search API index with the AI Search backend. 3. Set an embeddings engine that is misconfigured (wrong provider ID, missing AP… ### [vectorSearch() is never called for embedding-free VDB providers](https://git.drupalcode.org/project/ai_search/-/work_items/3584027) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` calls `vectorSearch()` only when `$vector_input` is non-empty: ```php if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); } ``` VDB providers that do not use embeddings (LLM reasoning, BM25, keyword trees, etc.) always have an empty `$vector_input`. So `querySearch()` is always called instead of `vectorSearch()`. `querySearch()` is for browse queries with no search terms. It does not receive the query text. A search for "climate change" calls `querySearch()` with no keywords a… --- MERGE REQUESTS (2w) --- ### [#3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC"](https://git.drupalcode.org/project/ai_search/-/merge_requests/45) State: merged 2026-06-22 | Author: Scott Euser (scotteuser) | Branch: 3584014-long-chunk-1x | 1569 diff lines Description: Closes #3584014 ### [Issue #3584010: Add FilterableRagTool with per-index derivatives and attribute filtering](https://git.drupalcode.org/project/ai_search/-/merge_requests/38) State: opened | Author: m4olivei | Branch: 3584010-add-filterableragtool-1x | 1332 diff lines Description: Adds a new deriver-based FunctionCall plugin that produces one derivative per ai_search.index.* config. Each derivative is scoped to a single Search API index and exposes attribute fields as optional context_definitions, allowing LLMs to pass filter values as query conditions. The existing RagTool remains untouched for backwards compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) Closes #3584010 ### [Resolve "Batch embeddings for improved indexing performance"](https://git.drupalcode.org/project/ai_search/-/merge_requests/53) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3584024-batch-embeddings-for-improved-indexing-performance | 732 diff lines Description: Closes #3584024 --- COMMITS (2w) --- - [04220985](https://git.drupalcode.org/project/ai_search/-/commit/042209850e6777f84e2ae7f9477a599d42a79b25) #3584023: Set default to access check for the Rag Tool (2x) — Scott Euser (2026-06-24T10:20:41.000+01:00) ======================================================================== ## [67] summariseModule:field_widget_actions:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Artem Dmitriiev (a.dmitriiev) [1], Daniel Bosen (daniel.bosen), Edward Zwart (ezeedub) [1], project update bot (Project-Update-Bot) [1], Scott Euser (scotteuser), Volker Killesreiter (volkerk) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                Field Widget Actions

                                                                                                                then use

                                                                                                                ,

                                                                                                                ,

                                                                                                                  /
                                                                                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                  tags. After the project summary prose, add a single subsection titled "

                                                                                                                  How can I help on this project?

                                                                                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Field Widget Actions show in the "Add New Action" unavailable tools](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3536116) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, code Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !21 [Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/21) | State: merged 2026-06-23 | Author: Artem Dmitriiev (a.dmitriiev), 804 diff lines Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) >>> Problem/Motivation Field Widget Actions plugin has a method isAvailable, it is currently widely used in AI Automators. The main requirement for a plugin to be available in case of an automator, this automator should exist for that entity type and field. When displaying the dropdown list the availability is not checked, only the base field type/field widget checks are done. This leads to a confusion when a plugin is available in the list, but it can't be really added, because when "Add" button is… ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-30 | Author: Daniel Bosen (daniel.bosen) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !24 [create uuids in config action](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/24) | State: opened | Author: Daniel Bosen (daniel.bosen), 281 diff lines Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3547306) State: closed | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [ezeedub](https://www.drupal.org/user/633844) Related to !893 >>> Problem/Motivation Currently, Field Widget Actions provide excellent automation for content generation, but once an automator generates content, users have limited options for refinement without manually editing or re-running the entire automator process. This creates a gap between fully automated content generation and user-controlled refinement. Users often want to iteratively improve AI-generated content with additional context or refinement instructions (e.g., "make it shorter", "… ### [Examples of plugins for more complex field widgets?](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3576699) State: closed | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::support, code, priority::normal, state::fixed Description: >>> [!note] Migrated issue Reported by: [peter törnstrand](https://www.drupal.org/user/293786) >>> I'm trying to create a field widget action for the Metatag widget metatag_firehose. I got it sort of working but the buttons are not added next to the individual metatag "sub fields" (title, description, abstract, tags) but at the end of the metatag widget. Wrappers are added correctly though. Does anybody know of any existing FieldWidgetAction plugins that exists for more complex field types such as Metatag? ### [Missing events in suggestion.js](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578820) State: closed | Updated: 2026-06-23 | Author: Volker Killesreiter (volkerk) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !18 [Trigger events in case of value update on suggestion](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/18) | State: merged 2026-06-23 | Author: Volker Killesreiter (volkerk), 181 diff lines Description: Selecting a suggestion sets target.value without dispatching input or change events, breaking integrations that rely on them (e.g. autosave, states, Tagify, etc.). Align suggestions.js to other instances of this module where this is handled correctly.                                                          ### [Automated Drupal 12 compatibility fixes for field_widget_actions 1.0.x-dev](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578822) State: closed | Updated: 2026-06-23 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Testing AI Workflow Automation](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578818) State: closed | Updated: 2026-06-23 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: Description: Some issue for testing ### [Allow other contrib modules to mark their field widgets as childless so FWA actions still appear](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578202) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !26 [Resolve "Allow other contrib modules to mark their field widgets as childless so FWA actions still appear"](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/26) | State: opened | Author: Scott Euser (scotteuser), 221 diff lines Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation As discussed in #3563961 and #3546465, field widget type dependencies (like `chosen_select` or `tagify`) are currently hard-coded as 'childless' elements for Field Widget Action plugins. Childless elements need wrapping in a parent in order for the FWA button to show up. There does not seem to be a straightforward way to detect whether a field widget has a {{ children }} element being output. Steps to reproduce Attempt to enable a Field Widget Action on a custom or unlisted fi… ### [Support for checkboxes/radio buttons using Ajax JS Commands](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578204) State: opened | Updated: 2026-06-25 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !25 [Resolve "Support for checkboxes/radio buttons using Ajax JS Commands"](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/25) | State: opened | Author: Scott Euser (scotteuser), 433 diff lines Description: >>> [!note] Migrated issue Reported by: [scott_euser](https://www.drupal.org/user/3267594) >>> Problem/Motivation Support for Checkboxes and Radios was deferred from #3563961: Support select type widgets (select, tagify, etc) using ajax JS commands because they require a different field widget setup. Steps to reproduce Attempt to use Field Widget Actions that need JS commands to fill checkbox or radio input fields. Proposed resolution Implement FWA support specifically for Checkboxes/Radios widgets. Remaining tasks Create MR and add test coverage. User interface changes N/A API changes N/A… ### [Field Widget Button labels are not translatable via UI](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578824) State: opened | Updated: 2026-06-26 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [fago](https://www.drupal.org/user/16747) >>> [Tracker] Update Summary: Field Widget Button labels are not translatable via UI Short Description: Button labels in field widget actions are configured via entity-form-displays. However, entity form displays have no UI for configuring translations, thus, there is no dedicated page and no entry at /admin/config/regional/config-translation Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem Button labels in field widget actions are configured vi… --- MERGE REQUESTS (2w) --- ### [Issue #3547306: Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/19) State: merged 2026-06-25 | Author: Edward Zwart (ezeedub) | Branch: 3547306-interactive-refinement | 3775 diff lines Description: Adds opt-in **interactive refinement** to Field Widget Actions: when enabled, an action button opens a modal that shows the generated content, lets the user iteratively refine it with follow-up prompts, and then inserts the result into the field. Refinement is off by default — existing actions are unaffected. ## Approach Built on the server-side **Form API** modal (`FieldWidgetFormActionBase`), per maintainer feedback — no custom modal JavaScript or CSS. The generated content and the refinement prompt are ordinary form elements; clicking **Refine** rebuilds the modal server-side (the same wa… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/23) State: merged 2026-06-23 | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 20 diff lines Description: Relates to #3578822. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-843071. --- COMMITS (2w) --- - [29559012](https://git.drupalcode.org/project/field_widget_actions/-/commit/29559012c2d78914615f33313712d169b95b3d07) Trigger events in case of value update on suggestion — Volker Killesreiter (2026-06-23T09:06:13.000+00:00) - [607eb11c](https://git.drupalcode.org/project/field_widget_actions/-/commit/607eb11c9c47fba18af2c6469efd90a7979443bf) Automated Project Update Bot fixes — project update bot (2026-06-23T08:08:53.000+00:00) - [2583a232](https://git.drupalcode.org/project/field_widget_actions/-/commit/2583a232164cc85c90c07b09c270116c52dff4df) Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form — Artem Dmitriiev (2026-06-23T07:59:58.000+00:00) - [69acdd60](https://git.drupalcode.org/project/field_widget_actions/-/commit/69acdd60d2250e309fdc1176d081d9e17a75af82) Issue #3547306: Add interactive refinement capability to Field Widget Actions — Edward Zwart (2026-06-25T09:58:36.000+00:00) ======================================================================== ## [68] summariseModule:ai_translate:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Miriam Nugent (Peacog), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                  AI translate

                                                                                                                  then use

                                                                                                                  ,

                                                                                                                  ,

                                                                                                                    /
                                                                                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                    tags. After the project summary prose, add a single subsection titled "

                                                                                                                    How can I help on this project?

                                                                                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [What's the point of the "Chat proxy to LLM" provider?](https://git.drupalcode.org/project/ai_translate/-/work_items/3585528) State: opened | Updated: 2026-06-23 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::support, priority::minor, state::accepted Description: I took a brief look at the code and the doc block description didn't help much: > The purpose is to implement 'translate_text' operation using more generic 'chat' operation supported by many LLM providers. I'm not questioning the need for it, but I'd like to understand why it is necessary... I have multiple providers installed on a site, but after selecting "Chat proxy to LLM", the only options in see in the "Model" select list are from the amazee.io provider (I also have OpenAI and Anthropic installed.) thanks, -mike ### [Aggregate a node's translatable field-columns into a single chat request (opt-in batch translation)](https://git.drupalcode.org/project/ai_translate/-/work_items/3585527) State: opened | Updated: 2026-06-22 | Author: Tamas Balog (tbalog) | Assigned: Tamas Balog (tbalog) | Labels: category::feature, priority::normal, state::accepted Description: --- ## Problem/Motivation `ai_translate` translates **one field-column per chat request**. `TextTranslator::translateContent()` is called once per column, and `ChatTranslationProvider::translateText()` rebuilds the full prompt (the configured translator prompt template + `setSystemPrompt('You are a helpful translator.')`) and calls `chat()` for each one. For a node with N translatable field-columns, that is N requests, each re-sending the **same** instruction block. For a typical 3-field node, roughly 1,000 of \~1,500 input tokens are the identical instructions sent three times. The redunda… ### [Refactor translation workflow to support Tool API and agent-driven translation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585523) State: opened | Updated: 2026-06-22 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: category::plan, code, priority::normal, state::needsWork Description: I am investigating whether I can have an AI Agent perform an entity translation, when a user requests this as part of an administrative AI agent interface. This would probably need some major refactoring of the module logic, since there are currently 2 endpoints: - UI batch translation - Drush command translation This would add a third one: Tool API translation So logic should be abstracted as much as possible where relevant, so all 3 entry points use the same code, rather than replicating it. I haven't investigated this further in detail, but already raising an issue here, in case someone … ### [HTML markup gets added after certain tags](https://git.drupalcode.org/project/ai_translate/-/work_items/3585526) State: opened | Updated: 2026-06-24 | Author: Tom Wauman (tom.wauman) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus ligt op een kennismaking met West-Vlaanderen én op het prachtig neogotisch erfgoedpand. Meer informatie een de inschrijvingslink vind je hieronder ``` Becomes: ``` 'The Secrets of the Court' is a series of six scavenger hunts for classes: from 1st grade up to and including 6th grade. The focus is on getting to know West Flanders as well as the magnificent Neo-Goth… ### [HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long)](https://git.drupalcode.org/project/ai_translate/-/work_items/3585525) State: opened | Updated: 2026-06-22 | Author: Carlos Busto Capeáns (cbccharlie) | Assigned: unassigned | Labels: automation::suggestionExists, category::bug, priority::normal, state::accepted Description: ## Problem/Motivation When using AI Translate to translate content that contains formatted text fields (`text_with_summary`, `text_long`) with HTML markup (e.g. ``, ``, ``, ``, etc.), the translated output does not preserve the original HTML structure. The AI model either strips, alters, or partially reconstructs the HTML tags, resulting in broken or invalid markup stored in the translated field value. This affects any content type that uses fields with a text format such as "Full HTML" or "Basic HTML" via CKEditor. ## Steps to reproduce 1. Install and configure the `ai_translate` submodul… ### [504 Time out on large content](https://git.drupalcode.org/project/ai_translate/-/work_items/3545381) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, code, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [doxigo](https://www.drupal.org/user/1331334) >>> When you run the translation on rather large page, eg. more than 1000 words and 300 ~ 400 HTML tags, you get: En AJAX HTTP-feil har oppstått.HTTP-resultatkode: 504Feilsøkingsinformasjon følger.Sti: /batch?id=341&op=do_nojs&op=doStatusTekst: errorSvarTekst: 504 Gateway Time-out504 Gateway Time-outnginx/1.18.0Suggestion: Divide the item into small batches with the chunks of it upon translation request. ### [Translation batch process does not handle translation errors](https://git.drupalcode.org/project/ai_translate/-/work_items/3542014) State: opened | Updated: 2026-06-23 | Author: drupalbot | Assigned: Ilia Nozadze (IliaNoz) | Labels: category::task, code, priority::normal, state::needsWork Description: >>> [!note] Migrated issue Reported by: [ilianoz](https://www.drupal.org/user/3614794) Related to !837 >>> Problem/Motivation Currently, translation errors are not handled at all. Errors are collected during the batch process, but they are never used or displayed. Fields are translated one by one using a batch operation. Some of these translations may fail, but the user has no way of knowing which ones failed. In some cases, every field translation can fail, yet the translation entity is still created and saved with the original (untranslated) data. This leads to confusion and potentially… ### [Automated Drupal 12 compatibility fixes for ai_translate 2.0.x-dev](https://git.drupalcode.org/project/ai_translate/-/work_items/3585524) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Issue #3545381 Split large HTML fields into chunks of a maximum number of characters](https://git.drupalcode.org/project/ai_translate/-/merge_requests/24) State: opened | Author: Miriam Nugent (Peacog) | Branch: 3545381-504-time-out-on-large-content | 200 diff lines Description: Closes #3545381 ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_translate/-/merge_requests/23) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 409 diff lines Description: Relates to #3585524. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [69] summariseModule:ai_vdb_provider_pinecone:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Pinecone VDB Provider (machine name: ai_vdb_provider_pinecone) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                    Pinecone VDB Provider

                                                                                                                    then use

                                                                                                                    ,

                                                                                                                    ,

                                                                                                                      /
                                                                                                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                      tags. After the project summary prose, add a single subsection titled "

                                                                                                                      How can I help on this project?

                                                                                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-06-30 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Issue #3586209: Add support for batching on indexing operations (2.0.x)](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32) | State: opened | Author: Rob Loach (robloach), 333 diff lines Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (2w) --- ### [Issue #3586209: Add support for batching operations (1.1.x)](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/33) State: opened | Author: Rob Loach (robloach) | Branch: 3586209-pinecone-indexing-1 | 342 diff lines Description: While the other was targeting 2.x, this hits `1.1.x`. Closes #3586209 --- COMMITS (2w) --- (none) ======================================================================== ## [70] summariseModule:ai_search_block:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI powered Search Block (machine name: ai_search_block) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                      AI powered Search Block

                                                                                                                      then use

                                                                                                                      ,

                                                                                                                      ,

                                                                                                                        /
                                                                                                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                        tags. After the project summary prose, add a single subsection titled "

                                                                                                                        How can I help on this project?

                                                                                                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/40) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 21 diff lines Description: Relates to #3594805. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-856789. ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/43) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 753 diff lines Description: Relates to #3606122. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [feat: #3582452 Add guardrail set selection to ai_search_block](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3582452-add-guardrail-set | 799 diff lines Description: By: nikro Closes #3582452 --- COMMITS (2w) --- (none) ======================================================================== ## [71] summariseModule:flowdrop:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop (machine name: flowdrop) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                        FlowDrop

                                                                                                                        then use

                                                                                                                        ,

                                                                                                                        ,

                                                                                                                          /
                                                                                                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                          tags. After the project summary prose, add a single subsection titled "

                                                                                                                          How can I help on this project?

                                                                                                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev](https://git.drupalcode.org/project/flowdrop/-/work_items/3592077) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/flowdrop/-/merge_requests/11) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 4588 diff lines Description: Relates to #3592077. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [72] summariseModule:flowdrop_ui_agents:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop UI Agents (machine name: flowdrop_ui_agents) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                          FlowDrop UI Agents

                                                                                                                          then use

                                                                                                                          ,

                                                                                                                          ,

                                                                                                                            /
                                                                                                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                            tags. After the project summary prose, add a single subsection titled "

                                                                                                                            How can I help on this project?

                                                                                                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev](https://git.drupalcode.org/project/flowdrop_ui_agents/-/work_items/3584958) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/flowdrop_ui_agents/-/merge_requests/27) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 232 diff lines Description: Relates to #3584958. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [73] summariseModule:langfuse:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Langfuse (machine name: langfuse) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                            Langfuse

                                                                                                                            then use

                                                                                                                            ,

                                                                                                                            ,

                                                                                                                              /
                                                                                                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                              tags. After the project summary prose, add a single subsection titled "

                                                                                                                              How can I help on this project?

                                                                                                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). (none) --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/langfuse/-/merge_requests/5) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 179 diff lines Description: Relates to #3599498. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [74] summariseModule:orchestration:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Orchestration (machine name: orchestration) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                                                                                              Orchestration

                                                                                                                              then use

                                                                                                                              ,

                                                                                                                              ,

                                                                                                                                /
                                                                                                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                                tags. After the project summary prose, add a single subsection titled "

                                                                                                                                How can I help on this project?

                                                                                                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Using JSON Schema to define "input", "output" and "config"](https://git.drupalcode.org/project/orchestration/-/work_items/3554622) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [d34dman](https://www.drupal.org/user/751698) >>> Problem/Motivation JSON Schema gives you a portable contract for each “thing” (task/node) and lets you auto-validate, auto-document, and even auto-generate forms. For an orchestration layer, a clean split into input, output, and config per node is intuitive and scales. Why JSON-Schema fits? - Contracts at the edges: Each node publishes exactly what it consumes (input) and emits (output), so composition is safe. - Runtime safety: Validate at design-time (when building a workflow) and at run… ### [Integrate with n8n](https://git.drupalcode.org/project/orchestration/-/work_items/3551197) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Stephen Mulvihill (smulvihill) | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) >>> Problem/Motivation Extend the Orchestration module to support n8n as an automation provider, similar to existing Activepieces integration. This enhancement will enable bidirectional communication between Drupal and n8n, allowing workflows to both trigger n8n automations from Drupal entity events (create, update, delete, publish) and perform actions in Drupal (create/update entities, media, users, taxonomy, etc.) via n8n nodes. The implementation will include: A new N8nDriver in the Orchestration m… ### [[orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services](https://git.drupalcode.org/project/orchestration/-/work_items/3575105) State: opened | Updated: 2026-06-28 | Author: Shibin Das (D34dMan) | Assigned: Shibin Das (D34dMan) | Labels: category::feature, state::accepted, v1.0.x-dev Description: ## Problem / Motivation The `orchestration_eca` submodule currently bridges ECA and the Orchestration module in one direction only: it exposes ECA models _as_ Orchestration services, so external callers can invoke ECA workflows via the Orchestration HTTP API. The reverse direction is missing. There is no ECA Action plugin that allows an ECA model to `_invoke_` a registered Orchestration service. This means ECA cannot use its rich event and condition system to trigger any of the services registered by other `ServicesProviderInterface` implementations. Current: External → Orchestration → E… --- MERGE REQUESTS (2w) --- (none) --- COMMITS (2w) --- (none) ======================================================================== ## [75] summariseModule:agui:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                                AG-UI

                                                                                                                                then use

                                                                                                                                ,

                                                                                                                                ,

                                                                                                                                  /
                                                                                                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                                  tags. After the project summary prose, add a single subsection titled "

                                                                                                                                  How can I help on this project?

                                                                                                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for agui 1.0.x-dev](https://git.drupalcode.org/project/agui/-/work_items/3590037) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/agui/-/merge_requests/30) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 41 diff lines Description: Relates to #3590037. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. --- COMMITS (2w) --- (none) ======================================================================== ## [76] summariseModule:ai_related_content:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Related Content (machine name: ai_related_content) Reporting period: last 2w (2026-06-17T06:00:05+00:00 to 2026-07-01T06:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                                                                                  AI Related Content

                                                                                                                                  then use

                                                                                                                                  ,

                                                                                                                                  ,

                                                                                                                                    /
                                                                                                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                                                                                                    tags. After the project summary prose, add a single subsection titled "

                                                                                                                                    How can I help on this project?

                                                                                                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 2w --- Each issue includes its description (for context) and the most recent comments from the last 2w (or last 5 if fewer than 5 occurred in that window). ### [Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev](https://git.drupalcode.org/project/ai_related_content/-/work_items/3576575) State: opened | Updated: 2026-06-25 | Author: project update bot (Project-Update-Bot) | Assigned: unassigned | Labels: Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Pinecone: fix `getVectorFromNode()` returning no results](https://git.drupalcode.org/project/ai_related_content/-/work_items/3576574) State: closed | Updated: 2026-06-25 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, code, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !17 [Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 2x](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/17) | State: merged 2026-06-25 | Author: Scott Euser (scotteuser), 72 diff lines Description: **File:** `src/Plugin/views/filter/AIRelatedContentNodeFilter.php` **Problem:** Two bugs in `getVectorFromNode()` cause the related content view to return zero results when using Pinecone: 1. `addCondition('drupal_entity_id', ...)` is silently ignored by Pinecone because `drupal_entity_id` is not a Search API index field. Without a working filter, the query returns random semantic matches for "Title" — none of which pass the ID check — so `getVectorFromNode()` always returns `null` and the query is aborted. 2. The ID check used strict equality (`!==`), which would also fail for chunk-suffix… --- MERGE REQUESTS (2w) --- ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/19) State: opened | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 239 diff lines Description: Relates to #3576575. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-864040. ### [Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 1x](https://git.drupalcode.org/project/ai_related_content/-/merge_requests/18) State: merged 2026-06-25 | Author: Scott Euser (scotteuser) | Branch: 3576574-pinecone-fix | 47 diff lines Description: Closes #3576574 --- COMMITS (2w) --- - [7c135f78](https://git.drupalcode.org/project/ai_related_content/-/commit/7c135f78817c00faf2c8143dd2ae4f8207db7cfc) bug: #3576574 Pinecone: fix `getVectorFromNode()` returning no results — Scott Euser (2026-06-25T10:48:57.000+00:00) ======================================================================== ## [77] generateTldr:executive ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a non-technical executive audience. Focus on business impact, strategic progress, and delivery milestones. Avoid all technical jargon. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                                                                                                                                  • elements must be inside the
                                                                                                                                      , never outside it):

                                                                                                                                      Shipped

                                                                                                                                      1. Title here — One sentence explanation [1].
                                                                                                                                      2. Another title — One sentence explanation.

                                                                                                                                      Ongoing

                                                                                                                                      1. Title here — One sentence explanation [2].
                                                                                                                                      Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] Regression in 1.4x release vs 1.3.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586546 [2] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [3] AiPromptSubForm validates inline prompt against stale prompt type when multiple ai_prompt elements exist (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586548 [4] Taxonomy automator clears valid term values when the LLM returns HTML-encoded entities (e.g. &) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586553 [5] Remove access deepchat api permission and use Assistant access as the single source of truth (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586552 [6] Permissions to use AI Assistant are confusing (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3498873 [7] Create AI assistant API session only after the first message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554797 [8] Add Extractive Question Answering operation type (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584371 [9] How to use AI file entity defined in file src/Entity/AiFile.php ? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586551 [10] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [11] Improve ai_ckeditor UX when no provider modules are installed (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586549 [12] Issue when creating content and click on AI Assistant on Ckeditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586545 [13] Use ai_provider_configuration form element in RestrictToTopic configuration form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586472 [14] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [15] Rename Guardrails "RegExp guardrail" plugin to just "RegEx" (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586475 [16] Automated Drupal 12 compatibility fixes for ai 1.4.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586555 [17] lb asymetric translation not translating content anymore. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586554 [18] DeepChat Block invisible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554969 [19] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [20] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [21] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [22] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [23] Support long running chunking in 1.x branch for AI Search 1.x readiness (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586557 [24] Improve summarizer for AI request input and output data for logs and spans (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566762 [25] First load of ai_provider_configuration is slow (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579392 [26] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [27] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [28] Move Automators to Structured Output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577170 [29] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [32] Missing "Submit" button from "RAG/Vector Search" tool Configuration modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586533 [33] Fiber branch in OpenAiBasedProviderClientBase::chat() drops token usage from the reconstructed ChatOutput (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586522 [34] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [35] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [36] Inaccurate description in Generated Content External Link Security (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586560 [37] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [38] Add mariadb to vdb registry (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586559 [39] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [40] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [41] Add info about initiative and release differences to project page (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586568 [42] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [43] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [44] Allow vector database providers to opt in as the default VDB when none is set (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586500 [45] AI CKEditor regression in 1.5.x? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586567 [46] Release 1.2.17, 1.3.8, 1.4.3 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586565 [47] Add AIDmi to Other modules/recipes that work with the AI module (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586566 [48] Add AI Assistant API ChatProcessor plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585075 [49] Integrate ChatProcessor plugin system into AI Chatbot DeepChat block (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585077 [50] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [51] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [52] Uninstalling ai_ckeditor leaves stale toolbar items in editor.editor.* configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586570 [53] Add "throttle API requests" control? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561243 [54] [Discuss] Shift focus from provider plugins to operation type plugins in AI Core (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3559800 [55] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [56] Tools UI overview page does not load (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579979 [57] Move out AI Content Suggestions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3552885 [58] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [59] [Discuss] Consider adding Agents.md (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3573186 [60] Drupal AI Contribution meeting 2026-02-09 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3570259 [61] Create agents as Tools (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556380 [62] Implement Process System Integration for Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3493291 [63] [Discuss] Allow usage of Tool API in Agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556140 [64] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [65] Plan: Add cancel button to AI Chatbot (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499583 [66] Use core Json::encode() and Json::decode everywhere possible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3480683 [67] Move Prompt Library menu link under AI Infrastructure instead of Vector Database Configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586499 [68] Prompt Library menu item missing due to incorrect parent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585596 [69] [Discuss] Core support for browser providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577202 [70] Research better practices for recipes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577175 [71] Improvement suggestions for ai_automators docs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572751 [72] Create an HTML to Markdown API and service (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574246 [73] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [74] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [75] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [76] Unable to override the 'Calling agents' / 'Contacting agents' text (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586389 [77] Glossary for the Drupal AI initiative (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577844 [78] Automated Drupal 12 compatibility fixes for ai 2.0.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586525 [79] Field Widget Button labels are not translatable via UI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3567027 [80] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [81] Add ai_budget_control to the ecosystem / related modules list (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583958 [82] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [83] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [84] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [85] Validation of unexisting fields on paragraphs actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571033 [86] ai_content_suggestions: On-focus button un-hide rule misses .field-widget-action-widget-button for field--type-string-long (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583883 [87] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [88] Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586572 [89] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [90] Add metadata to VectorDBGenerator in AI-API-Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3549175 [91] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [92] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [93] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [94] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [95] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [96] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [97] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [98] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [99] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [100] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [101] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [102] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [103] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [104] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [105] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [106] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [107] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [108] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [109] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [110] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [111] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [112] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [113] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [114] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [115] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [116] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [117] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [118] Only one AI Automator worker queue item is processed per cron execution (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575190 [119] non streaming broken (fiber branch) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586457 [120] InputLengthLimit guardrail does not consistently scan user messages (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586578 [121] ImageClassificationItem returns string from getConfidenceScorePercentage and uses uppercase NULL in hints (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584863 [122] Drupal Eval Commons umbrella (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586445 [123] [Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586479 [124] Type error and infinite AJAX request loop when the Agent is unable to resolve a request job (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3547470 [125] ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586473 [126] fix: Validates inline prompt against stale prompt type when multiple ai prompt elements exists (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1686 [127] Issue #3582743: Set temp directory for encoderProvider. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1685 [128] Issue #3554797: Start session after first interaction (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/978 [129] Issue #3586541 Show last-modified date on documentation pages... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1684 [130] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [131] Draft: Fix lb asymetric translation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1687 [132] feat: #3586427 Adopt symfony/ai component v0.8 as platform provider (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1619 [133] Automated Project Update Bot fixes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1688 [134] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1628 [135] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1679 [136] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1690 [137] #3586470 "Make API explorer work with Symfony platform and legacy providers" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1613 [138] #3582633: Add Functional JavaScript testing conventions and validation script (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1432 [139] Resolve #3586531 "Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1702 [140] feat(ai_ckeditor): warn users when no AI provider is installed in the CKEditor settings tab (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1701 [141] feat: #3577170 Move Automators to Structured Output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1291 [142] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1700 [143] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1699 [144] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1697 [145] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1695 [146] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1696 [147] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1694 [148] Issue #3586521: Fix tests with MDXEditor for 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1698 [149] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1693 [150] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1692 [151] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1691 [152] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [153] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [154] Issue #3586559: Add MariaDB VDB provider to matrix (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1705 [155] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [156] Allow batching for embedding and vector DB operations (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1126 [157] Remove access deepchat api permission and use Assistant roles as the single source of truth (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1703 [158] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1716 [159] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1717 [160] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [161] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1713 [162] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1715 [163] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1714 [164] Issue #3586517: Check if any Vdb provider is setup (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1660 [165] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1712 [166] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1711 [167] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1656 [168] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1710 [169] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1621 [170] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1709 [171] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [172] #3585077: Integrate chatprocessor plugin (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1706 [173] #3585075: Add ai assistant chat processor (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1707 [174] #3585075: Add ai assistant chat processor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1496 [175] #3585077: Integrate chatprocessor plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1497 [176] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [177] task: #3586561 Add a setup-guardrails agent skill to configure guardrails,... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1724 [178] Remove ai_content_suggestions module for ai core (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1042 [179] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1522 [180] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1521 [181] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1523 [182] docs: #3572751 Add docs for the Field widget Actions automator worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1293 [183] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1187 [184] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1201 [185] feat: #3586538 Add hook_requirements and hook_update_10001 for ai_validations deprecation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1725 [186] Issue #3586389: Add agent delegation message setting (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1539 [187] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1723 [188] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1722 [189] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1719 [190] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1721 [191] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1720 [192] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1670 [193] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1718 [194] ai-3586569: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1728 [195] fix(ai_ckeditor): remove stale toolbar items on uninstall and warn on confirm page (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1731 [196] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1730 [197] Resolve "Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1645 [198] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [199] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [200] Add AICKeditor tests (Target 1.4.x) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1577 [201] Added Functional JavaScript Tests (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1257 [202] fix: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1727 [203] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [204] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [205] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [206] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [207] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [208] Issue #3571498: Rethrow queue worker exceptions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1535 [209] Issue #3575190: Add configurable queue items per cron for AI Automators (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1647 [210] Issue #3586457: Add ChatInput::setForceSynchronous() and fix Fiber branch to use ChatFiberSupport capability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1646 [211] Resolve #3566613 "Commit message mike" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1285 [212] Resolve #3579088 "Guardrail plugins only" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1467 [213] Remove obsoleted #default_value (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1221 [214] feat: #3586479 Add gen_ai.* semantic conventions to ai_observability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1662 [215] fix: #3586473 Finalize streaming OTel spans on the terminal event (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1627 [216] Issue #3545462: Refactor StructuredOutputSchema to use Symfony validation attributes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1114 [217] Fix/token usage dto cached write tool use 3586576 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1736 [218] Add StructuredOutputSchema DTO and improve ChatInput validation. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/873 [219] Idea: AI Cost & Usage module — local cost dashboard + opt-in aggregated community telemetry (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586519 [220] Drupal AI UX meeting 15 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584833 [221] organise social media (MARIA) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586574 [222] find dutch volonteers to help with the event (human wayfinder / timekeeping / registration) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586573 [223] submit offer to ThomsonReuters / CIONet / VOKA / Beltug for cooperation. (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586572 [224] Make forms for the sponsors to submit their contacts/leads/clients for a free ticket (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586571 [225] Make the site look nice on mobile (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586570 [226] Update sponsors + subpages on Enterprise AI summit website (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586569 [227] Source case studies from AI Summit Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586557 [228] Drupal AI UX meeting 22 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584834 [229] Mockup: AI page creation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586581 [230] Mockup: AI review notifications (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586582 [231] Mockup: AI review on edit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586583 [232] Mockup: AI search (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586584 [233] Mockup: AI field automation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586585 [234] Mockup: AI search & replace (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586586 [235] Mockup: AI page translations (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586587 [236] Mockup: AI dashboard setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586588 [237] [Meta] AI roadmap feature mockups May 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586580 [238] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [239] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [240] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [241] [META] 2026 Outside-in / Innovation Roadmap (draft) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3576908 [242] Add standardized GitLab issue templates for initiative work (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586461 [243] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [244] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [245] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [246] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [247] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [248] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [249] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [250] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [251] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [252] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [253] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [254] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [255] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [256] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [257] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [258] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [259] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [260] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [261] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [262] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [263] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [264] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [265] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [266] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [267] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [268] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [269] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [270] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [271] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [272] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [273] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [274] Automated Drupal 12 compatibility fixes for ai_integration_eca 1.0.x-dev (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585018 [275] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [276] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [277] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [278] Issue #3585009: Added ECA execute action for Summarization. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/11 [279] Issue #3585010: Added ECA execute action for Text Classification. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/10 [280] Automated Project Update Bot fixes (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/13 [281] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [282] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [283] Respect skip_moderation, add test coverage for it (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/76 [284] Resolve #3593019 "Add imagetoimage possibilities" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/72 [285] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [286] fix: #3590873 Dall-E 3 has been deprecated and should be removed as default (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/71 [287] Automated Project Update Bot fixes (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/77 [288] Issue #3590963: Bump SDK constraint and drop method_exists defensive check (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/28 [289] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [290] Automated Project Update Bot fixes (mcp_client, MR) — https://git.drupalcode.org/project/mcp_client/-/merge_requests/19 [291] pgsql ext dependency missing in composer.json (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586235 [292] Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586234 [293] fix(#3586231): check that key identifiers are non-empty strings before loading keys (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/74 [294] chore: require ext-pgsql (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/76 [295] Automated Project Update Bot fixes (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/77 [296] ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588223 [297] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [298] Fix pre-existing PHPStan failures (deprecation issues) (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589186 [299] Automated Drupal 12 compatibility fixes for gemini_provider 1.x-dev (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589187 [300] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [301] #3588223: Resolved value error. (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/36 [302] Support batch embeddings (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37 [303] Issue #3589186: Ignore known PHPStan false positives (upstream ai docblock... (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/40 [304] Automated Project Update Bot fixes (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/41 [305] Resolve #3584375 "Add extractive question" (ai_provider_huggingface, MR) — https://git.drupalcode.org/project/ai_provider_huggingface/-/merge_requests/9 [306] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [307] Automated Project Update Bot fixes (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/50 [308] Issue #3607151: Remove hard ext-pgsql dependency (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/28 [309] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [310] Automated Drupal 12 compatibility fixes for mcp 1.x-dev (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3587790 [311] Automated Project Update Bot fixes (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/53 [312] AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586032 [313] Change "AI Agent" to "AI Agents" in admin menu (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586030 [314] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [315] Schema error for AI Agents CKEditor plugin (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3565169 [316] Exceptions in tool execute break the UI for the user (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3537123 [317] Add a way to mark the executor on agent runner (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3557417 [318] ContentEntitySeeder crashes on double-wrapped entity_array when ComplexToolItems + multiple=TRUE context definition produces nested array schema (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3578197 [319] UpdateViewPlugins: display option updates on non-default displays do not override defaults inheritance (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582781 [320] Views agent: style/row and filters/filter_groups must be overridden as pairs on non-default displays (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582782 [321] return_directly tool results are missing tool_id (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585054 [322] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [323] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [324] Fix streaming (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577520 [325] Automated Drupal 12 compatibility fixes for ai_agents 1.4.x-dev (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586038 [326] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [327] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [328] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [329] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [330] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [331] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [332] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [333] Resolve #3586032 "AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)" (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/286 [334] Issue #3547994: Add per-tool error catching to prevent agent crashes. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/220 [335] Add CKEditor schema for ai_agents (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/221 [336] Move AI Agents under Tools & Automation menu section (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/278 [337] Issue #3537123 by jurgenhaas: Exceptions in tool execute break the UI for the user (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/163 [338] Issue #3547995: Add deterministic tool usage limits. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/224 [339] Automated Project Update Bot fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/282 [340] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [341] Issue #3578197: Fix double-wrapped entity_array issue (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/244 [342] Issue #ai_agents-3582782: Fix AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/289 [343] Issue #ai_agents-3582781: review update AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/288 [344] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [345] Add skills for generating Tools (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582936 [346] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [347] tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582942 [348] [Tool] Create tools to save/update/delete SDC components (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3556021 [349] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [350] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [351] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [352] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [353] Change "Tools API" to "Tool API" in ToolsApi PHP attribute (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582940 [354] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [355] Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/92 [356] Issue #3582939: Fix getSupportedTypes() in MapDefinitionNormalizer and... (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/95 [357] languageSelect.spec.ts Failing in 1.x (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591705 [358] Only show default-language entities when reviewing auto-saved (pending) changes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591704 [359] Symmetric translation: component instance version updates must propagate to all translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591596 [360] Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591703 [361] Fatal error (AssertionError on dev env) when a component instance's image references a deleted file (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591702 [362] Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591693 [363] Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591699 [364] Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591701 [365] Coalesce reference fields whose values are consumed only through nested objects (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591678 [366] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [367] Support `content-entity-reference` props in CLI and Workbench (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591700 [368] Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3575644 [369] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [370] Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591695 [371] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [372] Release symmetrical translation functionality: drop the `canvas_dev_translation` feature flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591698 [373] Update Canvas component auditing UI to include translation labels (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591612 [374] Simple approach to bringing advanced metadata into Canvas AI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545816 [375] Add "page" extension type for full-screen Canvas extensions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591662 [376] Canvas AI: canvas_ai_post_update_0003 strips the orchestrator agent UUID via setData() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591660 [377] `redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591689 [378] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [379] UriOverride double-encodes file URIs on export causing images to be deleted on re-import (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591696 [380] Deleting media references causes InvalidComponentException and AssertionError (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590029 [381] Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591680 [382] Submodule info.yml core requirements are not in sync with canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591706 [383] [upstream] Introduce `composer run lint:chase-upstream` + `chase-upstream`: use Rector rules to semi-automate Drupal 12 compatibility while retaining BC layers for Canvas' minimum version (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589155 [384] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [385] Prevention of publishing on Conflict in Canvas UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587526 [386] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [387] Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591591 [388] [Notifications] notification storage and service (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580209 [389] [Notifications] cron cleanup (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580212 [390] Add content entity cache tags to auto-saves/pending endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588546 [391] Refactor auto-save endpoint response to encapsulate entries in top-level "data" key, like JSON:API, to enable adding errors later (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588038 [392] Detect conflicts for Page entities during the handling of auto-saves/pending calls (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589076 [393] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [394] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [395] UI changes for detection of conflicts caused by external updates to underlying entity of auto-save entry (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3585970 [396] Expand conflict detection and resolution added by 3587587 to additional entity types (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [397] [META] Review of changes and Conflict resolution (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587587 [398] [Plan] Canvas AI Roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3579796 [399] Remove deprecated upload and download CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591707 [400] Ensure type ignore schema props are ignore (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591710 [401] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [402] Update JS packages (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591709 [403] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [404] Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591679 [405] Refactor RequestTrait to prevent request stack mutation during kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591708 [406] Introduce `EntityFieldBasedPropExpressionInterface::getFieldDefinition()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591676 [407] AI continues to use unsupported React libraries while creating a component (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3564656 [408] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [409] Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591723 [410] Split the PHPUnit-Kernel CI test suite across 4 parallel jobs instead of 3 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591722 [411] Follow-up for #3591596: add PHPat rules for keeping `StagedLanguageConfigOverride` config entity type-agnostic (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591721 [412] [11.3] Adopt Core's stream wrapper for JSON schema references (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580762 [413] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [414] Language dropdown "edit" link should immediately change to "add" on deletion (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591720 [415] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [416] Avoid registering draft asset-library JS URLs to prevent locale's js_alter from treating them as local files (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591719 [417] Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591717 [418] Canvas Page Preview Fails After Language Code Update for Existing Translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591713 [419] Canvas AI: Chatbot generates page title and description without user request (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591718 [420] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [421] Translating unpublished page crashes canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591714 [422] Give AI more context around the styling of the site (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3544132 [423] Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591726 [424] Put conflict detection behind a dev mode flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591725 [425] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [426] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [427] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [428] Canvas icon / logo for Project Browser and project page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545468 [429] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [430] Strengthen test coverage for multi-translation multi-component instance automatic version updating (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591730 [431] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [432] Canvas AI: Remove hardcoded component source IDs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591652 [433] Refactor away the brittle`PageRegion::forAutoSaveData()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591728 [434] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [435] Symmetrically translatable config-defined component trees, STEP 2: change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3582478 [436] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [437] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [438] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [439] Add Code Component prop type for multiline plain text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591741 [440] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [441] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job for some component trees (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [442] Bump drupal-canvas package to 0.4.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591694 [443] Add translation metadata to code component's `mainEntity` data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591738 [444] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [445] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [446] Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3581133 [447] Non-Canvas (foreign) Drupal form textareas rendered inside Canvas are read-only and lose their #default_value (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591737 [448] CKEditor's source element is not tagged with the active text format inside Canvas, breaking modules that rely on core's editor-attach contract (e.g. ai_ckeditor) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591735 [449] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [450] Remove `canvas_dev_cd` flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591732 [451] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [452] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [453] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [454] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [455] Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [456] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [457] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [458] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [459] Enabling content translation of Canvas pages results in an unsupported state (asymmetrical translations) by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [460] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [461] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [462] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [463] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [464] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [465] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [466] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [467] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [468] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [469] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [470] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [471] Support entity-context frame type in _linkPropToEntityValue for PropSource binding (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591757 [472] Reconciling media in CLI should respect sync settings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591756 [473] Introduce `ComponentSourceInterface::getLabelForExplicitInputKey()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586490 [474] Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591683 [475] [later phase] Add alter hook for marking additional SDC/code component prop shapes AND/OR specific props as translatable (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584178 [476] Decouple component_tree translation logic from TMGMT (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591754 [477] PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586673 [478] DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591753 [479] "block" ComponentSource plugin should never store inputs for `label` and `label_display`, because they're not available for Canvas users (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3572850 [480] Add side-by-side review flow for selected Page changes before publishing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591752 [481] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [482] feat(Component sources): #3591596 Symmetric translation: component instance version updates must propagate to all translations" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1163 [483] fix: #3591704 Hide non-default-translation auto-saves from the pending-changes GET response (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1263 [484] #3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1254 [485] #3591693: Validate `LanguageConfigOverride`s (targeting translatable Canvas config entities) saves against config schema (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1257 [486] fix(Data model): #3591699 Never expose entity-reference inputs (e.g. image src) as translatable (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1262 [487] feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1194 [488] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [489] fix(Tests): #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1261 [490] feat(Theme builder): #3585355 `content-entity-reference` prop selection UI: a "Typed Data browser" to let a Code Component Developer pick which data to consume (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1182 [491] feat(CLI Tool): #3591700 Support `content-entity-reference` props in CLI and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1259 [492] Resolve #3591701 "Make kernel tests pass on Drupal core 11.3" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1260 [493] feat(Data model): #3591678 Coalesce reference fields consumed only through nested objects (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1252 [494] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [495] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [496] #3583379: `Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/876 [497] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [498] Add conflict detection and resolution UI for selective publishing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/945 [499] Create tools and update agents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/719 [500] Add "page" extension type for full-screen Canvas extensions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1233 [501] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1172 [502] Issue #3591660: Preserve agent UUID in canvas_ai post_update 0003 and repair affected sites (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1230 [503] #3591689: Too many redirects in invalid langcode as path-prefix (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1249 [504] Issue #3591696 : Prevent URIOverride from double-encoding file URIs on export (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1256 [505] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [506] refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of strings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1268 [507] Resolve languageSelect.spec.ts Failing in 1.x - round 2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1269 [508] #3591705 language select test failing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1265 [509] chore: #3591706 Sync submodule info.yml core requirements to ^11.2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1267 [510] Resolve #3589155 "Rector ci job" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1142 [511] Resolve "Page editor fatals (AssertionError) in `ComputedUrlWithQueryString` when a component's image references a deleted file" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1264 [512] #3587711 fix: code component exceptions after prop type change (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1015 [513] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [514] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [515] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [516] Issue #3584136: Fix canvas_component_agent prompt bugs (Image import,... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1237 [517] Issues/3591591: Add fixture support for layout to use in tests (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1159 [518] Issue #3580209: [Notifications] notification storage and service (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/762 [519] Issue #3580212: [Notifications] cron cleanup (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/830 [520] Resolve #3588546: Add content entity cache tags to auto-saves/pending response cacheability (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1057 [521] Resolve #3588038 "Refactor auto save endpoint" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1047 [522] feat(Conflict detection): #3589076 "Detect conflicts during auto-save polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1213 [523] fix(Conflict detection): Exclude computed internal fields from Page entity normalization (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1202 [524] revert(Conflict detection) #3589076 Detect conflicts during autosave polling (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1205 [525] Resolve #3589076 "Detect conflicts during autosave polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1107 [526] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [527] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [528] feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1271 [529] chore(CLI Tool): Remove deprecated upload and download CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1270 [530] ensure to ignore type ignore (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1278 [531] #3591697 "Boolean default false prop values not retained correctly " (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1281 [532] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [533] chore(Theme builder): #3591711 Add feature flag for content entity reference props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1279 [534] chore: Update JavaScript packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1277 [535] #3591654 "Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1234 [536] chore(Data model): #3591679 Use string representations of expressions in... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1275 [537] 🤖 Resolve #3591708 "RequestTrait::request() should not result in mutated request_stack" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1274 [538] Issue #3575644: Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1276 [539] chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1288 [540] feat(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [541] Draft: #3591720 update/edit toggles on language delete (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1287 [542] fix(ui): #3591716 boolean props auto-enable when another prop is changed (1.6.0) (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1286 [543] fix(ui): #3591716 boolean props auto-enable when another prop is changed (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1285 [544] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [545] fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1284 [546] Fix flat named component ESLint entrypoint detection (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1283 [547] #3591714: Resolve "Translating unpublished page crashes canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1282 [548] Put conflict detection behind feature flag (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1290 [549] Issue #3591726: Compare component inputs order-independently in tests and enforce it via PHPStan (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1291 [550] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [551] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1293 [552] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1292 [553] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [554] Issue #3591652: Replace hardcoded component source plugin IDs with SOURCE_PLUGIN_ID constants (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1255 [555] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [556] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [557] Draft: fix(Internal HTTP API, Translation): #3591713 Fix Canvas page preview for translated pages when the URL prefix differs from the langcode (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1304 [558] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [559] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [560] Draft: chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [561] #3591738 add translation data to code component provider (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1301 [562] feat(Drush): #3585531 Add commands to list, audit, and generate Canvas components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/937 [563] #3581133: Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1297 [564] Issue #3591737: Make foreign Drupal form textareas editable in Canvas by... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1299 [565] Issue #3591735: AI CKEditor text format (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1298 [566] AI-generated. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/797 [567] Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [568] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [569] Draft: #3492065 move to canvas repo (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/709 [570] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [571] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [572] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [573] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [574] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [575] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [576] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [577] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [578] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [579] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [580] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [581] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [582] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [583] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [584] #3591683: Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1322 [585] fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1323 [586] #3586673: PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1321 [587] Add solution to onboarding with content translation to disable tree... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1318 [588] Resolve #3590840 "Simplify codeowners further" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1120 [589] Draft: Resolve #3586673 "Phpcs actually selectively exclude" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/975 [590] #3591753: DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1319 [591] Draft: feat(Conflict detection): #3591591 Expand conflict resolution UI with... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1317 [592] Create Learners Club CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586266 [593] Create Bluefly CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586265 [594] Automated Drupal 12 compatibility fixes for ai_context 1.0.x-dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586269 [595] Add context settings validation: max_global_items must not exceed max_items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586272 [596] Create Document Loader submodule for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586275 [597] Create GitLab issue and merge request templates for ai_context project (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586155 [598] Update max context items in general settings (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586212 [599] Update overview page description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586252 [600] Create SECURITY.md file for AI Context (CCC) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586267 [601] Clarify Context scope: Tags in documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586270 [602] UX improvements on new context listing page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586274 [603] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [604] hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586246 [605] Move scheduler feature to submodule or progressive enhancement (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3577429 [606] Create list of modules and configuration steps for how to integrate CCC with Document Loader MDXEditor submodule (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586228 [607] Show this overview page checkbox is misaligned on vanilla Drupal 11 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586260 [608] [Discuss] Extensible "role" architecture for context items (examples, rubrics, and future types) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586273 [609] Provide test context items for testing CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586244 [610] Document supported vs internal CCC APIs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586241 [611] Conditional Subcontext Provider Calls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586207 [612] Update subcontext feature description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586251 [613] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [614] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [615] Sprint 12 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586277 [616] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [617] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [618] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [619] Review and update CCC permissions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574937 [620] Introduce explicit scope types and item inclusion modes; clarify selection in UI and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586281 [621] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [622] Fix eslint errors in GitLab UI even when pipeline is green (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3576093 [623] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [624] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [625] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [626] Test AI Best Practices skills on AI Context codebase (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586258 [627] Copy and layout updates on context item scope form (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586284 [628] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [629] [Discuss] Context scope matching semantics: additive OR, filters, and UX clarity (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586196 [630] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [631] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [632] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [633] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [634] Allow scope plugins to declare an optional icon for UI display (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586262 [635] Clean up bundleless context item follow-ups (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586261 [636] Add opt-in AiContextSelectionDiagnostics to selection results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586242 [637] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [638] Gather CCC contribution stats for code and non-code contributions for release notes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586222 [639] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [640] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [641] CCC beta / pre-rc1 community testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586234 [642] Evaluate empathy CCC integration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586249 [643] `hook_ai_context_scope_values_alter()` is ignored by scope forms and labels (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586286 [644] Add Configure Link in Modules Page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586285 [645] No public API for building scope subscription forms; consumers must depend on the internal scope manager (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586287 [646] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [647] Update core_version_requirement for all CCC submodules to be same as parent module (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586288 [648] Test Chicago Driesnote repo with cheaper models (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586221 [649] Avoid Full Published-ID Scans Before Scope Prefiltering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586206 [650] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [651] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [652] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [653] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [654] CCC Usage Tracking Query/Save Pattern (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586209 [655] Add webpage (URL) context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574414 [656] Add MD context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574928 [657] Add PDF context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574413 [658] Store the context source file or URL when using document loader (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586291 [659] [Meta] Context source plugin feature (context from PDF/MD/TXT/URL) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3569310 [660] Create context starter templates (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586255 [661] Error when running database updates from beta2 to latest -dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586290 [662] Question about "Subcontext type = Conditional - included based on relevance" (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586149 [663] Fix PHPStan failures in CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586238 [664] Fix phpstan error in AiContextSubcontextToggleTrait (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586259 [665] CCC UX sync 27 May 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586236 [666] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [667] [Discuss] Moderation status of subcontext vs parent context items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586264 [668] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [669] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [670] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [671] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [672] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [673] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [674] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [675] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [676] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [677] Add warning on subcontext edit form if parent is unpublished (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586297 [678] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [679] CCC beta2 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586156 [680] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [681] CCC beta3 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586294 [682] Create CCC beta2 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3585920 [683] CCC beta2 codebase review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586202 [684] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [685] Update CCC overview page with hide option and new wording (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586211 [686] Handle the case when scope plugin values are no longer available (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586145 [687] Clean up follow-ups from target entity decoupling review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586082 [688] Issue #3577429: Make Scheduler an optional progressive feature. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/178 [689] Issue #3586272: Add validation that max_global_items cannot exceed max_items (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/181 [690] Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/176 [691] Issue #3586155: Add GitLab issue and merge request templates (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/182 [692] Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/184 [693] Issue #3586252: Update overview page help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/170 [694] Issue #3586270: Document how the Tag scope works (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/183 [695] Issue #3586251: Update subcontext feature help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/169 [696] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [697] Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/177 [698] Issue #3586267: Added SECURITY.md file (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/179 [699] Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11" (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/180 [700] Issue #3586241: Document Supported vs Internal APIs (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/186 [701] Issue #3586244: Add example context items from the Chicago Driesnote demo. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/185 [702] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [703] Issue #3586209: Batch N+1 queries in AiContextUsageTracker (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/174 [704] Automated Project Update Bot fixes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/175 [705] Issue #3586269: Fix linting. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/187 [706] Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/166 [707] Issue #3586284: Clarify context item scope form copy and layout. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/189 [708] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [709] Issue #3586285: Add configure links to Context Control Center. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/190 [710] Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/191 [711] Issue #3586288: Update submodule requirements. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/192 [712] Issue #3586207: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [713] Issue #3586264: Show warning when subcontext parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/193 [714] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [715] Issue #3586297: Add warning on subcontext edit form if parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/196 [716] Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/197 [717] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [718] Issue #3586261: Clean up bundleless context item follow-ups. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/198 [719] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [720] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [721] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [722] Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/203 [723] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [724] Improve AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585220 [725] AI Recipe modal is missing the argument (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585216 [726] Issue #3585220: Improve AI Ecosystem (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/24 [727] Attempt long running chunk indexing for 1.x branch without BC (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584014 [728] Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584010 [729] How to Apply Filters in VDB for RAG Chatbot (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3547016 [730] [Plan] AI Search 2.0.x and roadmap to stable (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3485449 [731] Views should have a warnings when creating a view that has 1+ non full text Filters using an AI Search backend (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3479025 [732] Convert search query to markdown (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3525470 [733] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [734] The title field not found if machine name is different (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3553711 [735] Fix support of non-content entity SearchAPI datasources (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3575999 [736] Consider standard naming conventions for vector dbs (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3539213 [737] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [738] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [739] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [740] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [741] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [742] #3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/45 [743] Issue #3584010: Add FilterableRagTool with per-index derivatives and attribute filtering (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/38 [744] Resolve "Batch embeddings for improved indexing performance" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/53 [745] Field Widget Actions show in the "Add New Action" unavailable tools (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3536116 [746] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [747] Add interactive refinement capability to Field Widget Actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3547306 [748] Examples of plugins for more complex field widgets? (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3576699 [749] Missing events in suggestion.js (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578820 [750] Automated Drupal 12 compatibility fixes for field_widget_actions 1.0.x-dev (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578822 [751] Testing AI Workflow Automation (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578818 [752] Allow other contrib modules to mark their field widgets as childless so FWA actions still appear (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578202 [753] Support for checkboxes/radio buttons using Ajax JS Commands (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578204 [754] Field Widget Button labels are not translatable via UI (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578824 [755] Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/21 [756] create uuids in config action (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/24 [757] Issue #3547306: Add interactive refinement capability to Field Widget Actions (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/19 [758] Trigger events in case of value update on suggestion (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/18 [759] Automated Project Update Bot fixes (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/23 [760] Resolve "Allow other contrib modules to mark their field widgets as childless so FWA actions still appear" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/26 [761] Resolve "Support for checkboxes/radio buttons using Ajax JS Commands" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/25 [762] What's the point of the "Chat proxy to LLM" provider? (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585528 [763] Aggregate a node's translatable field-columns into a single chat request (opt-in batch translation) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585527 [764] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [765] HTML markup gets added after certain tags (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585526 [766] HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585525 [767] 504 Time out on large content (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3545381 [768] Translation batch process does not handle translation errors (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3542014 [769] Automated Drupal 12 compatibility fixes for ai_translate 2.0.x-dev (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585524 [770] Issue #3545381 Split large HTML fields into chunks of a maximum number of characters (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/24 [771] Automated Project Update Bot fixes (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/23 [772] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [773] Issue #3586209: Add support for batching on indexing operations (2.0.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [774] Issue #3586209: Add support for batching operations (1.1.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/33 [775] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/40 [776] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/43 [777] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [778] Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592077 [779] Automated Project Update Bot fixes (flowdrop, MR) — https://git.drupalcode.org/project/flowdrop/-/merge_requests/11 [780] Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev (flowdrop_ui_agents, Issue) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/work_items/3584958 [781] Automated Project Update Bot fixes (flowdrop_ui_agents, MR) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/merge_requests/27 [782] Automated Project Update Bot fixes (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/5 [783] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [784] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [785] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [786] Automated Drupal 12 compatibility fixes for agui 1.0.x-dev (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590037 [787] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 [788] Automated Project Update Bot fixes (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/30 [789] Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576575 [790] Pinecone: fix `getVectorFromNode()` returning no results (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576574 [791] Automated Project Update Bot fixes (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/19 [792] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 2x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/17 [793] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 1x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/18 --- MODULE SUMMARIES ---

                                                                                                                                      AI (Artificial Intelligence)

                                                                                                                                      During the past two weeks, the AI module made significant progress across core infrastructure, user experience, and ecosystem maturity, positioning the project closer to a stable 1.5.0 and 2.0.0 release.

                                                                                                                                      Core Infrastructure and Architecture

                                                                                                                                      The module laid important foundations for version 2.0. A long-running architectural refactor to adopt the Symfony AI Component (v0.8) as the platform provider advanced through multiple merge requests, introducing new inference provider, model router, and platform plugin types. Separately, the Automators subsystem was migrated to structured output, improving reliability when AI models generate field values. Token usage reporting was strengthened: the Fiber execution path—used for streaming chat—now correctly preserves token counts, and observability spans emit OpenTelemetry GenAI semantic conventions alongside existing ad-hoc metrics, so external monitoring tools can consume a standard shape. A new reranking processor for Search API was contributed, making the existing rerank operation type available to any search backend. Field Widget Actions integration with Automators was generalized and ported to the 2.x branch, reducing code duplication across widget types.

                                                                                                                                      Quality, Testing, and Documentation

                                                                                                                                      Multiple functional JavaScript tests were added for the AI CKEditor plugins, covering tone adjustment, translation, and summarization workflows. A commit-message validation rule was merged to enforce issue references on main branches without restricting feature-branch workflow. Several merge requests removed deprecated bundled submodules (AI Content Suggestions, Field Widget Actions) and clarified upgrade paths to their standalone contrib counterparts. Documentation received a last-modified timestamp via the mkdocs git-revision-date plugin, and planning began on a deterministic script to auto-generate the provider/operation-type matrix from live GitLab data.

                                                                                                                                      User Experience and Configuration

                                                                                                                                      The Prompt Library menu link was moved out from under Vector Database Configuration into the top-level AI Infrastructure section. The AI CKEditor status indicator ("AI Writer: Idle") became optional through a new settings toggle. Work is underway to allow chatbot access control to rely solely on Assistant entity roles, removing the redundant "access deepchat api" permission. A regression in the 1.4.x line—commits present in 1.3.3 but missing from 1.4.2—was identified and closed. The guardrail "RegExp" plugin label was renamed to "RegEx" for consistency. Several UX issues were reported and remain open: the chatbot closing on modal events, missing submit buttons in certain tool configuration forms, and rendering problems in dark Gin themes.

                                                                                                                                      Risks and Blockers

                                                                                                                                      No critical blockers were reported. A handful of open bugs—CKEditor context unavailable in off-canvas dialogs, taxonomy automator stripping HTML-encoded entities, non-streaming requests broken inside Fibers—have proposed fixes under review. The 1.5.x and 2.0.x branches remain in active development; no dates for stable releases were announced.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Champion the completion of the Symfony AI Component adoption (MR !1619 and its dependencies) by ensuring architectural review capacity and alignment on the 2.0 roadmap.
                                                                                                                                      • Support ecosystem documentation work: the auto-generated provider matrix and the curated related-modules list both need resourcing to stay current as new providers and companion modules arrive.

                                                                                                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), AKHIL BABU (AkhilBabu) [1], Alphons Jaimon (AJV009), Ann Mary Sruthy (annmarysruthy), Arnaud Willame (arwillame), Artem Dmitriiev (a.dmitriiev) [3], Avinash jha (avinash.jha), Bryan Sharpe (b_sharpe), David Galeano (gxleano), Dimitar Rupov (mrupal), Eric Homanchuk (erichomanchuk), George Kastanis (zorz) [2], Hrishikesh Dalal (hrishikesh-dalal), Javier Destefanis (javierdestefanis), Joshua Fernandes (joshua1234511), Juan Martinez (jcmartinez), Jérôme Tchania (codeitwisely) [1], Levente Besenyei (LeventeB), m4olivei, Marcus Johansson (Marcus_Johansson) [2], Mukeysh, Omar Mohamad - El Hassan Lopesino (omarlopesino), Paul Sheldrake (paulsheldrake), Prabhavathi Vanipenta (prabha1997), Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Ricardo Castañeda (cadence96), Rob Loach (robloach), Ronald te Brake (ronaldtebrake), Scott Euser (scotteuser), scott falconer (scottfalconer), Shivam Sen (shivamsen_12579), Sujal Kshatri (sujal_31), Sven Decabooter (svendecabooter), Thomas Werthmüller (weri), velmir_taky (root_emarketing), Wolfgang Ziegler (fago)

                                                                                                                                      ---

                                                                                                                                      Drupal AI Initiative

                                                                                                                                      The Drupal AI Initiative made significant progress across multiple workstreams during this period, with a strong focus on user experience design, demonstration infrastructure, and partnership growth.

                                                                                                                                      A complete set of AI roadmap feature mockups was delivered, covering eight key editorial workflows including AI-assisted page creation, content review notifications, search, field automation, translation, and dashboard configuration. These interactive prototypes establish a shared design reference for the initiative's direction and were closed as completed during the period.

                                                                                                                                      The foundation for an AI CMS Demo System was established, including repository setup, technical architecture, and proof-of-concept deployment. The demo will showcase AI capabilities built on Drupal CMS in a production-ready format, with hosting-specific configurations to support different deployment environments. This work closed as complete and provides a critical asset for showcasing the initiative's technical capabilities.

                                                                                                                                      Planning advanced for an AI Content Review Workflow, with user experience design and technical architecture both in progress. Once delivered, this will enable editors to trigger AI-powered content quality checks, compliance validation, and brand consistency reviews directly within Drupal's editorial interface.

                                                                                                                                      A new Gold partner, Reading Room, was onboarded during the period, expanding the initiative's contributor and funding base. The Enterprise AI Summit continued planning, with case study sourcing, sponsor updates, and mobile site improvements underway.

                                                                                                                                      New concepts were introduced for a Cost & Usage module to give site owners visibility into AI spending and usage patterns, and for hosting provider skills that would allow developers to control deployment through conversational instructions.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate resources to support the AI Content Review Workflow technical build now that design and architecture are defined, ensuring timely delivery of this flagship editorial feature.
                                                                                                                                      • Champion adoption of the new demo system with key stakeholders and potential users to maximize visibility and feedback once deployment is complete.
                                                                                                                                      • Approve partnership outreach to additional hosting providers beyond DevPanel to expand the reach of deployment automation skills.
                                                                                                                                      ---

                                                                                                                                      AI Integration - ECA

                                                                                                                                      The AI Integration - ECA module is working toward a stable 1.0.0 release by expanding coverage of AI operations that can be automated through low-code workflows. The module currently supports five AI operation types; over the past two weeks, work has been organised to add actions for nine additional operations, including summarisation, text classification, text-to-image generation, audio-to-audio processing, image classification, image-to-image and image-to-video transformations, object detection, and speech-to-speech conversion. Proposals were also opened for simplifying how structured data formats are configured in chat workflows and for adding an interceptor submodule that will let administrators monitor or modify AI requests and responses as they flow through the system.

                                                                                                                                      Three merge requests have been submitted covering text classification, summarisation, and a broader set of new operations. Automated compatibility updates for Drupal 12 are also in progress. All open issues are part of normal feature development for a pre-release module; no blocking concerns have been identified.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Ensure capacity is available for code review so the pending merge requests covering nine new operation types can be evaluated and merged promptly.
                                                                                                                                      • Clarify the release timeline and any outstanding decisions needed to reach the 1.0.0 milestone.

                                                                                                                                      Contributors: Joshua Fernandes (joshua1234511), Marcus Johansson (Marcus_Johansson), project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      AI Agents Test

                                                                                                                                      AI Agents Test is a module that helps site builders validate whether their AI configurations are working as expected. Over the past two weeks, activity focused on planning improvements to testing workflows and clarifying the module's future direction.

                                                                                                                                      A research issue was closed that explored whether this module should be merged with a related evaluation tool, ai_eval. This decision provides clarity on the project's scope and helps avoid duplication of effort across the Drupal AI ecosystem.

                                                                                                                                      Work also progressed on a proposal to allow users to run more than one test group in bulk. This would make it easier for teams to test multiple AI models or configurations at once, rather than running tests individually. The capability would be particularly valuable when comparing different model performance or validating prompt engineering changes across several scenarios.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Confirm whether bulk test execution is a priority feature that warrants dedicated development resources, as it would improve efficiency for teams comparing multiple AI configurations.
                                                                                                                                      • Clarify strategic positioning now that the module's scope has been separated from other evaluation tools in the ecosystem.
                                                                                                                                      ---

                                                                                                                                      OpenAI Provider

                                                                                                                                      The OpenAI Provider module made steady progress during this period, with two enhancements merged and three additional improvements under review.

                                                                                                                                      Support for image-to-image capabilities was added, expanding the range of AI-powered image operations available to users. The default image generation model was also updated to remove the deprecated Dall-E 3 option, ensuring the module aligns with current provider offerings.

                                                                                                                                      Three open merge requests are awaiting review: moderation skip functionality with test coverage, batch embeddings support for more efficient processing of multiple text inputs, and routine automated maintenance updates.

                                                                                                                                      Overall, the module is progressing with incremental feature additions and maintenance work typical of active development.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Ensure reviewer capacity is available to assess and merge the three pending improvements, particularly the batch embeddings feature which may benefit users processing larger volumes of content.
                                                                                                                                      • Consider whether formal testing resources could accelerate quality assurance for new features like moderation controls.
                                                                                                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser) ---

                                                                                                                                      Anthropic Provider

                                                                                                                                      The Anthropic Provider module made significant progress during this period with the delivery of prompt caching capabilities. A merge request adding prompt caching and SDK improvements was completed and merged, giving administrators new tools to optimize performance and reduce costs. Users can now enable prompt caching through a simple toggle in the provider settings and select cache durations of either five minutes or one hour. This feature allows frequently-used prompts to be reused without reprocessing, potentially reducing API costs and improving response times for repetitive workflows.

                                                                                                                                      Additionally, work is underway to address a compatibility issue with multi-agent conversations. A proposed fix for conversations ending with non-user messages remains open. This issue affects scenarios where AI agent handoffs result in message sequences that the Anthropic API does not accept, causing errors in tools like Drupal Canvas AI.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize review and testing of the open multi-agent conversation fix to unblock AI agent workflows and improve user experience.
                                                                                                                                      • Allocate resources for documentation or user guidance on prompt caching benefits to drive adoption of the new cost-saving feature.

                                                                                                                                      Contributors: Carlos Ospina (camoa), Rajab Natshah (RajabNatshah)

                                                                                                                                      ---

                                                                                                                                      Fireworks AI

                                                                                                                                      The Fireworks AI module saw focused maintenance activity during this period. Three commits were made to address requirements and improve the module's underlying structure. The work included fixes to module requirements and a refactoring of the rerank functionality to use standardized base components, which should improve consistency and maintainability going forward.

                                                                                                                                      No issues were updated and no merge requests were completed during this period, indicating a quiet fortnight focused on incremental improvements rather than major feature development or bug resolution.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Clarify the project's strategic priority and resource allocation to determine whether this module should receive sustained development effort or remain in maintenance mode.
                                                                                                                                      • Support community engagement by encouraging user testing and feedback to identify the most valuable next features or improvements.

                                                                                                                                      Contributors: Marcus Johansson [3]

                                                                                                                                      ---

                                                                                                                                      MCP Client

                                                                                                                                      The MCP Client module saw minimal development activity during the reporting period. An automated maintenance update was initiated to keep the project aligned with current standards, though no work was merged or completed during this time.

                                                                                                                                      The module remains in an early stage of development, and the lack of substantial progress may indicate limited active development resources or that work is occurring outside the main repository.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Clarify whether this module remains a strategic priority and allocate dedicated development resources if continued progress is expected.
                                                                                                                                      • Identify and engage potential contributors or partners who could accelerate development and bring the module to a stable release.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      amazee.ai Private AI Provider

                                                                                                                                      This module provides integration with amazee.ai's private AI infrastructure. During the reporting period, two fixes were merged to address compatibility and configuration issues.

                                                                                                                                      A missing database extension dependency was resolved, ensuring the module correctly declares its requirement for PostgreSQL functionality. Separately, validation was improved to prevent configuration errors when key identifiers are empty or invalid.

                                                                                                                                      An automated compatibility update for Drupal 12 has been prepared and is awaiting review. This work ensures the module will remain functional as the platform evolves.

                                                                                                                                      The module continues to mature with focused bug fixes that improve reliability and deployment safety. No blocking issues were reported during this period.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Review and approve the pending Drupal 12 compatibility update to ensure timely platform support.
                                                                                                                                      • Confirm ongoing resourcing for maintenance as the module moves toward stable release.
                                                                                                                                      Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot) ---

                                                                                                                                      Gemini Provider

                                                                                                                                      The Gemini Provider module saw focused development activity over the past two weeks, advancing key capabilities for the platform's AI integration.

                                                                                                                                      Work progressed on expanding the module's embedding functionality. A proposal for batch embeddings support is under review, which would allow the system to process multiple embedding requests more efficiently. Separately, development continues on image embeddings, which would enable the platform to index and search using images—a differentiating capability that few other providers offer.

                                                                                                                                      Two issues address module stability. A fix for content blocking error handling is in progress, which would prevent the system from crashing when content safety filters are triggered. The team is also working through code quality checks to ensure the automated test suite accurately reflects the module's health. Additionally, automated compatibility updates for Drupal 12 are being prepared.

                                                                                                                                      The module remains in active development with normal issue activity for this stage.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize which embedding capability—batch processing or image support—delivers greater business value, to help the team sequence work.
                                                                                                                                      • Ensure testing resources are available to validate content blocking scenarios before release.

                                                                                                                                      Contributors: Artem Dmitriiev (a.dmitriiev), Ishani Patel (IshaniPatel), Joshua Fernandes (joshua1234511), project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      Huggingface Provider

                                                                                                                                      The Huggingface Provider module saw focused development activity during this period. A merge request was opened to add extractive question answering capability to the module. This feature would enable the platform to automatically answer questions by extracting relevant information from provided text, expanding the module's natural language processing capabilities beyond its current functionality.

                                                                                                                                      The module remains in active development with no critical blocking issues reported during this period. As an integration module connecting Drupal to Huggingface's machine learning services, steady feature additions like this help broaden the range of AI-powered content and user experience features available to site builders.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Provide clarity on which AI capabilities are strategic priorities for upcoming releases to help focus development effort.
                                                                                                                                      • Ensure the team has access to stakeholders who can validate whether new features like question answering meet real user needs.
                                                                                                                                      Contributors: Ahmad Khader (Ahmad-Khader) ---

                                                                                                                                      Microsoft Azure AI

                                                                                                                                      The Microsoft Azure AI module saw focused development activity during this period, with improvements made to the text-to-image capabilities. This enhancement enables users to generate images from text descriptions more effectively, supporting content creation workflows and creative automation use cases.

                                                                                                                                      The module continues to evolve as an integration point between Drupal sites and Microsoft's Azure AI services, allowing organizations to leverage cloud-based artificial intelligence features for content generation and media production.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Consider identifying internal use cases that would benefit from AI-generated imagery to validate the module's value proposition.
                                                                                                                                      • Evaluate whether additional resourcing could accelerate development toward a stable release suitable for production deployment.

                                                                                                                                      Contributors: Marcus Johansson [1]

                                                                                                                                      ---

                                                                                                                                      Milvus VDB Provider

                                                                                                                                      The Milvus VDB Provider project saw preparatory work this period, with no changes merged into the codebase. Two merge requests remain open for review.

                                                                                                                                      A batching feature for indexing operations has been proposed. This enhancement would allow the system to process multiple indexing operations together rather than one at a time, improving efficiency when working with large volumes of data. This capability is particularly valuable for organizations managing extensive content libraries or knowledge bases.

                                                                                                                                      Additionally, an automated maintenance update has been prepared to keep the project aligned with Drupal coding standards and infrastructure requirements.

                                                                                                                                      Both changes are awaiting review before they can be incorporated. With no commits merged during this period, there are no immediate changes to functionality or stability.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Ensure reviewer capacity is available to evaluate the pending batching enhancement, which could unlock performance improvements for users with large-scale indexing needs.
                                                                                                                                      • Clarify strategic priorities for the module's feature roadmap to help contributors focus effort on high-value capabilities.

                                                                                                                                      Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      Postgres VDB Provider

                                                                                                                                      During this period, a merge request was opened to address dependency management within the module. The work aims to remove the hard requirement on a specific database extension, which would provide more flexibility in how the module can be deployed and integrated into different environments. This change could reduce implementation barriers and make the module more adaptable to varying infrastructure setups.

                                                                                                                                      No merge requests were completed during this period, and no open issues required attention. As an early-stage module, this level of activity is typical, with development progressing incrementally.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Ensure the team has capacity to review and finalize the pending dependency work, which could unlock broader adoption scenarios.
                                                                                                                                      • Clarify strategic priorities for this module relative to other vector database integrations to guide future resourcing decisions.

                                                                                                                                      Contributors: Emiel Bloem (emielb)

                                                                                                                                      ---

                                                                                                                                      AI Image Alt Text

                                                                                                                                      The module saw limited activity during this period, with one merge request opened to expand compatibility with newer versions of the AI module framework. This work aims to ensure the module can integrate with the latest AI infrastructure, which will help maintain its viability as the broader AI ecosystem evolves.

                                                                                                                                      No issues were updated, no code was committed, and no merge requests were finalized during this two-week window. This suggests the project is in a quiet phase with ongoing but not yet completed work.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Assign capacity to review and finalize the AI module compatibility update to keep the module current with its dependencies.
                                                                                                                                      • Consider whether this module aligns with strategic priorities and warrants continued investment or formal release planning.

                                                                                                                                      Contributors: Peter Philipp (daspeter)

                                                                                                                                      ---

                                                                                                                                      Model Context Protocol

                                                                                                                                      The Model Context Protocol module is receiving automated compatibility updates to prepare for Drupal 12. A compatibility issue was opened to track the removal of deprecated code, with a corresponding merge request containing proposed fixes. No changes have been merged yet during this period.

                                                                                                                                      This automated maintenance work ensures the module will continue functioning when Drupal 12 is released, reducing technical debt and avoiding future migration costs. The updates are being generated systematically to identify code that will no longer be supported in the next major version of Drupal.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate developer time to review and test the pending compatibility updates, ensuring the module is ready before Drupal 12's release timeline becomes critical.
                                                                                                                                      • Clarify the module's strategic importance and maintenance priority to help the team decide whether to invest in Drupal 12 support or sunset the project.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      AI Agents

                                                                                                                                      The AI Agents module made steady progress during this period, with work focused on improving usability, fixing structural issues, and preparing for broader platform integration.

                                                                                                                                      Several administrative refinements were addressed. The module's menu structure is being aligned with the updated AI 1.4.x navigation, moving AI Agents under a new "Tools & Automation" category to improve discoverability. A schema was added for the CKEditor integration to eliminate configuration warnings. Work also began to improve the structured-output schema editor, replacing a plain text field with a purpose-built JSON editor that provides validation and syntax highlighting.

                                                                                                                                      Multiple bug fixes addressed runtime reliability. Issues that previously broke the user interface when tools encountered errors are now handled more gracefully. A fix was completed to ensure that tools marked as "return directly" properly track their identifiers in the conversation history. Work is in progress to resolve how Views agent updates are applied to non-default displays, ensuring that configuration changes appear correctly at runtime.

                                                                                                                                      Strategic development included logging interface documentation and exploration of a plugin system to export or synchronize agents to external platforms such as Claude Code and VAPI, which would allow Drupal-configured agents to operate in external AI ecosystems. Work also continued on integrating agents with the chat processor architecture, enabling tighter parity with the AI Assistant layer.

                                                                                                                                      Contributors: Ahmad Khader (Ahmad-Khader), Bharat Kelotra (bharatkelotra), David Galeano (gxleano), Jürgen Haas (jurgenhaas), Marcus Johansson [1], Nicolae Procopan (thebumikgmail.com), Prabhavathi Vanipenta (prabha1997), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Sven Decabooter (svendecabooter)

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Clarify priority and scope for the external platform integration work to inform resourcing decisions and avoid scope creep in a maturing codebase.
                                                                                                                                      • Designate ownership for the Views agent display override issues to unblock validation and merge of fixes already in review.
                                                                                                                                      ---

                                                                                                                                      Tool API

                                                                                                                                      The Tool API module, which enables AI agents to invoke structured operations within Drupal, saw focused refinement work over the past two weeks. A critical usability issue was resolved: the command-line interface had been masking failure messages when tools encountered errors, making it difficult to understand what went wrong. This bug was fixed, ensuring meaningful error messages now surface correctly when operations fail.

                                                                                                                                      Discussion continued on several enhancements that would improve how the module integrates with AI systems and developer workflows. Teams explored File Input Handling to understand how tools can securely accept and process files from AI agents. Work also progressed on Add skills for generating Tools, which was closed during the period, aiming to make it easier for AI coding assistants to generate new tool definitions. Proposals were discussed around Allow controlling Tool return format to support both human-readable and machine-readable outputs, and Proposal: make Tool's declarations introspectable over the CLI to help consumers better understand available tools before invoking them.

                                                                                                                                      A serialization compatibility issue affecting REST endpoints received attention, with a merge request now under review. Additional planning issues remain open around preview capabilities and improved tool discovery for large-scale AI agent deployments.

                                                                                                                                      How can I help on this project?

                                                                                                                                      Consider allocating resources to review and finalize the serialization fix, which affects REST API integration. Support decision-making around tool discovery and execution patterns to clarify the roadmap for AI agent scaling. Advocate for user testing of the file input handling research once prototype work completes.

                                                                                                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar), Marcus Johansson (Marcus_Johansson), Matt Glaman (mglaman) [1] ---

                                                                                                                                      Drupal Canvas

                                                                                                                                      During the reporting period, substantial progress was made on symmetric translation support for multilingual Canvas sites. A large merge introduced automatic propagation of component version updates to all translations of both content and config entities, preventing translation drift when code components evolve. The underlying data model now treats content and config translations uniformly through a new staged-config-override abstraction. Several bugs blocking the translation milestone were resolved, including a fatal error when an image reference pointed to a deleted file, and incorrect translatability of entity-reference inputs. The pending-changes review UI was refined to prevent accidental per-translation operations until the full langcode-aware publishing flow is in place.

                                                                                                                                      Work continued on conflict detection and resolution. The back-end now recognizes when an auto-save diverges from a published entity that has changed externally, and the UI displays conflict indicators during selective publishing. This functionality is currently behind a feature flag while the resolution flow is refined. A rudimentary resolution interface was merged, offering side-by-side comparison and viewport selection.

                                                                                                                                      Canvas AI improvements included a fix to the orchestrator agent's UUID persistence during post-updates, correct exposure of block component props to agents, and test fixtures for page-builder and template-builder agents. Several prompt bugs affecting component generation (deprecated imports, prop/slot collisions, hardcoded errors) were consolidated and resolved. In-progress chat messages now persist when page metadata changes mid-run.

                                                                                                                                      The CLI was updated: deprecated upload and download commands were removed, media reconciliation now respects sync settings, and command output was cleaned up for improved readability and AI-agent consumption. JavaScript packages were updated, and the kernel test suite was split across four parallel CI jobs to reduce pipeline time. A regression causing boolean props to auto-enable when other fields changed was traced to falsy-value coercion and a Twig template quirk, and fixed. A full-screen "page" extension type was introduced, and test coverage for multi-translation component-instance updating was strengthened.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize review and feedback on the conflict-resolution feature flag and UI (still in draft/refinement) so it can move to stable and support production editorial workflows.
                                                                                                                                      • Allocate resources to expand test coverage for content-entity-reference props and translation edge cases, reducing manual QA overhead as the feature set grows.

                                                                                                                                      Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Adam G-H (phenaproxima), Ahmad Khalil (ahmad-khalil-imagex) [1], AKHIL BABU (AkhilBabu) [3], Alamgir Hossain (alamgir.hossain.cse), Andrew Belcher (andrewbelcher), Ben Mullins (bnjmnm) [3], Björn Brala (bbrala) [1], Bálint Kléri (balintbrews) [7], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [8], Feliksas Mazeikis (f.mazeikis) [2], Gábor Hojtsy (goba), Jakob P (japerry), Kunal Sachdev (kunal.sachdev) [2], Lauri Timmanee (lauriii) [1], Matt Glaman (mglaman) [2], Narendra Singh Rathore (NarendraR) [1], Oleksandr Antonchyk (Anton4yk), Priyanka Patel (priyankapatel), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [2], Sally Young (justafish), scott falconer (scottfalconer), Shubham Prakash (shubham.prakash), Ted Bowman (tedbow) [1], utkarsh_33 (Utkarsh_33) [1], Wim Leers (wimleers) [7], wotnak

                                                                                                                                      ---

                                                                                                                                      Context Control Center (CCC)

                                                                                                                                      Context Control Center shipped significant progress toward its beta3 milestone during this period, with a focus on documentation, UI improvements, and stabilizing core features ahead of the first release candidate.

                                                                                                                                      Several important enhancements were merged to improve the user experience. Full view layout for context item pages was completed, replacing the default field list with a two-column design that surfaces scope and subcontext details more clearly. The context listing page was refined to merge separate Use Cases and Scope columns into a unified display with cascading filters, making it easier to browse and filter context items. The overview page description and subcontext feature documentation were updated to clarify their purpose and benefits.

                                                                                                                                      A new experimental submodule, Document Loader: Context Importer, was introduced to allow users to import context from PDF, Markdown, text files, and URLs via an MDXEditor integration. Example context items from the Chicago Driesnote demo were added to help testers explore the module's capabilities.

                                                                                                                                      Important API and configuration work included validation to prevent invalid global context limits, better support for scope value extension via hooks, a public API for scope subscription forms, and making the Scheduler feature optional. Conditional subcontext received a toggle, caching, and per-request limit to manage latency and provider costs. Usage tracking query inefficiencies were resolved by batching database operations.

                                                                                                                                      Quality improvements included PHPUnit process isolation attributes on all kernel tests, eslint error fixes, and bundleless context item follow-ups. Developer resources were strengthened with GitLab issue and merge request templates, a SECURITY.md file, and API stability documentation distinguishing supported from internal interfaces.

                                                                                                                                      Beta testing recruitment is underway, and planning for the beta3 release continues with remaining milestone work focused on scope plugin refinement, documentation consistency, and accessibility improvements identified through AI Best Practices review.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Support recruitment and onboarding of beta testers by sharing CCC resources and demo videos with relevant stakeholder groups or partner organizations.
                                                                                                                                      • Allocate design and accessibility review time to help resolve open UX issues flagged for the release candidate.
                                                                                                                                      • Help prioritize scope plugin and API stabilization work against other organizational commitments to keep the beta3 and RC1 timeline on track.

                                                                                                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar) [2], Ahmad Khader (Ahmad-Khader) [1], Anikó Viola (violaniko) [1], Daniel Rodriguez (danrod) [1], Eric Homanchuk (erichomanchuk) [1], Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [2], Kristen Pol (kepol) [9], Matt Glaman (mglaman) [5], Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Rob Loach (robloach) [2], Tamas Balog (tbalog)

                                                                                                                                      ---

                                                                                                                                      AI Dashboard

                                                                                                                                      The AI Dashboard project made progress on documentation and user experience improvements during this period. Work continued on expanding the AI ecosystem directory, which will help site administrators discover and browse available AI-related modules. A modal display issue affecting the recipe installation feature was identified and postponed for future resolution.

                                                                                                                                      The most significant development is an open proposal to Improve AI Ecosystem, which includes plans to integrate a module directory directly into the Dashboard interface, allowing users to browse AI modules without leaving their site. The work also includes improving category detection and adding automated updates to keep the ecosystem listing current. This would streamline the module discovery process and reduce friction for teams looking to expand their AI capabilities.

                                                                                                                                      A bug affecting the recipe installation modal was reported and postponed, which currently prevents users from installing AI features through the interface as intended.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Clarify whether the recipe installation feature is a priority for users, or if postponing this capability is acceptable for current adoption goals.
                                                                                                                                      • Review the ecosystem integration proposal to ensure it aligns with your broader module distribution and user onboarding strategy.

                                                                                                                                      Contributors: Rob Loach (robloach)

                                                                                                                                      ---

                                                                                                                                      AI Search

                                                                                                                                      The AI Search module made progress on indexing performance and search filtering capabilities during this period. A feature enabling long-running chunk indexing was completed and merged, allowing the system to handle larger content sets without breaking changes to existing installations. Work is underway on batch embeddings to further improve indexing speed.

                                                                                                                                      A new approach to dynamic search filtering is in development through the FilterableRagTool feature, which would allow sites to filter search results by custom attributes (such as case studies or content types) at query time. An existing filter issue was closed during the period.

                                                                                                                                      Four configuration and error-handling issues were opened late in the period, highlighting gaps in logging, parameter handling, and support for non-embedding search providers. These are typical of alpha-stage development and will need attention to improve reliability and clarity for site administrators configuring the module.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize resources to resolve the four recently opened configuration and error-handling issues, which affect admin experience and provider flexibility.
                                                                                                                                      • Clarify the roadmap for the 2.0 stable release, particularly around compatibility with the AI Core 2.x integration work that is currently blocked.
                                                                                                                                      Contributors: Artem Dmitriiev (a.dmitriiev), m4olivei, Scott Euser (scotteuser) [1] ---

                                                                                                                                      Field Widget Actions

                                                                                                                                      Field Widget Actions enables users to add action buttons (such as AI content generators) directly into content editing forms. Over the past two weeks, the project delivered several important refinements that improve usability, compatibility, and the reliability of AI-powered workflows.

                                                                                                                                      Three fixes were completed and merged. A bug preventing unavailable actions from appearing in configuration menus was resolved, reducing confusion during setup. A compatibility issue affecting integrations like autosave was addressed so that when users select AI-generated suggestions, other form elements respond correctly. Automated compatibility updates for the upcoming Drupal 12 release were also applied.

                                                                                                                                      A significant new capability was delivered: interactive refinement for AI content. Users can now iteratively improve generated content through a modal interface, submitting follow-up prompts to refine results before inserting them into the field. This feature is optional and does not affect existing workflows.

                                                                                                                                      Three enhancements remain in progress. Work is underway to simplify how automated configuration recipes declare actions, to support additional third-party field widgets, and to extend action buttons to checkbox and radio inputs. A minor issue regarding button label translation was reported and is under review.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Ensure the configuration recipe enhancement receives review and testing resources so automated deployments can be simplified.
                                                                                                                                      • Support testing and sign-off for the checkbox and radio button enhancements currently in review.
                                                                                                                                      • Prioritize resolution of the translation workflow gap if multilingual deployments are planned.

                                                                                                                                      Contributors: Artem Dmitriiev (a.dmitriiev) [1], Daniel Bosen (daniel.bosen), Edward Zwart (ezeedub) [1], project update bot (Project-Update-Bot) [1], Scott Euser (scotteuser), Volker Killesreiter (volkerk) [1]

                                                                                                                                      ---

                                                                                                                                      AI translate

                                                                                                                                      The AI translate module saw focused attention on content quality and scale challenges during this period. Work is underway to address timeouts when translating large pages (over 1,000 words) by splitting content into manageable chunks. A merge request has been prepared to resolve 504 Time out on large content, which should enable translation of larger documents without service interruptions.

                                                                                                                                      Two significant content integrity issues were flagged: HTML markup is corrupted/not preserved when translating formatted text fields and HTML markup gets added after certain tags. These affect the reliability of translations for content containing rich text formatting, which is common in most content management scenarios.

                                                                                                                                      Strategic development discussions include a proposal to batch field translations into single requests rather than translating each field separately, which would reduce redundant API calls and associated costs. A workflow refactoring plan was raised to support agent-driven translation. Compatibility work for Drupal 12 progressed with an automated update.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize resolution of the HTML markup preservation issues, as they affect content quality and may require prompt engineering or architectural decisions about how formatted content is processed.
                                                                                                                                      • Review and approve the batching proposal for field translation to reduce API costs and improve efficiency before implementation begins.

                                                                                                                                      Contributors: Miriam Nugent (Peacog), project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      Pinecone VDB Provider

                                                                                                                                      The Pinecone VDB Provider module, which enables integration with Pinecone vector database services, saw focused development activity during this period. Work centered on improving the efficiency of data indexing operations through a new batching capability, inspired by similar improvements in a related module.

                                                                                                                                      Two proposals were prepared to add batching support for indexing operations, one targeting the current stable version and another for the next major release. This enhancement will allow the module to process multiple data items together rather than individually, which should reduce processing time and improve performance when handling large volumes of content. Both proposals are awaiting review.

                                                                                                                                      No code was merged or deployed during this period. The module remains in active development with work progressing on performance optimization features.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate technical review capacity to evaluate the pending batching proposals, enabling the performance improvements to move forward.
                                                                                                                                      • Clarify versioning strategy: determine whether batching should be introduced in the stable release, the next major version, or both.

                                                                                                                                      Contributors: Rob Loach (robloach)

                                                                                                                                      ---

                                                                                                                                      AI powered Search Block

                                                                                                                                      Development activity over the past two weeks focused on feature enhancement and maintenance. Work began on adding guardrail set selection capabilities to the search block, which will give administrators better control over content safety and quality standards in AI-generated search results. This addresses a need for more configurable content moderation in user-facing search experiences.

                                                                                                                                      Two automated maintenance updates were also opened to keep the module's dependencies and coding standards current. No code was merged during this period, indicating work remains in review and validation stages.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate review resources to assess and approve the pending guardrail selection feature and maintenance updates, accelerating their path to release.
                                                                                                                                      • Clarify strategic priorities for content moderation features to guide decision-making on the guardrail implementation approach.

                                                                                                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      FlowDrop

                                                                                                                                      FlowDrop has begun preparing for compatibility with the upcoming Drupal 12 release. An automated compatibility fixes issue was opened to track removal of deprecated code that will no longer be supported in the next major version of Drupal. A corresponding merge request has been prepared containing the necessary updates.

                                                                                                                                      This work ensures FlowDrop will continue to function when Drupal 12 is released, preventing disruption for sites that upgrade their core platform. The changes address technical deprecations introduced in earlier Drupal versions that must be resolved before the next major release.

                                                                                                                                      No commits were finalized during this period, indicating the compatibility changes are still under review. This is normal preparation work for upcoming platform changes and does not represent any immediate risk to current users.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate developer time to review and finalize the Drupal 12 compatibility updates so the module is ready before the core platform release.
                                                                                                                                      • Clarify the project's timeline and priority for Drupal 12 support to guide resource planning.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      FlowDrop UI Agents

                                                                                                                                      Work continued during this period to prepare the module for compatibility with Drupal 12. An automated compatibility update was opened to address deprecated code patterns that will no longer be supported in the next major version of Drupal. A corresponding merge request was created with proposed changes spanning over 230 lines of code.

                                                                                                                                      This compatibility work is essential groundwork to ensure the module remains functional when Drupal 12 is released. Without these updates, the module would eventually break for users upgrading their systems. The changes are still under review and have not yet been integrated.

                                                                                                                                      No commits were merged during this period, meaning no new functionality was delivered to users. The focus remains on ensuring long-term platform compatibility rather than adding features or fixing user-facing issues.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Allocate technical review capacity to evaluate and merge the pending Drupal 12 compatibility updates, preventing delays in platform readiness.
                                                                                                                                      • Clarify the module's strategic priority and roadmap to determine whether active development should continue or resources should be redirected.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      Langfuse

                                                                                                                                      Activity during this period was limited to automated maintenance. A merge request containing automated fixes was opened by the project update bot. This type of work helps keep the module aligned with Drupal coding standards and platform updates, reducing technical maintenance burden over time. No issues were updated and no code was committed to the main codebase during this window.

                                                                                                                                      The module appears to be in a quiet phase with minimal development activity. With only automated maintenance in progress and no active issue resolution or feature development, the project may benefit from renewed attention to advance its roadmap.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Review and approve the pending automated maintenance work to keep the module's infrastructure current.
                                                                                                                                      • Assess whether dedicated developer time should be allocated to move the project toward a stable release.
                                                                                                                                      • Clarify the strategic priority of this module and communicate direction to potential contributors.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      Orchestration

                                                                                                                                      The Orchestration module saw planning and design activity across three strategic initiatives during this period, though no code was merged. Work is underway to expand integration options and improve the module's flexibility.

                                                                                                                                      Progress centered on integration with n8n, a workflow automation platform. This will enable two-way communication between Drupal and n8n, allowing Drupal events to trigger external workflows and n8n to create or update Drupal content in return. For organizations already using n8n, this would reduce manual bridging work and open new automation possibilities.

                                                                                                                                      A proposal to adopt JSON Schema for defining inputs, outputs, and configuration is being explored. This would provide clearer contracts for how workflow components connect, making it easier to validate and document automations before they run.

                                                                                                                                      Separately, work is planned to allow ECA workflows to invoke Orchestration services. Currently, Orchestration can call ECA, but not the reverse. Closing this gap would let teams use ECA's event system to trigger any registered Orchestration service.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Clarify strategic priority between n8n integration and the JSON Schema refactor to focus development effort.
                                                                                                                                      • Confirm whether n8n is the right platform investment based on organizational automation roadmap and existing tooling.
                                                                                                                                      ---

                                                                                                                                      AG-UI

                                                                                                                                      Over the past two weeks, work began on preparing AG-UI for compatibility with the upcoming Drupal 12 release. An automated compatibility fixes issue was opened to track the removal of deprecated code patterns, with an associated merge request now under review. This proactive maintenance ensures the module will continue functioning when Drupal 12 becomes available, reducing future technical debt.

                                                                                                                                      Separately, planning continued on the Drupal Assistant Implementation meta issue, which aims to evolve the current proof-of-concept assistant into a production-ready feature that could replace the existing chatbot functionality. This represents a strategic enhancement to how users interact with AI capabilities within Drupal.

                                                                                                                                      No code was merged during this period, reflecting typical early-stage development activity where compatibility groundwork and feature planning are underway.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize whether the Drupal Assistant feature should be resourced for production development or remain experimental, enabling clearer roadmap planning.
                                                                                                                                      • Ensure the team has capacity to review and merge the Drupal 12 compatibility changes before the next major Drupal release.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot)

                                                                                                                                      ---

                                                                                                                                      AI Related Content

                                                                                                                                      During this period, a significant defect affecting the Pinecone integration was resolved. The issue prevented the related content view from returning any results when using Pinecone as the vector database provider. The underlying problem involved a query filter that was being silently ignored, causing the system to retrieve random semantic matches rather than properly filtered content. This has now been fixed, restoring the module's ability to deliver relevant content recommendations to end users.

                                                                                                                                      Additionally, automated Drupal 12 compatibility work has begun, with an open merge request containing compatibility updates. This positions the module to support the next major version of Drupal when it becomes available.

                                                                                                                                      How can I help on this project?

                                                                                                                                      • Prioritize review and approval of the pending Drupal 12 compatibility updates to ensure the module remains supportable as the platform evolves.
                                                                                                                                      • Consider allocating testing resources to validate the Pinecone fix across production-like environments before wider deployment.

                                                                                                                                      Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1]

                                                                                                                                      ======================================================================== ## [78] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 7 ======================================================================== ## [79] generate2026Capabilities ======================================================================== You are an editor writing a strategic section for a non-technical executive audience. The Drupal AI initiative has 8 planned capabilities for 2026. Your task is to read the module activity summaries below and explain how today's progress moves each capability forward — or note where there was no relevant progress today. Be concise and direct. Focus on what matters to a business leader: is progress happening, what is the next milestone, and are there any risks? When you describe progress on a capability, add inline citations using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations at the end of the relevant sentence, before the closing punctuation. Output an HTML fragment using exactly this structure:

                                                                                                                                      2026 Capabilities Progress

                                                                                                                                      1. Capability name — One or two sentences on how today's activity relates to this goal, or "No direct progress today" if nothing relevant occurred.
                                                                                                                                      Use only the 8 capabilities listed below, in the same order. Do not add, remove, or rename them. Do not output any text outside the

                                                                                                                                      and
                                                                                                                                        tags. --- 2026 CAPABILITIES --- 1. Page generation — Describe what you need and get a usable page, built from your actual design system components 2. Context management — A central place to define brand voice, style guides, audience profiles, and governance rules that AI can use 3. Background agents — AI that works without being prompted, responding to triggers and schedules while respecting editorial workflows 4. Design system integration — AI that builds with your components and can propose new ones when needed 5. Content creation and discovery — Smarter search, AI-powered optimization, and content drafting assistance 6. Advanced governance — Batch approvals, branch-based versioning, and comprehensive audit trails for AI changes 7. Intelligent website improvements — AI that learns from performance data, proposes concrete changes, and gets smarter over time through editorial review 8. Multi-channel campaigns — Create content for websites, social, email, and automation platforms from a single campaign goal --- REFERENCE LIST --- [1] Regression in 1.4x release vs 1.3.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586546 [2] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [3] AiPromptSubForm validates inline prompt against stale prompt type when multiple ai_prompt elements exist (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586548 [4] Taxonomy automator clears valid term values when the LLM returns HTML-encoded entities (e.g. &) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586553 [5] Remove access deepchat api permission and use Assistant access as the single source of truth (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586552 [6] Permissions to use AI Assistant are confusing (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3498873 [7] Create AI assistant API session only after the first message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554797 [8] Add Extractive Question Answering operation type (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584371 [9] How to use AI file entity defined in file src/Entity/AiFile.php ? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586551 [10] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [11] Improve ai_ckeditor UX when no provider modules are installed (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586549 [12] Issue when creating content and click on AI Assistant on Ckeditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586545 [13] Use ai_provider_configuration form element in RestrictToTopic configuration form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586472 [14] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [15] Rename Guardrails "RegExp guardrail" plugin to just "RegEx" (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586475 [16] Automated Drupal 12 compatibility fixes for ai 1.4.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586555 [17] lb asymetric translation not translating content anymore. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586554 [18] DeepChat Block invisible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3554969 [19] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [20] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [21] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [22] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [23] Support long running chunking in 1.x branch for AI Search 1.x readiness (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586557 [24] Improve summarizer for AI request input and output data for logs and spans (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566762 [25] First load of ai_provider_configuration is slow (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579392 [26] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [27] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [28] Move Automators to Structured Output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577170 [29] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [32] Missing "Submit" button from "RAG/Vector Search" tool Configuration modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586533 [33] Fiber branch in OpenAiBasedProviderClientBase::chat() drops token usage from the reconstructed ChatOutput (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586522 [34] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [35] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [36] Inaccurate description in Generated Content External Link Security (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586560 [37] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [38] Add mariadb to vdb registry (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586559 [39] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [40] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [41] Add info about initiative and release differences to project page (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586568 [42] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [43] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [44] Allow vector database providers to opt in as the default VDB when none is set (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586500 [45] AI CKEditor regression in 1.5.x? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586567 [46] Release 1.2.17, 1.3.8, 1.4.3 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586565 [47] Add AIDmi to Other modules/recipes that work with the AI module (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586566 [48] Add AI Assistant API ChatProcessor plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585075 [49] Integrate ChatProcessor plugin system into AI Chatbot DeepChat block (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585077 [50] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [51] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [52] Uninstalling ai_ckeditor leaves stale toolbar items in editor.editor.* configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586570 [53] Add "throttle API requests" control? (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561243 [54] [Discuss] Shift focus from provider plugins to operation type plugins in AI Core (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3559800 [55] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [56] Tools UI overview page does not load (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579979 [57] Move out AI Content Suggestions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3552885 [58] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [59] [Discuss] Consider adding Agents.md (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3573186 [60] Drupal AI Contribution meeting 2026-02-09 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3570259 [61] Create agents as Tools (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556380 [62] Implement Process System Integration for Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3493291 [63] [Discuss] Allow usage of Tool API in Agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3556140 [64] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [65] Plan: Add cancel button to AI Chatbot (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499583 [66] Use core Json::encode() and Json::decode everywhere possible (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3480683 [67] Move Prompt Library menu link under AI Infrastructure instead of Vector Database Configuration (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586499 [68] Prompt Library menu item missing due to incorrect parent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585596 [69] [Discuss] Core support for browser providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577202 [70] Research better practices for recipes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577175 [71] Improvement suggestions for ai_automators docs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572751 [72] Create an HTML to Markdown API and service (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574246 [73] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [74] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [75] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [76] Unable to override the 'Calling agents' / 'Contacting agents' text (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586389 [77] Glossary for the Drupal AI initiative (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3577844 [78] Automated Drupal 12 compatibility fixes for ai 2.0.x-dev (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586525 [79] Field Widget Button labels are not translatable via UI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3567027 [80] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [81] Add ai_budget_control to the ecosystem / related modules list (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583958 [82] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [83] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [84] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [85] Validation of unexisting fields on paragraphs actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571033 [86] ai_content_suggestions: On-focus button un-hide rule misses .field-widget-action-widget-button for field--type-string-long (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3583883 [87] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [88] Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586572 [89] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [90] Add metadata to VectorDBGenerator in AI-API-Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3549175 [91] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [92] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [93] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [94] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [95] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [96] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [97] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [98] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [99] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [100] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [101] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [102] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [103] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [104] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [105] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [106] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [107] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [108] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [109] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [110] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [111] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [112] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [113] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [114] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [115] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [116] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [117] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [118] Only one AI Automator worker queue item is processed per cron execution (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575190 [119] non streaming broken (fiber branch) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586457 [120] InputLengthLimit guardrail does not consistently scan user messages (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586578 [121] ImageClassificationItem returns string from getConfidenceScorePercentage and uses uppercase NULL in hints (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584863 [122] Drupal Eval Commons umbrella (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586445 [123] [Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586479 [124] Type error and infinite AJAX request loop when the Agent is unable to resolve a request job (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3547470 [125] ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586473 [126] fix: Validates inline prompt against stale prompt type when multiple ai prompt elements exists (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1686 [127] Issue #3582743: Set temp directory for encoderProvider. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1685 [128] Issue #3554797: Start session after first interaction (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/978 [129] Issue #3586541 Show last-modified date on documentation pages... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1684 [130] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [131] Draft: Fix lb asymetric translation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1687 [132] feat: #3586427 Adopt symfony/ai component v0.8 as platform provider (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1619 [133] Automated Project Update Bot fixes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1688 [134] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1628 [135] Issue #3586478: "Add rich-text image description support to AI Automators" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1679 [136] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1690 [137] #3586470 "Make API explorer work with Symfony platform and legacy providers" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1613 [138] #3582633: Add Functional JavaScript testing conventions and validation script (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1432 [139] Resolve #3586531 "Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1702 [140] feat(ai_ckeditor): warn users when no AI provider is installed in the CKEditor settings tab (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1701 [141] feat: #3577170 Move Automators to Structured Output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1291 [142] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1700 [143] Issue #3586515: Port FWA/Automators generalization from !1536 to 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1699 [144] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1697 [145] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1695 [146] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1696 [147] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1694 [148] Issue #3586521: Fix tests with MDXEditor for 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1698 [149] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1693 [150] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1692 [151] Update file .gitlab-ci.yml (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1691 [152] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [153] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [154] Issue #3586559: Add MariaDB VDB provider to matrix (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1705 [155] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [156] Allow batching for embedding and vector DB operations (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1126 [157] Remove access deepchat api permission and use Assistant roles as the single source of truth (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1703 [158] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1716 [159] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1717 [160] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [161] Cherry pick 3586472 2.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1713 [162] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1715 [163] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1714 [164] Issue #3586517: Check if any Vdb provider is setup (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1660 [165] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1712 [166] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1711 [167] Issue #3586500: Get default Vdb provider if none yet selected (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1656 [168] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1710 [169] Issue #3586472: Use ai provider configuration form element and use proper... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1621 [170] Non-BC support for long running chunks (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1709 [171] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [172] #3585077: Integrate chatprocessor plugin (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1706 [173] #3585075: Add ai assistant chat processor (1.x backport) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1707 [174] #3585075: Add ai assistant chat processor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1496 [175] #3585077: Integrate chatprocessor plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1497 [176] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [177] task: #3586561 Add a setup-guardrails agent skill to configure guardrails,... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1724 [178] Remove ai_content_suggestions module for ai core (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1042 [179] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1522 [180] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1521 [181] Issue #3585596: Move Prompt Library under AI Infrastrcture (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1523 [182] docs: #3572751 Add docs for the Field widget Actions automator worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1293 [183] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1187 [184] Adding a new point about Automator Worker (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1201 [185] feat: #3586538 Add hook_requirements and hook_update_10001 for ai_validations deprecation (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1725 [186] Issue #3586389: Add agent delegation message setting (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1539 [187] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1723 [188] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1722 [189] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1719 [190] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1721 [191] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1720 [192] Issue #3586522: Keep token usage in the chat() Fiber branch (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1670 [193] Cherry-pick changes from #3586500 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1718 [194] ai-3586569: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1728 [195] fix(ai_ckeditor): remove stale toolbar items on uninstall and warn on confirm page (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1731 [196] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1730 [197] Resolve "Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1645 [198] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [199] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [200] Add AICKeditor tests (Target 1.4.x) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1577 [201] Added Functional JavaScript Tests (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1257 [202] fix: ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1727 [203] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [204] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [205] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [206] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [207] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [208] Issue #3571498: Rethrow queue worker exceptions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1535 [209] Issue #3575190: Add configurable queue items per cron for AI Automators (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1647 [210] Issue #3586457: Add ChatInput::setForceSynchronous() and fix Fiber branch to use ChatFiberSupport capability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1646 [211] Resolve #3566613 "Commit message mike" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1285 [212] Resolve #3579088 "Guardrail plugins only" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1467 [213] Remove obsoleted #default_value (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1221 [214] feat: #3586479 Add gen_ai.* semantic conventions to ai_observability (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1662 [215] fix: #3586473 Finalize streaming OTel spans on the terminal event (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1627 [216] Issue #3545462: Refactor StructuredOutputSchema to use Symfony validation attributes (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1114 [217] Fix/token usage dto cached write tool use 3586576 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1736 [218] Add StructuredOutputSchema DTO and improve ChatInput validation. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/873 [219] Idea: AI Cost & Usage module — local cost dashboard + opt-in aggregated community telemetry (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586519 [220] Drupal AI UX meeting 15 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584833 [221] organise social media (MARIA) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586574 [222] find dutch volonteers to help with the event (human wayfinder / timekeeping / registration) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586573 [223] submit offer to ThomsonReuters / CIONet / VOKA / Beltug for cooperation. (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586572 [224] Make forms for the sponsors to submit their contacts/leads/clients for a free ticket (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586571 [225] Make the site look nice on mobile (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586570 [226] Update sponsors + subpages on Enterprise AI summit website (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586569 [227] Source case studies from AI Summit Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586557 [228] Drupal AI UX meeting 22 June 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3584834 [229] Mockup: AI page creation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586581 [230] Mockup: AI review notifications (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586582 [231] Mockup: AI review on edit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586583 [232] Mockup: AI search (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586584 [233] Mockup: AI field automation (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586585 [234] Mockup: AI search & replace (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586586 [235] Mockup: AI page translations (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586587 [236] Mockup: AI dashboard setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586588 [237] [Meta] AI roadmap feature mockups May 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586580 [238] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [239] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [240] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [241] [META] 2026 Outside-in / Innovation Roadmap (draft) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3576908 [242] Add standardized GitLab issue templates for initiative work (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586461 [243] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [244] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [245] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [246] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [247] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [248] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [249] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [250] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [251] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [252] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [253] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [254] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [255] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [256] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [257] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [258] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [259] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [260] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [261] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [262] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [263] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [264] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [265] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [266] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [267] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [268] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [269] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [270] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [271] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [272] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [273] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [274] Automated Drupal 12 compatibility fixes for ai_integration_eca 1.0.x-dev (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585018 [275] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [276] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [277] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [278] Issue #3585009: Added ECA execute action for Summarization. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/11 [279] Issue #3585010: Added ECA execute action for Text Classification. (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/10 [280] Automated Project Update Bot fixes (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/13 [281] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [282] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [283] Respect skip_moderation, add test coverage for it (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/76 [284] Resolve #3593019 "Add imagetoimage possibilities" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/72 [285] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [286] fix: #3590873 Dall-E 3 has been deprecated and should be removed as default (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/71 [287] Automated Project Update Bot fixes (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/77 [288] Issue #3590963: Bump SDK constraint and drop method_exists defensive check (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/28 [289] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [290] Automated Project Update Bot fixes (mcp_client, MR) — https://git.drupalcode.org/project/mcp_client/-/merge_requests/19 [291] pgsql ext dependency missing in composer.json (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586235 [292] Automated Drupal 12 compatibility fixes for ai_provider_amazeeio 2.0.x-dev (ai_provider_amazeeio, Issue) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/work_items/3586234 [293] fix(#3586231): check that key identifiers are non-empty strings before loading keys (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/74 [294] chore: require ext-pgsql (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/76 [295] Automated Project Update Bot fixes (ai_provider_amazeeio, MR) — https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/77 [296] ValueError: The `GenerateContentResponse::parts()` quick accessor only works for a single candidate,but none were returned (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588223 [297] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [298] Fix pre-existing PHPStan failures (deprecation issues) (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589186 [299] Automated Drupal 12 compatibility fixes for gemini_provider 1.x-dev (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589187 [300] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [301] #3588223: Resolved value error. (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/36 [302] Support batch embeddings (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/37 [303] Issue #3589186: Ignore known PHPStan false positives (upstream ai docblock... (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/40 [304] Automated Project Update Bot fixes (gemini_provider, MR) — https://git.drupalcode.org/project/gemini_provider/-/merge_requests/41 [305] Resolve #3584375 "Add extractive question" (ai_provider_huggingface, MR) — https://git.drupalcode.org/project/ai_provider_huggingface/-/merge_requests/9 [306] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [307] Automated Project Update Bot fixes (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/50 [308] Issue #3607151: Remove hard ext-pgsql dependency (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/28 [309] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [310] Automated Drupal 12 compatibility fixes for mcp 1.x-dev (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3587790 [311] Automated Project Update Bot fixes (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/53 [312] AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586032 [313] Change "AI Agent" to "AI Agents" in admin menu (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586030 [314] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [315] Schema error for AI Agents CKEditor plugin (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3565169 [316] Exceptions in tool execute break the UI for the user (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3537123 [317] Add a way to mark the executor on agent runner (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3557417 [318] ContentEntitySeeder crashes on double-wrapped entity_array when ComplexToolItems + multiple=TRUE context definition produces nested array schema (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3578197 [319] UpdateViewPlugins: display option updates on non-default displays do not override defaults inheritance (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582781 [320] Views agent: style/row and filters/filter_groups must be overridden as pairs on non-default displays (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3582782 [321] return_directly tool results are missing tool_id (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585054 [322] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [323] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [324] Fix streaming (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577520 [325] Automated Drupal 12 compatibility fixes for ai_agents 1.4.x-dev (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586038 [326] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [327] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [328] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [329] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [330] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [331] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [332] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [333] Resolve #3586032 "AI Agents admin menu does not follow AI 1.4.x menu categorization (Tools & Automation)" (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/286 [334] Issue #3547994: Add per-tool error catching to prevent agent crashes. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/220 [335] Add CKEditor schema for ai_agents (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/221 [336] Move AI Agents under Tools & Automation menu section (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/278 [337] Issue #3537123 by jurgenhaas: Exceptions in tool execute break the UI for the user (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/163 [338] Issue #3547995: Add deterministic tool usage limits. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/224 [339] Automated Project Update Bot fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/282 [340] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [341] Issue #3578197: Fix double-wrapped entity_array issue (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/244 [342] Issue #ai_agents-3582782: Fix AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/289 [343] Issue #ai_agents-3582781: review update AI agent (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/288 [344] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [345] Add skills for generating Tools (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582936 [346] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [347] tool:run masks the failure message: getOutputValues() throws on unset outputs of a failed tool (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582942 [348] [Tool] Create tools to save/update/delete SDC components (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3556021 [349] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [350] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [351] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [352] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [353] Change "Tools API" to "Tool API" in ToolsApi PHP attribute (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582940 [354] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [355] Issue #3582942: tool:run masks the failure message by reading outputs on a failed tool (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/92 [356] Issue #3582939: Fix getSupportedTypes() in MapDefinitionNormalizer and... (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/95 [357] languageSelect.spec.ts Failing in 1.x (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591705 [358] Only show default-language entities when reviewing auto-saved (pending) changes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591704 [359] Symmetric translation: component instance version updates must propagate to all translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591596 [360] Discarding a translation's auto-save deletes the wrong language (discard URL has no langcode) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591703 [361] Fatal error (AssertionError on dev env) when a component instance's image references a deleted file (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591702 [362] Validate translations (`LanguageConfigOverride`s) of Canvas' config entities even though core doesn't (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591693 [363] Entity-reference component inputs (e.g. image src) are exposed as translatable, breaking rendering of translated config (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591699 [364] Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591701 [365] Coalesce reference fields whose values are consumed only through nested objects (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591678 [366] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [367] Support `content-entity-reference` props in CLI and Workbench (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591700 [368] Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3575644 [369] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [370] Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591695 [371] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [372] Release symmetrical translation functionality: drop the `canvas_dev_translation` feature flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591698 [373] Update Canvas component auditing UI to include translation labels (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591612 [374] Simple approach to bringing advanced metadata into Canvas AI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545816 [375] Add "page" extension type for full-screen Canvas extensions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591662 [376] Canvas AI: canvas_ai_post_update_0003 strips the orchestrator agent UUID via setData() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591660 [377] `redirectCanvasToDefaultLanguage()` causes endless redirect loop when using an invalid langcode prefix (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591689 [378] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [379] UriOverride double-encodes file URIs on export causing images to be deleted on re-import (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591696 [380] Deleting media references causes InvalidComponentException and AssertionError (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590029 [381] Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591680 [382] Submodule info.yml core requirements are not in sync with canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591706 [383] [upstream] Introduce `composer run lint:chase-upstream` + `chase-upstream`: use Rector rules to semi-automate Drupal 12 compatibility while retaining BC layers for Canvas' minimum version (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589155 [384] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [385] Prevention of publishing on Conflict in Canvas UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587526 [386] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [387] Canvas AI: add layout fixture support so page builder and template builder agent tests can run against a realistic layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591591 [388] [Notifications] notification storage and service (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580209 [389] [Notifications] cron cleanup (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580212 [390] Add content entity cache tags to auto-saves/pending endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588546 [391] Refactor auto-save endpoint response to encapsulate entries in top-level "data" key, like JSON:API, to enable adding errors later (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588038 [392] Detect conflicts for Page entities during the handling of auto-saves/pending calls (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3589076 [393] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [394] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [395] UI changes for detection of conflicts caused by external updates to underlying entity of auto-save entry (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3585970 [396] Expand conflict detection and resolution added by 3587587 to additional entity types (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [397] [META] Review of changes and Conflict resolution (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3587587 [398] [Plan] Canvas AI Roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3579796 [399] Remove deprecated upload and download CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591707 [400] Ensure type ignore schema props are ignore (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591710 [401] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [402] Update JS packages (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591709 [403] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [404] Use string representations of expressions in `CoalescerTest` and `ApiUiContentEntityReferenceControllersTest` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591679 [405] Refactor RequestTrait to prevent request stack mutation during kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591708 [406] Introduce `EntityFieldBasedPropExpressionInterface::getFieldDefinition()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591676 [407] AI continues to use unsupported React libraries while creating a component (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3564656 [408] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [409] Deduplicate the shared JavaScript component test fixture and prop-mutation helpers across the translation-propagation and component-instance-updater kernel tests (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591723 [410] Split the PHPUnit-Kernel CI test suite across 4 parallel jobs instead of 3 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591722 [411] Follow-up for #3591596: add PHPat rules for keeping `StagedLanguageConfigOverride` config entity type-agnostic (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591721 [412] [11.3] Adopt Core's stream wrapper for JSON schema references (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3580762 [413] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [414] Language dropdown "edit" link should immediately change to "add" on deletion (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591720 [415] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [416] Avoid registering draft asset-library JS URLs to prevent locale's js_alter from treating them as local files (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591719 [417] Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591717 [418] Canvas Page Preview Fails After Language Code Update for Existing Translations (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591713 [419] Canvas AI: Chatbot generates page title and description without user request (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591718 [420] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [421] Translating unpublished page crashes canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591714 [422] Give AI more context around the styling of the site (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3544132 [423] Component inputs order is database-backend-dependent: fix inputs key order assertions in tests and enforce it via PHPStan when possible (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591726 [424] Put conflict detection behind a dev mode flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591725 [425] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [426] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [427] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [428] Canvas icon / logo for Project Browser and project page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3545468 [429] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [430] Strengthen test coverage for multi-translation multi-component instance automatic version updating (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591730 [431] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [432] Canvas AI: Remove hardcoded component source IDs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591652 [433] Refactor away the brittle`PageRegion::forAutoSaveData()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591728 [434] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [435] Symmetrically translatable config-defined component trees, STEP 2: change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3582478 [436] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [437] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [438] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [439] Add Code Component prop type for multiline plain text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591741 [440] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [441] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job for some component trees (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [442] Bump drupal-canvas package to 0.4.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591694 [443] Add translation metadata to code component's `mainEntity` data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591738 [444] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [445] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [446] Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3581133 [447] Non-Canvas (foreign) Drupal form textareas rendered inside Canvas are read-only and lose their #default_value (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591737 [448] CKEditor's source element is not tagged with the active text format inside Canvas, breaking modules that rely on core's editor-attach contract (e.g. ai_ckeditor) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591735 [449] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [450] Remove `canvas_dev_cd` flag module (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591732 [451] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [452] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [453] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [454] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [455] Language Switcher displays "Untitled page" instead of actual title for `ContentTemplate`s (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [456] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [457] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [458] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [459] Enabling content translation of Canvas pages results in an unsupported state (asymmetrical translations) by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [460] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [461] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [462] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [463] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [464] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [465] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [466] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [467] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [468] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [469] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [470] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [471] Support entity-context frame type in _linkPropToEntityValue for PropSource binding (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591757 [472] Reconciling media in CLI should respect sync settings (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591756 [473] Introduce `ComponentSourceInterface::getLabelForExplicitInputKey()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586490 [474] Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591683 [475] [later phase] Add alter hook for marking additional SDC/code component prop shapes AND/OR specific props as translatable (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584178 [476] Decouple component_tree translation logic from TMGMT (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591754 [477] PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3586673 [478] DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591753 [479] "block" ComponentSource plugin should never store inputs for `label` and `label_display`, because they're not available for Canvas users (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3572850 [480] Add side-by-side review flow for selected Page changes before publishing (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591752 [481] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [482] feat(Component sources): #3591596 Symmetric translation: component instance version updates must propagate to all translations" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1163 [483] fix: #3591704 Hide non-default-translation auto-saves from the pending-changes GET response (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1263 [484] #3591695 Include language-aware indexing for ContentTemplate-rendered Canvas content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1254 [485] #3591693: Validate `LanguageConfigOverride`s (targeting translatable Canvas config entities) saves against config schema (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1257 [486] fix(Data model): #3591699 Never expose entity-reference inputs (e.g. image src) as translatable (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1262 [487] feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1194 [488] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [489] fix(Tests): #3591701 Make tests pass again on Drupal 11.3: block config schema changed, `ComponentInputsEvolutionTest` needs to handle <=11.2 vs >11.2 differently (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1261 [490] feat(Theme builder): #3585355 `content-entity-reference` prop selection UI: a "Typed Data browser" to let a Code Component Developer pick which data to consume (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1182 [491] feat(CLI Tool): #3591700 Support `content-entity-reference` props in CLI and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1259 [492] Resolve #3591701 "Make kernel tests pass on Drupal core 11.3" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1260 [493] feat(Data model): #3591678 Coalesce reference fields consumed only through nested objects (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1252 [494] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [495] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [496] #3583379: `Evaluator` must respect the referencing entity's language when evaluating a referenced entity, or fall back to the negotiated content language (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/876 [497] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [498] Add conflict detection and resolution UI for selective publishing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/945 [499] Create tools and update agents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/719 [500] Add "page" extension type for full-screen Canvas extensions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1233 [501] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1172 [502] Issue #3591660: Preserve agent UUID in canvas_ai post_update 0003 and repair affected sites (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1230 [503] #3591689: Too many redirects in invalid langcode as path-prefix (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1249 [504] Issue #3591696 : Prevent URIOverride from double-encoding file URIs on export (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1256 [505] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [506] refactor(Data model): #3591680 Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of strings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1268 [507] Resolve languageSelect.spec.ts Failing in 1.x - round 2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1269 [508] #3591705 language select test failing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1265 [509] chore: #3591706 Sync submodule info.yml core requirements to ^11.2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1267 [510] Resolve #3589155 "Rector ci job" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1142 [511] Resolve "Page editor fatals (AssertionError) in `ComputedUrlWithQueryString` when a component's image references a deleted file" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1264 [512] #3587711 fix: code component exceptions after prop type change (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1015 [513] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [514] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [515] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [516] Issue #3584136: Fix canvas_component_agent prompt bugs (Image import,... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1237 [517] Issues/3591591: Add fixture support for layout to use in tests (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1159 [518] Issue #3580209: [Notifications] notification storage and service (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/762 [519] Issue #3580212: [Notifications] cron cleanup (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/830 [520] Resolve #3588546: Add content entity cache tags to auto-saves/pending response cacheability (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1057 [521] Resolve #3588038 "Refactor auto save endpoint" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1047 [522] feat(Conflict detection): #3589076 "Detect conflicts during auto-save polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1213 [523] fix(Conflict detection): Exclude computed internal fields from Page entity normalization (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1202 [524] revert(Conflict detection) #3589076 Detect conflicts during autosave polling (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1205 [525] Resolve #3589076 "Detect conflicts during autosave polling" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1107 [526] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [527] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [528] feat: #3591596 Apply component instance updater to all component trees: content/config non-default translations; introduce `StagedLanguageConfigOverride` to treat both similarly (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1271 [529] chore(CLI Tool): Remove deprecated upload and download CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1270 [530] ensure to ignore type ignore (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1278 [531] #3591697 "Boolean default false prop values not retained correctly " (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1281 [532] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [533] chore(Theme builder): #3591711 Add feature flag for content entity reference props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1279 [534] chore: Update JavaScript packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1277 [535] #3591654 "Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1234 [536] chore(Data model): #3591679 Use string representations of expressions in... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1275 [537] 🤖 Resolve #3591708 "RequestTrait::request() should not result in mutated request_stack" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1274 [538] Issue #3575644: Inefficient RegexConstraint on StringLong fields causes "JIT stack limit reached" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1276 [539] chore(Project management): #3591722 Split the PHPUnit-Kernel test suite across 4 parallel CI jobs instead of 3 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1288 [540] feat(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [541] Draft: #3591720 update/edit toggles on language delete (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1287 [542] fix(ui): #3591716 boolean props auto-enable when another prop is changed (1.6.0) (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1286 [543] fix(ui): #3591716 boolean props auto-enable when another prop is changed (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1285 [544] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [545] fix(CLI Tool): #3591717 Flat named component validation in @drupal-canvas/eslint-config misses sibling entrypoints (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1284 [546] Fix flat named component ESLint entrypoint detection (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1283 [547] #3591714: Resolve "Translating unpublished page crashes canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1282 [548] Put conflict detection behind feature flag (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1290 [549] Issue #3591726: Compare component inputs order-independently in tests and enforce it via PHPStan (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1291 [550] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [551] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1293 [552] fix(autoSave, internalHttpApi): #3591729 Register draft asset library JS as external so locale's JS scan skips it (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1292 [553] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [554] Issue #3591652: Replace hardcoded component source plugin IDs with SOURCE_PLUGIN_ID constants (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1255 [555] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [556] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [557] Draft: fix(Internal HTTP API, Translation): #3591713 Fix Canvas page preview for translated pages when the URL prefix differs from the langcode (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1304 [558] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [559] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [560] Draft: chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [561] #3591738 add translation data to code component provider (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1301 [562] feat(Drush): #3585531 Add commands to list, audit, and generate Canvas components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/937 [563] #3581133: Automate MR review using PHPCS: disallow `\Drupal::service('something')`, require `\Drupal::service(Something::class)` whenever possible, with automatic fixing (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1297 [564] Issue #3591737: Make foreign Drupal form textareas editable in Canvas by... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1299 [565] Issue #3591735: AI CKEditor text format (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1298 [566] AI-generated. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/797 [567] Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [568] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [569] Draft: #3492065 move to canvas repo (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/709 [570] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [571] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [572] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [573] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [574] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [575] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [576] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [577] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [578] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [579] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [580] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [581] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [582] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [583] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [584] #3591683: Follow-up for #3591584: remove `ApiAutoSaveControllerTranslationTest::$configSchemaCheckerExclusions` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1322 [585] fix(CLI Tool): #3591756 Reconciling media in CLI should respect sync settings (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1323 [586] #3586673: PHPCS: Current "selective exclusions" from Drupal core rules do not actually exclude selectively (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1321 [587] Add solution to onboarding with content translation to disable tree... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1318 [588] Resolve #3590840 "Simplify codeowners further" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1120 [589] Draft: Resolve #3586673 "Phpcs actually selectively exclude" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/975 [590] #3591753: DX: ensure PHPCS behaves the same locally as on CI: dev dependency on drupal/coder, exclude `MissingShort` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1319 [591] Draft: feat(Conflict detection): #3591591 Expand conflict resolution UI with... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1317 [592] Create Learners Club CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586266 [593] Create Bluefly CCC presentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586265 [594] Automated Drupal 12 compatibility fixes for ai_context 1.0.x-dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586269 [595] Add context settings validation: max_global_items must not exceed max_items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586272 [596] Create Document Loader submodule for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586275 [597] Create GitLab issue and merge request templates for ai_context project (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586155 [598] Update max context items in general settings (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586212 [599] Update overview page description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586252 [600] Create SECURITY.md file for AI Context (CCC) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586267 [601] Clarify Context scope: Tags in documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586270 [602] UX improvements on new context listing page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586274 [603] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [604] hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586246 [605] Move scheduler feature to submodule or progressive enhancement (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3577429 [606] Create list of modules and configuration steps for how to integrate CCC with Document Loader MDXEditor submodule (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586228 [607] Show this overview page checkbox is misaligned on vanilla Drupal 11 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586260 [608] [Discuss] Extensible "role" architecture for context items (examples, rubrics, and future types) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586273 [609] Provide test context items for testing CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586244 [610] Document supported vs internal CCC APIs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586241 [611] Conditional Subcontext Provider Calls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586207 [612] Update subcontext feature description and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586251 [613] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [614] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [615] Sprint 12 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586277 [616] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [617] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [618] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [619] Review and update CCC permissions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574937 [620] Introduce explicit scope types and item inclusion modes; clarify selection in UI and docs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586281 [621] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [622] Fix eslint errors in GitLab UI even when pipeline is green (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3576093 [623] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [624] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [625] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [626] Test AI Best Practices skills on AI Context codebase (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586258 [627] Copy and layout updates on context item scope form (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586284 [628] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [629] [Discuss] Context scope matching semantics: additive OR, filters, and UX clarity (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586196 [630] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [631] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [632] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [633] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [634] Allow scope plugins to declare an optional icon for UI display (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586262 [635] Clean up bundleless context item follow-ups (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586261 [636] Add opt-in AiContextSelectionDiagnostics to selection results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586242 [637] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [638] Gather CCC contribution stats for code and non-code contributions for release notes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586222 [639] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [640] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [641] CCC beta / pre-rc1 community testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586234 [642] Evaluate empathy CCC integration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586249 [643] `hook_ai_context_scope_values_alter()` is ignored by scope forms and labels (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586286 [644] Add Configure Link in Modules Page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586285 [645] No public API for building scope subscription forms; consumers must depend on the internal scope manager (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586287 [646] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [647] Update core_version_requirement for all CCC submodules to be same as parent module (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586288 [648] Test Chicago Driesnote repo with cheaper models (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586221 [649] Avoid Full Published-ID Scans Before Scope Prefiltering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586206 [650] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [651] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [652] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [653] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [654] CCC Usage Tracking Query/Save Pattern (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586209 [655] Add webpage (URL) context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574414 [656] Add MD context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574928 [657] Add PDF context source plugin to CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574413 [658] Store the context source file or URL when using document loader (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586291 [659] [Meta] Context source plugin feature (context from PDF/MD/TXT/URL) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3569310 [660] Create context starter templates (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586255 [661] Error when running database updates from beta2 to latest -dev (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586290 [662] Question about "Subcontext type = Conditional - included based on relevance" (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586149 [663] Fix PHPStan failures in CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586238 [664] Fix phpstan error in AiContextSubcontextToggleTrait (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586259 [665] CCC UX sync 27 May 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586236 [666] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [667] [Discuss] Moderation status of subcontext vs parent context items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586264 [668] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [669] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [670] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [671] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [672] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [673] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [674] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [675] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [676] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [677] Add warning on subcontext edit form if parent is unpublished (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586297 [678] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [679] CCC beta2 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586156 [680] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [681] CCC beta3 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586294 [682] Create CCC beta2 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3585920 [683] CCC beta2 codebase review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586202 [684] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [685] Update CCC overview page with hide option and new wording (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586211 [686] Handle the case when scope plugin values are no longer available (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586145 [687] Clean up follow-ups from target entity decoupling review (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586082 [688] Issue #3577429: Make Scheduler an optional progressive feature. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/178 [689] Issue #3586272: Add validation that max_global_items cannot exceed max_items (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/181 [690] Issue #3586275: Add ai_context_document_loader submodule for MDXEditor imports. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/176 [691] Issue #3586155: Add GitLab issue and merge request templates (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/182 [692] Issue #3586274: Merge Use cases/Scope columns and add cascading scope filter (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/184 [693] Issue #3586252: Update overview page help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/170 [694] Issue #3586270: Document how the Tag scope works (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/183 [695] Issue #3586251: Update subcontext feature help text and docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/169 [696] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [697] Issue #3586246: hook_ai_context_scope_values_alter() is not honored in scope value forms (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/177 [698] Issue #3586267: Added SECURITY.md file (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/179 [699] Resolve "Show this overview page checkbox is misaligned on vanilla Drupal 11" (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/180 [700] Issue #3586241: Document Supported vs Internal APIs (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/186 [701] Issue #3586244: Add example context items from the Chicago Driesnote demo. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/185 [702] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [703] Issue #3586209: Batch N+1 queries in AiContextUsageTracker (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/174 [704] Automated Project Update Bot fixes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/175 [705] Issue #3586269: Fix linting. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/187 [706] Issue #3586207: Add conditional subcontext toggle, cap, and per-request cache. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/166 [707] Issue #3586284: Clarify context item scope form copy and layout. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/189 [708] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [709] Issue #3586285: Add configure links to Context Control Center. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/190 [710] Issue #3586287: No public API for building scope subscription forms; consumers must depend on the internal scope manager. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/191 [711] Issue #3586288: Update submodule requirements. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/192 [712] Issue #3586207: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [713] Issue #3586264: Show warning when subcontext parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/193 [714] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [715] Issue #3586297: Add warning on subcontext edit form if parent is unpublished. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/196 [716] Issue #3576093: Fix lint errors in GitLab UI even when pipeline is green. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/197 [717] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [718] Issue #3586261: Clean up bundleless context item follow-ups. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/198 [719] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [720] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [721] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [722] Issue #3586280: Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/203 [723] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [724] Improve AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585220 [725] AI Recipe modal is missing the argument (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585216 [726] Issue #3585220: Improve AI Ecosystem (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/24 [727] Attempt long running chunk indexing for 1.x branch without BC (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584014 [728] Add FilterableRagTool to augment RagTool supporting dynamic metadata filtering via additional context definitions (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584010 [729] How to Apply Filters in VDB for RAG Chatbot (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3547016 [730] [Plan] AI Search 2.0.x and roadmap to stable (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3485449 [731] Views should have a warnings when creating a view that has 1+ non full text Filters using an AI Search backend (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3479025 [732] Convert search query to markdown (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3525470 [733] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [734] The title field not found if machine name is different (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3553711 [735] Fix support of non-content entity SearchAPI datasources (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3575999 [736] Consider standard naming conventions for vector dbs (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3539213 [737] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [738] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [739] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [740] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [741] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [742] #3584014: Resolve "Attempt long running chunk indexing for 1.x branch without BC" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/45 [743] Issue #3584010: Add FilterableRagTool with per-index derivatives and attribute filtering (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/38 [744] Resolve "Batch embeddings for improved indexing performance" (ai_search, MR) — https://git.drupalcode.org/project/ai_search/-/merge_requests/53 [745] Field Widget Actions show in the "Add New Action" unavailable tools (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3536116 [746] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [747] Add interactive refinement capability to Field Widget Actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3547306 [748] Examples of plugins for more complex field widgets? (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3576699 [749] Missing events in suggestion.js (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578820 [750] Automated Drupal 12 compatibility fixes for field_widget_actions 1.0.x-dev (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578822 [751] Testing AI Workflow Automation (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578818 [752] Allow other contrib modules to mark their field widgets as childless so FWA actions still appear (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578202 [753] Support for checkboxes/radio buttons using Ajax JS Commands (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578204 [754] Field Widget Button labels are not translatable via UI (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578824 [755] Issues #3536116: Omit unavailable plugins in field widget actions configuration field widget form (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/21 [756] create uuids in config action (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/24 [757] Issue #3547306: Add interactive refinement capability to Field Widget Actions (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/19 [758] Trigger events in case of value update on suggestion (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/18 [759] Automated Project Update Bot fixes (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/23 [760] Resolve "Allow other contrib modules to mark their field widgets as childless so FWA actions still appear" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/26 [761] Resolve "Support for checkboxes/radio buttons using Ajax JS Commands" (field_widget_actions, MR) — https://git.drupalcode.org/project/field_widget_actions/-/merge_requests/25 [762] What's the point of the "Chat proxy to LLM" provider? (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585528 [763] Aggregate a node's translatable field-columns into a single chat request (opt-in batch translation) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585527 [764] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [765] HTML markup gets added after certain tags (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585526 [766] HTML markup is corrupted/not preserved when translating formatted text fields (text_with_summary, text_long) (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585525 [767] 504 Time out on large content (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3545381 [768] Translation batch process does not handle translation errors (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3542014 [769] Automated Drupal 12 compatibility fixes for ai_translate 2.0.x-dev (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585524 [770] Issue #3545381 Split large HTML fields into chunks of a maximum number of characters (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/24 [771] Automated Project Update Bot fixes (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/23 [772] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [773] Issue #3586209: Add support for batching on indexing operations (2.0.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [774] Issue #3586209: Add support for batching operations (1.1.x) (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/33 [775] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/40 [776] Automated Project Update Bot fixes (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/43 [777] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [778] Automated Drupal 12 compatibility fixes for flowdrop 1.x-dev (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592077 [779] Automated Project Update Bot fixes (flowdrop, MR) — https://git.drupalcode.org/project/flowdrop/-/merge_requests/11 [780] Automated Drupal 12 compatibility fixes for flowdrop_ui_agents 1.0.x-dev (flowdrop_ui_agents, Issue) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/work_items/3584958 [781] Automated Project Update Bot fixes (flowdrop_ui_agents, MR) — https://git.drupalcode.org/project/flowdrop_ui_agents/-/merge_requests/27 [782] Automated Project Update Bot fixes (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/5 [783] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [784] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [785] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [786] Automated Drupal 12 compatibility fixes for agui 1.0.x-dev (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590037 [787] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 [788] Automated Project Update Bot fixes (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/30 [789] Automated Drupal 12 compatibility fixes for ai_related_content 2.0.x-dev (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576575 [790] Pinecone: fix `getVectorFromNode()` returning no results (ai_related_content, Issue) — https://git.drupalcode.org/project/ai_related_content/-/work_items/3576574 [791] Automated Project Update Bot fixes (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/19 [792] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 2x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/17 [793] Resolve "Pinecone: fix `getVectorFromNode()` returning no results" 1x (ai_related_content, MR) — https://git.drupalcode.org/project/ai_related_content/-/merge_requests/18 --- TODAY'S MODULE SUMMARIES ---

                                                                                                                                        AI (Artificial Intelligence)

                                                                                                                                        During the past two weeks, the AI module made significant progress across core infrastructure, user experience, and ecosystem maturity, positioning the project closer to a stable 1.5.0 and 2.0.0 release.

                                                                                                                                        Core Infrastructure and Architecture

                                                                                                                                        The module laid important foundations for version 2.0. A long-running architectural refactor to adopt the Symfony AI Component (v0.8) as the platform provider advanced through multiple merge requests, introducing new inference provider, model router, and platform plugin types. Separately, the Automators subsystem was migrated to structured output, improving reliability when AI models generate field values. Token usage reporting was strengthened: the Fiber execution path—used for streaming chat—now correctly preserves token counts, and observability spans emit OpenTelemetry GenAI semantic conventions alongside existing ad-hoc metrics, so external monitoring tools can consume a standard shape. A new reranking processor for Search API was contributed, making the existing rerank operation type available to any search backend. Field Widget Actions integration with Automators was generalized and ported to the 2.x branch, reducing code duplication across widget types.

                                                                                                                                        Quality, Testing, and Documentation

                                                                                                                                        Multiple functional JavaScript tests were added for the AI CKEditor plugins, covering tone adjustment, translation, and summarization workflows. A commit-message validation rule was merged to enforce issue references on main branches without restricting feature-branch workflow. Several merge requests removed deprecated bundled submodules (AI Content Suggestions, Field Widget Actions) and clarified upgrade paths to their standalone contrib counterparts. Documentation received a last-modified timestamp via the mkdocs git-revision-date plugin, and planning began on a deterministic script to auto-generate the provider/operation-type matrix from live GitLab data.

                                                                                                                                        User Experience and Configuration

                                                                                                                                        The Prompt Library menu link was moved out from under Vector Database Configuration into the top-level AI Infrastructure section. The AI CKEditor status indicator ("AI Writer: Idle") became optional through a new settings toggle. Work is underway to allow chatbot access control to rely solely on Assistant entity roles, removing the redundant "access deepchat api" permission. A regression in the 1.4.x line—commits present in 1.3.3 but missing from 1.4.2—was identified and closed. The guardrail "RegExp" plugin label was renamed to "RegEx" for consistency. Several UX issues were reported and remain open: the chatbot closing on modal events, missing submit buttons in certain tool configuration forms, and rendering problems in dark Gin themes.

                                                                                                                                        Risks and Blockers

                                                                                                                                        No critical blockers were reported. A handful of open bugs—CKEditor context unavailable in off-canvas dialogs, taxonomy automator stripping HTML-encoded entities, non-streaming requests broken inside Fibers—have proposed fixes under review. The 1.5.x and 2.0.x branches remain in active development; no dates for stable releases were announced.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Champion the completion of the Symfony AI Component adoption (MR !1619 and its dependencies) by ensuring architectural review capacity and alignment on the 2.0 roadmap.
                                                                                                                                        • Support ecosystem documentation work: the auto-generated provider matrix and the curated related-modules list both need resourcing to stay current as new providers and companion modules arrive.

                                                                                                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), AKHIL BABU (AkhilBabu) [1], Alphons Jaimon (AJV009), Ann Mary Sruthy (annmarysruthy), Arnaud Willame (arwillame), Artem Dmitriiev (a.dmitriiev) [3], Avinash jha (avinash.jha), Bryan Sharpe (b_sharpe), David Galeano (gxleano), Dimitar Rupov (mrupal), Eric Homanchuk (erichomanchuk), George Kastanis (zorz) [2], Hrishikesh Dalal (hrishikesh-dalal), Javier Destefanis (javierdestefanis), Joshua Fernandes (joshua1234511), Juan Martinez (jcmartinez), Jérôme Tchania (codeitwisely) [1], Levente Besenyei (LeventeB), m4olivei, Marcus Johansson (Marcus_Johansson) [2], Mukeysh, Omar Mohamad - El Hassan Lopesino (omarlopesino), Paul Sheldrake (paulsheldrake), Prabhavathi Vanipenta (prabha1997), Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Ricardo Castañeda (cadence96), Rob Loach (robloach), Ronald te Brake (ronaldtebrake), Scott Euser (scotteuser), scott falconer (scottfalconer), Shivam Sen (shivamsen_12579), Sujal Kshatri (sujal_31), Sven Decabooter (svendecabooter), Thomas Werthmüller (weri), velmir_taky (root_emarketing), Wolfgang Ziegler (fago)

                                                                                                                                        ---

                                                                                                                                        Drupal AI Initiative

                                                                                                                                        The Drupal AI Initiative made significant progress across multiple workstreams during this period, with a strong focus on user experience design, demonstration infrastructure, and partnership growth.

                                                                                                                                        A complete set of AI roadmap feature mockups was delivered, covering eight key editorial workflows including AI-assisted page creation, content review notifications, search, field automation, translation, and dashboard configuration. These interactive prototypes establish a shared design reference for the initiative's direction and were closed as completed during the period.

                                                                                                                                        The foundation for an AI CMS Demo System was established, including repository setup, technical architecture, and proof-of-concept deployment. The demo will showcase AI capabilities built on Drupal CMS in a production-ready format, with hosting-specific configurations to support different deployment environments. This work closed as complete and provides a critical asset for showcasing the initiative's technical capabilities.

                                                                                                                                        Planning advanced for an AI Content Review Workflow, with user experience design and technical architecture both in progress. Once delivered, this will enable editors to trigger AI-powered content quality checks, compliance validation, and brand consistency reviews directly within Drupal's editorial interface.

                                                                                                                                        A new Gold partner, Reading Room, was onboarded during the period, expanding the initiative's contributor and funding base. The Enterprise AI Summit continued planning, with case study sourcing, sponsor updates, and mobile site improvements underway.

                                                                                                                                        New concepts were introduced for a Cost & Usage module to give site owners visibility into AI spending and usage patterns, and for hosting provider skills that would allow developers to control deployment through conversational instructions.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate resources to support the AI Content Review Workflow technical build now that design and architecture are defined, ensuring timely delivery of this flagship editorial feature.
                                                                                                                                        • Champion adoption of the new demo system with key stakeholders and potential users to maximize visibility and feedback once deployment is complete.
                                                                                                                                        • Approve partnership outreach to additional hosting providers beyond DevPanel to expand the reach of deployment automation skills.
                                                                                                                                        ---

                                                                                                                                        AI Integration - ECA

                                                                                                                                        The AI Integration - ECA module is working toward a stable 1.0.0 release by expanding coverage of AI operations that can be automated through low-code workflows. The module currently supports five AI operation types; over the past two weeks, work has been organised to add actions for nine additional operations, including summarisation, text classification, text-to-image generation, audio-to-audio processing, image classification, image-to-image and image-to-video transformations, object detection, and speech-to-speech conversion. Proposals were also opened for simplifying how structured data formats are configured in chat workflows and for adding an interceptor submodule that will let administrators monitor or modify AI requests and responses as they flow through the system.

                                                                                                                                        Three merge requests have been submitted covering text classification, summarisation, and a broader set of new operations. Automated compatibility updates for Drupal 12 are also in progress. All open issues are part of normal feature development for a pre-release module; no blocking concerns have been identified.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Ensure capacity is available for code review so the pending merge requests covering nine new operation types can be evaluated and merged promptly.
                                                                                                                                        • Clarify the release timeline and any outstanding decisions needed to reach the 1.0.0 milestone.

                                                                                                                                        Contributors: Joshua Fernandes (joshua1234511), Marcus Johansson (Marcus_Johansson), project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        AI Agents Test

                                                                                                                                        AI Agents Test is a module that helps site builders validate whether their AI configurations are working as expected. Over the past two weeks, activity focused on planning improvements to testing workflows and clarifying the module's future direction.

                                                                                                                                        A research issue was closed that explored whether this module should be merged with a related evaluation tool, ai_eval. This decision provides clarity on the project's scope and helps avoid duplication of effort across the Drupal AI ecosystem.

                                                                                                                                        Work also progressed on a proposal to allow users to run more than one test group in bulk. This would make it easier for teams to test multiple AI models or configurations at once, rather than running tests individually. The capability would be particularly valuable when comparing different model performance or validating prompt engineering changes across several scenarios.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Confirm whether bulk test execution is a priority feature that warrants dedicated development resources, as it would improve efficiency for teams comparing multiple AI configurations.
                                                                                                                                        • Clarify strategic positioning now that the module's scope has been separated from other evaluation tools in the ecosystem.
                                                                                                                                        ---

                                                                                                                                        OpenAI Provider

                                                                                                                                        The OpenAI Provider module made steady progress during this period, with two enhancements merged and three additional improvements under review.

                                                                                                                                        Support for image-to-image capabilities was added, expanding the range of AI-powered image operations available to users. The default image generation model was also updated to remove the deprecated Dall-E 3 option, ensuring the module aligns with current provider offerings.

                                                                                                                                        Three open merge requests are awaiting review: moderation skip functionality with test coverage, batch embeddings support for more efficient processing of multiple text inputs, and routine automated maintenance updates.

                                                                                                                                        Overall, the module is progressing with incremental feature additions and maintenance work typical of active development.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Ensure reviewer capacity is available to assess and merge the three pending improvements, particularly the batch embeddings feature which may benefit users processing larger volumes of content.
                                                                                                                                        • Consider whether formal testing resources could accelerate quality assurance for new features like moderation controls.
                                                                                                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Marcus Johansson (Marcus_Johansson), Paul Sheldrake (paulsheldrake), project update bot (Project-Update-Bot), Scott Euser (scotteuser) ---

                                                                                                                                        Anthropic Provider

                                                                                                                                        The Anthropic Provider module made significant progress during this period with the delivery of prompt caching capabilities. A merge request adding prompt caching and SDK improvements was completed and merged, giving administrators new tools to optimize performance and reduce costs. Users can now enable prompt caching through a simple toggle in the provider settings and select cache durations of either five minutes or one hour. This feature allows frequently-used prompts to be reused without reprocessing, potentially reducing API costs and improving response times for repetitive workflows.

                                                                                                                                        Additionally, work is underway to address a compatibility issue with multi-agent conversations. A proposed fix for conversations ending with non-user messages remains open. This issue affects scenarios where AI agent handoffs result in message sequences that the Anthropic API does not accept, causing errors in tools like Drupal Canvas AI.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize review and testing of the open multi-agent conversation fix to unblock AI agent workflows and improve user experience.
                                                                                                                                        • Allocate resources for documentation or user guidance on prompt caching benefits to drive adoption of the new cost-saving feature.

                                                                                                                                        Contributors: Carlos Ospina (camoa), Rajab Natshah (RajabNatshah)

                                                                                                                                        ---

                                                                                                                                        Fireworks AI

                                                                                                                                        The Fireworks AI module saw focused maintenance activity during this period. Three commits were made to address requirements and improve the module's underlying structure. The work included fixes to module requirements and a refactoring of the rerank functionality to use standardized base components, which should improve consistency and maintainability going forward.

                                                                                                                                        No issues were updated and no merge requests were completed during this period, indicating a quiet fortnight focused on incremental improvements rather than major feature development or bug resolution.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Clarify the project's strategic priority and resource allocation to determine whether this module should receive sustained development effort or remain in maintenance mode.
                                                                                                                                        • Support community engagement by encouraging user testing and feedback to identify the most valuable next features or improvements.

                                                                                                                                        Contributors: Marcus Johansson [3]

                                                                                                                                        ---

                                                                                                                                        MCP Client

                                                                                                                                        The MCP Client module saw minimal development activity during the reporting period. An automated maintenance update was initiated to keep the project aligned with current standards, though no work was merged or completed during this time.

                                                                                                                                        The module remains in an early stage of development, and the lack of substantial progress may indicate limited active development resources or that work is occurring outside the main repository.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Clarify whether this module remains a strategic priority and allocate dedicated development resources if continued progress is expected.
                                                                                                                                        • Identify and engage potential contributors or partners who could accelerate development and bring the module to a stable release.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        amazee.ai Private AI Provider

                                                                                                                                        This module provides integration with amazee.ai's private AI infrastructure. During the reporting period, two fixes were merged to address compatibility and configuration issues.

                                                                                                                                        A missing database extension dependency was resolved, ensuring the module correctly declares its requirement for PostgreSQL functionality. Separately, validation was improved to prevent configuration errors when key identifiers are empty or invalid.

                                                                                                                                        An automated compatibility update for Drupal 12 has been prepared and is awaiting review. This work ensures the module will remain functional as the platform evolves.

                                                                                                                                        The module continues to mature with focused bug fixes that improve reliability and deployment safety. No blocking issues were reported during this period.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Review and approve the pending Drupal 12 compatibility update to ensure timely platform support.
                                                                                                                                        • Confirm ongoing resourcing for maintenance as the module moves toward stable release.
                                                                                                                                        Contributors: Dan Lemon (dan2k3k4), project update bot (Project-Update-Bot) ---

                                                                                                                                        Gemini Provider

                                                                                                                                        The Gemini Provider module saw focused development activity over the past two weeks, advancing key capabilities for the platform's AI integration.

                                                                                                                                        Work progressed on expanding the module's embedding functionality. A proposal for batch embeddings support is under review, which would allow the system to process multiple embedding requests more efficiently. Separately, development continues on image embeddings, which would enable the platform to index and search using images—a differentiating capability that few other providers offer.

                                                                                                                                        Two issues address module stability. A fix for content blocking error handling is in progress, which would prevent the system from crashing when content safety filters are triggered. The team is also working through code quality checks to ensure the automated test suite accurately reflects the module's health. Additionally, automated compatibility updates for Drupal 12 are being prepared.

                                                                                                                                        The module remains in active development with normal issue activity for this stage.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize which embedding capability—batch processing or image support—delivers greater business value, to help the team sequence work.
                                                                                                                                        • Ensure testing resources are available to validate content blocking scenarios before release.

                                                                                                                                        Contributors: Artem Dmitriiev (a.dmitriiev), Ishani Patel (IshaniPatel), Joshua Fernandes (joshua1234511), project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        Huggingface Provider

                                                                                                                                        The Huggingface Provider module saw focused development activity during this period. A merge request was opened to add extractive question answering capability to the module. This feature would enable the platform to automatically answer questions by extracting relevant information from provided text, expanding the module's natural language processing capabilities beyond its current functionality.

                                                                                                                                        The module remains in active development with no critical blocking issues reported during this period. As an integration module connecting Drupal to Huggingface's machine learning services, steady feature additions like this help broaden the range of AI-powered content and user experience features available to site builders.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Provide clarity on which AI capabilities are strategic priorities for upcoming releases to help focus development effort.
                                                                                                                                        • Ensure the team has access to stakeholders who can validate whether new features like question answering meet real user needs.
                                                                                                                                        Contributors: Ahmad Khader (Ahmad-Khader) ---

                                                                                                                                        Microsoft Azure AI

                                                                                                                                        The Microsoft Azure AI module saw focused development activity during this period, with improvements made to the text-to-image capabilities. This enhancement enables users to generate images from text descriptions more effectively, supporting content creation workflows and creative automation use cases.

                                                                                                                                        The module continues to evolve as an integration point between Drupal sites and Microsoft's Azure AI services, allowing organizations to leverage cloud-based artificial intelligence features for content generation and media production.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Consider identifying internal use cases that would benefit from AI-generated imagery to validate the module's value proposition.
                                                                                                                                        • Evaluate whether additional resourcing could accelerate development toward a stable release suitable for production deployment.

                                                                                                                                        Contributors: Marcus Johansson [1]

                                                                                                                                        ---

                                                                                                                                        Milvus VDB Provider

                                                                                                                                        The Milvus VDB Provider project saw preparatory work this period, with no changes merged into the codebase. Two merge requests remain open for review.

                                                                                                                                        A batching feature for indexing operations has been proposed. This enhancement would allow the system to process multiple indexing operations together rather than one at a time, improving efficiency when working with large volumes of data. This capability is particularly valuable for organizations managing extensive content libraries or knowledge bases.

                                                                                                                                        Additionally, an automated maintenance update has been prepared to keep the project aligned with Drupal coding standards and infrastructure requirements.

                                                                                                                                        Both changes are awaiting review before they can be incorporated. With no commits merged during this period, there are no immediate changes to functionality or stability.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Ensure reviewer capacity is available to evaluate the pending batching enhancement, which could unlock performance improvements for users with large-scale indexing needs.
                                                                                                                                        • Clarify strategic priorities for the module's feature roadmap to help contributors focus effort on high-value capabilities.

                                                                                                                                        Contributors: Artem Dmitriiev (a.dmitriiev), project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        Postgres VDB Provider

                                                                                                                                        During this period, a merge request was opened to address dependency management within the module. The work aims to remove the hard requirement on a specific database extension, which would provide more flexibility in how the module can be deployed and integrated into different environments. This change could reduce implementation barriers and make the module more adaptable to varying infrastructure setups.

                                                                                                                                        No merge requests were completed during this period, and no open issues required attention. As an early-stage module, this level of activity is typical, with development progressing incrementally.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Ensure the team has capacity to review and finalize the pending dependency work, which could unlock broader adoption scenarios.
                                                                                                                                        • Clarify strategic priorities for this module relative to other vector database integrations to guide future resourcing decisions.

                                                                                                                                        Contributors: Emiel Bloem (emielb)

                                                                                                                                        ---

                                                                                                                                        AI Image Alt Text

                                                                                                                                        The module saw limited activity during this period, with one merge request opened to expand compatibility with newer versions of the AI module framework. This work aims to ensure the module can integrate with the latest AI infrastructure, which will help maintain its viability as the broader AI ecosystem evolves.

                                                                                                                                        No issues were updated, no code was committed, and no merge requests were finalized during this two-week window. This suggests the project is in a quiet phase with ongoing but not yet completed work.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Assign capacity to review and finalize the AI module compatibility update to keep the module current with its dependencies.
                                                                                                                                        • Consider whether this module aligns with strategic priorities and warrants continued investment or formal release planning.

                                                                                                                                        Contributors: Peter Philipp (daspeter)

                                                                                                                                        ---

                                                                                                                                        Model Context Protocol

                                                                                                                                        The Model Context Protocol module is receiving automated compatibility updates to prepare for Drupal 12. A compatibility issue was opened to track the removal of deprecated code, with a corresponding merge request containing proposed fixes. No changes have been merged yet during this period.

                                                                                                                                        This automated maintenance work ensures the module will continue functioning when Drupal 12 is released, reducing technical debt and avoiding future migration costs. The updates are being generated systematically to identify code that will no longer be supported in the next major version of Drupal.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate developer time to review and test the pending compatibility updates, ensuring the module is ready before Drupal 12's release timeline becomes critical.
                                                                                                                                        • Clarify the module's strategic importance and maintenance priority to help the team decide whether to invest in Drupal 12 support or sunset the project.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        AI Agents

                                                                                                                                        The AI Agents module made steady progress during this period, with work focused on improving usability, fixing structural issues, and preparing for broader platform integration.

                                                                                                                                        Several administrative refinements were addressed. The module's menu structure is being aligned with the updated AI 1.4.x navigation, moving AI Agents under a new "Tools & Automation" category to improve discoverability. A schema was added for the CKEditor integration to eliminate configuration warnings. Work also began to improve the structured-output schema editor, replacing a plain text field with a purpose-built JSON editor that provides validation and syntax highlighting.

                                                                                                                                        Multiple bug fixes addressed runtime reliability. Issues that previously broke the user interface when tools encountered errors are now handled more gracefully. A fix was completed to ensure that tools marked as "return directly" properly track their identifiers in the conversation history. Work is in progress to resolve how Views agent updates are applied to non-default displays, ensuring that configuration changes appear correctly at runtime.

                                                                                                                                        Strategic development included logging interface documentation and exploration of a plugin system to export or synchronize agents to external platforms such as Claude Code and VAPI, which would allow Drupal-configured agents to operate in external AI ecosystems. Work also continued on integrating agents with the chat processor architecture, enabling tighter parity with the AI Assistant layer.

                                                                                                                                        Contributors: Ahmad Khader (Ahmad-Khader), Bharat Kelotra (bharatkelotra), David Galeano (gxleano), Jürgen Haas (jurgenhaas), Marcus Johansson [1], Nicolae Procopan (thebumikgmail.com), Prabhavathi Vanipenta (prabha1997), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Sven Decabooter (svendecabooter)

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Clarify priority and scope for the external platform integration work to inform resourcing decisions and avoid scope creep in a maturing codebase.
                                                                                                                                        • Designate ownership for the Views agent display override issues to unblock validation and merge of fixes already in review.
                                                                                                                                        ---

                                                                                                                                        Tool API

                                                                                                                                        The Tool API module, which enables AI agents to invoke structured operations within Drupal, saw focused refinement work over the past two weeks. A critical usability issue was resolved: the command-line interface had been masking failure messages when tools encountered errors, making it difficult to understand what went wrong. This bug was fixed, ensuring meaningful error messages now surface correctly when operations fail.

                                                                                                                                        Discussion continued on several enhancements that would improve how the module integrates with AI systems and developer workflows. Teams explored File Input Handling to understand how tools can securely accept and process files from AI agents. Work also progressed on Add skills for generating Tools, which was closed during the period, aiming to make it easier for AI coding assistants to generate new tool definitions. Proposals were discussed around Allow controlling Tool return format to support both human-readable and machine-readable outputs, and Proposal: make Tool's declarations introspectable over the CLI to help consumers better understand available tools before invoking them.

                                                                                                                                        A serialization compatibility issue affecting REST endpoints received attention, with a merge request now under review. Additional planning issues remain open around preview capabilities and improved tool discovery for large-scale AI agent deployments.

                                                                                                                                        How can I help on this project?

                                                                                                                                        Consider allocating resources to review and finalize the serialization fix, which affects REST API integration. Support decision-making around tool discovery and execution patterns to clarify the roadmap for AI agent scaling. Advocate for user testing of the file input handling research once prototype work completes.

                                                                                                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar), Marcus Johansson (Marcus_Johansson), Matt Glaman (mglaman) [1] ---

                                                                                                                                        Drupal Canvas

                                                                                                                                        During the reporting period, substantial progress was made on symmetric translation support for multilingual Canvas sites. A large merge introduced automatic propagation of component version updates to all translations of both content and config entities, preventing translation drift when code components evolve. The underlying data model now treats content and config translations uniformly through a new staged-config-override abstraction. Several bugs blocking the translation milestone were resolved, including a fatal error when an image reference pointed to a deleted file, and incorrect translatability of entity-reference inputs. The pending-changes review UI was refined to prevent accidental per-translation operations until the full langcode-aware publishing flow is in place.

                                                                                                                                        Work continued on conflict detection and resolution. The back-end now recognizes when an auto-save diverges from a published entity that has changed externally, and the UI displays conflict indicators during selective publishing. This functionality is currently behind a feature flag while the resolution flow is refined. A rudimentary resolution interface was merged, offering side-by-side comparison and viewport selection.

                                                                                                                                        Canvas AI improvements included a fix to the orchestrator agent's UUID persistence during post-updates, correct exposure of block component props to agents, and test fixtures for page-builder and template-builder agents. Several prompt bugs affecting component generation (deprecated imports, prop/slot collisions, hardcoded errors) were consolidated and resolved. In-progress chat messages now persist when page metadata changes mid-run.

                                                                                                                                        The CLI was updated: deprecated upload and download commands were removed, media reconciliation now respects sync settings, and command output was cleaned up for improved readability and AI-agent consumption. JavaScript packages were updated, and the kernel test suite was split across four parallel CI jobs to reduce pipeline time. A regression causing boolean props to auto-enable when other fields changed was traced to falsy-value coercion and a Twig template quirk, and fixed. A full-screen "page" extension type was introduced, and test coverage for multi-translation component-instance updating was strengthened.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize review and feedback on the conflict-resolution feature flag and UI (still in draft/refinement) so it can move to stable and support production editorial workflows.
                                                                                                                                        • Allocate resources to expand test coverage for content-entity-reference props and translation edge cases, reducing manual QA overhead as the feature set grows.

                                                                                                                                        Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Adam G-H (phenaproxima), Ahmad Khalil (ahmad-khalil-imagex) [1], AKHIL BABU (AkhilBabu) [3], Alamgir Hossain (alamgir.hossain.cse), Andrew Belcher (andrewbelcher), Ben Mullins (bnjmnm) [3], Björn Brala (bbrala) [1], Bálint Kléri (balintbrews) [7], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [8], Feliksas Mazeikis (f.mazeikis) [2], Gábor Hojtsy (goba), Jakob P (japerry), Kunal Sachdev (kunal.sachdev) [2], Lauri Timmanee (lauriii) [1], Matt Glaman (mglaman) [2], Narendra Singh Rathore (NarendraR) [1], Oleksandr Antonchyk (Anton4yk), Priyanka Patel (priyankapatel), project update bot (Project-Update-Bot), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [2], Sally Young (justafish), scott falconer (scottfalconer), Shubham Prakash (shubham.prakash), Ted Bowman (tedbow) [1], utkarsh_33 (Utkarsh_33) [1], Wim Leers (wimleers) [7], wotnak

                                                                                                                                        ---

                                                                                                                                        Context Control Center (CCC)

                                                                                                                                        Context Control Center shipped significant progress toward its beta3 milestone during this period, with a focus on documentation, UI improvements, and stabilizing core features ahead of the first release candidate.

                                                                                                                                        Several important enhancements were merged to improve the user experience. Full view layout for context item pages was completed, replacing the default field list with a two-column design that surfaces scope and subcontext details more clearly. The context listing page was refined to merge separate Use Cases and Scope columns into a unified display with cascading filters, making it easier to browse and filter context items. The overview page description and subcontext feature documentation were updated to clarify their purpose and benefits.

                                                                                                                                        A new experimental submodule, Document Loader: Context Importer, was introduced to allow users to import context from PDF, Markdown, text files, and URLs via an MDXEditor integration. Example context items from the Chicago Driesnote demo were added to help testers explore the module's capabilities.

                                                                                                                                        Important API and configuration work included validation to prevent invalid global context limits, better support for scope value extension via hooks, a public API for scope subscription forms, and making the Scheduler feature optional. Conditional subcontext received a toggle, caching, and per-request limit to manage latency and provider costs. Usage tracking query inefficiencies were resolved by batching database operations.

                                                                                                                                        Quality improvements included PHPUnit process isolation attributes on all kernel tests, eslint error fixes, and bundleless context item follow-ups. Developer resources were strengthened with GitLab issue and merge request templates, a SECURITY.md file, and API stability documentation distinguishing supported from internal interfaces.

                                                                                                                                        Beta testing recruitment is underway, and planning for the beta3 release continues with remaining milestone work focused on scope plugin refinement, documentation consistency, and accessibility improvements identified through AI Best Practices review.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Support recruitment and onboarding of beta testers by sharing CCC resources and demo videos with relevant stakeholder groups or partner organizations.
                                                                                                                                        • Allocate design and accessibility review time to help resolve open UX issues flagged for the release candidate.
                                                                                                                                        • Help prioritize scope plugin and API stabilization work against other organizational commitments to keep the beta3 and RC1 timeline on track.

                                                                                                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar) [2], Ahmad Khader (Ahmad-Khader) [1], Anikó Viola (violaniko) [1], Daniel Rodriguez (danrod) [1], Eric Homanchuk (erichomanchuk) [1], Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [2], Kristen Pol (kepol) [9], Matt Glaman (mglaman) [5], Pravesh Poonia (Pravesh_Poonia), project update bot (Project-Update-Bot), Rob Loach (robloach) [2], Tamas Balog (tbalog)

                                                                                                                                        ---

                                                                                                                                        AI Dashboard

                                                                                                                                        The AI Dashboard project made progress on documentation and user experience improvements during this period. Work continued on expanding the AI ecosystem directory, which will help site administrators discover and browse available AI-related modules. A modal display issue affecting the recipe installation feature was identified and postponed for future resolution.

                                                                                                                                        The most significant development is an open proposal to Improve AI Ecosystem, which includes plans to integrate a module directory directly into the Dashboard interface, allowing users to browse AI modules without leaving their site. The work also includes improving category detection and adding automated updates to keep the ecosystem listing current. This would streamline the module discovery process and reduce friction for teams looking to expand their AI capabilities.

                                                                                                                                        A bug affecting the recipe installation modal was reported and postponed, which currently prevents users from installing AI features through the interface as intended.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Clarify whether the recipe installation feature is a priority for users, or if postponing this capability is acceptable for current adoption goals.
                                                                                                                                        • Review the ecosystem integration proposal to ensure it aligns with your broader module distribution and user onboarding strategy.

                                                                                                                                        Contributors: Rob Loach (robloach)

                                                                                                                                        ---

                                                                                                                                        AI Search

                                                                                                                                        The AI Search module made progress on indexing performance and search filtering capabilities during this period. A feature enabling long-running chunk indexing was completed and merged, allowing the system to handle larger content sets without breaking changes to existing installations. Work is underway on batch embeddings to further improve indexing speed.

                                                                                                                                        A new approach to dynamic search filtering is in development through the FilterableRagTool feature, which would allow sites to filter search results by custom attributes (such as case studies or content types) at query time. An existing filter issue was closed during the period.

                                                                                                                                        Four configuration and error-handling issues were opened late in the period, highlighting gaps in logging, parameter handling, and support for non-embedding search providers. These are typical of alpha-stage development and will need attention to improve reliability and clarity for site administrators configuring the module.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize resources to resolve the four recently opened configuration and error-handling issues, which affect admin experience and provider flexibility.
                                                                                                                                        • Clarify the roadmap for the 2.0 stable release, particularly around compatibility with the AI Core 2.x integration work that is currently blocked.
                                                                                                                                        Contributors: Artem Dmitriiev (a.dmitriiev), m4olivei, Scott Euser (scotteuser) [1] ---

                                                                                                                                        Field Widget Actions

                                                                                                                                        Field Widget Actions enables users to add action buttons (such as AI content generators) directly into content editing forms. Over the past two weeks, the project delivered several important refinements that improve usability, compatibility, and the reliability of AI-powered workflows.

                                                                                                                                        Three fixes were completed and merged. A bug preventing unavailable actions from appearing in configuration menus was resolved, reducing confusion during setup. A compatibility issue affecting integrations like autosave was addressed so that when users select AI-generated suggestions, other form elements respond correctly. Automated compatibility updates for the upcoming Drupal 12 release were also applied.

                                                                                                                                        A significant new capability was delivered: interactive refinement for AI content. Users can now iteratively improve generated content through a modal interface, submitting follow-up prompts to refine results before inserting them into the field. This feature is optional and does not affect existing workflows.

                                                                                                                                        Three enhancements remain in progress. Work is underway to simplify how automated configuration recipes declare actions, to support additional third-party field widgets, and to extend action buttons to checkbox and radio inputs. A minor issue regarding button label translation was reported and is under review.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Ensure the configuration recipe enhancement receives review and testing resources so automated deployments can be simplified.
                                                                                                                                        • Support testing and sign-off for the checkbox and radio button enhancements currently in review.
                                                                                                                                        • Prioritize resolution of the translation workflow gap if multilingual deployments are planned.

                                                                                                                                        Contributors: Artem Dmitriiev (a.dmitriiev) [1], Daniel Bosen (daniel.bosen), Edward Zwart (ezeedub) [1], project update bot (Project-Update-Bot) [1], Scott Euser (scotteuser), Volker Killesreiter (volkerk) [1]

                                                                                                                                        ---

                                                                                                                                        AI translate

                                                                                                                                        The AI translate module saw focused attention on content quality and scale challenges during this period. Work is underway to address timeouts when translating large pages (over 1,000 words) by splitting content into manageable chunks. A merge request has been prepared to resolve 504 Time out on large content, which should enable translation of larger documents without service interruptions.

                                                                                                                                        Two significant content integrity issues were flagged: HTML markup is corrupted/not preserved when translating formatted text fields and HTML markup gets added after certain tags. These affect the reliability of translations for content containing rich text formatting, which is common in most content management scenarios.

                                                                                                                                        Strategic development discussions include a proposal to batch field translations into single requests rather than translating each field separately, which would reduce redundant API calls and associated costs. A workflow refactoring plan was raised to support agent-driven translation. Compatibility work for Drupal 12 progressed with an automated update.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize resolution of the HTML markup preservation issues, as they affect content quality and may require prompt engineering or architectural decisions about how formatted content is processed.
                                                                                                                                        • Review and approve the batching proposal for field translation to reduce API costs and improve efficiency before implementation begins.

                                                                                                                                        Contributors: Miriam Nugent (Peacog), project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        Pinecone VDB Provider

                                                                                                                                        The Pinecone VDB Provider module, which enables integration with Pinecone vector database services, saw focused development activity during this period. Work centered on improving the efficiency of data indexing operations through a new batching capability, inspired by similar improvements in a related module.

                                                                                                                                        Two proposals were prepared to add batching support for indexing operations, one targeting the current stable version and another for the next major release. This enhancement will allow the module to process multiple data items together rather than individually, which should reduce processing time and improve performance when handling large volumes of content. Both proposals are awaiting review.

                                                                                                                                        No code was merged or deployed during this period. The module remains in active development with work progressing on performance optimization features.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate technical review capacity to evaluate the pending batching proposals, enabling the performance improvements to move forward.
                                                                                                                                        • Clarify versioning strategy: determine whether batching should be introduced in the stable release, the next major version, or both.

                                                                                                                                        Contributors: Rob Loach (robloach)

                                                                                                                                        ---

                                                                                                                                        AI powered Search Block

                                                                                                                                        Development activity over the past two weeks focused on feature enhancement and maintenance. Work began on adding guardrail set selection capabilities to the search block, which will give administrators better control over content safety and quality standards in AI-generated search results. This addresses a need for more configurable content moderation in user-facing search experiences.

                                                                                                                                        Two automated maintenance updates were also opened to keep the module's dependencies and coding standards current. No code was merged during this period, indicating work remains in review and validation stages.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate review resources to assess and approve the pending guardrail selection feature and maintenance updates, accelerating their path to release.
                                                                                                                                        • Clarify strategic priorities for content moderation features to guide decision-making on the guardrail implementation approach.

                                                                                                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar), project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        FlowDrop

                                                                                                                                        FlowDrop has begun preparing for compatibility with the upcoming Drupal 12 release. An automated compatibility fixes issue was opened to track removal of deprecated code that will no longer be supported in the next major version of Drupal. A corresponding merge request has been prepared containing the necessary updates.

                                                                                                                                        This work ensures FlowDrop will continue to function when Drupal 12 is released, preventing disruption for sites that upgrade their core platform. The changes address technical deprecations introduced in earlier Drupal versions that must be resolved before the next major release.

                                                                                                                                        No commits were finalized during this period, indicating the compatibility changes are still under review. This is normal preparation work for upcoming platform changes and does not represent any immediate risk to current users.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate developer time to review and finalize the Drupal 12 compatibility updates so the module is ready before the core platform release.
                                                                                                                                        • Clarify the project's timeline and priority for Drupal 12 support to guide resource planning.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        FlowDrop UI Agents

                                                                                                                                        Work continued during this period to prepare the module for compatibility with Drupal 12. An automated compatibility update was opened to address deprecated code patterns that will no longer be supported in the next major version of Drupal. A corresponding merge request was created with proposed changes spanning over 230 lines of code.

                                                                                                                                        This compatibility work is essential groundwork to ensure the module remains functional when Drupal 12 is released. Without these updates, the module would eventually break for users upgrading their systems. The changes are still under review and have not yet been integrated.

                                                                                                                                        No commits were merged during this period, meaning no new functionality was delivered to users. The focus remains on ensuring long-term platform compatibility rather than adding features or fixing user-facing issues.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Allocate technical review capacity to evaluate and merge the pending Drupal 12 compatibility updates, preventing delays in platform readiness.
                                                                                                                                        • Clarify the module's strategic priority and roadmap to determine whether active development should continue or resources should be redirected.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        Langfuse

                                                                                                                                        Activity during this period was limited to automated maintenance. A merge request containing automated fixes was opened by the project update bot. This type of work helps keep the module aligned with Drupal coding standards and platform updates, reducing technical maintenance burden over time. No issues were updated and no code was committed to the main codebase during this window.

                                                                                                                                        The module appears to be in a quiet phase with minimal development activity. With only automated maintenance in progress and no active issue resolution or feature development, the project may benefit from renewed attention to advance its roadmap.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Review and approve the pending automated maintenance work to keep the module's infrastructure current.
                                                                                                                                        • Assess whether dedicated developer time should be allocated to move the project toward a stable release.
                                                                                                                                        • Clarify the strategic priority of this module and communicate direction to potential contributors.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        Orchestration

                                                                                                                                        The Orchestration module saw planning and design activity across three strategic initiatives during this period, though no code was merged. Work is underway to expand integration options and improve the module's flexibility.

                                                                                                                                        Progress centered on integration with n8n, a workflow automation platform. This will enable two-way communication between Drupal and n8n, allowing Drupal events to trigger external workflows and n8n to create or update Drupal content in return. For organizations already using n8n, this would reduce manual bridging work and open new automation possibilities.

                                                                                                                                        A proposal to adopt JSON Schema for defining inputs, outputs, and configuration is being explored. This would provide clearer contracts for how workflow components connect, making it easier to validate and document automations before they run.

                                                                                                                                        Separately, work is planned to allow ECA workflows to invoke Orchestration services. Currently, Orchestration can call ECA, but not the reverse. Closing this gap would let teams use ECA's event system to trigger any registered Orchestration service.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Clarify strategic priority between n8n integration and the JSON Schema refactor to focus development effort.
                                                                                                                                        • Confirm whether n8n is the right platform investment based on organizational automation roadmap and existing tooling.
                                                                                                                                        ---

                                                                                                                                        AG-UI

                                                                                                                                        Over the past two weeks, work began on preparing AG-UI for compatibility with the upcoming Drupal 12 release. An automated compatibility fixes issue was opened to track the removal of deprecated code patterns, with an associated merge request now under review. This proactive maintenance ensures the module will continue functioning when Drupal 12 becomes available, reducing future technical debt.

                                                                                                                                        Separately, planning continued on the Drupal Assistant Implementation meta issue, which aims to evolve the current proof-of-concept assistant into a production-ready feature that could replace the existing chatbot functionality. This represents a strategic enhancement to how users interact with AI capabilities within Drupal.

                                                                                                                                        No code was merged during this period, reflecting typical early-stage development activity where compatibility groundwork and feature planning are underway.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize whether the Drupal Assistant feature should be resourced for production development or remain experimental, enabling clearer roadmap planning.
                                                                                                                                        • Ensure the team has capacity to review and merge the Drupal 12 compatibility changes before the next major Drupal release.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot)

                                                                                                                                        ---

                                                                                                                                        AI Related Content

                                                                                                                                        During this period, a significant defect affecting the Pinecone integration was resolved. The issue prevented the related content view from returning any results when using Pinecone as the vector database provider. The underlying problem involved a query filter that was being silently ignored, causing the system to retrieve random semantic matches rather than properly filtered content. This has now been fixed, restoring the module's ability to deliver relevant content recommendations to end users.

                                                                                                                                        Additionally, automated Drupal 12 compatibility work has begun, with an open merge request containing compatibility updates. This positions the module to support the next major version of Drupal when it becomes available.

                                                                                                                                        How can I help on this project?

                                                                                                                                        • Prioritize review and approval of the pending Drupal 12 compatibility updates to ensure the module remains supportable as the platform evolves.
                                                                                                                                        • Consider allocating testing resources to validate the Pinecone fix across production-like environments before wider deployment.

                                                                                                                                        Contributors: project update bot (Project-Update-Bot), Scott Euser (scotteuser) [1]

                                                                                                                                        ======================================================================== ## [80] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 5