# Prompt log — 24h 2026-08-06 ======================================================================== ## [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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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], Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev), Bruno Bruno (bbruno), 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

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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting](https://git.drupalcode.org/project/ai/-/work_items/3586654) State: opened | Updated: 2026-08-06 | Author: Miguel Guerreiro (gueguerreiro) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::accepted Description: ## Summary **This is for version 1.x of the ai module** Disabling an AI Automator config entity (setting `status: false` in its configuration item) has no effect on whether it actually runs. Automators keep firing on every entity save even when we disable it. ## Steps to reproduce 1. Configure an AI Automator on any field so it auto-populates the field on save when left empty. 2. Save an entity with the field empty and verify the AI call fires and the field gets populated. 3. Disable the automator (set `status: false` in the exported config and reimport). 4. Save an entity with the fiel… ### [Adopt Symfony AI Platform 0.8-0.12 changes](https://git.drupalcode.org/project/ai/-/work_items/3586632) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: Wolfgang Ziegler (fago) | Labels: category::feature, priority::normal, state::needsReview Description: ### 1. `CatalogBasedModelRouter::resolve()` returns the wrong type **File:** `src/Plugin/ai/ModelRouter/CatalogBasedModelRouter.php` `ModelRouterInterface::resolve()` now returns `ModelRouter\RoutingDecision` instead of `ProviderInterface`. The plugin wraps Symfony's `CatalogBasedModelRouter` whose `resolve()` already returns a `RoutingDecision`, but the Drupal class re-declares `: SymfonyProviderInterface` as its return type. This is a **fatal `TypeError` at runtime** on every routing call. ### 2. `ProviderInterface::supports()` and `::invoke()` parameter type mismatch **Files:** - `src/Plu… ### [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-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Has Testing Steps, aiCoreModule 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), 1479 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… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-06 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: ai::inside, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 93 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai/-/work_items/3586658) State: opened | Updated: 2026-08-06 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-08-06 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Block deletion when the inference provider is referenced by one or more ai_platform config entities](https://git.drupalcode.org/project/ai/-/work_items/3586590) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted, v2.x-dev Description: Description ### Background … ### [Decide permission system for new AI Platform and AI Inference Providers](https://git.drupalcode.org/project/ai/-/work_items/3586628) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: unassigned | Labels: category::plan, priority::normal, state::accepted Description: The new AI Platform Config and AI inference Providers Config entities still depends on the legacy "`administer ai providers`" permission. The scope of this issue is getting an agreement on whether we would like to change that or not. ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-06 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/work_items/3536912) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: #drupalpune-sprint, ai::inside, aiAutomators, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1921 [feat: #3536912 Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/merge_requests/1921) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 810 diff lines 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 … ### [Allow Field Widget Actions to target a specific automator](https://git.drupalcode.org/project/ai/-/work_items/3571915) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: Has Testing Steps, ai::inside, aiAutomators, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1917 [bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID](https://git.drupalcode.org/project/ai/-/merge_requests/1917) | State: merged 2026-08-06 | Author: Abhisek Mazumdar (abhisekmazumdar), 217 diff lines Description: >>> [!note] Migrated issue Reported by: [oneliner](https://www.drupal.org/user/1781526) >>> [Tracker] Update Summary: Fix enables multiple field widget action buttons to run only their selected automator. Short Description: Field widget actions trigger all automators on a field instead of the selected one. Check-in Date: 02/06/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It’s possible (though not exposed by the default UI) to configure multiple AI automators for the same field by duplicating the automator config entity with a… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Needs UX review 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… ### [Allow Field Widget Actions to target a specific automator 2.x](https://git.drupalcode.org/project/ai/-/work_items/3586657) State: opened | Updated: 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: ai::inside, category::task, priority::normal, sprint candidate Description: Port changes from issue https://git.drupalcode.org/project/ai/-/work_items/3571915 to 2.x and 2.0.x branches ### [[META] Drupal AI Views Agent](https://git.drupalcode.org/project/ai/-/work_items/3539458) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: Jibran Ijaz (jibran) | Labels: category::plan, priority::normal, projectManagement, state::accepted Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) >>> The detailed document can be found at https://docs.google.com/document/d/16yCLk7Q7WWbbqH9PxD6yJX9VufHNUqEWOGCWJqdbg30/edit?usp=sharing Summary This issue outlines the scope, technical specifications, and user stories for a new Drupal AI Views Agent feature, designed to integrate AI capabilities into the Drupal Views module. The core objective is to enable users to create and configure Drupal Views using natural language instructions, leveraging Large Language Models (LLMs) and the existing Drupal AI A… ### [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-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs manual testing, aiCoreModule 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… ### [AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/work_items/3586653) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent, aiCoreModule, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1916 [bug: #3586653 AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/merge_requests/1916) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 179 diff lines Description: ## Summary `AiToolsValidationException` is thrown by tool and function-call validation, but nothing catches it and converts it into tool output. Instead of being passed back to the model as a tool result so it can correct the call and retry, it propagates up and surfaces to the end user, ending the run. A grep for `catch (AiToolsValidationException` and `catch (AiExceptionInterface` across ai and ai_agents returns no handler at all. ## Where it is thrown - `src/OperationType/Chat/Tools/ToolsPropertyResult.php` lines 118-171 — around 13 throws covering type, length, format and range validat… ### [ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls](https://git.drupalcode.org/project/ai/-/work_items/3586656) State: opened | Updated: 2026-08-06 | Author: Rodel Duterte (rduterte) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: Problem/Motivation While testing an agent locally specifically: https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 using echoai as the provider, I hit a crash when the agent had sub-agent tools configured: ``` TypeError: Drupal\ai_agents\Service\ArtifactHelper::replaceArtifactArguments(): Argument #1 ($tool) must be of type Drupal\ai\OperationType\Chat\Tools\ToolsFunctionOutputInterface, Drupal\ai\OperationType\Chat\Tools\ToolsOutput given ``` Using xdebug, tracing the stack, I found that `EchoProvider::chat()` sets a ToolsOutput object on the `ChatMessage` when tools are pre… ### [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-08-06 | Author: josecarlosmedero | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… --- MERGE REQUESTS (24h) --- ### [Resolve #3586495 "Add support embeddings via symfony/ai"](https://git.drupalcode.org/project/ai/-/merge_requests/1856) State: opened | Author: Scott Euser (scotteuser) | Branch: 3586495-add-support-embedings-via-symfonyai | 348 diff lines Description: Closes #3586495 ### [Issue #3571915: cherry pick 3e3b5970 for 1.3.x](https://git.drupalcode.org/project/ai/-/merge_requests/1920) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970-1.3.x | 197 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… ### [#3568246: fix late chatbot opening on page load](https://git.drupalcode.org/project/ai/-/merge_requests/1428) State: opened | Author: Bruno Bruno (bbruno) | Branch: 3568246-chatbot-state | 543 diff lines Description: Persist chatbot open state in backend instead of localStorage to ensure it’s applied during initial render and prevent layout shift. localStorage + JS only runs after the page has loaded, so it will _always_ cause a shift. ### Testing Instructions 1. Create an Assistant at **/admin/config/ai/ai-assistant** 2. Place the `AI DeepChat Chatbot` block at **/admin/structure/block/list/gin** 3. Make sure the **Placement** field under **Styling settings** is set to `Toolbar` 4. Open the chatbot using the Chatbot opener button on the top left 5. Once opened, refresh the page -> check that the chatbo… ### [Issue #3571915: Cherry-pick for 1.4.x](https://git.drupalcode.org/project/ai/-/merge_requests/1919) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970-1.4.x | 195 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… ### [bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID](https://git.drupalcode.org/project/ai/-/merge_requests/1918) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970 | 217 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… --- COMMITS (24h) --- - [3e3b5970](https://git.drupalcode.org/project/ai/-/commit/3e3b5970172bc17dfa5d2a6aed111040f5b17e43) bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID — Abhisek Mazumdar (2026-08-06T09:04:37.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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Onboard Silver AI partner: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586659) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Silver partner: Oomph ## 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 July/August 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) - [n/a] Add to non-dev meeting invites (marketing/UX) - [… ### [Run AI partner audit report: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586661) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586659+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 September 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report ### [Run AI partner audit report: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Follow-up to: #PARENT 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 MONTH YEAR ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report ### [Add Silver AI partner to d.o pages: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586660) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586659+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** **100 word text:** ## Target date or deadline August 2026 ## Tasks - [ ] Add logo/blurb to `/ai/partners` - [ ] Copy logo wall doc and add logo to logo wall doc - [ ] Save image with month and year, e.g. drupal-ai-partner-logo-wall-may-2026.png - [ ] Update `/ai/become-a-partner` with new logo wall image ### [Add Gold/Silver AI partner to d.o pages: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Follow-up to: #PARENT Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** **100 word text:** ## Target date or deadline MONTH YEAR ## Tasks - [ ] Add logo/blurb to `/ai/partners` - [ ] Copy logo wall doc and add logo to logo wall doc - [ ] Save image with month and year, e.g. drupal-ai-partner-logo-wall-may-2026.png - [ ] Update `/ai/become-a-partner` with new logo wall image ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Need to onboard new Gold/Silver partner: **PARTNER NAME** ## 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 MONTH YEAR ## Remaining tasks - [ ] Create partner onboarding tab from template - [ ] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [ ] Add to mailing lists - [ ] Add to private Slack channels (partners/contributors) - [ ] Add to public Slack channels (… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 (Marcus_Johansson)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | 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`)… --- MERGE REQUESTS (24h) --- ### [Draft: Resolve #3584407 "Ai eca interceptor"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3584407-ai-eca-interceptor | 6994 diff lines Description: Closes #3584407 AI-Generated: Yes (Used OpenCode with Claude to adjudicate the review findings against ECA source, implement the fixes, and write the accompanying tests. All conclusions were verified against `eca`/`ai` module source and reviewed by a human before pushing.) ## Latest round — review feedback from @joshua1234511 (cf8556a) All three findings confirmed and addressed. Details are in the four inline discussion threads; summary here. 1. **Tag normalization was incomplete.** `getTags()` becomes a *mixed* array once `SetTagAction` runs on a request that already carried tags, and the… --- COMMITS (24h) --- (none) ======================================================================== ## [4] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Jibran Ijaz (jibran)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai_agents/-/work_items/3586058) State: closed | Updated: 2026-08-06 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [Warning: Undefined array key "parameters" en Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() (línea 1038 de /var/www/html/docroot/modules/contrib/ai_agents/src/PluginBase/AiAgentEntityWrapper.php)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586065) State: opened | Updated: 2026-08-06 | Author: Alexis Martínez (alexismmd) | Assigned: unassigned | Labels: Novice, Quick Win, category::bug, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !331 [Issue #3586065: Prevent undefined array key warning when parameters is missing](https://git.drupalcode.org/project/ai_agents/-/merge_requests/331) | State: opened | Author: Alexis Martínez (alexismmd), 21 diff lines Description: ### Problem The following warning is triggered: ```text Warning: Undefined array key "parameters" in Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() ``` ### Cause The code accesses `$values['parameters']` without first checking whether the `parameters` key exists in the `$values` array. If the key is missing, PHP emits an `Undefined array key` warning. ### Suggested fix Before accessing `$values['parameters']`, check that the key exists (for example using `isset()` or `!empty()`) to avoid the warning when `parameters` is not defined. ### [Connecting an Agent to an Assistant doesn't work until cache clear and Tool API](https://git.drupalcode.org/project/ai_agents/-/work_items/3564033) State: opened | Updated: 2026-08-06 | 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 !337 [test: #3586021 Add regression test for ai_agent plugin cache invalidation](https://git.drupalcode.org/project/ai_agents/-/merge_requests/337) | State: opened | Author: Bharat Kelotra (bharatkelotra), 1403 diff lines Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) >>> Problem/Motivation Steps to reproduce - Create an Agent with the Tool "List Bundles on Entity using the Tool API - Create an Assistant for listning Bundles on Entity and use that agent - Do not clear caches - Explore the created Agent for the Assistant (Get an error) - Attach it to a chatbot (Get an Error) The chatbot had an error: The "ai_agents::ai_agent::bundle_lister_agent" plugin does not exist. Valid plugin IDs for Drupal\ai\Service\FunctionCalling\FunctionCallPluginManager are: ai_agent:h… ### [Create implementation of ShortTermMemory](https://git.drupalcode.org/project/ai_agents/-/work_items/3546411) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !183 >>> Problem/Motivation Short term memory is now available here: #3528730: Create ShortTermMemoryPlugin We should add an integration with it. Proposed resolution Add a parameter to the agent config to save the short term memory config. Add a subform integration for saving the configuration, while editing the AI Agent. Assume no ShortTermMemory by default. Trigger ShortTermMemory after the request event. ### [Give a parent agent possibility to forward request as is](https://git.drupalcode.org/project/ai_agents/-/work_items/3550098) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Many time a user is actually asking an orchestration agent just one instruction for one specific agent. Depending on how well the prompt is, there might be loss of information when this is forwarded to the subagent. If the parent knows that it should just forward the request as is, then it should be able to give this as a token instead. This helps both with consistency, but also costs and speed, since it will just output one token. Proposed resolution Create a token that th… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: Jibran Ijaz (jibran) | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, AI Views 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://… --- MERGE REQUESTS (24h) --- ### [Issue#3563628:Crash-Error-When-Trying-Remove-Last-Tool-From-Agent fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/336) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3563628-Crash-Error-When-Trying-Remove-Last-Tool-From-Agent | 3240 diff lines Description: Closes #3563628 ### [Draft: Issue #3542457: Add views creation function call plugin](https://git.drupalcode.org/project/ai_agents/-/merge_requests/172) State: closed | Author: Jibran Ijaz (jibran) | Branch: 3542457-add-views-creation | 372 diff lines Description: Closes #3542457 ![image](/uploads/aa9a3457a5eb6277440f78bc933524ec/image.png) ### [[#3542457] Added Views ai agent module.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/206) State: closed | Author: Jibran Ijaz (jibran) | Branch: 3542457-add-views-agent-module | 3661 diff lines Description: Closes #3542457 --- COMMITS (24h) --- (none) ======================================================================== ## [5] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 (Marcus_Johansson)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Create a skill for generating Tool plugins (best practices, how-to, placement)](https://git.drupalcode.org/project/tool/-/work_items/3582945) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::outside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !93 [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), 1548 diff lines Description: ### Problem/Motivation The Tool API lets modules expose well-defined, typed actions as `#[Tool]` plugins, and the `tool_ai_connector` submodule automatically surfaces those same tools to AI agents as `AiFunctionCall`s. Authoring a *correct* tool, though, means getting several moving parts right at once: - the `#[Tool]` attribute — `id`, `label`, `description`, the `ToolOperation` enum (`Explain` / `Read` / `Transform` / `Trigger` / `Write`) and the `destructive` flag; - typed `input_definitions` / `output_definitions` (`InputDefinition`, the list/map variants, `constraints`, `default_value`,… ### [Write documentation and enable project pages](https://git.drupalcode.org/project/tool/-/work_items/3582955) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::outside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !105 [Resolve #3582955 "Write documentation and enable project pages"](https://git.drupalcode.org/project/tool/-/merge_requests/105) | State: opened | Author: Marcus Johansson (Marcus_Johansson), 955 diff lines Description: There is project pages documentation that can autocreated on main merges. We should enable that. I have a skill that can do this automatically. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [6] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [1], Dave Long (longwave), David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Harumi Jang (hooroomoo), Juan Correa (jucs7) [1], Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache](https://git.drupalcode.org/project/canvas/-/work_items/3591918) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, reduxIntegratedFieldWidgets, state::active Description: ## Problem/Motivation `StaticPropSource` conjures a host-less, nameless field item list to render a widget for a single component prop. `StaticPropSource::formTemporaryRemoveThisExclamationExclamationExclamation()` then re-parents that field under a host entity via `setContext(NULL, EntityAdapter::createFromEntity($host_entity))`. Drupal core's `TypedDataManager::getPropertyInstance()` caches field item *prototypes* keyed by the root object's data type plus the field's property path. After re-parenting, every synthetic prop field — whatever its own field type — presents the same root (`entit… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-08-07 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement 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: No github.com token has been configured. Skipping release notes retrieval - ⚠️ 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. ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them](https://git.drupalcode.org/project/canvas/-/work_items/3591917) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, shapeMatching, state::active Description: ### Overview Components with an array prop (e.g. an array-of-images prop, mapped to a multi-value field) do not get a new version when config changes the storable prop shape of the array's *items* — even in situations where components using the same item shape directly *do* get one. Cause: when an array shape's storable prop shape is computed, the item shape is resolved through the prop shape repository and its field type, widget, and settings are copied into the array's `StorablePropShape` — but the cache tags that alter hooks attach to the *item* candidate (e.g. `config:media_type_list` fr… ### [Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache](https://git.drupalcode.org/project/canvas/-/work_items/3591916) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::major, shapeMatching, state::active Description: ### Overview A site installed with `drush site:install` (or any single-process recipe apply) can end up with Component config entities whose `active_version` hash does not match what the current site state generates — and the site stays that way until an unrelated event regenerates components. The same recipes applied through the browser installer produce a different (correct) version history, because the work is split across multiple requests. The cause is how `PersistentPropShapeRepository` refreshes storable prop shapes: - When config that affects prop shapes changes mid-process (e.g. a … ### [Preview viewport cannot show or reach content below the selected device height](https://git.drupalcode.org/project/canvas/-/work_items/3591915) State: opened | Updated: 2026-08-06 | Author: Olivier Ritlewski (oritlewski) | Assigned: unassigned | Labels: Description: ## Problem/Motivation When editing a long page in the Canvas page builder, the preview viewport shows only part of the page. There is no way to see or reach content below the currently rendered area other than resizing the browser window. There is also no visual indication of where the selected device's viewport height ends versus where the page content continues. ## Steps to reproduce 1. Create a page with content taller than the selected device viewport (e.g. Desktop, 1080px height). 2. Open the page in the Canvas editor. 3. Observe that content below the device height is not reachable in… ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-06 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1423 [fix: #3591876 Validate the target region before placing components](https://git.drupalcode.org/project/canvas/-/merge_requests/1423) | State: opened | Author: Rajab Natshah (RajabNatshah), 544 diff lines Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()`](https://git.drupalcode.org/project/canvas/-/work_items/3591904) State: opened | Updated: 2026-08-06 | Author: Marco (marco.nett) | Assigned: unassigned | Labels: AI-accelerated, Regression, category::bug, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1474 [Self-heal stored default-relative-url `$id` on read, and clean it up on update](https://git.drupalcode.org/project/canvas/-/merge_requests/1474) | State: opened | Author: Christian López Espínola (penyaskito), 884 diff lines Description: ## Problem / Motivation After updating Canvas 1.4.1 → 1.8.0, opening the editor for any page whose component tree contains a `default-relative-url` prop source returns a 500 from `/canvas/api/v0/layout/{entity_type}/{id}`: ``` LogicException: Extraneous JSON Schema information detected: { "$id": "json-schema-definitions://canvas.module/image", ... } should have been just { ... } ``` ## Root cause - Canvas ≤ 1.4 stored the resolved JSON schema of `default-relative-url` prop sources including the `$id` keys the schema resolver emits (e.g. `json-schema-definitions://canvas.module/imag… ### [Update npm dependencies](https://git.drupalcode.org/project/canvas/-/work_items/3591913) State: closed | Updated: 2026-08-06 | Author: wotnak | Assigned: wotnak | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1473 [chore: #3591913 Update npm dependencies](https://git.drupalcode.org/project/canvas/-/merge_requests/1473) | State: merged 2026-08-06 | Author: wotnak, 9903 diff lines Description: Update npm dependencies ahead of the release. Refresh `package-lock.json` / workspace lockfiles, run `npm run lint` and the relevant test suites, and verify the build. Major version upgrades requiring more work are handled in separate issues: - Astro v5 → v7 (#3588803+) - React Router v6 → v7 (#3591874+) ### [Allow fields to be added to the page entity type](https://git.drupalcode.org/project/canvas/-/work_items/3568228) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, page, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [catch](https://www.drupal.org/user/35733) >>> Overview Discussed in this slack thread: https://drupal.slack.com/archives/C072JMEPUS1/p1768606306603599 It's a very common use case to add field UI fields to entities for non-content purposes. A use case already in the canvas issue queue is https://git.drupalcode.org/project/canvas/-/work_items/3544662 where the metatags field has been added as a base field (and therefore not removable), but instead could be omitted and added by sites that needed. Other cases are things like 'hide from search results' o… ### [Support code component imports contributed by modules to the Canvas import map](https://git.drupalcode.org/project/canvas/-/work_items/3591914) State: opened | Updated: 2026-08-06 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Description: A module can add entries to the Canvas import map through `hook_canvas_importmap_alter()`. A code component that imports such an entry works in the in-browser code editor, which compiles the source and lets the browser resolve the specifier at runtime, but it cannot be pushed with the CLI. To reproduce: implement `hook_canvas_importmap_alter()` in a module to add a specifier such as `my_module/useThing`, then import it from a code component and run `canvas push`. The build fails with `Could not resolve entry module "my_module/useThing"` and nothing is uploaded. `canvas validate` passes, so th… ### [Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/work_items/3591893) State: closed | Updated: 2026-08-06 | Author: wotnak | Assigned: wotnak | Labels: headless Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1438 [feat(Headless): #3591893 Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/1438) | State: merged 2026-08-06 | Author: wotnak, 1116 diff lines Description: Ensure that the Canvas UI can render the headless preview for content templates. It needs to render the same component we use for rendering pages. ### [CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/work_items/3591895) State: closed | Updated: 2026-08-06 | Author: Bálint Kléri (balintbrews) | Assigned: unassigned | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1441 [fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/merge_requests/1441) | State: merged 2026-08-06 | Author: Bálint Kléri (balintbrews), 298 diff lines Description: The pull command does not consistently choose a component entry extension that matches the pulled source. For existing components, pull preserves the discovered entry filename. If an existing `index.jsx` receives TypeScript source from Drupal, TypeScript is written into a JSX file and compilation fails. We also found that new components always default to `index.tsx`, even when the source is plain JavaScript or JSX. Existing components with metadata but no local entry file similarly need a source-appropriate default. ### Steps to reproduce #### Existing component 1. Create a local componen… ### [Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/work_items/3591883) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1472 [#3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/merge_requests/1472) | State: merged 2026-08-06 | Author: Juan Correa (jucs7), 349 diff lines Description: ## Summary The dev chat describes the page to the AI in two request parameters. `current_layout` gives the component tree — component name, UUID and nested slots — and a second parameter, `layout`, gives every component's prop values as a flat map keyed by UUID. Merge the two: each component in `current_layout` carries its own prop values, and `layout` is no longer sent. Also send `current_layout` on file-upload requests, which today send no layout at all. A single parameter that describes both the structure and the content of the page is what an agent needs in order to reason about it — it… ### [Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs](https://git.drupalcode.org/project/canvas/-/work_items/3591907) State: closed | Updated: 2026-08-06 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: DX (Developer Experience), category::task, flaky tests, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1463 [Resolve #3591907 "Balance cypress E2E parallel split by runtime weight"](https://git.drupalcode.org/project/canvas/-/merge_requests/1463) | State: merged 2026-08-06 | Author: Christian López Espínola (penyaskito), 279 diff lines Description: ### Overview The `cypress E2E` CI job runs with `parallel: 4`, but the four nodes finish at very different times. Across the last 5 `1.x` pipelines that ran it, the slowest node took **12:54–27:36** while the fastest finished in **4:55–8:00** — a 2–3× spread. Because a parallel stage only completes when its slowest node does, the whole E2E stage is paced by one overloaded node while others sit idle. The cause is the spec-distribution logic in `ui/tests/support/parallel.js`. It sorts the 46 spec files alphabetically and deals them round-robin (`index % CI_NODE_TOTAL`), which balances the **nu… ### [Upgrade to Astro 7](https://git.drupalcode.org/project/canvas/-/work_items/3588803) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: JavaScript, category::task, code, priority::normal Description: >>> [!note] Migrated issue Reported by: [tim.plunkett](https://www.drupal.org/user/241634) Related to !1069 >>> Overview # npm audit reportastro  <6.1.6Severity: moderateAstro: XSS in define:vars via incomplete </script> tag sanitization - https://github.com/advisories/GHSA-j687-52p2-xcfffix available via `npm audit fix --force`Will install astro@6.2.2, which is a breaking changenode_modules/astro  @astrojs/mdx  <=0.0.0-vercel-upgrade-20230905174957 || 1.0.0-beta.0 - 4.3.14  Depends on vulnerable versions of astro  node_modules/@astrojs/mdx  … ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: David Bravo (davidbp) | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 502 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Canvas AI: Add the get_component_details AI tool + component-context helper (+ tests)](https://git.drupalcode.org/project/canvas/-/work_items/3591814) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary Add a new **information tool** `canvas_ai:get_component_details` (class `GetComponentDetails`) and a backing service `CanvasAiComponentContextHelper` (`canvas_ai.component_context_helper`) to `canvas_ai`, ported from the POC (MR !1214). Given a list of component ids, the tool returns the description, props, and slots of exactly those components, so an agent can fetch full metadata only for the candidates it shortlisted. It lands **inert** — no agent lists it yet. Ships with a kernel test. ## Why (this sprint) An agent first scans a lean catalog (id/name/description) and then fetc… ### [Canvas AI: Add an Agents & Tools settings form to select the main agent and chat Tools](https://git.drupalcode.org/project/canvas/-/work_items/3591882) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary Add an **Agents & Tools** tab to the Canvas AI settings area where an admin picks the **main agent** (single select) and the **Tools** offered in the chat (checkboxes), and expose the selected Tools to the frontend as `drupalSettings.canvas.ai.tools`. The form, its route and its config all live in `canvas_dev_ai`. Nothing in `canvas_ai` changes. ## Why In the revamped flow, agent selection is config-driven and explicit — the user picks the agent for the turn from a dropdown instead of an orchestrator inferring it (roadmap item 2: https://git.drupalcode.org/project/canvas/-/work_… ### [Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser](https://git.drupalcode.org/project/canvas/-/work_items/3591884) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary `CanvasDevAiBuilder::render()` returns a hard-coded mocked response. Replace it with a copy of the live `CanvasBuilder::render()` that runs the Canvas component agent with **`$agent->setLooped(FALSE)`**, so the agent stops after each model decision instead of looping to completion inside one request. The controller serializes the paused agent to the tempstore, returns `should_continue`, and `AiWizardDev.tsx` re-POSTs with a freshly built page context until `should_continue` is `FALSE`. ## Why With looping on (the `ai_agents` default), one HTTP request runs the agent until it is f… ### [Strengthen AutoSaveManager to generate stable hashes](https://git.drupalcode.org/project/canvas/-/work_items/3591785) State: closed | Updated: 2026-08-06 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: 1.x-dev, Conflict resolution, auto-save, autoSave Description: When AutoSaveManager normalizes entity, it is doing so without using strictly casted values. The set of normalized entity calues is used for `data_hash` hash computation. As the contents of the normalized entities are not strictly casted, the resulting hashes cannot be relied upon. The aim of this issue is to strengthen, simplify and standardise normalization and hashing processes happening in AutoSaveManager. --- MERGE REQUESTS (24h) --- ### [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 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) | >… ### [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 | 55 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](… ### [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](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) State: opened | Author: Ben Mullins (bnjmnm) | Branch: 3591838-brand-kit-color-support | 8091 diff lines Description: * This adds a Color entity type, which uses the [W3C color design tokes spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing the color value itself, in addition to Name. CSS variables name. Color entities are used by Brand Kit * Color entities has folder support. Unlike other folder-supporting entities, we can choose to add a color from a folder's options, and the newly added color will be in that folder **AI Disclosure:** Had Opencode + Kimi/Claude implement much of the work in several discrete stages. For the UI code, the prompts were detailed & granular enough that… ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: opened | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 1019 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less ex… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: opened | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 564 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity](https://git.drupalcode.org/project/canvas/-/merge_requests/1471) State: opened | Author: Rajendar Pothireddypally (RajendarReddy) | Branch: feature/field-ui-base-route-support | 110 diff lines Description: ## Summary Adds Field UI support for the `canvas_page` entity type so sites can manage fields, form display, and view display via the standard Drupal Field UI at **Admin > Structure > Canvas page**. ## Changes - **`src/Entity/Page.php`** — Add `field_ui_base_route` to the `#[ContentEntityType]` attribute - **`canvas.routing.yml`** — Add `entity.canvas_page.field_ui_settings` route at `/admin/structure/canvas-page` - **`canvas.links.task.yml`** — Add local task so Field UI tabs render - **`canvas.links.menu.yml`** — Add menu link under Admin > Structure - **`src/Controller/CanvasPageFieldUiC… ### [#3591885: Add `document` object $ref for linking locally hosted documents](https://git.drupalcode.org/project/canvas/-/merge_requests/1433) State: opened | Author: Matt Glaman (mglaman) | Branch: 3591885-issue-branch | 1227 diff lines Description: Adds the `document` object `$ref` agreed in [#3524130, note 1678367](https://git.drupalcode.org/project/canvas/-/work_items/3524130#note_1678367), mirroring the shipped `video` shape point for point. **What this branch does** - `schema.json`: adds the `document` definition with `src` (required), `title`, `description`, `filename`, `filesize`, and `mimetype`. `src` carries `contentMediaType: application/*` — every agreed extension (`pdf doc docx xls xlsx ppt pptm pptx key ai indd`) resolves to the `application` MIME media type, and the wildcard is what makes field matching precise (see below)… ### [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) | Branch: 3591668-text-based-comparison-of-entities | 688 diff lines Description: **TL;DR:** Adds a new endpoint and related infra that serves Page entities using textual in YAML format, using only fields that can be stored in auto-save item. For people with attention span or AI summary tools: ### :robot: Summary Adds a GET `/canvas/api/v0/content/canvas_page/values-as-text/{canvas_page}` endpoint that returns a Page entity's storable field values encoded as YAML text. The primary use case is client-side comparison of published and draft Page entities using text-based representation of values that can be stored in an auto-save item. The endpoint accepts an `?autoSaved=tr… ### [User cannot publish changes for the unpublish page action on source.](https://git.drupalcode.org/project/canvas/-/merge_requests/1467) State: opened | Author: Chandan Singh (chandu7929) | Branch: 3591909-user-cannot-publish-changes-for-the-unpublish-page-action-on-source | 238 diff lines Description: [Description of changes] AI Disclosure: did you use AI to create a significant portion of this? https://www.drupal.org/docs/develop/issues/issue-procedures-and-etiquette/policy-on-the-use-of-ai-when-contributing-to-drupal AI-Generated: Yes (Used Cloud sonnet 4.6 to fix the issue). ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3591909 ### [refactor(Conflict resolution): #3591785 Strengthen AutoSaveManager to generate stable hashes](https://git.drupalcode.org/project/canvas/-/merge_requests/1356) State: merged 2026-08-04 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591785-strengthen-autosave-normalization | 977 diff lines Description: ## Summary This branch consolidates the typed-data normalization logic that `AutoSaveManager` and `ComponentSourceBase` previously duplicated into a single method, `TypedDataHelper::castRawPhpTypes()`. ## What changed and why `AutoSaveManager::normalizeEntity()` (hash source) and `ComponentSourceBase::castRawTypedConfigToPhpTypes()` (component-shape normalization) each contained their own primitive-casting and traversal logic. These are merged into `TypedDataHelper::castRawPhpTypes()`, which already existed for the config typed-data path but was not wired into `toStorableArray()`. During c… ### [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: merged 2026-07-07 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591601-rudimentary-conflict-resolution-ui-be | 1342 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: #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 | 2287 diff lines Description: Closes #3518272 . ### [Fix and test.](https://git.drupalcode.org/project/canvas/-/merge_requests/1149) State: opened | Author: Dave Long (longwave) | Branch: 3590730-simpler-fix | 130 diff lines Description: Fix and test for component rendering where a parent component fails to render, and crashes at runtime. AI-Generated: Yes (Used Claude Code to write the test) ## Testing instructions - [ ] Check the test case makes sense - [ ] Check the fix makes sense Closes #3590730 --- COMMITS (24h) --- - [d6d22580](https://git.drupalcode.org/project/canvas/-/commit/d6d22580a578993bcf90325a54ef53518b6df956) chore: #3591913 Update npm dependencies — wotnak (2026-08-06T15:12:49.000+02:00) - [7f3da8fc](https://git.drupalcode.org/project/canvas/-/commit/7f3da8fcb9c8d0547880fcb83d639c8cd250ee47) feat(Headless): #3591893 Enable headless previews for content templates — wotnak (2026-08-06T17:40:17.000+00:00) - [7b037490](https://git.drupalcode.org/project/canvas/-/commit/7b0374901de024ca5c62d219e7f9b89221b69907) fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source — Bálint Kléri (2026-08-06T15:02:30.000+00:00) - [e8abc1ea](https://git.drupalcode.org/project/canvas/-/commit/e8abc1ea221e2b4056b52b1b6e3c7ddfa4a661d2) task(AI): #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths — Juan Correa (2026-08-06T12:37:41.000+00:00) - [d49ca662](https://git.drupalcode.org/project/canvas/-/commit/d49ca66252f03c1f57f0ab342f242d48fbcebecb) chore(Project management): #3591907 Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs — Christian López Espínola (2026-08-06T11:54:54.000+00:00) ======================================================================== ## [7] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit) [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

              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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### ["Global context" checkbox description renders a literal
                instead of a line break](https://git.drupalcode.org/project/ai_context/-/work_items/3586369) State: opened | Updated: 2026-08-07 | Author: Sohail Lajevardi (doxigo) | Assigned: Daniel Rodriguez (danrod) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !240 [Issue #3586369: "Global context" checkbox description renders a literal
                instead of a line break](https://git.drupalcode.org/project/ai_context/-/merge_requests/240) | State: opened | Author: Juan Correa (jucs7), 136 diff lines Description: On the AI context item edit form, the description under the **Global context** checkbox displays the tag as text: > Always include this context for every agent.\Saving the form with this > enabled will clear previous scope settings. `AiContextScopeGlobal::getFormDescription()` exists specifically so this checkbox can carry a line break. Its own docblock says so: ```php /** * Gets the checkbox description for the context item form. * * Uses a line break that is not safe for settings pages escaped with * Html::escape(), so keep plain text in getDescription() instead. */ protected functio… ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !241 [Issue #3586365: Document scope selection and ranking logic.](https://git.drupalcode.org/project/ai_context/-/merge_requests/241) | State: opened | Author: Kristen Pol (kepol), 662 diff lines Description: **Note that I switched this from a discussion issue to a documentation. Discussion has happened. Docs are in the MR.** ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ranking factors before release. ## Background When someone uses an AI feature on the site, the module picks … ### [[Meta] Prepare demo content and demo context items for the CCC to show how it works](https://git.drupalcode.org/project/ai_context/-/work_items/3586339) State: opened | Updated: 2026-08-06 | Author: Emma Horrell (emma-horrell) | Assigned: Emma Horrell (emma-horrell) | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Problem/motivation _**Note that if we at least get the code with one draft example merged in for beta4 that we can add the additional sample context in rc1 since it would be "documentation" in a sense.**_ Follow-up to: - #3586335 - #3586279 A new Context Control Center (CCC) installation is empty. People unfamiliar with CCC terminology and structure cannot easily see how source content, context items, scopes and consumer subscriptions work together. Provide realistic, optional demo data that lets people explore a complete CCC workflow before configuring it for their own organisation. … ### [Sprint 15 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586330) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 25 July to 7 August 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… ### [[Meta] CCC cleanup and API hardening from code review findings for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/motivation Follow-up to: #3586294+s ### New docs Since I had fable 5 review both 1.0.x and the MR branch for #3586218+ at the same time, it didn't really differentiate where the problems were. Many of the problems were for #3586218+ which should be fixed in that issue since it's not merged yet. I've added the info to that issue's MR. Here are the new docs for all problems that aren't for #3586218+: [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/69d239d43391b757cc440a9e04b54e57/ai_context-beta4-1.0.x-issues.md) #### Additional findings … ### [Harden CCC context item access checks and document the authoring trust model](https://git.drupalcode.org/project/ai_context/-/work_items/3586356) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !233 [Issue #3586356: Harden CCC context item access checks and document the authoring trust model.](https://git.drupalcode.org/project/ai_context/-/merge_requests/233) | State: merged 2026-08-06 | Author: Kristen Pol (kepol), 1252 diff lines Description: ## Problem/motivation Parent: #3586309 Related to: #3574937 [#3574937](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) was an early broad permissions inventory (add/remove perms, stale MR !78). This issue is a focused beta4 access/trust package based on later code-review findings: enforce existing permissions correctly, close small disclosure gaps, document the trust boundary, and add an access-control test matrix. Do **not** treat this as a full permission redesign. Optional new permissions (for example `view own unpublished…`) can be separate follow-ups. ### Gaps … ### [Assess possible 1.0 and 1.1 features and UX/DX improvements following TDT questions](https://git.drupalcode.org/project/ai_context/-/work_items/3586363) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, ai::context, category::plan, priority::major Description: ## Problem **_Note that we should minimize the changes for 1.0 at this point so identify the most important items, if any, from the "Before 1.0" list. Also, it would be best if they were in 1 or 2 issues rather than a bunch of new issues._** Follow-up to: #3586362+s When answering questions for a TDT post, it presented possible follow-up features and UX/DX improvements. Note that some of these may already have issues. ## Solution Vet the following for possible action and create follow-up and child issues as needed. Note that some of these may already have issues, so check first before cr… ### [[Meta] CCC 1.1 UX, governance, and integration roadmap follow-up](https://git.drupalcode.org/project/ai_context/-/work_items/3586384) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::plan, priority::major, state::postponed Description: ## Follow up Follow-up to: #3586363 Captures the **1.1 feature and UX/DX candidates** identified while answering TDT questions ([#3586362](https://git.drupalcode.org/project/ai_context/-/work_items/3586362)). Pre-1.0 work from #3586363 is complete or filed elsewhere; this meta tracks what belongs in the **1.1 product story** versus other modules or later releases. **Related metas (do not duplicate):** **Review state of all of these and consider consolidating.** - [#3586373](https://git.drupalcode.org/project/ai_context/-/work_items/3586373) — release timeline, milestones, and public-faci… ### [[Meta] CCC 1.1 follow-ups from beta4 code-review hardening](https://git.drupalcode.org/project/ai_context/-/work_items/3586360) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: ## Problem/motivation Make sure not to overlap or consider consolidating: #3586384+s Follow-up to the beta4 meta: #3586309+s _**Check the issue is still valid before proceeding.**_ Source notes: - [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) (uploaded on #3586309) Beta4 keeps the access/trust, overview cheap-check, tooltip a11y, and small DX/docs polish track. The items below are real but are **performance, coverage, or modernization** work that should wait for **1.1** so 1.0 can ship a coherent permission and API story. This… ### [Usage and logging UX improvements](https://git.drupalcode.org/project/ai_context/-/work_items/3586213) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI UX, category::feature, priority::normal, state::blocked Description: **Blocked by #3567803+s** Follow up to: #3573715+s ## Problem/motivation **Per-item visibility (recommended for rc1 if feasible):** * Show the **token size** of each Context Item. This helps site builders understand the cost and context-window impact of each item, especially as items grow or include large File / Connected sources. * Show **usage counts** so a site builder can quickly see which items are being called frequently and which are rarely used. **Usage over time (nice to have):** * Add a **table of usage by hour** (or by day) for each Context Item. The purpose is to let site bu… ### [[Discuss] Usage tracking vs AI Observability for CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3567803) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority::major, state::postponed, what::discussion Description: ## Problem CCC has two overlapping concepts today: **1. Usage tracking (`ai_context_usage`)** — shipped in [#3550034](https://git.drupalcode.org/project/ai_context/-/work_items/3550034) - Lightweight Drupal-native reverse index - Answers: “Which context items were used, by which agent/run, on which route, touching which entities?” - Supports entity-update workflows when context changes - Disabled by default; capped and pruned via cron **2. AI Observability** (AI module) - Request-level audit trail and aggregated usage reports - See [#3535260](https://www.drupal.org/project/ai/issues/35352… ### [Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586383) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: **Blocker: Assess #3586348+s before proceeding on this issue.** ## Follow-up issue Follow-up to: #3586363 Child of the "Before 1.0" triage in #3586363+s. Improves selection transparency, conditional-subcontext failure visibility, and debug diagnostics before 1.0. **Scope:** #3, #4, #9 from the Before 1.0 list in #3586363. **Non-goals:** documentation/trust/compatibility work (#1, #2, #5, #6, #8 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability (#10 — #3567803 / #3586213), rich selection diagnostics UI or persistence ([#3586242](https://git.drupalcode.org/projec… ### [Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586382) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Follow-up to: #3586363+s Follow-up to "Before 1.0" triage in #3586363. Combines documentation, API annotation, security guidance, and release-policy work that should land before 1.0 without adding new functionality. **Scope:** #1, #2, #5, #6, #8 from the Before 1.0 list in #3586363+s. **Non-goals:** selector/diagnostics work (#3, #4, #9 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability decision (#10 — #3567803 / #3586213). ## Problem / motivation Before 1.0, CCC needs accurate documentation and explicit trust/compatibility commitments. Several gaps remain af… ### [Add reproducible performance benchmarks for context selection and rendering](https://git.drupalcode.org/project/ai_context/-/work_items/3586381) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, performance, priority::normal, state::postponed Description: ## Problem / motivation Follow-up to: #3586363+s (Before 1.0 item #7) Sites with large context catalogs need a credible answer to “how fast is selection at scale?” Today CCC has performance hardening work planned for 1.1, but no published baseline or repeatable procedure for measuring candidate selection and rendering. Without that, optimization work in [#3586167](https://git.drupalcode.org/project/ai_context/-/work_items/3586167), [#3586347](https://git.drupalcode.org/project/ai_context/-/work_items/3586347), and [#3586360](https://git.drupalcode.org/project/ai_context/-/work_items/3586360… ### [Add query_access handler so context item entity queries honor view access](https://git.drupalcode.org/project/ai_context/-/work_items/3586380) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: ## Problem/motivation Follow-up to: #3586356+s #3586356 added post-query `$entity->access('view')` filtering in `AiContextItemListBuilder` (and related paths) because `ai_context_item` has no `query_access` handler. That closes metadata disclosure gaps, but entity queries with `accessCheck(TRUE)` still return IDs the current user cannot view. Effects: 1. **Listing pager skew** — `EntityListBuilder` pages at 50 IDs, then rows are removed. Restricted viewers can see fewer than 50 rows per page, or empty pages, while the pager still reflects the unfiltered total. 2. **Incomplete query-… ### [Create CCC beta3 and beta4 and status update video](https://git.drupalcode.org/project/ai_context/-/work_items/3586333) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, demo Description: Create a video on beta3 and beta4 and the current status of CCC and what's coming up. ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint16 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… ### [Implement plugin-based generic context consumers and unified consumer configuration](https://git.drupalcode.org/project/ai_context/-/work_items/3586346) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::outside, blocker::stable Description: ## Summary **Review the plan carefully before proceeding with implementation in case it needs adjustments.** Implement the architecture accepted in [#3586319](https://git.drupalcode.org/project/ai_context/-/work_items/3586319): AI Context will treat everything that receives context as a consumer, with agents becoming one consumer type. Consumer types will use Drupal attribute plugins, all configured consumers will use one configuration store, and agent and non-agent requests will share the same request-building and selection pipeline. This is a clean-slate beta change. Agent-specific factor… ### [Create graphic to explain how context scope works](https://git.drupalcode.org/project/ai_context/-/work_items/3571104) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, ai::context, category::task, priority::normal 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 Christoph suggested creating a create graphic to explain how context scope works Proposed resolution Create something that's easy to understand for users Target date or deadline TBD Remaining tasks Create i… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint16, category::task Description: ## Problem/motivation **_Note that this could wait until rc1 or even until 1.1 work starts._** 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 logi… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, must have Description: _**Note that we can hopefully defer this to 1.1 or maybe even close it.**_ Follow up to: #3586194+s Blocked by: #3586351+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 - Docum… ### [Recruit CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, priority::major 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 ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint11, 2026Sprint16, category::feature, must have Description: ## Description _**Note that this needs to be rethought to minimize the impact on 1.0 and figure out what can happen in 1.1 instead.**_ 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… ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, Quick Win, ai::context, 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 ### [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-08-06 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, AI UX, category::task, priority::normal Description: _**Note that this can happen during rc1 since this is documentation.**_ Note that this will be changing with: #3586346+s 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 deli… ### [Sprint 16 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586368) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::plan, priority::major Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 8 August to 21 August 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/35677… ### [QA team start testing CCC to get familiar with functionality and create QA plan](https://git.drupalcode.org/project/ai_context/-/work_items/3586342) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Bruna Emerich (brunaemerich) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, blocker::stable Description: ## Problem CCC is huge and there's a lot to test. Beta3 was released last week and there were bugs: - #3586338+s - #3586341+s These most likely would have be caught by the QA team. I tested here with AI on Drupal CMS / Drupal 11: #3586296+s but neglected to test with Drupal 10. Not sure why the settings pages didn't get hit though. I tested manually with Canvas AI though it would be amazing if that could be automated somehow. ## Solution QA team plays around with CCC to understand the functionality and starts a draft QA plan. Here's the QA plan from AI: https://git.drupalcode.org/-/… ### [Clarify scope eligibility, ranking, and limits in UI help and documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586348) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, needs ux review, priority::major Description: ## Summary _**Note that this could be implemented in rc1 because it's docs/help text and no functionality changes.**_ Follow-up to: - #3586281+s - #3586270+s - #3586335+s - #3586337+s Beta testing confirmed that the **subscription** model can remain for beta4, but the UI and documentation do not clearly explain how scope matching, eligibility, ranking, overrides, and limits work together. This issue improves inline help and user-facing documentation without changing scope behavior, configuration storage, selection logic, or subscription semantics. ## Problem The current Context scope de… ### [[Discuss] Use of AI context items with automators](https://git.drupalcode.org/project/ai_context/-/work_items/3563106) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [Discuss] Use of AI context items with automators Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation I've been discussing with Cursor/OpenAI how might AI context items work with automators. We should discuss amongst the humans :) Proposed resolution Discuss and figure out a plan if relevant Target date or deadline Remaining tasks Discuss and figure out a plan if relevant ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Description: ## Problem/motivation _**Note that this isn't a must have for 1.0 but a nice to have. Given that people think the current "tags" scope plugin previous the behavior this plugin would provide then it it's really nice to have.**_ 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 item… ### [Test current conditional subcontext selection before changing the prompt](https://git.drupalcode.org/project/ai_context/-/work_items/3586351) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Summary _**Note: this is a tricky issue to test.**_ Follow-up to #3586194+. This issue should be completed before #3586199+. ## Problem/motivation #3586199+ proposes adding a richer subcontext index to improve conditional child selection. Since that issue was created, the current implementation has begun sending each candidate child’s ID and Purpose to the AI provider. It is not yet known whether the richer index is still needed. Existing automated tests verify selection mechanics with fixed responses but do not assess real-model relevance decisions. ## Scope Test current conditional… ### [Review and update CCC permissions for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586358) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/Motivation Replaces the outdated permissions review: #3574937+s That issue and MR !78 targeted an earlier beta and no longer match the current permission model or beta4 scope. Related beta4 work already in progress: #3586356+s Permissions still need a focused beta4 pass before full QA: #3573716+s Goals for this issue: - Confirm the current permission set is sufficient for beta4 roles (author, editor, admin, and published-context consumers). - Add only permissions with a clear beta4 use case. - Avoid a broad redesign or large new own-* permission set in 1.0. Earlier ideas… ### [Decouple context item form descriptions from scope plugin descriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586361) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !239 [Issue #3586361: Decouple context item form descriptions from scope plugin descriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/239) | State: merged 2026-08-06 | Author: Tekla Aivazashvili (aivazashvilit), 984 diff lines Description: ## Problem/motivation Follow-up: #3586359 Scope plugin `getDescription()` text is currently reused in multiple UI contexts: 1. The scope overview page. 2. Individual scope settings pages. 3. Context item scope controls. These contexts can require different guidance. For example, the Global scope’s warning that saving a context item clears other scope settings is useful on the context item form but confusing on the scope overview and settings pages. The existing `getSubscriptionDescription()` method already provides context-specific text for agent subscription forms, but there is no equiv… ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 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), 7270 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… ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint13, 2026Sprint14, 2026Sprint15, AI Initiative Sprint Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !211 [Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/merge_requests/211) | State: merged 2026-08-06 | Author: Juan Correa (jucs7), 3553 diff lines 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… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [f9968bef](https://git.drupalcode.org/project/ai_context/-/commit/f9968bef263f747f2c1685d2f8220eba46578b5f) Issue #3586356: Harden CCC context item access checks and document the authoring trust model. — Kristen Pol (2026-08-06T20:01:15.000+00:00) - [e58b08c5](https://git.drupalcode.org/project/ai_context/-/commit/e58b08c5a8ada8f967f7a3fb3971451d8c47e006) Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. — Tekla Aivazashvili (2026-08-06T06:55:29.000+00:00) - [7ac2f791](https://git.drupalcode.org/project/ai_context/-/commit/7ac2f791a4232102e7ee0aefd531770facadcb19) Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) — Juan Correa (2026-08-06T05:30:48.000+00:00) ======================================================================== ## [8] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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) [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 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Update the AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585223) State: closed | Updated: 2026-08-06 | Author: Rob Loach (robloach) | Assigned: Rob Loach (robloach) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !26 [Issue #3585223: Update the AI Ecosystem with categories](https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/26) | State: merged 2026-08-06 | Author: Rob Loach (robloach), 6297 diff lines Description: There have been a bunch of changes in the upstream drupal_ai_dependents.py https://github.com/ultimike/ai-module-usage/blob/main/drupal_ai_dependents.py . Update it, and make sure the categories implementation is in there too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [73570d3e](https://git.drupalcode.org/project/ai_dashboard/-/commit/73570d3e144940fb729061ff2c1d3d412c4758ae) Issue #3585223: Update the AI Ecosystem with categories — Rob Loach (2026-08-06T16:33:49.000+00:00) ======================================================================== ## [9] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [InvalidArgumentException: Invalid translation language (und) when translating media entities](https://git.drupalcode.org/project/ai_translate/-/work_items/3585532) State: opened | Updated: 2026-08-06 | Author: szato (odi) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Quick Win, ai::inside Description: When using AI Translate to translate a media entity (e.g. media.image), the batch fails with: ``` InvalidArgumentException: Invalid translation language (und) specified. in Drupal\Core\Entity\ContentEntityBase->getTranslation() ``` **Steps to reproduce** - Enable AI Translate, configure an AI provider - Have a media type (e.g. image) with content translation enabled and field sync configured - Go to a media entity's translation overview, click "Translate using AI" for a non-existing language - Batch fails with the above exception **Proposed resolution** ``` --- a/src/Controller/AiTranslateC… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Takaya Hirose (takayahirose)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix ai_agents dependency setting that currently can cause config import issue](https://git.drupalcode.org/project/agui/-/work_items/3590048) State: opened | Updated: 2026-08-06 | Author: Takaya Hirose (takayahirose) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !42 [3590048: Fix ai_agents dependency setting](https://git.drupalcode.org/project/agui/-/merge_requests/42) | State: opened | Author: Takaya Hirose (takayahirose), 25 diff lines Description: Fix ai_agents dependency setting that currently can cause config import issue --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [11] 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] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [2] Adopt Symfony AI Platform 0.8-0.12 changes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586632 [3] 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 [4] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [5] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586658 [6] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [7] Block deletion when the inference provider is referenced by one or more ai_platform config entities (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586590 [8] Decide permission system for new AI Platform and AI Inference Providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586628 [9] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [10] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [11] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [12] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [13] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [14] Allow Field Widget Actions to target a specific automator 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586657 [15] [META] Drupal AI Views Agent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3539458 [16] 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 [17] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [18] ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586656 [19] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [20] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [21] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [22] Resolve #3586495 "Add support embeddings via symfony/ai" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1856 [23] feat: #3536912 Suggest Tags automator should work with Tagify (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1921 [24] Issue #3571915: cherry pick 3e3b5970 for 1.3.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1920 [25] #3568246: fix late chatbot opening on page load (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1428 [26] Issue #3571915: Cherry-pick for 1.4.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1919 [27] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1918 [28] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1917 [29] bug: #3586653 AiToolsValidationException is not caught and passed back as tool output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1916 [30] Onboard Silver AI partner: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586659 [31] Run AI partner audit report: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586661 [32] Run AI partner audit report: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [33] Add Silver AI partner to d.o pages: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586660 [34] Add Gold/Silver AI partner to d.o pages: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [35] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [36] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [37] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [38] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [39] Warning: Undefined array key "parameters" en Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() (línea 1038 de /var/www/html/docroot/modules/contrib/ai_agents/src/PluginBase/AiAgentEntityWrapper.php) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586065 [40] Connecting an Agent to an Assistant doesn't work until cache clear and Tool API (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3564033 [41] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [42] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [43] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [44] test: #3586021 Add regression test for ai_agent plugin cache invalidation (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/337 [45] Issue#3563628:Crash-Error-When-Trying-Remove-Last-Tool-From-Agent fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/336 [46] Draft: Issue #3542457: Add views creation function call plugin (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/172 [47] [#3542457] Added Views ai agent module. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/206 [48] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [49] Create a skill for generating Tool plugins (best practices, how-to, placement) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582945 [50] Write documentation and enable project pages (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582955 [51] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [52] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [53] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [56] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [57] Preview viewport cannot show or reach content below the selected device height (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591915 [58] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [59] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [60] Update npm dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591913 [61] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [62] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [63] Enable headless previews for content templates (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591893 [64] CLI pull does not choose .jsx or .tsx based on pulled source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591895 [65] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [66] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [67] Upgrade to Astro 7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588803 [68] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [69] Canvas AI: Add the get_component_details AI tool + component-context helper (+ tests) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591814 [70] Canvas AI: Add an Agents & Tools settings form to select the main agent and chat Tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591882 [71] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [72] Strengthen AutoSaveManager to generate stable hashes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591785 [73] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [74] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [75] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [76] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [77] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [78] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [79] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [82] chore: #3591913 Update npm dependencies (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1473 [83] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [84] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [85] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [86] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [87] fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [88] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [89] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [90] Resolve #3591907 "Balance cypress E2E parallel split by runtime weight" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1463 [91] refactor(Conflict resolution): #3591785 Strengthen AutoSaveManager to generate stable hashes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1356 [92] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [93] 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 [94] fix: #3591876 Validate the target region before placing components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [95] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [96] Fix and test. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1149 [97] "Global context" checkbox description renders a literal
                        instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [98] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [99] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [100] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [101] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [102] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [103] Assess possible 1.0 and 1.1 features and UX/DX improvements following TDT questions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586363 [104] [Meta] CCC 1.1 UX, governance, and integration roadmap follow-up (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586384 [105] [Meta] CCC 1.1 follow-ups from beta4 code-review hardening (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586360 [106] Usage and logging UX improvements (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586213 [107] [Discuss] Usage tracking vs AI Observability for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567803 [108] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [109] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [110] Add reproducible performance benchmarks for context selection and rendering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586381 [111] Add query_access handler so context item entity queries honor view access (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586380 [112] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [113] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [114] Implement plugin-based generic context consumers and unified consumer configuration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586346 [115] Create graphic to explain how context scope works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571104 [116] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [117] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [118] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [119] 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 [120] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [121] 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 [122] Sprint 16 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586368 [123] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [124] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [125] [Discuss] Use of AI context items with automators (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3563106 [126] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [127] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [128] Review and update CCC permissions for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [129] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [130] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [131] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [132] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [133] Issue #3586369: "Global context" checkbox description renders a literal
                        instead of a line break (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/240 [134] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [135] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [136] 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 [137] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [138] Update the AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585223 [139] Issue #3585223: Update the AI Ecosystem with categories (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/26 [140] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [141] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 [142] 3590048: Fix ai_agents dependency setting (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/42 --- MODULE SUMMARIES ---

                        AI (Artificial Intelligence)

                        The past 24 hours saw significant progress on field widget actions and branch maintenance. The long-standing bug where Field Widget Actions would trigger all automators instead of just the selected one was merged across multiple branches (1.x, 1.3.x, and 1.4.x). This fix enables multiple field widget action buttons to run only their selected automator, addressing cases where duplicate automator config entities target the same field.

                        Several critical bugs remain open and under review. A disabled automator status bug shows that setting status: false on AI Automator config entities has no effect — automators continue firing on entity save. The AiToolsValidationException handling issue reveals that validation exceptions thrown by tool calls are not caught and converted to tool output, causing agent runs to crash instead of allowing the model to retry. Additionally, AiReranker::extractItemText() incorrectly reads full entity field content instead of individual chunk text for chunk-mode search results, degrading rerank quality.

                        API compatibility work continues around Symfony AI Platform 0.8-0.12 adoption, with type mismatches in ModelRouterInterface::resolve() and ProviderInterface methods blocking progress. Multiple agent skills are in development for configuring settings and guardrails via the Tool module.

                        How can I help on this project?

                        Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev), Bruno Bruno (bbruno), Scott Euser (scotteuser) ---

                        Drupal AI Initiative

                        Activity during this period focused on partnership management. Two partner onboarding template issues were closed: Onboard Gold/Silver AI partner: TEMPLATE and Add Gold/Silver AI partner to d.o pages: TEMPLATE. These templates were used to create new tracking issues for onboarding Oomph as a Silver AI partner.

                        Three new issues were opened and updated to track the Oomph onboarding process: Onboard Silver AI partner: Oomph shows most onboarding tasks completed, with legal and invoicing contacts still pending. Add Silver AI partner to d.o pages: Oomph tracks the remaining work to update the partners page and logo wall on drupal.org. A follow-up audit issue, Run AI partner audit report: Oomph, was created to verify successful onboarding in September 2026.

                        No code changes, API modifications, or merge requests were completed during this period.

                        How can I help on this project?

                        The AI Initiative partnership onboarding work is primarily administrative. For technical contributions, check the main ai module project for open issues needing development work, or review the initiative's roadmap for opportunities to contribute to AI integration features in Drupal core and contributed modules.

                        ---

                        AI Integration - ECA

                        No merges or commits landed during the reporting period, though work continued on two fronts. A draft merge request for the ECA interceptor received a third round of review feedback and was updated to fix tag normalization issues in getTags(), address form-state handling in the ECA action, and correct test assertions. The fixes were verified against ECA and AI module source. The MR remains in draft and is not yet merged.

                        Separately, a new task opened to simplify structured output configuration in the Chat action. The proposal is to replace the raw JSON text field currently used in src/Plugin/Action/Chat.php with the AI module's dedicated '#type' => 'ai_json_schema' form element, which would provide validation and better editor affordances and avoid storing escaped JSON strings in config.

                        How can I help on this project?

                        Review the open ECA interceptor MR, particularly the tag normalization and form-state fixes from the latest round. Alternatively, investigate or prototype the ai_json_schema form element for the Chat action structured-output task.

                        Contributors: Marcus Johansson (Marcus_Johansson) ---

                        AI Agents

                        The Add views agent issue was closed during this period, with related merge requests Draft: Issue #3542457: Add views creation function call plugin and [#3542457] Added Views ai agent module both moving to closed state. This brings Views integration capabilities to AI Agents.

                        A bug regarding deletion of the last tool from an agent was addressed. The issue If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() was closed, resolving errors in the ToolsLibrary element processing.

                        Several issues remain in active development. Work continues on Connecting an Agent to an Assistant doesn't work until cache clear with MR !337 adding regression tests for ai_agent plugin cache invalidation. The Warning: Undefined array key "parameters" bug has an open MR !331 awaiting review.

                        How can I help on this project?

                        Review MR !331 addressing the undefined "parameters" array key warning in getDefaultInformationTools(). Test MR !337 which adds cache invalidation regression tests. Contribute to Create implementation of ShortTermMemory, which has no existing merge requests and needs integration work.

                        Contributors: Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Jibran Ijaz (jibran)

                        ---

                        Tool API

                        No merge requests were merged or commits pushed during this reporting period. Work continues on two open merge requests focused on documentation and developer experience.

                        The tool plugin generation skill (MR !93, 1,548 lines) remains in review. This introduces a skill to help developers author correct Tool plugins by guiding them through the #[Tool] attribute configuration, including operation types (Explain, Read, Transform, Trigger, Write), the destructive flag, and typed input/output definitions using InputDefinition and associated constraints.

                        Separately, work on documentation and project pages (MR !105, 955 lines) is also awaiting review. This will enable automatic documentation generation on main branch merges.

                        Both merge requests are blocking further progress on developer documentation and tooling improvements for the 2026Sprint15 milestone.

                        How can I help on this project?

                        Review MR !93 for the tool plugin generation skill, testing the developer experience of creating Tool plugins with the new guidance. Review MR !105 to validate the project pages documentation setup.

                        Contributors: Marcus Johansson (Marcus_Johansson)

                        ---

                        Drupal Canvas

                        Over the past 24 hours, several fixes and features were merged to the 1.x branch. Update npm dependencies brought non-major package updates into the codebase. Enable headless previews for content templates extended the headless preview renderer to support content templates, using the same component that renders pages. CLI pull does not choose .jsx or .tsx based on pulled source fixed the pull command to write TypeScript or JSX files based on the actual source language pulled from Drupal, preventing compilation failures when TypeScript was written into .jsx files.

                        Two AI-related improvements were merged: Canvas AI: Send resolved prop values with current_layout, on both request paths consolidated layout representation by embedding each component's resolved prop values directly in the current_layout parameter, removing the separate layout parameter and enabling file-upload requests to include layout context. Cypress E2E parallel split balances by file count, not runtime rebalanced the four-node Cypress parallel job by tagging slow and flaky specs, reducing the slowest node's runtime from 27 minutes to under 13.

                        Several issues remain open with active merge requests. Missing upgrade path: stored default-relative-url prop sources written before 1.8 contain $id and fail DefaultRelativeUrlPropSource::parse() has a self-healing MR under review. Three critical shape-matching and caching bugs were reported: StaticPropSource widget building is order-dependent, Array prop shapes don't inherit their item shape's cache tags, and Component version hashes go stale on single-process installs, all requiring investigation into TypedData caching and deferred prop-shape resolution. Work continues on Canvas AI tools, conflict resolution APIs, and Field UI support for the page entity type.

                        How can I help on this project?

                        Review the open MR for Missing upgrade path: stored default-relative-url prop sources written before 1.8 contain $id, which self-heals legacy data. Investigate and propose fixes for the three shape-matching cache bugs: StaticPropSource widget building is order-dependent, Array prop shapes don't inherit their item shape's cache tags, and Component version hashes go stale on single-process installs.

                        Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [1], Dave Long (longwave), David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Harumi Jang (hooroomoo), Juan Correa (jucs7) [1], Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                        ---

                        Context Control Center (CCC)

                        Three merge requests landed during the reporting period, completing a final consistency and hardening pass before the beta 4 milestone. Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) removed dead code, promoted constructors, and enforced snake_case for local variables without changing functional behavior. Issue #3586361: Decouple context item form descriptions from scope plugin descriptions introduced getFormDescription() and getSubscriptionFormDescription() methods, separating context-item-form help text from general scope plugin descriptions and fixing HTML escaping issues. Issue #3586356: Harden CCC context item access checks and document the authoring trust model tightened access checks in AiContextItemAccessControlHandler, added a test matrix in AiContextItemAccessTest, removed publish/unpublish transitions from the editorial workflow, and documented the authoring trust boundary in docs/AUTHORING_TRUST.md.

                        Two open merge requests await review. Issue #3586369: "Global context" checkbox description renders a literal <br> instead of a line break fixes HTML entity rendering in AiContextScopeGlobal by using getFormDescription(). Issue #3586365: Document scope selection and ranking logic adds comprehensive documentation of scope matching and ranking rules.

                        Sprint planning closed for Sprint 15 and opened for Sprint 16, targeting the 8–21 August window. Multiple 1.1 follow-up meta issues were created to capture deferred work from code review and TDT planning discussions.

                        How can I help on this project?

                        Review MR !240 for the global context checkbox HTML rendering fix or MR !241 for scope selection documentation. Help test conditional subcontext selection with real models for Issue #3586351 to determine whether richer indexing is needed before 1.0.

                        Contributors: Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit) [1]

                        ---

                        AI Dashboard

                        The Update the AI Ecosystem issue was closed during this period after MR !26 was merged. This work synchronized the module with upstream changes from drupal_ai_dependents.py and implemented category support for the AI ecosystem display. The merge included over 6,000 lines of diff, indicating substantial updates to how the dashboard tracks and categorizes AI-related modules in the Drupal ecosystem.

                        With this merge, the AI Dashboard now reflects the latest ecosystem data and provides improved organization through the new categories implementation.

                        How can I help on this project?

                        Review the project's open issues in the issue queue to identify bugs or feature requests without related merge requests. Test the newly merged categories implementation against live AI module data to verify accuracy. Consider contributing documentation for the updated ecosystem display functionality.

                        Contributors: Rob Loach (robloach) [1]

                        ---

                        AI translate

                        No merge activity or commits were recorded during this period. One issue received attention: InvalidArgumentException: Invalid translation language (und) when translating media entities, which tracks a batch failure when attempting to translate media entities. The error occurs in ContentEntityBase->getTranslation() when the system encounters an undefined language code during AI translation of media items with content translation enabled.

                        The issue is marked as a Quick Win and remains unassigned with no merge request currently open.

                        How can I help on this project?

                        • Pick up the unassigned media translation language exception issue and submit a patch addressing the undefined language handling in the batch process.
                        • Test the module's media entity translation workflow with various media types to identify additional edge cases or related bugs.
                        ---

                        AG-UI

                        Activity in the AG-UI module over the past 24 hours focused on configuration management. Work continued on Fix ai_agents dependency setting that currently can cause config import issue, which addresses a problem with the ai_agents dependency configuration that can prevent successful configuration imports. The associated MR !42 remains open for review, containing 25 lines of changes to resolve the dependency issue. No merge requests were merged and no commits were pushed during this reporting period.

                        How can I help on this project?

                        Review and test MR !42 to verify it resolves the config import issue with ai_agents dependencies. Check the module's issue queue for additional unassigned bugs or feature requests that need attention.

                        Contributors: Takaya Hirose (takayahirose)

                        ======================================================================== ## [12] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 0 Judge flags: 1 ======================================================================== ## [13] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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], Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev), Bruno Bruno (bbruno), 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

                        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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting](https://git.drupalcode.org/project/ai/-/work_items/3586654) State: opened | Updated: 2026-08-06 | Author: Miguel Guerreiro (gueguerreiro) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::accepted Description: ## Summary **This is for version 1.x of the ai module** Disabling an AI Automator config entity (setting `status: false` in its configuration item) has no effect on whether it actually runs. Automators keep firing on every entity save even when we disable it. ## Steps to reproduce 1. Configure an AI Automator on any field so it auto-populates the field on save when left empty. 2. Save an entity with the field empty and verify the AI call fires and the field gets populated. 3. Disable the automator (set `status: false` in the exported config and reimport). 4. Save an entity with the fiel… ### [Adopt Symfony AI Platform 0.8-0.12 changes](https://git.drupalcode.org/project/ai/-/work_items/3586632) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: Wolfgang Ziegler (fago) | Labels: category::feature, priority::normal, state::needsReview Description: ### 1. `CatalogBasedModelRouter::resolve()` returns the wrong type **File:** `src/Plugin/ai/ModelRouter/CatalogBasedModelRouter.php` `ModelRouterInterface::resolve()` now returns `ModelRouter\RoutingDecision` instead of `ProviderInterface`. The plugin wraps Symfony's `CatalogBasedModelRouter` whose `resolve()` already returns a `RoutingDecision`, but the Drupal class re-declares `: SymfonyProviderInterface` as its return type. This is a **fatal `TypeError` at runtime** on every routing call. ### 2. `ProviderInterface::supports()` and `::invoke()` parameter type mismatch **Files:** - `src/Plu… ### [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-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Has Testing Steps, aiCoreModule 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), 1479 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… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-06 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: ai::inside, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 93 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai/-/work_items/3586658) State: opened | Updated: 2026-08-06 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-08-06 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Block deletion when the inference provider is referenced by one or more ai_platform config entities](https://git.drupalcode.org/project/ai/-/work_items/3586590) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted, v2.x-dev Description: Description ### Background … ### [Decide permission system for new AI Platform and AI Inference Providers](https://git.drupalcode.org/project/ai/-/work_items/3586628) State: opened | Updated: 2026-08-06 | Author: Dezső Biczó (mxr576) | Assigned: unassigned | Labels: category::plan, priority::normal, state::accepted Description: The new AI Platform Config and AI inference Providers Config entities still depends on the legacy "`administer ai providers`" permission. The scope of this issue is getting an agreement on whether we would like to change that or not. ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-06 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/work_items/3536912) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: #drupalpune-sprint, ai::inside, aiAutomators, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1921 [feat: #3536912 Suggest Tags automator should work with Tagify](https://git.drupalcode.org/project/ai/-/merge_requests/1921) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 810 diff lines 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 … ### [Allow Field Widget Actions to target a specific automator](https://git.drupalcode.org/project/ai/-/work_items/3571915) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: Has Testing Steps, ai::inside, aiAutomators, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1917 [bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID](https://git.drupalcode.org/project/ai/-/merge_requests/1917) | State: merged 2026-08-06 | Author: Abhisek Mazumdar (abhisekmazumdar), 217 diff lines Description: >>> [!note] Migrated issue Reported by: [oneliner](https://www.drupal.org/user/1781526) >>> [Tracker] Update Summary: Fix enables multiple field widget action buttons to run only their selected automator. Short Description: Field widget actions trigger all automators on a field instead of the selected one. Check-in Date: 02/06/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It’s possible (though not exposed by the default UI) to configure multiple AI automators for the same field by duplicating the automator config entity with a… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Needs UX review 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… ### [Allow Field Widget Actions to target a specific automator 2.x](https://git.drupalcode.org/project/ai/-/work_items/3586657) State: opened | Updated: 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: ai::inside, category::task, priority::normal, sprint candidate Description: Port changes from issue https://git.drupalcode.org/project/ai/-/work_items/3571915 to 2.x and 2.0.x branches ### [[META] Drupal AI Views Agent](https://git.drupalcode.org/project/ai/-/work_items/3539458) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: Jibran Ijaz (jibran) | Labels: category::plan, priority::normal, projectManagement, state::accepted Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) >>> The detailed document can be found at https://docs.google.com/document/d/16yCLk7Q7WWbbqH9PxD6yJX9VufHNUqEWOGCWJqdbg30/edit?usp=sharing Summary This issue outlines the scope, technical specifications, and user stories for a new Drupal AI Views Agent feature, designed to integrate AI capabilities into the Drupal Views module. The core objective is to enable users to create and configure Drupal Views using natural language instructions, leveraging Large Language Models (LLMs) and the existing Drupal AI A… ### [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-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs manual testing, aiCoreModule 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… ### [AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/work_items/3586653) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent, aiCoreModule, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1916 [bug: #3586653 AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/merge_requests/1916) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 179 diff lines Description: ## Summary `AiToolsValidationException` is thrown by tool and function-call validation, but nothing catches it and converts it into tool output. Instead of being passed back to the model as a tool result so it can correct the call and retry, it propagates up and surfaces to the end user, ending the run. A grep for `catch (AiToolsValidationException` and `catch (AiExceptionInterface` across ai and ai_agents returns no handler at all. ## Where it is thrown - `src/OperationType/Chat/Tools/ToolsPropertyResult.php` lines 118-171 — around 13 throws covering type, length, format and range validat… ### [ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls](https://git.drupalcode.org/project/ai/-/work_items/3586656) State: opened | Updated: 2026-08-06 | Author: Rodel Duterte (rduterte) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: Problem/Motivation While testing an agent locally specifically: https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 using echoai as the provider, I hit a crash when the agent had sub-agent tools configured: ``` TypeError: Drupal\ai_agents\Service\ArtifactHelper::replaceArtifactArguments(): Argument #1 ($tool) must be of type Drupal\ai\OperationType\Chat\Tools\ToolsFunctionOutputInterface, Drupal\ai\OperationType\Chat\Tools\ToolsOutput given ``` Using xdebug, tracing the stack, I found that `EchoProvider::chat()` sets a ToolsOutput object on the `ChatMessage` when tools are pre… ### [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-08-06 | Author: josecarlosmedero | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… --- MERGE REQUESTS (24h) --- ### [Resolve #3586495 "Add support embeddings via symfony/ai"](https://git.drupalcode.org/project/ai/-/merge_requests/1856) State: opened | Author: Scott Euser (scotteuser) | Branch: 3586495-add-support-embedings-via-symfonyai | 348 diff lines Description: Closes #3586495 ### [Issue #3571915: cherry pick 3e3b5970 for 1.3.x](https://git.drupalcode.org/project/ai/-/merge_requests/1920) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970-1.3.x | 197 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… ### [#3568246: fix late chatbot opening on page load](https://git.drupalcode.org/project/ai/-/merge_requests/1428) State: opened | Author: Bruno Bruno (bbruno) | Branch: 3568246-chatbot-state | 543 diff lines Description: Persist chatbot open state in backend instead of localStorage to ensure it’s applied during initial render and prevent layout shift. localStorage + JS only runs after the page has loaded, so it will _always_ cause a shift. ### Testing Instructions 1. Create an Assistant at **/admin/config/ai/ai-assistant** 2. Place the `AI DeepChat Chatbot` block at **/admin/structure/block/list/gin** 3. Make sure the **Placement** field under **Styling settings** is set to `Toolbar` 4. Open the chatbot using the Chatbot opener button on the top left 5. Once opened, refresh the page -> check that the chatbo… ### [Issue #3571915: Cherry-pick for 1.4.x](https://git.drupalcode.org/project/ai/-/merge_requests/1919) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970-1.4.x | 195 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… ### [bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID](https://git.drupalcode.org/project/ai/-/merge_requests/1918) State: merged 2026-08-06 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3e3b5970 | 217 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… --- COMMITS (24h) --- - [3e3b5970](https://git.drupalcode.org/project/ai/-/commit/3e3b5970172bc17dfa5d2a6aed111040f5b17e43) bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID — Abhisek Mazumdar (2026-08-06T09:04:37.000+00:00) ======================================================================== ## [14] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Onboard Silver AI partner: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586659) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Silver partner: Oomph ## 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 July/August 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) - [n/a] Add to non-dev meeting invites (marketing/UX) - [… ### [Run AI partner audit report: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586661) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586659+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 September 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report ### [Run AI partner audit report: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Follow-up to: #PARENT 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 MONTH YEAR ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report ### [Add Silver AI partner to d.o pages: Oomph](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586660) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586659+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** **100 word text:** ## Target date or deadline August 2026 ## Tasks - [ ] Add logo/blurb to `/ai/partners` - [ ] Copy logo wall doc and add logo to logo wall doc - [ ] Save image with month and year, e.g. drupal-ai-partner-logo-wall-may-2026.png - [ ] Update `/ai/become-a-partner` with new logo wall image ### [Add Gold/Silver AI partner to d.o pages: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Follow-up to: #PARENT Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** **100 word text:** ## Target date or deadline MONTH YEAR ## Tasks - [ ] Add logo/blurb to `/ai/partners` - [ ] Copy logo wall doc and add logo to logo wall doc - [ ] Save image with month and year, e.g. drupal-ai-partner-logo-wall-may-2026.png - [ ] Update `/ai/become-a-partner` with new logo wall image ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ONBOARDING** Need to onboard new Gold/Silver partner: **PARTNER NAME** ## 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 MONTH YEAR ## Remaining tasks - [ ] Create partner onboarding tab from template - [ ] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [ ] Add to mailing lists - [ ] Add to private Slack channels (partners/contributors) - [ ] Add to public Slack channels (… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [15] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 (Marcus_Johansson)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | 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`)… --- MERGE REQUESTS (24h) --- ### [Draft: Resolve #3584407 "Ai eca interceptor"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3584407-ai-eca-interceptor | 6994 diff lines Description: Closes #3584407 AI-Generated: Yes (Used OpenCode with Claude to adjudicate the review findings against ECA source, implement the fixes, and write the accompanying tests. All conclusions were verified against `eca`/`ai` module source and reviewed by a human before pushing.) ## Latest round — review feedback from @joshua1234511 (cf8556a) All three findings confirmed and addressed. Details are in the four inline discussion threads; summary here. 1. **Tag normalization was incomplete.** `getTags()` becomes a *mixed* array once `SetTagAction` runs on a request that already carried tags, and the… --- COMMITS (24h) --- (none) ======================================================================== ## [16] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Jibran Ijaz (jibran)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai_agents/-/work_items/3586058) State: closed | Updated: 2026-08-06 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [Warning: Undefined array key "parameters" en Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() (línea 1038 de /var/www/html/docroot/modules/contrib/ai_agents/src/PluginBase/AiAgentEntityWrapper.php)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586065) State: opened | Updated: 2026-08-06 | Author: Alexis Martínez (alexismmd) | Assigned: unassigned | Labels: Novice, Quick Win, category::bug, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !331 [Issue #3586065: Prevent undefined array key warning when parameters is missing](https://git.drupalcode.org/project/ai_agents/-/merge_requests/331) | State: opened | Author: Alexis Martínez (alexismmd), 21 diff lines Description: ### Problem The following warning is triggered: ```text Warning: Undefined array key "parameters" in Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() ``` ### Cause The code accesses `$values['parameters']` without first checking whether the `parameters` key exists in the `$values` array. If the key is missing, PHP emits an `Undefined array key` warning. ### Suggested fix Before accessing `$values['parameters']`, check that the key exists (for example using `isset()` or `!empty()`) to avoid the warning when `parameters` is not defined. ### [Connecting an Agent to an Assistant doesn't work until cache clear and Tool API](https://git.drupalcode.org/project/ai_agents/-/work_items/3564033) State: opened | Updated: 2026-08-06 | 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 !337 [test: #3586021 Add regression test for ai_agent plugin cache invalidation](https://git.drupalcode.org/project/ai_agents/-/merge_requests/337) | State: opened | Author: Bharat Kelotra (bharatkelotra), 1403 diff lines Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) >>> Problem/Motivation Steps to reproduce - Create an Agent with the Tool "List Bundles on Entity using the Tool API - Create an Assistant for listning Bundles on Entity and use that agent - Do not clear caches - Explore the created Agent for the Assistant (Get an error) - Attach it to a chatbot (Get an Error) The chatbot had an error: The "ai_agents::ai_agent::bundle_lister_agent" plugin does not exist. Valid plugin IDs for Drupal\ai\Service\FunctionCalling\FunctionCallPluginManager are: ai_agent:h… ### [Create implementation of ShortTermMemory](https://git.drupalcode.org/project/ai_agents/-/work_items/3546411) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !183 >>> Problem/Motivation Short term memory is now available here: #3528730: Create ShortTermMemoryPlugin We should add an integration with it. Proposed resolution Add a parameter to the agent config to save the short term memory config. Add a subform integration for saving the configuration, while editing the AI Agent. Assume no ShortTermMemory by default. Trigger ShortTermMemory after the request event. ### [Give a parent agent possibility to forward request as is](https://git.drupalcode.org/project/ai_agents/-/work_items/3550098) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Many time a user is actually asking an orchestration agent just one instruction for one specific agent. Depending on how well the prompt is, there might be loss of information when this is forwarded to the subagent. If the parent knows that it should just forward the request as is, then it should be able to give this as a token instead. This helps both with consistency, but also costs and speed, since it will just output one token. Proposed resolution Create a token that th… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: Jibran Ijaz (jibran) | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, AI Views 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://… --- MERGE REQUESTS (24h) --- ### [Issue#3563628:Crash-Error-When-Trying-Remove-Last-Tool-From-Agent fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/336) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3563628-Crash-Error-When-Trying-Remove-Last-Tool-From-Agent | 3240 diff lines Description: Closes #3563628 ### [Draft: Issue #3542457: Add views creation function call plugin](https://git.drupalcode.org/project/ai_agents/-/merge_requests/172) State: closed | Author: Jibran Ijaz (jibran) | Branch: 3542457-add-views-creation | 372 diff lines Description: Closes #3542457 ![image](/uploads/aa9a3457a5eb6277440f78bc933524ec/image.png) ### [[#3542457] Added Views ai agent module.](https://git.drupalcode.org/project/ai_agents/-/merge_requests/206) State: closed | Author: Jibran Ijaz (jibran) | Branch: 3542457-add-views-agent-module | 3661 diff lines Description: Closes #3542457 --- COMMITS (24h) --- (none) ======================================================================== ## [17] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 (Marcus_Johansson)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Create a skill for generating Tool plugins (best practices, how-to, placement)](https://git.drupalcode.org/project/tool/-/work_items/3582945) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::outside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !93 [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), 1548 diff lines Description: ### Problem/Motivation The Tool API lets modules expose well-defined, typed actions as `#[Tool]` plugins, and the `tool_ai_connector` submodule automatically surfaces those same tools to AI agents as `AiFunctionCall`s. Authoring a *correct* tool, though, means getting several moving parts right at once: - the `#[Tool]` attribute — `id`, `label`, `description`, the `ToolOperation` enum (`Explain` / `Read` / `Transform` / `Trigger` / `Write`) and the `destructive` flag; - typed `input_definitions` / `output_definitions` (`InputDefinition`, the list/map variants, `constraints`, `default_value`,… ### [Write documentation and enable project pages](https://git.drupalcode.org/project/tool/-/work_items/3582955) State: opened | Updated: 2026-08-06 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::outside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !105 [Resolve #3582955 "Write documentation and enable project pages"](https://git.drupalcode.org/project/tool/-/merge_requests/105) | State: opened | Author: Marcus Johansson (Marcus_Johansson), 955 diff lines Description: There is project pages documentation that can autocreated on main merges. We should enable that. I have a skill that can do this automatically. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [18] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [1], Dave Long (longwave), David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Harumi Jang (hooroomoo), Juan Correa (jucs7) [1], Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache](https://git.drupalcode.org/project/canvas/-/work_items/3591918) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, reduxIntegratedFieldWidgets, state::active Description: ## Problem/Motivation `StaticPropSource` conjures a host-less, nameless field item list to render a widget for a single component prop. `StaticPropSource::formTemporaryRemoveThisExclamationExclamationExclamation()` then re-parents that field under a host entity via `setContext(NULL, EntityAdapter::createFromEntity($host_entity))`. Drupal core's `TypedDataManager::getPropertyInstance()` caches field item *prototypes* keyed by the root object's data type plus the field's property path. After re-parenting, every synthetic prop field — whatever its own field type — presents the same root (`entit… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-08-07 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement 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: No github.com token has been configured. Skipping release notes retrieval - ⚠️ 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. ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them](https://git.drupalcode.org/project/canvas/-/work_items/3591917) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, shapeMatching, state::active Description: ### Overview Components with an array prop (e.g. an array-of-images prop, mapped to a multi-value field) do not get a new version when config changes the storable prop shape of the array's *items* — even in situations where components using the same item shape directly *do* get one. Cause: when an array shape's storable prop shape is computed, the item shape is resolved through the prop shape repository and its field type, widget, and settings are copied into the array's `StorablePropShape` — but the cache tags that alter hooks attach to the *item* candidate (e.g. `config:media_type_list` fr… ### [Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache](https://git.drupalcode.org/project/canvas/-/work_items/3591916) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::major, shapeMatching, state::active Description: ### Overview A site installed with `drush site:install` (or any single-process recipe apply) can end up with Component config entities whose `active_version` hash does not match what the current site state generates — and the site stays that way until an unrelated event regenerates components. The same recipes applied through the browser installer produce a different (correct) version history, because the work is split across multiple requests. The cause is how `PersistentPropShapeRepository` refreshes storable prop shapes: - When config that affects prop shapes changes mid-process (e.g. a … ### [Preview viewport cannot show or reach content below the selected device height](https://git.drupalcode.org/project/canvas/-/work_items/3591915) State: opened | Updated: 2026-08-06 | Author: Olivier Ritlewski (oritlewski) | Assigned: unassigned | Labels: Description: ## Problem/Motivation When editing a long page in the Canvas page builder, the preview viewport shows only part of the page. There is no way to see or reach content below the currently rendered area other than resizing the browser window. There is also no visual indication of where the selected device's viewport height ends versus where the page content continues. ## Steps to reproduce 1. Create a page with content taller than the selected device viewport (e.g. Desktop, 1080px height). 2. Open the page in the Canvas editor. 3. Observe that content below the device height is not reachable in… ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-06 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1423 [fix: #3591876 Validate the target region before placing components](https://git.drupalcode.org/project/canvas/-/merge_requests/1423) | State: opened | Author: Rajab Natshah (RajabNatshah), 544 diff lines Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()`](https://git.drupalcode.org/project/canvas/-/work_items/3591904) State: opened | Updated: 2026-08-06 | Author: Marco (marco.nett) | Assigned: unassigned | Labels: AI-accelerated, Regression, category::bug, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1474 [Self-heal stored default-relative-url `$id` on read, and clean it up on update](https://git.drupalcode.org/project/canvas/-/merge_requests/1474) | State: opened | Author: Christian López Espínola (penyaskito), 884 diff lines Description: ## Problem / Motivation After updating Canvas 1.4.1 → 1.8.0, opening the editor for any page whose component tree contains a `default-relative-url` prop source returns a 500 from `/canvas/api/v0/layout/{entity_type}/{id}`: ``` LogicException: Extraneous JSON Schema information detected: { "$id": "json-schema-definitions://canvas.module/image", ... } should have been just { ... } ``` ## Root cause - Canvas ≤ 1.4 stored the resolved JSON schema of `default-relative-url` prop sources including the `$id` keys the schema resolver emits (e.g. `json-schema-definitions://canvas.module/imag… ### [Update npm dependencies](https://git.drupalcode.org/project/canvas/-/work_items/3591913) State: closed | Updated: 2026-08-06 | Author: wotnak | Assigned: wotnak | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1473 [chore: #3591913 Update npm dependencies](https://git.drupalcode.org/project/canvas/-/merge_requests/1473) | State: merged 2026-08-06 | Author: wotnak, 9903 diff lines Description: Update npm dependencies ahead of the release. Refresh `package-lock.json` / workspace lockfiles, run `npm run lint` and the relevant test suites, and verify the build. Major version upgrades requiring more work are handled in separate issues: - Astro v5 → v7 (#3588803+) - React Router v6 → v7 (#3591874+) ### [Allow fields to be added to the page entity type](https://git.drupalcode.org/project/canvas/-/work_items/3568228) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, page, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [catch](https://www.drupal.org/user/35733) >>> Overview Discussed in this slack thread: https://drupal.slack.com/archives/C072JMEPUS1/p1768606306603599 It's a very common use case to add field UI fields to entities for non-content purposes. A use case already in the canvas issue queue is https://git.drupalcode.org/project/canvas/-/work_items/3544662 where the metatags field has been added as a base field (and therefore not removable), but instead could be omitted and added by sites that needed. Other cases are things like 'hide from search results' o… ### [Support code component imports contributed by modules to the Canvas import map](https://git.drupalcode.org/project/canvas/-/work_items/3591914) State: opened | Updated: 2026-08-06 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Description: A module can add entries to the Canvas import map through `hook_canvas_importmap_alter()`. A code component that imports such an entry works in the in-browser code editor, which compiles the source and lets the browser resolve the specifier at runtime, but it cannot be pushed with the CLI. To reproduce: implement `hook_canvas_importmap_alter()` in a module to add a specifier such as `my_module/useThing`, then import it from a code component and run `canvas push`. The build fails with `Could not resolve entry module "my_module/useThing"` and nothing is uploaded. `canvas validate` passes, so th… ### [Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/work_items/3591893) State: closed | Updated: 2026-08-06 | Author: wotnak | Assigned: wotnak | Labels: headless Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1438 [feat(Headless): #3591893 Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/1438) | State: merged 2026-08-06 | Author: wotnak, 1116 diff lines Description: Ensure that the Canvas UI can render the headless preview for content templates. It needs to render the same component we use for rendering pages. ### [CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/work_items/3591895) State: closed | Updated: 2026-08-06 | Author: Bálint Kléri (balintbrews) | Assigned: unassigned | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1441 [fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/merge_requests/1441) | State: merged 2026-08-06 | Author: Bálint Kléri (balintbrews), 298 diff lines Description: The pull command does not consistently choose a component entry extension that matches the pulled source. For existing components, pull preserves the discovered entry filename. If an existing `index.jsx` receives TypeScript source from Drupal, TypeScript is written into a JSX file and compilation fails. We also found that new components always default to `index.tsx`, even when the source is plain JavaScript or JSX. Existing components with metadata but no local entry file similarly need a source-appropriate default. ### Steps to reproduce #### Existing component 1. Create a local componen… ### [Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/work_items/3591883) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1472 [#3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/merge_requests/1472) | State: merged 2026-08-06 | Author: Juan Correa (jucs7), 349 diff lines Description: ## Summary The dev chat describes the page to the AI in two request parameters. `current_layout` gives the component tree — component name, UUID and nested slots — and a second parameter, `layout`, gives every component's prop values as a flat map keyed by UUID. Merge the two: each component in `current_layout` carries its own prop values, and `layout` is no longer sent. Also send `current_layout` on file-upload requests, which today send no layout at all. A single parameter that describes both the structure and the content of the page is what an agent needs in order to reason about it — it… ### [Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs](https://git.drupalcode.org/project/canvas/-/work_items/3591907) State: closed | Updated: 2026-08-06 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: DX (Developer Experience), category::task, flaky tests, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1463 [Resolve #3591907 "Balance cypress E2E parallel split by runtime weight"](https://git.drupalcode.org/project/canvas/-/merge_requests/1463) | State: merged 2026-08-06 | Author: Christian López Espínola (penyaskito), 279 diff lines Description: ### Overview The `cypress E2E` CI job runs with `parallel: 4`, but the four nodes finish at very different times. Across the last 5 `1.x` pipelines that ran it, the slowest node took **12:54–27:36** while the fastest finished in **4:55–8:00** — a 2–3× spread. Because a parallel stage only completes when its slowest node does, the whole E2E stage is paced by one overloaded node while others sit idle. The cause is the spec-distribution logic in `ui/tests/support/parallel.js`. It sorts the 46 spec files alphabetically and deals them round-robin (`index % CI_NODE_TOTAL`), which balances the **nu… ### [Upgrade to Astro 7](https://git.drupalcode.org/project/canvas/-/work_items/3588803) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: JavaScript, category::task, code, priority::normal Description: >>> [!note] Migrated issue Reported by: [tim.plunkett](https://www.drupal.org/user/241634) Related to !1069 >>> Overview # npm audit reportastro  <6.1.6Severity: moderateAstro: XSS in define:vars via incomplete </script> tag sanitization - https://github.com/advisories/GHSA-j687-52p2-xcfffix available via `npm audit fix --force`Will install astro@6.2.2, which is a breaking changenode_modules/astro  @astrojs/mdx  <=0.0.0-vercel-upgrade-20230905174957 || 1.0.0-beta.0 - 4.3.14  Depends on vulnerable versions of astro  node_modules/@astrojs/mdx  … ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: David Bravo (davidbp) | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 502 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Canvas AI: Add the get_component_details AI tool + component-context helper (+ tests)](https://git.drupalcode.org/project/canvas/-/work_items/3591814) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary Add a new **information tool** `canvas_ai:get_component_details` (class `GetComponentDetails`) and a backing service `CanvasAiComponentContextHelper` (`canvas_ai.component_context_helper`) to `canvas_ai`, ported from the POC (MR !1214). Given a list of component ids, the tool returns the description, props, and slots of exactly those components, so an agent can fetch full metadata only for the candidates it shortlisted. It lands **inert** — no agent lists it yet. Ships with a kernel test. ## Why (this sprint) An agent first scans a lean catalog (id/name/description) and then fetc… ### [Canvas AI: Add an Agents & Tools settings form to select the main agent and chat Tools](https://git.drupalcode.org/project/canvas/-/work_items/3591882) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary Add an **Agents & Tools** tab to the Canvas AI settings area where an admin picks the **main agent** (single select) and the **Tools** offered in the chat (checkboxes), and expose the selected Tools to the frontend as `drupalSettings.canvas.ai.tools`. The form, its route and its config all live in `canvas_dev_ai`. Nothing in `canvas_ai` changes. ## Why In the revamped flow, agent selection is config-driven and explicit — the user picks the agent for the turn from a dropdown instead of an orchestrator inferring it (roadmap item 2: https://git.drupalcode.org/project/canvas/-/work_… ### [Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser](https://git.drupalcode.org/project/canvas/-/work_items/3591884) State: closed | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Description: ## Summary `CanvasDevAiBuilder::render()` returns a hard-coded mocked response. Replace it with a copy of the live `CanvasBuilder::render()` that runs the Canvas component agent with **`$agent->setLooped(FALSE)`**, so the agent stops after each model decision instead of looping to completion inside one request. The controller serializes the paused agent to the tempstore, returns `should_continue`, and `AiWizardDev.tsx` re-POSTs with a freshly built page context until `should_continue` is `FALSE`. ## Why With looping on (the `ai_agents` default), one HTTP request runs the agent until it is f… ### [Strengthen AutoSaveManager to generate stable hashes](https://git.drupalcode.org/project/canvas/-/work_items/3591785) State: closed | Updated: 2026-08-06 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: 1.x-dev, Conflict resolution, auto-save, autoSave Description: When AutoSaveManager normalizes entity, it is doing so without using strictly casted values. The set of normalized entity calues is used for `data_hash` hash computation. As the contents of the normalized entities are not strictly casted, the resulting hashes cannot be relied upon. The aim of this issue is to strengthen, simplify and standardise normalization and hashing processes happening in AutoSaveManager. --- MERGE REQUESTS (24h) --- ### [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 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) | >… ### [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 | 55 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](… ### [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](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) State: opened | Author: Ben Mullins (bnjmnm) | Branch: 3591838-brand-kit-color-support | 8091 diff lines Description: * This adds a Color entity type, which uses the [W3C color design tokes spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing the color value itself, in addition to Name. CSS variables name. Color entities are used by Brand Kit * Color entities has folder support. Unlike other folder-supporting entities, we can choose to add a color from a folder's options, and the newly added color will be in that folder **AI Disclosure:** Had Opencode + Kimi/Claude implement much of the work in several discrete stages. For the UI code, the prompts were detailed & granular enough that… ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: opened | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 1019 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less ex… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: opened | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 564 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity](https://git.drupalcode.org/project/canvas/-/merge_requests/1471) State: opened | Author: Rajendar Pothireddypally (RajendarReddy) | Branch: feature/field-ui-base-route-support | 110 diff lines Description: ## Summary Adds Field UI support for the `canvas_page` entity type so sites can manage fields, form display, and view display via the standard Drupal Field UI at **Admin > Structure > Canvas page**. ## Changes - **`src/Entity/Page.php`** — Add `field_ui_base_route` to the `#[ContentEntityType]` attribute - **`canvas.routing.yml`** — Add `entity.canvas_page.field_ui_settings` route at `/admin/structure/canvas-page` - **`canvas.links.task.yml`** — Add local task so Field UI tabs render - **`canvas.links.menu.yml`** — Add menu link under Admin > Structure - **`src/Controller/CanvasPageFieldUiC… ### [#3591885: Add `document` object $ref for linking locally hosted documents](https://git.drupalcode.org/project/canvas/-/merge_requests/1433) State: opened | Author: Matt Glaman (mglaman) | Branch: 3591885-issue-branch | 1227 diff lines Description: Adds the `document` object `$ref` agreed in [#3524130, note 1678367](https://git.drupalcode.org/project/canvas/-/work_items/3524130#note_1678367), mirroring the shipped `video` shape point for point. **What this branch does** - `schema.json`: adds the `document` definition with `src` (required), `title`, `description`, `filename`, `filesize`, and `mimetype`. `src` carries `contentMediaType: application/*` — every agreed extension (`pdf doc docx xls xlsx ppt pptm pptx key ai indd`) resolves to the `application` MIME media type, and the wildcard is what makes field matching precise (see below)… ### [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) | Branch: 3591668-text-based-comparison-of-entities | 688 diff lines Description: **TL;DR:** Adds a new endpoint and related infra that serves Page entities using textual in YAML format, using only fields that can be stored in auto-save item. For people with attention span or AI summary tools: ### :robot: Summary Adds a GET `/canvas/api/v0/content/canvas_page/values-as-text/{canvas_page}` endpoint that returns a Page entity's storable field values encoded as YAML text. The primary use case is client-side comparison of published and draft Page entities using text-based representation of values that can be stored in an auto-save item. The endpoint accepts an `?autoSaved=tr… ### [User cannot publish changes for the unpublish page action on source.](https://git.drupalcode.org/project/canvas/-/merge_requests/1467) State: opened | Author: Chandan Singh (chandu7929) | Branch: 3591909-user-cannot-publish-changes-for-the-unpublish-page-action-on-source | 238 diff lines Description: [Description of changes] AI Disclosure: did you use AI to create a significant portion of this? https://www.drupal.org/docs/develop/issues/issue-procedures-and-etiquette/policy-on-the-use-of-ai-when-contributing-to-drupal AI-Generated: Yes (Used Cloud sonnet 4.6 to fix the issue). ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3591909 ### [refactor(Conflict resolution): #3591785 Strengthen AutoSaveManager to generate stable hashes](https://git.drupalcode.org/project/canvas/-/merge_requests/1356) State: merged 2026-08-04 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591785-strengthen-autosave-normalization | 977 diff lines Description: ## Summary This branch consolidates the typed-data normalization logic that `AutoSaveManager` and `ComponentSourceBase` previously duplicated into a single method, `TypedDataHelper::castRawPhpTypes()`. ## What changed and why `AutoSaveManager::normalizeEntity()` (hash source) and `ComponentSourceBase::castRawTypedConfigToPhpTypes()` (component-shape normalization) each contained their own primitive-casting and traversal logic. These are merged into `TypedDataHelper::castRawPhpTypes()`, which already existed for the config typed-data path but was not wired into `toStorableArray()`. During c… ### [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: merged 2026-07-07 | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3591601-rudimentary-conflict-resolution-ui-be | 1342 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: #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 | 2287 diff lines Description: Closes #3518272 . ### [Fix and test.](https://git.drupalcode.org/project/canvas/-/merge_requests/1149) State: opened | Author: Dave Long (longwave) | Branch: 3590730-simpler-fix | 130 diff lines Description: Fix and test for component rendering where a parent component fails to render, and crashes at runtime. AI-Generated: Yes (Used Claude Code to write the test) ## Testing instructions - [ ] Check the test case makes sense - [ ] Check the fix makes sense Closes #3590730 --- COMMITS (24h) --- - [d6d22580](https://git.drupalcode.org/project/canvas/-/commit/d6d22580a578993bcf90325a54ef53518b6df956) chore: #3591913 Update npm dependencies — wotnak (2026-08-06T15:12:49.000+02:00) - [7f3da8fc](https://git.drupalcode.org/project/canvas/-/commit/7f3da8fcb9c8d0547880fcb83d639c8cd250ee47) feat(Headless): #3591893 Enable headless previews for content templates — wotnak (2026-08-06T17:40:17.000+00:00) - [7b037490](https://git.drupalcode.org/project/canvas/-/commit/7b0374901de024ca5c62d219e7f9b89221b69907) fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source — Bálint Kléri (2026-08-06T15:02:30.000+00:00) - [e8abc1ea](https://git.drupalcode.org/project/canvas/-/commit/e8abc1ea221e2b4056b52b1b6e3c7ddfa4a661d2) task(AI): #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths — Juan Correa (2026-08-06T12:37:41.000+00:00) - [d49ca662](https://git.drupalcode.org/project/canvas/-/commit/d49ca66252f03c1f57f0ab342f242d48fbcebecb) chore(Project management): #3591907 Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs — Christian López Espínola (2026-08-06T11:54:54.000+00:00) ======================================================================== ## [19] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit) [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

                                    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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### ["Global context" checkbox description renders a literal
                                      instead of a line break](https://git.drupalcode.org/project/ai_context/-/work_items/3586369) State: opened | Updated: 2026-08-07 | Author: Sohail Lajevardi (doxigo) | Assigned: Daniel Rodriguez (danrod) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !240 [Issue #3586369: "Global context" checkbox description renders a literal
                                      instead of a line break](https://git.drupalcode.org/project/ai_context/-/merge_requests/240) | State: opened | Author: Juan Correa (jucs7), 136 diff lines Description: On the AI context item edit form, the description under the **Global context** checkbox displays the tag as text: > Always include this context for every agent.\Saving the form with this > enabled will clear previous scope settings. `AiContextScopeGlobal::getFormDescription()` exists specifically so this checkbox can carry a line break. Its own docblock says so: ```php /** * Gets the checkbox description for the context item form. * * Uses a line break that is not safe for settings pages escaped with * Html::escape(), so keep plain text in getDescription() instead. */ protected functio… ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !241 [Issue #3586365: Document scope selection and ranking logic.](https://git.drupalcode.org/project/ai_context/-/merge_requests/241) | State: opened | Author: Kristen Pol (kepol), 662 diff lines Description: **Note that I switched this from a discussion issue to a documentation. Discussion has happened. Docs are in the MR.** ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ranking factors before release. ## Background When someone uses an AI feature on the site, the module picks … ### [[Meta] Prepare demo content and demo context items for the CCC to show how it works](https://git.drupalcode.org/project/ai_context/-/work_items/3586339) State: opened | Updated: 2026-08-06 | Author: Emma Horrell (emma-horrell) | Assigned: Emma Horrell (emma-horrell) | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Problem/motivation _**Note that if we at least get the code with one draft example merged in for beta4 that we can add the additional sample context in rc1 since it would be "documentation" in a sense.**_ Follow-up to: - #3586335 - #3586279 A new Context Control Center (CCC) installation is empty. People unfamiliar with CCC terminology and structure cannot easily see how source content, context items, scopes and consumer subscriptions work together. Provide realistic, optional demo data that lets people explore a complete CCC workflow before configuring it for their own organisation. … ### [Sprint 15 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586330) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 25 July to 7 August 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… ### [[Meta] CCC cleanup and API hardening from code review findings for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/motivation Follow-up to: #3586294+s ### New docs Since I had fable 5 review both 1.0.x and the MR branch for #3586218+ at the same time, it didn't really differentiate where the problems were. Many of the problems were for #3586218+ which should be fixed in that issue since it's not merged yet. I've added the info to that issue's MR. Here are the new docs for all problems that aren't for #3586218+: [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/69d239d43391b757cc440a9e04b54e57/ai_context-beta4-1.0.x-issues.md) #### Additional findings … ### [Harden CCC context item access checks and document the authoring trust model](https://git.drupalcode.org/project/ai_context/-/work_items/3586356) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !233 [Issue #3586356: Harden CCC context item access checks and document the authoring trust model.](https://git.drupalcode.org/project/ai_context/-/merge_requests/233) | State: merged 2026-08-06 | Author: Kristen Pol (kepol), 1252 diff lines Description: ## Problem/motivation Parent: #3586309 Related to: #3574937 [#3574937](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) was an early broad permissions inventory (add/remove perms, stale MR !78). This issue is a focused beta4 access/trust package based on later code-review findings: enforce existing permissions correctly, close small disclosure gaps, document the trust boundary, and add an access-control test matrix. Do **not** treat this as a full permission redesign. Optional new permissions (for example `view own unpublished…`) can be separate follow-ups. ### Gaps … ### [Assess possible 1.0 and 1.1 features and UX/DX improvements following TDT questions](https://git.drupalcode.org/project/ai_context/-/work_items/3586363) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, ai::context, category::plan, priority::major Description: ## Problem **_Note that we should minimize the changes for 1.0 at this point so identify the most important items, if any, from the "Before 1.0" list. Also, it would be best if they were in 1 or 2 issues rather than a bunch of new issues._** Follow-up to: #3586362+s When answering questions for a TDT post, it presented possible follow-up features and UX/DX improvements. Note that some of these may already have issues. ## Solution Vet the following for possible action and create follow-up and child issues as needed. Note that some of these may already have issues, so check first before cr… ### [[Meta] CCC 1.1 UX, governance, and integration roadmap follow-up](https://git.drupalcode.org/project/ai_context/-/work_items/3586384) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::plan, priority::major, state::postponed Description: ## Follow up Follow-up to: #3586363 Captures the **1.1 feature and UX/DX candidates** identified while answering TDT questions ([#3586362](https://git.drupalcode.org/project/ai_context/-/work_items/3586362)). Pre-1.0 work from #3586363 is complete or filed elsewhere; this meta tracks what belongs in the **1.1 product story** versus other modules or later releases. **Related metas (do not duplicate):** **Review state of all of these and consider consolidating.** - [#3586373](https://git.drupalcode.org/project/ai_context/-/work_items/3586373) — release timeline, milestones, and public-faci… ### [[Meta] CCC 1.1 follow-ups from beta4 code-review hardening](https://git.drupalcode.org/project/ai_context/-/work_items/3586360) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: ## Problem/motivation Make sure not to overlap or consider consolidating: #3586384+s Follow-up to the beta4 meta: #3586309+s _**Check the issue is still valid before proceeding.**_ Source notes: - [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) (uploaded on #3586309) Beta4 keeps the access/trust, overview cheap-check, tooltip a11y, and small DX/docs polish track. The items below are real but are **performance, coverage, or modernization** work that should wait for **1.1** so 1.0 can ship a coherent permission and API story. This… ### [Usage and logging UX improvements](https://git.drupalcode.org/project/ai_context/-/work_items/3586213) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI UX, category::feature, priority::normal, state::blocked Description: **Blocked by #3567803+s** Follow up to: #3573715+s ## Problem/motivation **Per-item visibility (recommended for rc1 if feasible):** * Show the **token size** of each Context Item. This helps site builders understand the cost and context-window impact of each item, especially as items grow or include large File / Connected sources. * Show **usage counts** so a site builder can quickly see which items are being called frequently and which are rarely used. **Usage over time (nice to have):** * Add a **table of usage by hour** (or by day) for each Context Item. The purpose is to let site bu… ### [[Discuss] Usage tracking vs AI Observability for CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3567803) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority::major, state::postponed, what::discussion Description: ## Problem CCC has two overlapping concepts today: **1. Usage tracking (`ai_context_usage`)** — shipped in [#3550034](https://git.drupalcode.org/project/ai_context/-/work_items/3550034) - Lightweight Drupal-native reverse index - Answers: “Which context items were used, by which agent/run, on which route, touching which entities?” - Supports entity-update workflows when context changes - Disabled by default; capped and pruned via cron **2. AI Observability** (AI module) - Request-level audit trail and aggregated usage reports - See [#3535260](https://www.drupal.org/project/ai/issues/35352… ### [Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586383) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: **Blocker: Assess #3586348+s before proceeding on this issue.** ## Follow-up issue Follow-up to: #3586363 Child of the "Before 1.0" triage in #3586363+s. Improves selection transparency, conditional-subcontext failure visibility, and debug diagnostics before 1.0. **Scope:** #3, #4, #9 from the Before 1.0 list in #3586363. **Non-goals:** documentation/trust/compatibility work (#1, #2, #5, #6, #8 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability (#10 — #3567803 / #3586213), rich selection diagnostics UI or persistence ([#3586242](https://git.drupalcode.org/projec… ### [Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586382) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Follow-up to: #3586363+s Follow-up to "Before 1.0" triage in #3586363. Combines documentation, API annotation, security guidance, and release-policy work that should land before 1.0 without adding new functionality. **Scope:** #1, #2, #5, #6, #8 from the Before 1.0 list in #3586363+s. **Non-goals:** selector/diagnostics work (#3, #4, #9 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability decision (#10 — #3567803 / #3586213). ## Problem / motivation Before 1.0, CCC needs accurate documentation and explicit trust/compatibility commitments. Several gaps remain af… ### [Add reproducible performance benchmarks for context selection and rendering](https://git.drupalcode.org/project/ai_context/-/work_items/3586381) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, performance, priority::normal, state::postponed Description: ## Problem / motivation Follow-up to: #3586363+s (Before 1.0 item #7) Sites with large context catalogs need a credible answer to “how fast is selection at scale?” Today CCC has performance hardening work planned for 1.1, but no published baseline or repeatable procedure for measuring candidate selection and rendering. Without that, optimization work in [#3586167](https://git.drupalcode.org/project/ai_context/-/work_items/3586167), [#3586347](https://git.drupalcode.org/project/ai_context/-/work_items/3586347), and [#3586360](https://git.drupalcode.org/project/ai_context/-/work_items/3586360… ### [Add query_access handler so context item entity queries honor view access](https://git.drupalcode.org/project/ai_context/-/work_items/3586380) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: ## Problem/motivation Follow-up to: #3586356+s #3586356 added post-query `$entity->access('view')` filtering in `AiContextItemListBuilder` (and related paths) because `ai_context_item` has no `query_access` handler. That closes metadata disclosure gaps, but entity queries with `accessCheck(TRUE)` still return IDs the current user cannot view. Effects: 1. **Listing pager skew** — `EntityListBuilder` pages at 50 IDs, then rows are removed. Restricted viewers can see fewer than 50 rows per page, or empty pages, while the pager still reflects the unfiltered total. 2. **Incomplete query-… ### [Create CCC beta3 and beta4 and status update video](https://git.drupalcode.org/project/ai_context/-/work_items/3586333) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, demo Description: Create a video on beta3 and beta4 and the current status of CCC and what's coming up. ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint16 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… ### [Implement plugin-based generic context consumers and unified consumer configuration](https://git.drupalcode.org/project/ai_context/-/work_items/3586346) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::outside, blocker::stable Description: ## Summary **Review the plan carefully before proceeding with implementation in case it needs adjustments.** Implement the architecture accepted in [#3586319](https://git.drupalcode.org/project/ai_context/-/work_items/3586319): AI Context will treat everything that receives context as a consumer, with agents becoming one consumer type. Consumer types will use Drupal attribute plugins, all configured consumers will use one configuration store, and agent and non-agent requests will share the same request-building and selection pipeline. This is a clean-slate beta change. Agent-specific factor… ### [Create graphic to explain how context scope works](https://git.drupalcode.org/project/ai_context/-/work_items/3571104) State: closed | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, ai::context, category::task, priority::normal 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 Christoph suggested creating a create graphic to explain how context scope works Proposed resolution Create something that's easy to understand for users Target date or deadline TBD Remaining tasks Create i… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint16, category::task Description: ## Problem/motivation **_Note that this could wait until rc1 or even until 1.1 work starts._** 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 logi… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, must have Description: _**Note that we can hopefully defer this to 1.1 or maybe even close it.**_ Follow up to: #3586194+s Blocked by: #3586351+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 - Docum… ### [Recruit CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, priority::major 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 ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint11, 2026Sprint16, category::feature, must have Description: ## Description _**Note that this needs to be rethought to minimize the impact on 1.0 and figure out what can happen in 1.1 instead.**_ 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… ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, Quick Win, ai::context, 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 ### [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-08-06 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, AI UX, category::task, priority::normal Description: _**Note that this can happen during rc1 since this is documentation.**_ Note that this will be changing with: #3586346+s 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 deli… ### [Sprint 16 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586368) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::plan, priority::major Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 8 August to 21 August 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/35677… ### [QA team start testing CCC to get familiar with functionality and create QA plan](https://git.drupalcode.org/project/ai_context/-/work_items/3586342) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Bruna Emerich (brunaemerich) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, blocker::stable Description: ## Problem CCC is huge and there's a lot to test. Beta3 was released last week and there were bugs: - #3586338+s - #3586341+s These most likely would have be caught by the QA team. I tested here with AI on Drupal CMS / Drupal 11: #3586296+s but neglected to test with Drupal 10. Not sure why the settings pages didn't get hit though. I tested manually with Canvas AI though it would be amazing if that could be automated somehow. ## Solution QA team plays around with CCC to understand the functionality and starts a draft QA plan. Here's the QA plan from AI: https://git.drupalcode.org/-/… ### [Clarify scope eligibility, ranking, and limits in UI help and documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586348) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, needs ux review, priority::major Description: ## Summary _**Note that this could be implemented in rc1 because it's docs/help text and no functionality changes.**_ Follow-up to: - #3586281+s - #3586270+s - #3586335+s - #3586337+s Beta testing confirmed that the **subscription** model can remain for beta4, but the UI and documentation do not clearly explain how scope matching, eligibility, ranking, overrides, and limits work together. This issue improves inline help and user-facing documentation without changing scope behavior, configuration storage, selection logic, or subscription semantics. ## Problem The current Context scope de… ### [[Discuss] Use of AI context items with automators](https://git.drupalcode.org/project/ai_context/-/work_items/3563106) State: opened | Updated: 2026-08-06 | Author: drupalbot | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::postponed Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [Discuss] Use of AI context items with automators Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation I've been discussing with Cursor/OpenAI how might AI context items work with automators. We should discuss amongst the humans :) Proposed resolution Discuss and figure out a plan if relevant Target date or deadline Remaining tasks Discuss and figure out a plan if relevant ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Description: ## Problem/motivation _**Note that this isn't a must have for 1.0 but a nice to have. Given that people think the current "tags" scope plugin previous the behavior this plugin would provide then it it's really nice to have.**_ 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 item… ### [Test current conditional subcontext selection before changing the prompt](https://git.drupalcode.org/project/ai_context/-/work_items/3586351) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Summary _**Note: this is a tricky issue to test.**_ Follow-up to #3586194+. This issue should be completed before #3586199+. ## Problem/motivation #3586199+ proposes adding a richer subcontext index to improve conditional child selection. Since that issue was created, the current implementation has begun sending each candidate child’s ID and Purpose to the AI provider. It is not yet known whether the richer index is still needed. Existing automated tests verify selection mechanics with fixed responses but do not assess real-model relevance decisions. ## Scope Test current conditional… ### [Review and update CCC permissions for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586358) State: opened | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/Motivation Replaces the outdated permissions review: #3574937+s That issue and MR !78 targeted an earlier beta and no longer match the current permission model or beta4 scope. Related beta4 work already in progress: #3586356+s Permissions still need a focused beta4 pass before full QA: #3573716+s Goals for this issue: - Confirm the current permission set is sufficient for beta4 roles (author, editor, admin, and published-context consumers). - Add only permissions with a clear beta4 use case. - Avoid a broad redesign or large new own-* permission set in 1.0. Earlier ideas… ### [Decouple context item form descriptions from scope plugin descriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586361) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !239 [Issue #3586361: Decouple context item form descriptions from scope plugin descriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/239) | State: merged 2026-08-06 | Author: Tekla Aivazashvili (aivazashvilit), 984 diff lines Description: ## Problem/motivation Follow-up: #3586359 Scope plugin `getDescription()` text is currently reused in multiple UI contexts: 1. The scope overview page. 2. Individual scope settings pages. 3. Context item scope controls. These contexts can require different guidance. For example, the Global scope’s warning that saving a context item clears other scope settings is useful on the context item form but confusing on the scope overview and settings pages. The existing `getSubscriptionDescription()` method already provides context-specific text for agent subscription forms, but there is no equiv… ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 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), 7270 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… ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: closed | Updated: 2026-08-06 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint13, 2026Sprint14, 2026Sprint15, AI Initiative Sprint Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !211 [Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/merge_requests/211) | State: merged 2026-08-06 | Author: Juan Correa (jucs7), 3553 diff lines 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… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [f9968bef](https://git.drupalcode.org/project/ai_context/-/commit/f9968bef263f747f2c1685d2f8220eba46578b5f) Issue #3586356: Harden CCC context item access checks and document the authoring trust model. — Kristen Pol (2026-08-06T20:01:15.000+00:00) - [e58b08c5](https://git.drupalcode.org/project/ai_context/-/commit/e58b08c5a8ada8f967f7a3fb3971451d8c47e006) Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. — Tekla Aivazashvili (2026-08-06T06:55:29.000+00:00) - [7ac2f791](https://git.drupalcode.org/project/ai_context/-/commit/7ac2f791a4232102e7ee0aefd531770facadcb19) Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) — Juan Correa (2026-08-06T05:30:48.000+00:00) ======================================================================== ## [20] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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) [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 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Update the AI Ecosystem](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585223) State: closed | Updated: 2026-08-06 | Author: Rob Loach (robloach) | Assigned: Rob Loach (robloach) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !26 [Issue #3585223: Update the AI Ecosystem with categories](https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/26) | State: merged 2026-08-06 | Author: Rob Loach (robloach), 6297 diff lines Description: There have been a bunch of changes in the upstream drupal_ai_dependents.py https://github.com/ultimike/ai-module-usage/blob/main/drupal_ai_dependents.py . Update it, and make sure the categories implementation is in there too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [73570d3e](https://git.drupalcode.org/project/ai_dashboard/-/commit/73570d3e144940fb729061ff2c1d3d412c4758ae) Issue #3585223: Update the AI Ecosystem with categories — Rob Loach (2026-08-06T16:33:49.000+00:00) ======================================================================== ## [21] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [InvalidArgumentException: Invalid translation language (und) when translating media entities](https://git.drupalcode.org/project/ai_translate/-/work_items/3585532) State: opened | Updated: 2026-08-06 | Author: szato (odi) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Quick Win, ai::inside Description: When using AI Translate to translate a media entity (e.g. media.image), the batch fails with: ``` InvalidArgumentException: Invalid translation language (und) specified. in Drupal\Core\Entity\ContentEntityBase->getTranslation() ``` **Steps to reproduce** - Enable AI Translate, configure an AI provider - Have a media type (e.g. image) with content translation enabled and field sync configured - Go to a media entity's translation overview, click "Translate using AI" for a non-existing language - Batch fails with the above exception **Proposed resolution** ``` --- a/src/Controller/AiTranslateC… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [22] 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 24h (2026-08-06T05:00:12+00:00 to 2026-08-07T05:00:12+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: Takaya Hirose (takayahirose)". 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 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix ai_agents dependency setting that currently can cause config import issue](https://git.drupalcode.org/project/agui/-/work_items/3590048) State: opened | Updated: 2026-08-06 | Author: Takaya Hirose (takayahirose) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !42 [3590048: Fix ai_agents dependency setting](https://git.drupalcode.org/project/agui/-/merge_requests/42) | State: opened | Author: Takaya Hirose (takayahirose), 25 diff lines Description: Fix ai_agents dependency setting that currently can cause config import issue --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [23] 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] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [2] Adopt Symfony AI Platform 0.8-0.12 changes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586632 [3] 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 [4] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [5] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586658 [6] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [7] Block deletion when the inference provider is referenced by one or more ai_platform config entities (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586590 [8] Decide permission system for new AI Platform and AI Inference Providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586628 [9] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [10] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [11] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [12] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [13] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [14] Allow Field Widget Actions to target a specific automator 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586657 [15] [META] Drupal AI Views Agent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3539458 [16] 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 [17] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [18] ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586656 [19] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [20] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [21] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [22] Resolve #3586495 "Add support embeddings via symfony/ai" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1856 [23] feat: #3536912 Suggest Tags automator should work with Tagify (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1921 [24] Issue #3571915: cherry pick 3e3b5970 for 1.3.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1920 [25] #3568246: fix late chatbot opening on page load (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1428 [26] Issue #3571915: Cherry-pick for 1.4.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1919 [27] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1918 [28] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1917 [29] bug: #3586653 AiToolsValidationException is not caught and passed back as tool output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1916 [30] Onboard Silver AI partner: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586659 [31] Run AI partner audit report: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586661 [32] Run AI partner audit report: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [33] Add Silver AI partner to d.o pages: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586660 [34] Add Gold/Silver AI partner to d.o pages: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [35] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [36] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [37] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [38] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [39] Warning: Undefined array key "parameters" en Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() (línea 1038 de /var/www/html/docroot/modules/contrib/ai_agents/src/PluginBase/AiAgentEntityWrapper.php) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586065 [40] Connecting an Agent to an Assistant doesn't work until cache clear and Tool API (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3564033 [41] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [42] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [43] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [44] test: #3586021 Add regression test for ai_agent plugin cache invalidation (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/337 [45] Issue#3563628:Crash-Error-When-Trying-Remove-Last-Tool-From-Agent fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/336 [46] Draft: Issue #3542457: Add views creation function call plugin (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/172 [47] [#3542457] Added Views ai agent module. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/206 [48] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [49] Create a skill for generating Tool plugins (best practices, how-to, placement) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582945 [50] Write documentation and enable project pages (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582955 [51] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [52] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [53] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [56] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [57] Preview viewport cannot show or reach content below the selected device height (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591915 [58] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [59] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [60] Update npm dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591913 [61] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [62] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [63] Enable headless previews for content templates (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591893 [64] CLI pull does not choose .jsx or .tsx based on pulled source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591895 [65] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [66] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [67] Upgrade to Astro 7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588803 [68] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [69] Canvas AI: Add the get_component_details AI tool + component-context helper (+ tests) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591814 [70] Canvas AI: Add an Agents & Tools settings form to select the main agent and chat Tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591882 [71] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [72] Strengthen AutoSaveManager to generate stable hashes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591785 [73] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [74] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [75] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [76] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [77] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [78] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [79] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [82] chore: #3591913 Update npm dependencies (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1473 [83] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [84] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [85] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [86] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [87] fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [88] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [89] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [90] Resolve #3591907 "Balance cypress E2E parallel split by runtime weight" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1463 [91] refactor(Conflict resolution): #3591785 Strengthen AutoSaveManager to generate stable hashes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1356 [92] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [93] 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 [94] fix: #3591876 Validate the target region before placing components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [95] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [96] Fix and test. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1149 [97] "Global context" checkbox description renders a literal
                                              instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [98] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [99] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [100] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [101] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [102] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [103] Assess possible 1.0 and 1.1 features and UX/DX improvements following TDT questions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586363 [104] [Meta] CCC 1.1 UX, governance, and integration roadmap follow-up (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586384 [105] [Meta] CCC 1.1 follow-ups from beta4 code-review hardening (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586360 [106] Usage and logging UX improvements (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586213 [107] [Discuss] Usage tracking vs AI Observability for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567803 [108] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [109] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [110] Add reproducible performance benchmarks for context selection and rendering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586381 [111] Add query_access handler so context item entity queries honor view access (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586380 [112] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [113] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [114] Implement plugin-based generic context consumers and unified consumer configuration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586346 [115] Create graphic to explain how context scope works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571104 [116] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [117] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [118] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [119] 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 [120] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [121] 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 [122] Sprint 16 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586368 [123] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [124] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [125] [Discuss] Use of AI context items with automators (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3563106 [126] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [127] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [128] Review and update CCC permissions for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [129] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [130] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [131] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [132] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [133] Issue #3586369: "Global context" checkbox description renders a literal
                                              instead of a line break (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/240 [134] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [135] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [136] 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 [137] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [138] Update the AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585223 [139] Issue #3585223: Update the AI Ecosystem with categories (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/26 [140] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [141] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 [142] 3590048: Fix ai_agents dependency setting (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/42 --- MODULE SUMMARIES ---

                                              AI (Artificial Intelligence)

                                              The AI module made significant progress this period, closing two issues and merging fixes that improve precision in how automated tasks are triggered. The Field Widget Action targeting fix was merged and backported across multiple supported versions, resolving a bug where field-level automation buttons would inadvertently trigger all configured automators instead of just the selected one. This ensures more predictable behaviour when sites run multiple automations on the same field. The Drupal AI Views Agent meta-issue was also closed, marking completion of a natural-language interface for configuring Views.

                                              Work is underway on several features designed to support agent-driven site configuration: skills for managing general AI settings, guardrails, and advanced tagging with the Tagify widget are all progressing through open merge requests. Bug fixes are in the pipeline for issues affecting automator activation, search result reranking at the chunk level, tool-call validation error handling, and test provider type mismatches. Separately, an issue tracking the adoption of changes from Symfony AI Platform versions 0.8 through 0.12 has been opened, identifying runtime type mismatches that will need resolution to maintain compatibility.

                                              Several strategic improvements are under discussion, including support for provider-native tool calling and a modern chatbot frontend library to replace the current tightly coupled interface. Work to block accidental deletion of inference providers that are still referenced by configurations is also planned for the next major version.

                                              How can I help on this project?

                                              • Prioritise and assign development resources to resolve the Symfony AI Platform compatibility issues, which currently cause runtime failures.
                                              • Sponsor user experience research and prototyping for the modern chatbot frontend to clarify requirements before implementation begins.

                                              Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev), Bruno Bruno (bbruno), Scott Euser (scotteuser)

                                              ---

                                              Drupal AI Initiative

                                              The Drupal AI Initiative continued its partnership expansion work during this period. The onboarding process for Oomph as a new Silver partner progressed, with several administrative tasks completed including mailing list additions and Slack channel access. Follow-up work has been planned to ensure successful integration through Run AI partner audit report: Oomph and to add the partner to public-facing pages via Add Silver AI partner to d.o pages: Oomph.

                                              Two template issues for standardizing future partner onboarding workflows were closed, indicating the establishment of repeatable processes for bringing new partners into the initiative. This standardization should streamline future partnership activations and reduce administrative overhead.

                                              The work reflects ongoing ecosystem development for the AI Initiative, building the partner network that will support the project's long-term sustainability and market reach.

                                              How can I help on this project?

                                              • Identify and introduce additional potential Silver or Gold partners to accelerate ecosystem growth and funding.
                                              • Ensure marketing and communications resources are available to support partner visibility once Oomph's public page materials are ready.
                                              ---

                                              AI Integration - ECA

                                              This module connects Drupal's AI capabilities with the Event-Condition-Action (ECA) automation framework. Over the past 24 hours, work has focused on two areas that will make the module easier to configure and more capable.

                                              A new task was opened to simplify structured output configuration in the Chat action. Currently, users must enter complex schema definitions as plain text, which is error-prone and difficult to verify. The proposed improvement would replace this with a purpose-built schema editor already available in the core AI module, reducing configuration errors and improving usability for site builders.

                                              Separately, a draft integration is under review that will allow the module to inspect and modify AI requests before they are sent to providers. This capability unlocks advanced use cases such as cost tracking, content filtering, and auditing. Review feedback was addressed during the reporting period, focusing on ensuring the integration handles metadata consistently when multiple automation rules modify the same request.

                                              How can I help on this project?

                                              Consider prioritizing user testing for the schema editor improvement once available, as configuration usability is often a barrier to adoption. If the interceptor functionality aligns with organizational compliance or cost-control needs, signal that priority to help guide the roadmap toward a stable release.

                                              Contributors: Marcus Johansson (Marcus_Johansson)

                                              ---

                                              AI Agents

                                              Progress this period focused on expanding the module's capabilities and resolving bugs that affect usability. Two significant pieces of work were completed: Add views agent was closed, delivering a new agent type that enables AI-powered creation and management of views—a feature that makes it easier for users to generate data displays through natural language interaction. Additionally, a bug preventing users from deleting the last tool from an agent was resolved with the closure of If only one tool, cannot delete it, gives an error.

                                              Several active development threads remain open. Work is underway to address caching issues that prevent newly created agents from being immediately usable until caches are cleared. A minor warning related to missing parameters in tool definitions is being addressed through an open merge request. Two feature requests remain in progress: adding short-term memory capabilities to agents and enabling parent agents to forward requests without modification, both aimed at improving agent efficiency and reducing costs.

                                              How can I help on this project?

                                              • Prioritize or assign resources to resolve the cache invalidation issue, which currently requires manual intervention and affects the user experience when creating new agents.
                                              • Consider allocating dedicated testing resources to validate new agent types and memory features as they near completion.

                                              Contributors: Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Jibran Ijaz (jibran)

                                              ---

                                              Tool API

                                              The Tool API project saw continued documentation and developer experience work during this period. Two preparation efforts are underway to make it easier for developers to build plugins and for potential users to understand the module's capabilities.

                                              Work continued on Create a skill for generating Tool plugins (best practices, how-to, placement), which aims to help developers correctly author Tool plugins by guiding them through the required components—such as plugin attributes, typed input and output definitions, and operation classifications. This should reduce the learning curve for teams wanting to expose well-defined actions to AI agents.

                                              Separately, progress was made on Write documentation and enable project pages, which will provide auto-generated project documentation on every main branch update, improving discoverability and onboarding for potential adopters.

                                              Both items have open merge requests in development. No code was merged during the reporting window.

                                              How can I help on this project?

                                              • Prioritize review and feedback on the two open documentation-focused merge requests to accelerate their completion and improve adoption readiness.
                                              • Consider allocating testing or user-feedback resources to validate that the developer guidance materials meet real-world onboarding needs.

                                              Contributors: Marcus Johansson (Marcus_Johansson)

                                              ---

                                              Drupal Canvas

                                              Over the past 24 hours, the project merged six updates spanning AI capabilities, developer tools, testing infrastructure, and data integrity.

                                              Several fixes were integrated to improve the AI-assisted page builder experience. The system now sends resolved component property values alongside the page structure in a single request parameter, enabling the AI agent to better understand both content and layout when generating pages. Additionally, the AI workflow was restructured to support browser-driven iteration: the agent pauses after each decision and returns control to the client, allowing incremental progress rather than blocking on a single server request. A configuration interface was added to allow administrators to select which AI tools are available in the developer chat interface.

                                              Developer tooling received two fixes. The command-line tool now correctly assigns file extensions (.jsx or .tsx) based on the source code pulled from the server, preventing compilation failures. Dependency packages across the JavaScript stack were updated to current versions.

                                              Test suite efficiency improved: end-to-end tests now distribute across parallel runners based on runtime characteristics rather than file count, reducing overall pipeline duration. Headless preview rendering was extended to support content templates in addition to pages.

                                              Four new issues were opened documenting bugs in data handling and caching. These include problems with component version hashing during single-process installs, cache collisions in dynamically generated form widgets, missing cache tags for array-based component properties, and a data migration gap affecting sites upgrading from earlier releases. Work is underway on fixes for the upgrade path and region validation issues.

                                              How can I help on this project?

                                              • Ensure the team has sufficient headcount to address the four newly opened data integrity and caching issues alongside ongoing feature development.
                                              • Support prioritisation decisions around stabilising the upgrade path and editor preview viewport improvements ahead of the next release cycle.

                                              Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [1], Dave Long (longwave), David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Harumi Jang (hooroomoo), Juan Correa (jucs7) [1], Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                                              ---

                                              Context Control Center (CCC)

                                              The project completed three important improvements during the reporting period as part of preparing for its upcoming release candidate. Work focused on access control, user interface clarity, and code quality.

                                              A comprehensive update to access checks and documentation was merged, ensuring context items are protected correctly and clarifying the trust model for site builders who create and manage content for AI features. This work closes small disclosure gaps and adds test coverage for different permission scenarios.

                                              The team also separated form guidance from scope plugin descriptions, allowing the interface to show context-appropriate help text. For example, warnings relevant to the context item editor no longer appear on unrelated settings pages. This improves clarity without changing functionality.

                                              A final code consistency cleanup was completed, improving maintainability through clearer naming conventions and modern code patterns. Planning and triage work for the current sprint was closed, and two new merge requests addressing scope selection documentation and a form rendering issue were opened for review.

                                              The module is in beta and progressing toward its first stable release. Open issues and ongoing refinements are typical for this stage.

                                              How can I help on this project?

                                              • Recruit additional beta testers from partner organizations or user groups to validate real-world workflows before the release candidate.
                                              • Confirm QA team capacity is sufficient to complete testing coverage before the stable release milestone.

                                              Contributors: Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit) [1]

                                              ---

                                              AI Dashboard

                                              The AI Dashboard project completed a significant update to its AI Ecosystem component during this period. The work involved refreshing the module to incorporate recent changes from upstream sources and ensuring that category-based organization is properly implemented. This enhancement will help users better navigate and understand the landscape of AI-related modules available in the Drupal ecosystem. The Update the AI Ecosystem issue was closed after the corresponding merge request was integrated.

                                              This update positions the dashboard to provide more structured and current information about available AI tools, which supports better decision-making for organizations evaluating AI capabilities within Drupal.

                                              How can I help on this project?

                                              • Review the updated AI Ecosystem categorization and provide feedback on whether it meets strategic needs for evaluating AI module adoption.
                                              • Identify and communicate priority use cases that would benefit from dashboard visibility or analytics enhancements.
                                              Contributors: Rob Loach (robloach) [1] ---

                                              AI translate

                                              The AI Translate module enables automated content translation using AI providers. Over the past 24 hours, a defect was reported that prevents the module from translating media entities such as images. When users attempt to translate media content into a new language, the translation process fails with an error. This issue has been flagged as a quick win, suggesting it may be straightforward to resolve once development work begins.

                                              No code changes were merged or committed during this period. The InvalidArgumentException: Invalid translation language (und) when translating media entities issue remains open and unassigned. As the module is in active development as part of the AI Initiative Sprint, open issues of this nature are typical and expected at this stage.

                                              How can I help on this project?

                                              Consider allocating development resources to address the open media translation defect, which has been identified as achievable in the short term. Support prioritization decisions around which translation capabilities are most valuable to end users and content teams.

                                              ---

                                              AG-UI

                                              A configuration issue that could prevent successful imports when using the AI agents dependency has been identified and a fix has been prepared. This work ensures smoother deployment and configuration management workflows, reducing potential disruptions when teams update or synchronize site configurations. The fix is currently under review.

                                              No releases or merges occurred during this period. Development activity remains focused on resolving configuration reliability issues that affect deployment processes.

                                              How can I help on this project?

                                              • Allocate reviewer capacity to assess and merge the pending configuration fix, which will improve deployment stability.
                                              • Consider whether additional testing resources are needed to validate configuration workflows before the next release.

                                              Contributors: Takaya Hirose (takayahirose)

                                              ======================================================================== ## [24] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 6 ======================================================================== ## [25] 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] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [2] Adopt Symfony AI Platform 0.8-0.12 changes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586632 [3] 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 [4] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [5] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586658 [6] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [7] Block deletion when the inference provider is referenced by one or more ai_platform config entities (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586590 [8] Decide permission system for new AI Platform and AI Inference Providers (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586628 [9] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [10] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [11] Suggest Tags automator should work with Tagify (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3536912 [12] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [13] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [14] Allow Field Widget Actions to target a specific automator 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586657 [15] [META] Drupal AI Views Agent (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3539458 [16] 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 [17] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [18] ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586656 [19] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [20] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [21] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [22] Resolve #3586495 "Add support embeddings via symfony/ai" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1856 [23] feat: #3536912 Suggest Tags automator should work with Tagify (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1921 [24] Issue #3571915: cherry pick 3e3b5970 for 1.3.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1920 [25] #3568246: fix late chatbot opening on page load (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1428 [26] Issue #3571915: Cherry-pick for 1.4.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1919 [27] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1918 [28] bug: #3571915 Filter Field Widget Action automator processing to the selected automator ID (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1917 [29] bug: #3586653 AiToolsValidationException is not caught and passed back as tool output (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1916 [30] Onboard Silver AI partner: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586659 [31] Run AI partner audit report: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586661 [32] Run AI partner audit report: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [33] Add Silver AI partner to d.o pages: Oomph (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586660 [34] Add Gold/Silver AI partner to d.o pages: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [35] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [36] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [37] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [38] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [39] Warning: Undefined array key "parameters" en Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getDefaultInformationTools() (línea 1038 de /var/www/html/docroot/modules/contrib/ai_agents/src/PluginBase/AiAgentEntityWrapper.php) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586065 [40] Connecting an Agent to an Assistant doesn't work until cache clear and Tool API (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3564033 [41] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [42] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [43] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [44] test: #3586021 Add regression test for ai_agent plugin cache invalidation (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/337 [45] Issue#3563628:Crash-Error-When-Trying-Remove-Last-Tool-From-Agent fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/336 [46] Draft: Issue #3542457: Add views creation function call plugin (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/172 [47] [#3542457] Added Views ai agent module. (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/206 [48] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [49] Create a skill for generating Tool plugins (best practices, how-to, placement) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582945 [50] Write documentation and enable project pages (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582955 [51] Resolve "Create a skill for generating Tool plugins (best practices, how-to, placement)" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/93 [52] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [53] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [56] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [57] Preview viewport cannot show or reach content below the selected device height (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591915 [58] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [59] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [60] Update npm dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591913 [61] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [62] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [63] Enable headless previews for content templates (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591893 [64] CLI pull does not choose .jsx or .tsx based on pulled source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591895 [65] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [66] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [67] Upgrade to Astro 7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3588803 [68] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [69] Canvas AI: Add the get_component_details AI tool + component-context helper (+ tests) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591814 [70] Canvas AI: Add an Agents & Tools settings form to select the main agent and chat Tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591882 [71] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [72] Strengthen AutoSaveManager to generate stable hashes (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591785 [73] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [74] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [75] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [76] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [77] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [78] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [79] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [82] chore: #3591913 Update npm dependencies (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1473 [83] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [84] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [85] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [86] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [87] fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [88] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [89] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [90] Resolve #3591907 "Balance cypress E2E parallel split by runtime weight" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1463 [91] refactor(Conflict resolution): #3591785 Strengthen AutoSaveManager to generate stable hashes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1356 [92] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [93] 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 [94] fix: #3591876 Validate the target region before placing components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [95] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [96] Fix and test. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1149 [97] "Global context" checkbox description renders a literal
                                                instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [98] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [99] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [100] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [101] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [102] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [103] Assess possible 1.0 and 1.1 features and UX/DX improvements following TDT questions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586363 [104] [Meta] CCC 1.1 UX, governance, and integration roadmap follow-up (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586384 [105] [Meta] CCC 1.1 follow-ups from beta4 code-review hardening (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586360 [106] Usage and logging UX improvements (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586213 [107] [Discuss] Usage tracking vs AI Observability for CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567803 [108] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [109] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [110] Add reproducible performance benchmarks for context selection and rendering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586381 [111] Add query_access handler so context item entity queries honor view access (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586380 [112] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [113] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [114] Implement plugin-based generic context consumers and unified consumer configuration (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586346 [115] Create graphic to explain how context scope works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571104 [116] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [117] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [118] Recruit CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [119] 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 [120] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [121] 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 [122] Sprint 16 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586368 [123] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [124] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [125] [Discuss] Use of AI context items with automators (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3563106 [126] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [127] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [128] Review and update CCC permissions for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [129] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [130] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [131] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [132] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [133] Issue #3586369: "Global context" checkbox description renders a literal
                                                instead of a line break (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/240 [134] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [135] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [136] 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 [137] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [138] Update the AI Ecosystem (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585223 [139] Issue #3585223: Update the AI Ecosystem with categories (ai_dashboard, MR) — https://git.drupalcode.org/project/ai_dashboard/-/merge_requests/26 [140] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [141] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 [142] 3590048: Fix ai_agents dependency setting (agui, MR) — https://git.drupalcode.org/project/agui/-/merge_requests/42 --- TODAY'S MODULE SUMMARIES ---

                                                AI (Artificial Intelligence)

                                                The AI module made significant progress this period, closing two issues and merging fixes that improve precision in how automated tasks are triggered. The Field Widget Action targeting fix was merged and backported across multiple supported versions, resolving a bug where field-level automation buttons would inadvertently trigger all configured automators instead of just the selected one. This ensures more predictable behaviour when sites run multiple automations on the same field. The Drupal AI Views Agent meta-issue was also closed, marking completion of a natural-language interface for configuring Views.

                                                Work is underway on several features designed to support agent-driven site configuration: skills for managing general AI settings, guardrails, and advanced tagging with the Tagify widget are all progressing through open merge requests. Bug fixes are in the pipeline for issues affecting automator activation, search result reranking at the chunk level, tool-call validation error handling, and test provider type mismatches. Separately, an issue tracking the adoption of changes from Symfony AI Platform versions 0.8 through 0.12 has been opened, identifying runtime type mismatches that will need resolution to maintain compatibility.

                                                Several strategic improvements are under discussion, including support for provider-native tool calling and a modern chatbot frontend library to replace the current tightly coupled interface. Work to block accidental deletion of inference providers that are still referenced by configurations is also planned for the next major version.

                                                How can I help on this project?

                                                • Prioritise and assign development resources to resolve the Symfony AI Platform compatibility issues, which currently cause runtime failures.
                                                • Sponsor user experience research and prototyping for the modern chatbot frontend to clarify requirements before implementation begins.

                                                Contributors: Abhisek Mazumdar (abhisekmazumdar) [1], Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev), Bruno Bruno (bbruno), Scott Euser (scotteuser)

                                                ---

                                                Drupal AI Initiative

                                                The Drupal AI Initiative continued its partnership expansion work during this period. The onboarding process for Oomph as a new Silver partner progressed, with several administrative tasks completed including mailing list additions and Slack channel access. Follow-up work has been planned to ensure successful integration through Run AI partner audit report: Oomph and to add the partner to public-facing pages via Add Silver AI partner to d.o pages: Oomph.

                                                Two template issues for standardizing future partner onboarding workflows were closed, indicating the establishment of repeatable processes for bringing new partners into the initiative. This standardization should streamline future partnership activations and reduce administrative overhead.

                                                The work reflects ongoing ecosystem development for the AI Initiative, building the partner network that will support the project's long-term sustainability and market reach.

                                                How can I help on this project?

                                                • Identify and introduce additional potential Silver or Gold partners to accelerate ecosystem growth and funding.
                                                • Ensure marketing and communications resources are available to support partner visibility once Oomph's public page materials are ready.
                                                ---

                                                AI Integration - ECA

                                                This module connects Drupal's AI capabilities with the Event-Condition-Action (ECA) automation framework. Over the past 24 hours, work has focused on two areas that will make the module easier to configure and more capable.

                                                A new task was opened to simplify structured output configuration in the Chat action. Currently, users must enter complex schema definitions as plain text, which is error-prone and difficult to verify. The proposed improvement would replace this with a purpose-built schema editor already available in the core AI module, reducing configuration errors and improving usability for site builders.

                                                Separately, a draft integration is under review that will allow the module to inspect and modify AI requests before they are sent to providers. This capability unlocks advanced use cases such as cost tracking, content filtering, and auditing. Review feedback was addressed during the reporting period, focusing on ensuring the integration handles metadata consistently when multiple automation rules modify the same request.

                                                How can I help on this project?

                                                Consider prioritizing user testing for the schema editor improvement once available, as configuration usability is often a barrier to adoption. If the interceptor functionality aligns with organizational compliance or cost-control needs, signal that priority to help guide the roadmap toward a stable release.

                                                Contributors: Marcus Johansson (Marcus_Johansson)

                                                ---

                                                AI Agents

                                                Progress this period focused on expanding the module's capabilities and resolving bugs that affect usability. Two significant pieces of work were completed: Add views agent was closed, delivering a new agent type that enables AI-powered creation and management of views—a feature that makes it easier for users to generate data displays through natural language interaction. Additionally, a bug preventing users from deleting the last tool from an agent was resolved with the closure of If only one tool, cannot delete it, gives an error.

                                                Several active development threads remain open. Work is underway to address caching issues that prevent newly created agents from being immediately usable until caches are cleared. A minor warning related to missing parameters in tool definitions is being addressed through an open merge request. Two feature requests remain in progress: adding short-term memory capabilities to agents and enabling parent agents to forward requests without modification, both aimed at improving agent efficiency and reducing costs.

                                                How can I help on this project?

                                                • Prioritize or assign resources to resolve the cache invalidation issue, which currently requires manual intervention and affects the user experience when creating new agents.
                                                • Consider allocating dedicated testing resources to validate new agent types and memory features as they near completion.

                                                Contributors: Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Jibran Ijaz (jibran)

                                                ---

                                                Tool API

                                                The Tool API project saw continued documentation and developer experience work during this period. Two preparation efforts are underway to make it easier for developers to build plugins and for potential users to understand the module's capabilities.

                                                Work continued on Create a skill for generating Tool plugins (best practices, how-to, placement), which aims to help developers correctly author Tool plugins by guiding them through the required components—such as plugin attributes, typed input and output definitions, and operation classifications. This should reduce the learning curve for teams wanting to expose well-defined actions to AI agents.

                                                Separately, progress was made on Write documentation and enable project pages, which will provide auto-generated project documentation on every main branch update, improving discoverability and onboarding for potential adopters.

                                                Both items have open merge requests in development. No code was merged during the reporting window.

                                                How can I help on this project?

                                                • Prioritize review and feedback on the two open documentation-focused merge requests to accelerate their completion and improve adoption readiness.
                                                • Consider allocating testing or user-feedback resources to validate that the developer guidance materials meet real-world onboarding needs.

                                                Contributors: Marcus Johansson (Marcus_Johansson)

                                                ---

                                                Drupal Canvas

                                                Over the past 24 hours, the project merged six updates spanning AI capabilities, developer tools, testing infrastructure, and data integrity.

                                                Several fixes were integrated to improve the AI-assisted page builder experience. The system now sends resolved component property values alongside the page structure in a single request parameter, enabling the AI agent to better understand both content and layout when generating pages. Additionally, the AI workflow was restructured to support browser-driven iteration: the agent pauses after each decision and returns control to the client, allowing incremental progress rather than blocking on a single server request. A configuration interface was added to allow administrators to select which AI tools are available in the developer chat interface.

                                                Developer tooling received two fixes. The command-line tool now correctly assigns file extensions (.jsx or .tsx) based on the source code pulled from the server, preventing compilation failures. Dependency packages across the JavaScript stack were updated to current versions.

                                                Test suite efficiency improved: end-to-end tests now distribute across parallel runners based on runtime characteristics rather than file count, reducing overall pipeline duration. Headless preview rendering was extended to support content templates in addition to pages.

                                                Four new issues were opened documenting bugs in data handling and caching. These include problems with component version hashing during single-process installs, cache collisions in dynamically generated form widgets, missing cache tags for array-based component properties, and a data migration gap affecting sites upgrading from earlier releases. Work is underway on fixes for the upgrade path and region validation issues.

                                                How can I help on this project?

                                                • Ensure the team has sufficient headcount to address the four newly opened data integrity and caching issues alongside ongoing feature development.
                                                • Support prioritisation decisions around stabilising the upgrade path and editor preview viewport improvements ahead of the next release cycle.

                                                Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito) [1], Dave Long (longwave), David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Harumi Jang (hooroomoo), Juan Correa (jucs7) [1], Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                                                ---

                                                Context Control Center (CCC)

                                                The project completed three important improvements during the reporting period as part of preparing for its upcoming release candidate. Work focused on access control, user interface clarity, and code quality.

                                                A comprehensive update to access checks and documentation was merged, ensuring context items are protected correctly and clarifying the trust model for site builders who create and manage content for AI features. This work closes small disclosure gaps and adds test coverage for different permission scenarios.

                                                The team also separated form guidance from scope plugin descriptions, allowing the interface to show context-appropriate help text. For example, warnings relevant to the context item editor no longer appear on unrelated settings pages. This improves clarity without changing functionality.

                                                A final code consistency cleanup was completed, improving maintainability through clearer naming conventions and modern code patterns. Planning and triage work for the current sprint was closed, and two new merge requests addressing scope selection documentation and a form rendering issue were opened for review.

                                                The module is in beta and progressing toward its first stable release. Open issues and ongoing refinements are typical for this stage.

                                                How can I help on this project?

                                                • Recruit additional beta testers from partner organizations or user groups to validate real-world workflows before the release candidate.
                                                • Confirm QA team capacity is sufficient to complete testing coverage before the stable release milestone.

                                                Contributors: Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit) [1]

                                                ---

                                                AI Dashboard

                                                The AI Dashboard project completed a significant update to its AI Ecosystem component during this period. The work involved refreshing the module to incorporate recent changes from upstream sources and ensuring that category-based organization is properly implemented. This enhancement will help users better navigate and understand the landscape of AI-related modules available in the Drupal ecosystem. The Update the AI Ecosystem issue was closed after the corresponding merge request was integrated.

                                                This update positions the dashboard to provide more structured and current information about available AI tools, which supports better decision-making for organizations evaluating AI capabilities within Drupal.

                                                How can I help on this project?

                                                • Review the updated AI Ecosystem categorization and provide feedback on whether it meets strategic needs for evaluating AI module adoption.
                                                • Identify and communicate priority use cases that would benefit from dashboard visibility or analytics enhancements.
                                                Contributors: Rob Loach (robloach) [1] ---

                                                AI translate

                                                The AI Translate module enables automated content translation using AI providers. Over the past 24 hours, a defect was reported that prevents the module from translating media entities such as images. When users attempt to translate media content into a new language, the translation process fails with an error. This issue has been flagged as a quick win, suggesting it may be straightforward to resolve once development work begins.

                                                No code changes were merged or committed during this period. The InvalidArgumentException: Invalid translation language (und) when translating media entities issue remains open and unassigned. As the module is in active development as part of the AI Initiative Sprint, open issues of this nature are typical and expected at this stage.

                                                How can I help on this project?

                                                Consider allocating development resources to address the open media translation defect, which has been identified as achievable in the short term. Support prioritization decisions around which translation capabilities are most valuable to end users and content teams.

                                                ---

                                                AG-UI

                                                A configuration issue that could prevent successful imports when using the AI agents dependency has been identified and a fix has been prepared. This work ensures smoother deployment and configuration management workflows, reducing potential disruptions when teams update or synchronize site configurations. The fix is currently under review.

                                                No releases or merges occurred during this period. Development activity remains focused on resolving configuration reliability issues that affect deployment processes.

                                                How can I help on this project?

                                                • Allocate reviewer capacity to assess and merge the pending configuration fix, which will improve deployment stability.
                                                • Consider whether additional testing resources are needed to validate configuration workflows before the next release.

                                                Contributors: Takaya Hirose (takayahirose)

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