# Prompt log — 24h 2026-07-07 ======================================================================== ## [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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [2], Daniel Rodriguez (danrod), scott falconer (scottfalconer)". 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). ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-07-08 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Fix PHPStan issues on API Explorer](https://git.drupalcode.org/project/ai/-/work_items/3563396) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Daniel Rodriguez (danrod) | Labels: aiApiExplorer, category::task, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1074 !1063 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation In 2.0.x we have upped the phpstan level to 7, this has added a lot of issues that needs to be resolved. We will fix these in steps. This issue will make sure that AI API Explorer is fixed. Proposed resolution Fix all t… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Has Testing Steps, aiSearch Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [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-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 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… ### [Add YAML support to the MDX editor code blocks](https://git.drupalcode.org/project/ai/-/work_items/3586585) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent Description: ## Problem/Motivation The MDX editor currently does not support YAML code blocks. The system prompts of the Canvas AI agents contain YAML, so the MDX editor cannot render those blocks properly. We need YAML supported as a code-block language in the MDX editor. ## Steps to reproduce 1. Using `ai_agents` `^1.3`, create an AI agent. 2. In the instructions field, insert a code block. 3. Try to set the code block language to YAML. 4. YAML is not available in the language list. ### [AI CKEditor tools (Tone, Summarise) fail with "Call to a member function get() on null" on Drupal 11.4.0](https://git.drupalcode.org/project/ai/-/work_items/3586584) State: closed | Updated: 2026-07-07 | Author: Nick Abbott (SirClickALot) | Assigned: unassigned | Labels: state::closed, why::duplicate Description: Problem/motivation On Drupal 11.4.0, using any AI CKEditor tool that relies on the shared `AiCKEditorPluginBase::buildCkEditorModalForm()` method (confirmed with Tone and Summarize) throws an uncaught error and returns a 500 response from `/api/ai-ckeditor/dialog`. This happens on two independent Drupal 11.4.0 sites with no contrib modules in common (one runs Markdownify, CrowdSec, and Advban; the other runs none of these), which rules out a third-party module conflict. The root cause is this line in `AiCKEditorPluginBase.php`: $editor_id = $this->requestStack->getParentRequest()->get('… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1759 [task: #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/merge_requests/1759) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 2343 diff lines Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3575346) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1739 [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1739) | State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev), 275 diff lines Description: >>> [!note] Migrated issue Reported by: [annmarysruthy](https://www.drupal.org/user/3664314) Related to !1240 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: All AI CKEditor plugins display "You must select some text before you can summarize it" even when the active plugin is Translate, Tone, or SpellFix.[One-line issue summary for stakeholders] Check-in Date: 02/24/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Most AI CKEditor plugins (e.g., Translate, Tone, SpellFix, etc.) require selec… ### [Plugin shouldn't show any fields if no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3557016) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1745 [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1745) | State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev), 47 diff lines Description: >>> [!note] Migrated issue Reported by: [damienmckenna](https://www.drupal.org/user/108450) Related to !1117 >>> Problem/Motivation When opening a ckeditor plugin, if no text is selected the UI shows the "You must select some text before you can summarize it." message, but then will also show some of the other fields from the specific plugin, e.g. the Tone plugin shows the "Choose tone" selector. Proposed resolution Don't show anything in the ckeditor plugin popup (particularly for the Tone plugin) if no text has been selected. Remaining tasks Don't show anything in the ckeditor plugin po… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, UX, aiAutomators Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… --- MERGE REQUESTS (24h) --- ### [Resolve #3563396 "Fix phpstan issues api 2.0.x"](https://git.drupalcode.org/project/ai/-/merge_requests/1074) State: opened | Author: Daniel Rodriguez (danrod) | Branch: 3563396-fix-phpstan-issues-api-2.0.x | 1368 diff lines Description: Closes #3563396 ### [Issue #3586543: Add AI reranking processor for Search API.](https://git.drupalcode.org/project/ai/-/merge_requests/1729) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3586543-add-ai-reranking-processor-for-search-api | 1273 diff lines Description: ## Description A new Search API processor plugin (`ai_reranker`) that re-orders query results using the `rerank` operation type already in AI Core. The `rerank` operation was added in #3488114 but nothing consumed it for Search API. #3557901 proposed putting reranking in `ai_search`, but reranking is a generic capability. It belongs in the `ai` core module where the operation type itself lives, so it works with any Search API backend (database, Solr, anything), not just the vector backend. **New files:** - `src/Plugin/search_api/processor/AiReranker.php`: `ProcessorPluginBase` plugin runni… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1758) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95-3 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1757) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95-2 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1756) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1755) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherr-pick-a2f45e68330b1fd1910c12a653885ce25138ea5d | 22 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1749) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6-2 | 69 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1752) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97 | 275 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1753) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97-2 | 275 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1754) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97-3 | 275 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… ### [replace hardcoded "summarize" no-selection message with overridable...](https://git.drupalcode.org/project/ai/-/merge_requests/1751) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4fe69426 | 267 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1748) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6 | 47 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1750) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6-3 | 47 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… ### [replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin](https://git.drupalcode.org/project/ai/-/merge_requests/1240) State: merged 2026-07-07 | Author: Ann Mary Sruthy (annmarysruthy) | Branch: 3575346-ai-ckeditor-hardcoded | 267 diff lines Description: feat: #3575346 AI CKEditor: replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin Closes #3575346 ### [Resolve #3574723 "Enforce execution principal"](https://git.drupalcode.org/project/ai/-/merge_requests/1233) State: opened | Author: scott falconer (scottfalconer) | Branch: 3574723-enforce-execution-principal | 735 diff lines Description: Closes #3574723 --- COMMITS (24h) --- - [a7c87e95](https://git.drupalcode.org/project/ai/-/commit/a7c87e9581fce3537894d1aed47edc110bae06c2) Workaround until core issue is fixed — Artem Dmitriiev (2026-07-07T08:30:30.000+00:00) - [f8d47c97](https://git.drupalcode.org/project/ai/-/commit/f8d47c973d65669fc7b2f13cfa00705d0eb53111) feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... — Artem Dmitriiev (2026-07-07T07:29:14.000+00:00) ======================================================================== ## [2] summariseModule:experience_builder:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Experience Builder (machine name: experience_builder) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Luhur Abdi Rizal (el7cosmos)". 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

    Experience Builder

    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). (none) --- MERGE REQUESTS (24h) --- ### [Create a configurable search api processor for XB data](https://git.drupalcode.org/project/experience_builder/-/merge_requests/492) State: opened | Author: Luhur Abdi Rizal (el7cosmos) | Branch: 3483301-create-a-configurable | 470823 diff lines Description: Closes #3483301 --- 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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). ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: opened | Updated: 2026-07-08 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ricardo Castañeda (cadence96) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… --- 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 | 4886 diff lines Description: Closes #3584407 --- COMMITS (24h) --- (none) ======================================================================== ## [4] summariseModule:ai_provider_openai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: OpenAI Provider (machine name: ai_provider_openai) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khalil (ahmad-khalil-imagex), Bryan Sharpe (b_sharpe)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

        OpenAI Provider

        then use

        ,

        ,

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

          How can I help on this project?

          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [Resolve #3548526 "1.3.x support file handling"](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/79) State: merged 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Branch: 3548526-1.3.x-support-file-handling | 625 diff lines Description: Closes #3548526 ### [Issue #3558801: Route the OpenAI chat operation through the Responses API...](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/78) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3558801-responses-api-chat | 1487 diff lines Description: Issue #3558801: Route the OpenAI chat operation through the Responses API instead of Chat Completions. # MR Summary — Convert the OpenAI chat operation to the Responses API (Issue #3558801) ## Why this was done OpenAI's Responses API is the successor to Chat Completions, and OpenAI intends to eventually deprecate Chat Completions. The issue originally proposed exposing Responses as a separate responses operation type (MR !56), but the maintainers (comments #6 and #9) rejected that direction: * No other provider distinguishes chat vs. responses — the operation type doesn't change, only Open… --- COMMITS (24h) --- (none) ======================================================================== ## [5] summariseModule:ai_provider_google_vertex:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Google Vertex Provider (machine name: ai_provider_google_vertex) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Tamás Nagy (yce)". 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

          Google Vertex Provider

          then use

          ,

          ,

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

            How can I help on this project?

            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [Refactor HTTP client & add tests](https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/21) State: opened | Author: Tamás Nagy (yce) | Branch: 3567022-add-test-coverage | 1626 diff lines Description: Includes changes from https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/16/commits. --- COMMITS (24h) --- (none) ======================================================================== ## [6] summariseModule:ai_vdb_provider_milvus:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Milvus VDB Provider (machine name: ai_vdb_provider_milvus) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Remco Hoeneveld (RemcoHoeneveld), Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

            Milvus VDB Provider

            then use

            ,

            ,

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

              How can I help on this project?

              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [fix: Milvus connection failures fixes.](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/51) State: opened | Author: Remco Hoeneveld (RemcoHoeneveld) | Branch: 3608584-milvus-connection-failures | 253 diff lines Description: Closes #3608584 ### [Resolve #3589484 "Milvus restart on failure"](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/45) State: merged 2026-07-07 | Author: Scott Euser (scotteuser) | Branch: 3589484-milvus-restart-on-failure | 24 diff lines Description: Closes #3589484 --- COMMITS (24h) --- - [da61ea23](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/commit/da61ea230122726f6e38814368a18f23eb5f71b7) fix: #3589484 Milvus sometimes falls over in Mac within DDEV yet the rest of the DDEV site works fine — Scott Euser (2026-07-07T08:37:21.000+00:00) ======================================================================== ## [7] summariseModule:mcp:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Shubham Goel (shubhamgoel)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

              Model Context Protocol

              then use

              ,

              ,

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

                How can I help on this project?

                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [3551588: Write (Create/Update) Operations Support](https://git.drupalcode.org/project/mcp/-/merge_requests/42) State: opened | Author: Shubham Goel (shubhamgoel) | Branch: 3551588-write-op-create-update | 1237 diff lines Description: Closes #3551588 --- COMMITS (24h) --- (none) ======================================================================== ## [8] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader), AKHIL BABU (AkhilBabu), Prabhavathi Vanipenta (prabha1997)". 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). ### [ai_agents status subscriber fatals when tool status output has no function.name](https://git.drupalcode.org/project/ai_agents/-/work_items/3585983) State: opened | Updated: 2026-07-08 | Author: scott falconer (scottfalconer) | Assigned: unassigned | Labels: automation::suggestionExists, category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !295 [Fix AgentStatusSubscriber fatals when tool status output has no function.name](https://git.drupalcode.org/project/ai_agents/-/merge_requests/295) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 345 diff lines Description: - Triggered through: ai_agents_debugger running Content Type Agent with EchoAI. - Problem: Debugger gets EchoAI output, then the response handling fatals while recording tool/status information. - Evidence: FunctionCallPluginManager::getFunctionCallFromFunctionName(): Argument #1 ($function_name) must be of type string, null given - Call site: web/modules/contrib/ai_agents/src/EventSubscriber/ AgentStatusSubscriber.php:241 - Relevant code behavior: $tool->getOutputRenderArray() can produce data without $tool_as_array['function']['name'], but line 241 pas… ### ["Use Artifact storage" checkbox not necessary?](https://git.drupalcode.org/project/ai_agents/-/work_items/3586046) State: opened | Updated: 2026-07-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::support, priority::normal, state::accepted Description: I've recently noticed that tools in my agents are using artifact storage even when I don't have the "use artifact storage" enabled in the tool configuration. For example, I am using the "Load entity by ID" tool - without "Use artifact storage" enabled. After running the agent, looking in the log, I see: > Tool Plugin executed successfully: Successfully loaded node entity with ID 108 > An artifact has been created for the returned loaded_entity output. To use this entity for subsequent tool input arguments, pass the artifact string '{{entity:node:108:en}}' for entity inputs. > The artifact e… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-07-07 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !284 [Issue #3586042 Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/merge_requests/284) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 53 diff lines Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [force_value is ignored when hide_property is unchecked (AI Agents 1.2.x)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586045) State: closed | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, state::fixed Description: ### Summary When a tool argument is restricted with the **Force value** action but **Hide property is left unchecked**, the forced value is not enforced at execution time. The model can call the tool with any value it chooses, and the tool runs with that value instead of the forced one. ### Steps to reproduce 1. Create an AI agent that uses the **AI Search: RAG search** (`ai_search_rag_search`) tool. 2. In the tool usage limits, set the **index** argument to **Force value → `drupal`**, and leave **Hide property unchecked**. Configure this via the AI Agents Explorer. 3. Open the agent in the… --- MERGE REQUESTS (24h) --- ### [fix: #3586045 persist force_value tool restrictions saved from the agent form](https://git.drupalcode.org/project/ai_agents/-/merge_requests/294) State: merged 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Branch: 3586045-force-value-bug | 169 diff lines Description: ## Summary `AiAgentForm::save()` referenced an undefined `$restrictions` variable while building `tool_usage_limits`, so a force_value restriction was stored without its `action`, `values`, `hide_property` and `not_break`. The forced value was then ignored at runtime regardless of whether hide_property was enabled. ## Fix Build each restriction from the submitted `$values` and store the processed array. ## Test Adds `ForceValueFormPersistenceTest` (functional): as the root user it enables the `ai_agent:list_config_entities` tool, submits a force_value restriction on `entity_type` through … --- COMMITS (24h) --- (none) ======================================================================== ## [9] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                  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). ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Christian López Espínola (penyaskito) [2], Feliksas Mazeikis (f.mazeikis) [1], Fons Vandamme (f0ns), Jakob P (japerry), Lauri Timmanee (lauriii), project update bot (Project-Update-Bot), Ravi Maniyar (ravi.maniyar.123) [1], scott falconer (scottfalconer), Stephanie Galata (sgalata), Wim Leers (wimleers)". 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). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-07-08 | 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: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [AssertionError in AutoSaveHooks on non-node revision revert forms](https://git.drupalcode.org/project/canvas/-/work_items/3578668) State: opened | Updated: 2026-07-08 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, category::bug Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !716 >>> - With canvas enabled, opening the AI Context revision revert confirmation route throws AssertionError: assert($entity instanceof RevisionableInterface) in canvas/ src/Hook/AutoSaveHooks.php. - Reproduced against ai_context issue https://git.drupalcode.org/project/ai_context/-/work_items/3577427 - The failure is not specific to AI Context logic; Canvas currently assumes revert forms are either NodeRevisionRevertForm or EntityFormInterface. - This likely should be generalized fo… ### [Add content_translation_source and content_translation_outdated to `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()`](https://git.drupalcode.org/project/canvas/-/work_items/3591779) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, priority::normal, shapeMatching, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1340 [Issue #3591779: Exclude content_translation_source/outdated from PropSourceSuggester suggestions](https://git.drupalcode.org/project/canvas/-/merge_requests/1340) | State: opened | Author: Christian López Espínola (penyaskito), 93 diff lines Description: ## Problem/Motivation `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()` filters out entity base fields that are never meaningful to offer as prop sources (for example `default_langcode`, `revision_default` and `revision_log_message`). When one of a content entity type's bundles is translatable, the `content_translation` module adds two fixed-name bookkeeping base fields to that entity type: `content_translation_source` and `content_translation_outdated`. These hold internal translation metadata and are never meaningful to display, but `isConsideredIrrelevant()` did … ### [Content template editor preview shows a stale snapshot instead of live edits](https://git.drupalcode.org/project/canvas/-/work_items/3591782) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, category::bug, pageBuilder, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1339 [fix(Page builder): #3591782 Content template editor preview shows a stale snapshot instead of live edits](https://git.drupalcode.org/project/canvas/-/merge_requests/1339) | State: opened | Author: Christian López Espínola (penyaskito), 89 diff lines Description: ### Overview In a content template editor, after previewing the template and returning to the editor, the preview frame keeps showing a **stale preview snapshot** instead of the live editor content. Subsequent edits — for example linking a component prop to an entity field, or changing a text field — update the form and the model, but the preview frame does not reflect them. The edits appear to have no effect until an unrelated action forces a fresh render. The editor frame's source is selected as `snapshotHTML || html`: the preview snapshot takes precedence over the live editor html wheneve… ### [Add heuristics for exposing fields/props to the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/work_items/3591669) State: closed | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii), Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, internalHttpApi, priority::critical, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1289 [chore(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1289) | State: merged 2026-07-07 | Author: Christian López Espínola (penyaskito), 1222 diff lines Description: ### Overview When a Code Component Developer uses the `content-entity-reference` "Typed Data browser" UI (added in #3585354) to pick which entity data a prop consumes, the picker offers fields and properties it should not: - **Internal metadata** that storage would reject anyway (e.g. the `revision_default` / `workspace` base fields). - **A duplicated image URL**: the `image` field surfaces *"Resolved image URL with ?alternateWidths query parameter"* twice, because the `src` and `src_with_alternate_widths` computed properties share that label. `src` exists precisely as the developer-facing a… ### [Product verification: merging reference field-level field properties with the referenced entity's own data](https://git.drupalcode.org/project/canvas/-/work_items/3591681) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii) | Labels: DX (Developer Experience), Needs product manager review, category::task, dataModel Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1104077](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1104077). ### Overview !1112 merges the reference field's own field-level properties (e.g. an image reference's `alt`, `width`, `height`, `src`) together with the data of the entity it points to (e.g. that file/user entity's own fields) into a single object. A product manager needs to confirm this merged shape is the intended editor/component experience before it is relied upon. Concrete example of the produced … ### [UI Exception / 500 Error when triggering Preview on Content Templates causes persistent state lock](https://git.drupalcode.org/project/canvas/-/work_items/3591684) State: closed | Updated: 2026-07-08 | Author: Mayur Sose (mayur-sose) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, category::bug, pageBuilder, priority::critical Description: A regression has introduced a Preview button for Content Templates, which was previously hidden. Clicking this button triggers a 500 Internal Server Error API exception. Furthermore, attempting to exit the preview state fails to clear the editor state, resulting in a persistent UI layout lock across all subsequent pages or templates until a hard browser refresh is performed. Technical Impact: Backend: The system executes an unhandled or invalid exception routine when validating the entity bundle type against the preview controller endpoint. Frontend: The application state machine fails to re… ### [Remove feature flag for content entity reference props and make it public](https://git.drupalcode.org/project/canvas/-/work_items/3591781) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1338 [Resolve #3591781 "Remove feature flag for content entity reference props and make it public"](https://git.drupalcode.org/project/canvas/-/merge_requests/1338) | State: opened | Author: Christian López Espínola (penyaskito), 188 diff lines Description: Content entity reference props were introduced behind a hidden dev feature flag in #3591711: a hidden `canvas_dev_er` module exposes `drupalSettings.canvas.devEntityReferenceMode`, and the code editor only shows the "Content entity reference" prop type when that setting is `true` (except for existing components that already use it, so they remain editable). The feature is now ready to be released. This issue tracks removing the feature flag and making content entity reference props public. ### Proposed resolution - Remove the hidden `canvas_dev_er` module and the `drupalSettings.canvas.devE… ### [Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/work_items/3591711) State: closed | Updated: 2026-07-07 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: Content entity reference props are not fully stable yet, so the code editor should only show this prop type when an explicit dev feature flag is enabled. Add a hidden `canvas_dev_er` module. When enabled, Canvas exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor should show the Content entity reference prop type only when that setting is `true`. Existing components that already use content entity reference props should continue to show that prop type so they remain editable. ### [bnjmnm investigation](https://git.drupalcode.org/project/canvas/-/work_items/3591780) State: opened | Updated: 2026-07-07 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1337 [Draft: #3591780 playwright reports fail even when all shards pass](https://git.drupalcode.org/project/canvas/-/merge_requests/1337) | State: opened | Author: Ben Mullins (bnjmnm), 123 diff lines Description: will elaborate depending on investigation results ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: closed | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, category::task, componentSources Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [chore(Component sources): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: merged 2026-07-07 | Author: Christian López Espínola (penyaskito), 4999 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Document relevance of ordering of operations in `Component::preSave` to prevent future bugs](https://git.drupalcode.org/project/canvas/-/work_items/3591778) State: opened | Updated: 2026-07-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: DX (Developer Experience), category::task, configManagement, priority::normal Description: ### Overview `Component::preSave()` runs a sequence of self-healing config updaters (`CanvasConfigUpdater` methods). Their relative order is significant, but nothing documents it: - A heal that changes versioned settings creates a new active version (e.g. the `required`-flag heal), which changes what "the active version" is for every heal that runs after it. - A heal that derives data from the live implementation (e.g. the `derived_schema_metadata` backfill from #3591727) therefore produces different per-version outcomes depending on whether it runs before or after a version-creati… ### [Rudimentary conflict resolution UI](https://git.drupalcode.org/project/canvas/-/work_items/3591601) State: closed | Updated: 2026-07-07 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1183 [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) | State: merged 2026-07-07 | Author: Ravi Maniyar (ravi.maniyar.123), 4300 diff lines Description: ### Overview We are adding "Conflict resolution UI". This issue will add basic UI elements based on that allow users to open and interact with "Conflict resolution UI". ### Proposed resolution Add ability to open "Conflict resolution UI" using CTA button introduced in https://git.drupalcode.org/project/canvas/-/work_items/3585970. Create rudimentary version of the "Conflict resolution UI" which: * displays all of the conflicts in paginated (1 of X) UI with navigation controls ("\" * allows users to select which of the entities they want to use in order to resolve the conflict (auto-save v… ### [Introduce the authentication and security model for headless draft preview](https://git.drupalcode.org/project/canvas/-/work_items/3591775) State: opened | Updated: 2026-07-07 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: Configuration schema, Needs security review, validation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1336 [Draft: feat: Introduce the authentication and security model for headless draft preview](https://git.drupalcode.org/project/canvas/-/merge_requests/1336) | State: opened | Author: Bálint Kléri (balintbrews), 13362 diff lines Description: First building block of the [Canvas Headless milestone](https://git.drupalcode.org/project/canvas/-/milestones/5). Headless frontends can only fetch published content. For live preview — and for editors to trust it — the frontend must render draft content: unpublished entities, forward revisions, and eventually Canvas auto-save state. That requires an authentication model that answers three questions well: on whose authority does the frontend read drafts, with what limits, and how is that access revoked. Goals: - Draft access is bound to the editor: the frontend sees exactly what the edit… ### [Add support for file fields using custom stream wrappers (currently only `public` is supported)](https://git.drupalcode.org/project/canvas/-/work_items/3577155) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Darrell Green (codefever) | Labels: Contributed project blocker, category::feature, priority::major, shapeMatching Description: >>> [!note] Migrated issue Reported by: [darrellhq](https://www.drupal.org/user/356505) >>> Overview FileUriItemOverride::propertyDefinitions() adds a UriSchemeConstraint to the file_uri field type's value property with a hardcoded allowedSchemes => ['public']. Because this override is applied globally via hook_field_info_alter() in ShapeMatchingHooks, it affects all file entities — not just those used within Canvas components. This causes entity validation failures for any site that stores files using a non-public:// stream wrapper (e.g., s3:// via the S3FS module, or private://)… ### [Installing Canvas breaks private file system](https://git.drupalcode.org/project/canvas/-/work_items/3591647) State: closed | Updated: 2026-07-07 | Author: John Birchall (John_B) | Assigned: unassigned | Labels: category::bug, dataModel, priority::major, state::closed ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-07-07 | Author: Gábor Hojtsy (goba) | Assigned: Gábor Hojtsy (goba), Ted Bowman (tedbow) | Labels: Usability, state::needsReview, translation Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [Changing Metadata Clears Canvas AI Prompt Text](https://git.drupalcode.org/project/canvas/-/work_items/3558257) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [vipin.mittal18](https://www.drupal.org/user/319716) Related to !530 >>> Overview When composing a prompt in Canvas AI, if any page metadata (such as meta description) is modified before submitting the prompt, all previously entered text in the Canvas AI prompt field is erased. Proposed resolution Updating any metadata field (title, description, etc.) should not clear the text entered in the Canvas AI prompt field. The data in the Canvas AI prompt and in the metadata fields should be managed independently without interference from one another. St… ### [Canvas AI: remove unused historyStore subscription and decide on IndexedDB chat persistence](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-07-07 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::active Description: Follow-up to #3558257. The original symptom of this issue, in-progress chat messages disappearing when editing page metadata during an active run, is resolved by #3558257 / MR !530. That MR freezes DeepChat's `history` prop and stabilizes its other props, so a metadata edit no longer re-renders the panel or resets DeepChat, and the imperative in-progress bubble is retained. Two cleanup items remain, deferred from !530. ### 1. Remove the unused historyStore subscription In `ui/src/components/aiExtension/AiWizard.tsx`, `historyStore` still exposes a `subscribe()` method backed by a `subscribe… ### [DX: `php (lint)` CI job runs against 11.2, fails on 11.3/11.4](https://git.drupalcode.org/project/canvas/-/work_items/3591767) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), priority::critical, projectManagement Description: ## Problem While working on !1332, I just realized why @balintbrews and others have been reporting > I NEVER see a passing `phpcs` or `phpstan` locally … they most likely are developing on Drupal 11.3 (or now 11.4), not the _minimum_ Drupal core version supported by Canvas! While using AI to get !1332 to pass, `phpcs` and `phpstan` _also_ fail, because they're running against 11.4, not the new minimum version (11.3, because 11.2 support was dropped by Drupal core). ## Solution Update Canvas' `composer run lint:phpcs`, `composer run lint:phpstan` etc commands detect_ that the core version … ### [Canvas AI: Client-side orchestration loop roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3591777) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: Description: ## Development strategy - All work for this revamp lands on a long-lived integration branch `1.x-ai-revamp`, cut from `1.x`. - Each child issue is developed in its own issue fork; its MR targets `1.x-ai-revamp`, not `1.x`. - `1.x` is merged into `1.x-ai-revamp` regularly (merge, never rebase) to keep it current. - Once all child issues are merged, `1.x-ai-revamp` is merged into `1.x` in a single integration MR. - Breaking changes are acceptable (`canvas_ai` is beta). The upgrade path is a `hook_update_N` that deletes stale `ai_agent` config entities plus system-prompt/config updates; no data … ### [Canvas AI: Client-side orchestration loop for Canvas AI(POC)](https://git.drupalcode.org/project/canvas/-/work_items/3591615) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::needsReview Description: ## Problem Every Canvas AI request is a single synchronous PHP call. The full chain — orchestrator → sub-agent → tool calls → validation — must complete before the server responds. This causes two concrete failures: - **Timeouts on hosted platforms (e.g. DrupalForge).** A full page build exceeds the request time limit. The user gets nothing. - **Full regeneration on any error.** If one component in a large response fails validation, the entire response is regenerated — wasting time and tokens. There is no streaming and no partial feedback. ## How `ai_chatbot` already solves this The `ai_c… ### [redirectCanvasToDefaultLanguage() fights modules that support language-prefixed editor URLs (e.g. canvas_multilingual), causing redirect loops](https://git.drupalcode.org/project/canvas/-/work_items/3591772) State: opened | Updated: 2026-07-07 | Author: Stephanie Galata (sgalata) | Assigned: unassigned | Labels: Description: ### Overview `CanvasRouteOptionsEventSubscriber::redirectCanvasToDefaultLanguage()` unconditionally strips the language prefix from `/canvas` editor URLs and 302-redirects to the prefix-free path. The code's own `@todo` notes this is an interim measure until Canvas natively supports language-prefixed URLs (#3546597). The [canvas_multilingual](https://www.drupal.org/project/canvas_multilingual) contrib module makes language-prefixed editor URLs valid and meaningful: it provides a language-aware editor where `/{prefix}/canvas/editor/...` opens that language's translation. With both modules ins… ### [Canvas AI: Agent system prompts render with an error in the MDX editor](https://git.drupalcode.org/project/canvas/-/work_items/3591776) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, ai, state::accepted Description: ## Problem/Motivation The Canvas AI agents' system prompts are not rendered correctly in the MDX editor — the Agent Instructions field shows a render error. ## Steps to reproduce 1. Using `ai_agents` `^1.3`, open the Canvas page builder agent, the template builder agent, and the component agent. 2. The Agent Instructions field contains a render error. ## Related Related to [project/ai#3586585](https://git.drupalcode.org/project/ai/-/work_items/3586585) — add YAML support to the MDX editor. Once that issue is resolved, fix the remaining syntax issues here. ### [Automated Drupal 12 compatibility fixes for canvas 1.x-dev](https://git.drupalcode.org/project/canvas/-/work_items/3591603) State: opened | Updated: 2026-07-07 | Author: project update bot (Project-Update-Bot) | Assigned: Wim Leers (wimleers), Björn Brala (bbrala), project update bot (Project-Update-Bot) | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, priority::major Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Make Canvas test suite pass on 11.4; drop support for 11.2](https://git.drupalcode.org/project/canvas/-/work_items/3591764) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, Needs followup, blocker, projectManagement Description: Yesterday, https://www.drupal.org/project/drupal/releases/11.4.0 was released. This needs 2 ~MRs~ key things to happen, easiest to do in a single MR: - [x] Canvas should be tested explicitly against 11.4 → most commits of !1332 - [x] Canvas should drop 11.2 support, because Drupal core dropped security support for 11.2 → require (9eccebfc15ac5906efe49eb42195d025ffc66017) + remove all 11.2 mentions (5122ccf5e11fdd8f05fc1805d074efa2979275e8) - [x] Follow-up for `resolvable_uri`: #3591770+ Note that the latter will unblock !1241. ### [Automated Drupal 12 compatibility fixes for canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591556) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: Drupal 12 compatibility, ProjectUpdateBotD12, category::task, code Description: >>> [!note] Migrated issue Reported by: [project update bot](https://www.drupal.org/user/3644742) Related to !1150 >>> Problem/Motivation Hello project maintainers, This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. To stop further changes from being posted, change the status to anything other than Active, Needs review, Needs work or Reviewed and tested by the community. Alternatively, you can remove the "ProjectUpdateBotD12" tag from the issue to stop the bot from posting updates… ### [Boolean field values resetting when using Patterns](https://git.drupalcode.org/project/canvas/-/work_items/3591637) State: closed | Updated: 2026-07-07 | Author: Amanda Donnelly (aadownie) | Assigned: unassigned | Labels: Description: When using Patterns in the 1.5 update, boolean values are not staying their set value when using Patterns after content is edited. To reproduce: Add a component that uses a boolean value, set with a default 'true', and a basic text field. In my example this boolean was used to show/hide a section of markup. Create a page with this component added, but set the boolean to 'false', then create a pattern with this layout. Add a new page, and drag the pattern over, which should have this boolean set to 'false' hiding the markup. Edit the text field. When the preview reloads, the formerly hidd… ### [Boolean prop values not retained correctly on SDC components with multiple boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591697) State: closed | Updated: 2026-07-07 | Author: Joery Lemmens (flyke) | Assigned: unassigned | Labels: Description: This is a recreation of issue [#3492368](https://www.drupal.org/project/experience_builder/issues/3492368) in the experience_builder module so that the issue ends up on the correct module and issue que. Please watch the video in that issue! I am using Drupal 11.3.12 and I'm having an issue with boolean props on both canvas 1.6.0 and latest canvas dev. I have a (card) component with multiple boolean props where example and default are all set to false. I create a card (I dont change any boolean props) and when changing the text content, it seems that all boolean prop widgets are still uncheck… ### [Cast transform treats serialized "0" as true for boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591739) State: opened | Updated: 2026-07-07 | Author: Dirk Hacker (dehacker) | Assigned: unassigned | Labels: Description: **Summary:** * Unchecked Drupal checkboxes serialize as `"0"`. * `transforms.cast` only treats `'false'` as false, then `Boolean(value)`. * `Boolean("0") === true` → unchecked booleans flip to `true` on auto-save when another field changes. **Repro:** 1. Component with two boolean props (e.g. Hero Standard `popup_form` + `ppc_header`). 2. Open in Canvas editor; leave `popup_form` unchecked, toggle `ppc_header`. 3. Observe `popup_form` saved as `true`. **Fix:** Explicit handling when `to === 'boolean'` for `'0'`, `0`, `''`, `null`, `'false'`. ### [Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form](https://git.drupalcode.org/project/canvas/-/work_items/3591773) State: opened | Updated: 2026-07-07 | Author: Stephanie Galata (sgalata) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1334 [#3591773: Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form](https://git.drupalcode.org/project/canvas/-/merge_requests/1334) | State: opened | Author: Stephanie Galata (sgalata), 84 diff lines Description: ### Overview In the component inputs form, a boolean SDC prop rendered as a checkbox is initialized to *checked* even when its stored value is `false`. Confirmed on Canvas 1.7.1; the code is unchanged on `1.x`. The cause is in `getCurrentValueFromProps()` (`ui/src/components/form/react-hook-form/utils/index.ts`). For checkboxes, none of the early branches match a typical unchecked Drupal checkbox render array, so the function falls through to: - `props.value` / `props.attributes.value` — but a checkbox's `value` attribute is its **return value when checked** (usually `"1"`), not its state. … ### [Boolean props auto-enable when another prop is changed in the Canvas form](https://git.drupalcode.org/project/canvas/-/work_items/3591716) State: opened | Updated: 2026-07-07 | Author: Alamgir Hossain (alamgir.hossain.cse) | Assigned: unassigned | Labels: Description: ## Summary In Canvas, when editing a component that has boolean props (e.g. `card-program`), changing any non-boolean prop causes all boolean props to appear enabled (toggle switches flip to ON) even though the user never toggled them. ## Root causes Two bugs were identified: ### 1. `|| []` coerces boolean `false` to `[]` in `layoutModelSlice.ts` In `_addNewComponentToLayout` → `buildInitialData()`, when building the initial model for a newly dropped component: ```typescript // BEFORE (buggy): initialData.resolved[propName] = prop.default_values?.resolved || []; // For boolean false: fal… ### [Create new update path fixture: Drupal 11.3 + Canvas 1.7](https://git.drupalcode.org/project/canvas/-/work_items/3591774) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: DX (Developer Experience), Needs update path tests, Performance, category::task Description: - 11.2 support dropped in #3591764+ - critical translation support added in 1.8.0, in #3591727+ IOW: let's create a successor for `tests/fixtures/update/drupal-11.2.10-with-canvas-1.2.0.bare.php.gz`. ### [Explicitly support `comment` as a referenceable content entity type (stop omitting it from the content entity types endpoint)](https://git.drupalcode.org/project/canvas/-/work_items/3591674) State: opened | Updated: 2026-07-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::feature, internalHttpApi, priority::normal, state::accepted Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1106693](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1106693). ### Overview The content entity types endpoint lists which content entity types/bundles can be referenced. To decide eligibility it builds an unsaved **stub** entity per bundle and runs a `'view'` access check on it. For the `comment` entity type this check throws: `CommentAccessControlHandler::checkAccess()` dereferences the commented entity (`$entity->getCommentedEntity()`), which a bundle-level stub … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: closed | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: AKHIL BABU (AkhilBabu) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1330 [Issue #3591663: Fail validation for props that do not exist on a component](https://git.drupalcode.org/project/canvas/-/merge_requests/1330) | State: merged 2026-07-07 | Author: Abhishek Dhariwal (adaptative), 389 diff lines Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… --- 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 | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [Draft: Add Twig filter for image styles](https://git.drupalcode.org/project/canvas/-/merge_requests/536) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3562276-support-selection-of | 942 diff lines Description: Closes #3562276 ### [fix(Page): #3591763 Publishing a page without a URL alias fails: its empty...](https://git.drupalcode.org/project/canvas/-/merge_requests/1331) State: opened | Author: Fons Vandamme (f0ns) | Branch: 3591763-publishing-a-page-without-a-url-alias-fails-with-500-assertionerror-in-pagehooksensurepathautoskipped | 89 diff lines Description: Publishing a canvas_page without a URL alias fails with a 500 when Pathauto is installed. `ContentEntityStorageBase::invokeHook('presave')` runs field `preSave()` before presave hooks are invoked, and `FieldItemList::preSave()` filters empty items. A path item without an alias is empty and gets removed, so `PageHooks::ensurePathautoSkipped()` receives NULL from `first()` and the assertion fails. Pages with an existing alias are unaffected. This MR appends a new path item when the list is empty, then sets `PathautoState::SKIP` on it as before. It adds a `PagePathautoIntegrationTest` kernel tes… ### [Resolve #3587161 "Integrate ddev local devepment enviroment into canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1014) State: opened | Author: Jakob P (japerry) | Branch: 3587161-integrate-ddev-drupal-contrib-into | 1926 diff lines Description: This MR is designed to converge the various add-ons used to support canvas into one centralized and recommended development environment. It uses the architecture from ddev-drupal-contrib (but doesn't bring in the addon, see below) to create an ephemeral Drupal environment within the module, and add scaffolding to support the various test systems used within Canvas, including phpunit, Cypress, and Playwright (via the Lullabot/ddev-playwright add-on). It also merges in UI commands from the ddev-drupal-xb-dev addon, which shouldn't be needed anymore once this MR lands. ## Why ddev-drupal-contrib… ### [#3591698: Promote canvas_dev_translation into canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1258) State: opened | Author: Wim Leers (wimleers) | Branch: 3591698-rip-canvas-dev-translation | 287 diff lines Description: Drop `canvas_dev_translation`. AI-accelerated: Yes ## Testing instructions - [x] CI still passes - [ ] **Manually:** Translate a `ContentTemplate` component tree using TMGMT or Config Translation and observe it works - [ ] **Manually:** Translate a `Page` component tree using TMGMT or Config Translation and observe it works Closes #3591698 ### [Draft: Stage Canvas autosaves in a dedicated Workspace](https://git.drupalcode.org/project/canvas/-/merge_requests/1056) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3588540-stage-canvas-autosaves | 4843 diff lines Description: AI-Generated: Yes, Cursor was used to assist with the creation of this MR. ## Testing instructions * [ ] Apply MR + Run update hooks * [ ] Test making changes + publishing them Closes #3588540 ### [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1320) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591754-decouple-tmgmt | 1213 diff lines Description: The logic that extracts a component tree's translatable strings and writes translations back is moved out of `ComponentTreeFieldProcessor` (which extends a `tmgmt_content` class, so it only loads with TMGMT installed) into a standalone `ComponentTreeTranslator` service under `src/Translation/`. `ComponentTreeFieldProcessor` becomes a thin TMGMT adapter that delegates to it. `ComponentInputsTranslatablesExtractor` moves to `src/Translation/` alongside it. Behavior is unchanged; code is moved, not rewritten. This is needed to avoid duplication in https://git.drupalcode.org/project/canvas_transl… ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: closed | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [Draft: Issue #3591668: Add text-based comparison of entities UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1266) State: opened | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3591668-text-based-comparison-of-entities-ui | 5229 diff lines Description: ## Description Adds a text-based comparison view to the conflict-resolution UI so users can compare the published and auto-saved versions of a Canvas page as YAML. This is a stacked MR. The change for #3591668 is in commit `b6a8a7fc`; earlier commits belong to the conflict-detection and conflict-resolution dependencies. ### What changed - Added a **Text** tab alongside the existing Visual and Props views. - Fetches the published and auto-saved entity exports in parallel. - Displays a side-by-side YAML diff using `react-diff-viewer-continued`. - Highlights added, removed, and changed conten… ### [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 | 340 diff lines Description: **TL;DR:** Adds a new endpoint that provides Page entity in text-based format using default content exporter in core. For people with attention span or AI summary tools: BE part of "#3591668+" which is part of the "\[META\] Review of changes and Conflict resolution (https://git.drupalcode.org/project/canvas/-/work_items/3587587)". Adds the BE infrastructure required for the "Comparison of entities using text-based representation in side-by-side UI" capability. To keep the scope manageable, changes are limited to `Page` (`canvas_page`) entities. Effort is made to leave path open for other en… ### [Fix Canvas AI prompt reset on metadata changes](https://git.drupalcode.org/project/canvas/-/merge_requests/530) State: opened | Author: scott falconer (scottfalconer) | Branch: 3558257-changing-metadata-clears | 947 diff lines Description: ## Issue https://www.drupal.org/project/canvas/issues/3558257 ## Root cause `DeepChat` received inline object and function props — `images`, `requestBodyLimits`, the `connect` handler, and the style objects — recreated on every render. Editing page metadata re-rendered the component, so `DeepChat` saw new prop references, rebuilt its input, and cleared the typed prompt. ## Change - Memoize `DeepChat` and pass stable references. - Move static props to module-scope constants. - Move the `connect` handler into `useCallback`; it reads the latest values via refs. - Back the `onComponentRender` gu… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/canvas/-/merge_requests/1150) State: closed | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2116 diff lines Description: Relates to #3591556. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-testset-826530. ### [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(Internal HTTP API): #3591674 Support comment as a referenceable content entity type](https://git.drupalcode.org/project/canvas/-/merge_requests/1335) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591674-comment-referenceable | 239 diff lines Description: ## What this does The content-entity-reference picker lists referenceable content entity types by building a bundle-level stub for each bundle and running a `view` access check on it. For `comment`, core's `CommentAccessControlHandler::checkAccess()` ends every `view` branch with `->andIf($entity->getCommentedEntity()->access('view', …))`. A bundle stub has no commented (parent) entity, so `getCommentedEntity()` is `NULL`, the access check throws, and the defensive `try/catch` in `getBundleViewAccess()` silently dropped `comment` from the results — even for users holding `access comments`. T… --- COMMITS (24h) --- - [8a4bdf7a](https://git.drupalcode.org/project/canvas/-/commit/8a4bdf7a46ee13106c7fe737e131ba708586f47c) chore(Internal HTTP API): #3591669 Add heuristics for exposing fields/props to the content-entity-reference selection UI — Christian López Espínola (2026-07-07T23:11:41.000+00:00) - [192f61ff](https://git.drupalcode.org/project/canvas/-/commit/192f61ff43a455c4c0c3c7c345f4eaf725aeccd8) chore(Component sources): #3591727 Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites — Christian López Espínola (2026-07-07T17:37:44.000+00:00) - [55d37bc4](https://git.drupalcode.org/project/canvas/-/commit/55d37bc47649858ba7a0170dd318475460ae4fca) feat(conflict): #3591601 Rudimentary conflict resolution UI — Ravi Maniyar (2026-07-07T15:05:25.000+00:00) - [d750fb5c](https://git.drupalcode.org/project/canvas/-/commit/d750fb5ca08dcf9140f53ea2b7cc97ac1c1819a3) feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities" — Feliksas Mazeikis (2026-07-07T11:09:57.000+00:00) - [287f8951](https://git.drupalcode.org/project/canvas/-/commit/287f895113e08491b297cfc807c4869b0801d646) fix(AI): #3591663 Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props — Abhishek Dhariwal (2026-07-07T05:50:29.000+00:00) ======================================================================== ## [11] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Pravesh Poonia (Pravesh_Poonia) [1], Rob Loach (robloach), Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                      Context Control Center (CCC)

                      then use

                      ,

                      ,

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

                        How can I help on this project?

                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Assess duadp module's integration with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586322) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::plan Description: ## Problem/motivation Pointed out in these issues by flux423: - #3576092+s - #3577429+s The `duadp` module has a `duadp_ai_context` submodule. Let's understand how this is using ai_context to see if we need to factor in anything for beta4 or 1.1. ## Solution Assess the duadp` module's integration to see if anything can be learned from this, and create follow-up issues as needed. ### [Beta vs 1.1 CCC API gap analysis](https://git.drupalcode.org/project/ai_context/-/work_items/3586318) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description As we are getting closer to rc1, we need to do a gap analysis to see what are obvious API gaps that we should address prior to rc1 to properly enable contributed and custom module integration. ## Tasks * [x] Gather relevant beta3 and beta4 issues and documents * [x] Feed into fable 5 * [x] Review findings * [x] Add follow-up issues as needed ## Acceptance criteria * Analysis document is created and reviewed * Relevant follow-up issues are created ## Related issues - #3586289+s - #3581955+s - #3586281+s - #3586243+s - #3586268+s - #3586273+s ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !207 [Issue #3586299: Fix test and documentation consistency before rc1.](https://git.drupalcode.org/project/ai_context/-/merge_requests/207) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 621 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes improve test reliability and signal without changing production behavior. They are low-risk cleanup items suitable for pre-rc1. **Scope:** - **7.1** Standardize `#[RunTestsInSeparateProcesses]` on all Kernel, Functional, and FunctionalJavascript test classes (follow-up to #3586280). - **7.2** Replace documentation-only and introspection-only unit t… ### [Avoid functional-test dual-container traps](https://git.drupalcode.org/project/ai_context/-/work_items/3586325) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::needsReview Description: ## Problem/motivation Follow-up to: #3586258+s Pull item 7.3 from: #3586299+s _**Verify the issue problem and solution before proceeding.**_ ### Avoid functional-test dual-container traps **File:** - `tests/src/Functional/AiContextAdminSettingsTest.php` **Problem:** At least one functional test submits a form directly through the test container's `form_builder`. Functional tests run separate test and web-server containers, so direct form builder submission can miss browser/runtime behavior. **Recommended fix:** - Use `$this->drupalGet()` and browser-level `$this->submitForm()` when… ### [Add basic accessibility test coverage](https://git.drupalcode.org/project/ai_context/-/work_items/3586326) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::accepted Description: ## Problem/motivation Follow-up to: #3586258+s Pull item 7.5 from: #3586298+s _**Verify the issue problem and solution before proceeding.**_ ### Add basic accessibility test coverage **Files:** - FunctionalJavascript tests or a focused accessibility test suite **Problem:** No accessibility or axe-style assertions were found in the test suite. **Recommended fix:** - Add focused coverage for the pages changed by the accessibility fixes: context item list, agents overview, and overview page. - At minimum, test `Drupal.announce()` behavior for filters and visible labels for tooltip… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !212 [Issue #3586306: Update `ai_context_tags` have an `enforced` dependency on ai_context](https://git.drupalcode.org/project/ai_context/-/merge_requests/212) | State: opened | Author: Rob Loach (robloach), 369 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [CCC beta3 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586182) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/Motivation Planning issue for beta3 release See the [milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues ) for all issues. Key must have issues are listed here. --- ## Proposed Resolution **Many issues were already closed and noted here:** - #3567798: META CCC MVP 1.0 roadmap - #3577644: CCC beta1 release planning - #3585902: CCC beta2 release planning **These are the ones below have been the focus since 11 May 2026 for beta3.** --- ### Must haves #### Blocked - N/A #### Todo - #3586296: CCC beta3 QA - #3586295: Create CCC beta3 release … ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !205 [Issue #3586304: Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/merge_requests/205) | State: merged 2026-07-08 | Author: Juan Correa (jucs7), 228 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [[Meta] CCC cleanup from beta3 code review findings for beta3](https://git.drupalcode.org/project/ai_context/-/work_items/3586310) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, blocker::beta 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-beta3-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/e83cda3d7f0df7594af44885c7037325/ai_context-beta3-1.0.x-issues.md) ### Old docs Fable 5 fin… ### [AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path](https://git.drupalcode.org/project/ai_context/-/work_items/3586323) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !213 [Issue #3586323: Update agent edit form path in test.](https://git.drupalcode.org/project/ai_context/-/merge_requests/213) | State: merged 2026-07-07 | Author: Kristen Pol (kepol), 24 diff lines Description: ## Problem CI phpunit jobs are failing on multiple open MRs with the same functional test failure: - `AiContextAgentSettingsTest::testAgentNameLinkRespectsEditAccess` - Error: `No link containing href /admin/config/ai/agents/test_agent_link_access/edit/form found` Examples: - MR !210: https://git.drupalcode.org/project/ai_context/-/jobs/10792643 - MR !208: https://git.drupalcode.org/project/ai_context/-/jobs/10790623 MR !208 passed CI on 2026-07-03 and failed on 2026-07-07 with no ai_context code change in between. Composer resolved `drupal/ai_agents` 1.3.1 on the passing run and 1.3.2 on … ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, blocker::stable Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Create CCC beta3 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586295) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: ### Problem/Motivation Blocked by: #3586296+s Create CCC beta3 release. Tag: `1.0.0-beta3` ### Proposed resolution Create the release once at least the must-haves are done here: - #3586182+s - [beta3 milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues) ### Target date or deadline 6 July 2026 ### Remaining tasks - Wait on must-haves - Tag code - Create the release in UI - Celebrate! ### AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code … ### [CCC beta3 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586296) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: ## Problem/Motivation Blocked by: #3586294+s Need a QA script for beta 3 to go through and test before the release ## Proposed resolution Create script with at least all major features covered ## Target date or deadline **6 July 2026** ## Remaining tasks - Create script - Go through QA script --- ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human superv… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !194 [Issue #3586292: Ignore conditional context when disabled.](https://git.drupalcode.org/project/ai_context/-/merge_requests/194) | State: opened | Author: Kristen Pol (kepol), 1508 diff lines Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [Selector loads the entire catalog when an agent has no scope subscriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586315) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !210 [Issue #3586315: Avoid full catalog scan when agent has no scope subscriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/210) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 1082 diff lines Description: ## Problem Follow-up to: #3586294 Parent: #3586310 `AiContextSelector::getPrefilteredPublishedItemIds()` returns NULL when `$scopeSubscriptions` is empty, so the chunk loop loads **every published context item** (full entities including content fields) on every AI request. This hits the very common "global items only" agent configuration. With thousands of items that's dozens of chunked queries, thousands of entity hydrations, and thousands of per-item plugin `matchesCurrentContext()` calls per request — the `match_all` broad-scan warning only logs, it doesn't avoid the work. ## Resoluti… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !206 [Issue #3586303: Announce filtered row counts to screen readers in JS filter behaviors.](https://git.drupalcode.org/project/ai_context/-/merge_requests/206) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 69 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Usage record page leaks context item content and grants links without access checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586311) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !208 [Issue #3586311: Harden usage record and listing access checks.](https://git.drupalcode.org/project/ai_context/-/merge_requests/208) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 516 diff lines Description: ## Problem Follow-up to: #3586294 Parent: #3586310 `AiContextUsageRecordController` renders the full current content of the referenced context item via the entity view builder with no `access('view')` check. The route only requires `view ai context usage`, so a user with that permission alone can read the content of items they cannot view — notably items unpublished since the usage was recorded (viewing those requires `view any unpublished ai context item` or ownership). The same page also exposes affordances without matching access: - The context item label is disclosed via `toLink()` in… ### [Replace brittle hardcoded admin path assertions in functional and kernel tests with route-derived URLs](https://git.drupalcode.org/project/ai_context/-/work_items/3586324) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 14, blocker::stable Description: ## Problem Follow-up to: #3586323+s Several ai_context tests assert hardcoded admin URL paths instead of deriving expected paths from Drupal routes. This is the same failure class as [#3586323]: production code builds links with `Url::fromRoute()`, but tests break when an upstream module changes a route path. The agent edit form assertion was fixed separately in #3586323. This issue tracks the remaining brittle path assertions, grouped by risk. ### Pattern Brittle: ```php $this->assertSession()->linkByHrefExists('/admin/config/ai/agents/debug?agent_id=' . $agent_id); ``` Preferred: ``… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 982 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [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-07-07 | Author: Kristen Pol (kepol) | Assigned: Juan Correa (jucs7) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 3803 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 cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !204 [Issue #3586300: Updated CCC cacheability and access metadata.](https://git.drupalcode.org/project/ai_context/-/merge_requests/204) | State: opened | Author: Joshua Fernandes (joshua1234511), 120 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !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: opened | Author: Juan Correa (jucs7), 2954 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… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !159 [Issue #3586218: Allow subcontext scope to override parent scope.](https://git.drupalcode.org/project/ai_context/-/merge_requests/159) | State: opened | Author: Kristen Pol (kepol), 3229 diff lines Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code --- MERGE REQUESTS (24h) --- ### [Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/202) State: merged 2026-07-08 | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/documentation-api-consistency-3586305 | 140 diff lines Description: Fixed 6.1 and 6.2 6.1 — Context prefix alignment The fallback string in AiContextSystemPromptSubscriber didn't match the value in config/install/ai_context.settings.yml. Aligned the PHP fallback to the canonical config default. 6.2 — Stale getManageUrl() docs scope_api.md and custom_scopes.md were still referencing getManageUrl(): ?string which no longer exists. Updated both files to document the actual getManageRoute(): ?array method with the correct return structure. ### [Draft: Issue #3586283: Finalize Context Importer and Extensions page.](https://git.drupalcode.org/project/ai_context/-/merge_requests/188) State: opened | Author: Kristen Pol (kepol) | Branch: 3586283-extensions-importers | 77 diff lines Description: ## Description See #3586283+s ## Testing instructions 1. 2. ## Checklist - [ ] I have updated the MR title to use format: `Issue #1234: My issue title.` - [ ] I have updated the MR description to include: `Closes #1234` - [ ] 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, ca… ### [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3586302-clean-up-ccc-tooltip-truncation-and-icon-only-content | 216 diff lines Description: ## Description Closes #3586302 ## Testing Instructions Create one item with a **long label/description** and a **purpose**, mark it Global or scoped, and add **3+ scope values** (to trigger the `+N` pill). Add a child subcontext (one Required, one Conditional). **1. Items list — `/admin/config/ai/context/items`** * **Tab** through the page; with a screen reader on (VoiceOver): * **Mouse hover** still shows the tooltips. * Inspect DOM: decorative SVGs have `aria-hidden="true"` + `focusable="false"`. **2. Agents form — `/admin/config/ai/context/agents`** (agents with long descriptions) * … ### [Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools.](https://git.drupalcode.org/project/ai_context/-/merge_requests/116) State: opened | Author: Jesse Hofmann-Smith (jessehs) | Branch: 3581955-inject-context-into | 479 diff lines Description: Closes #3581955 --- COMMITS (24h) --- - [5778b42b](https://git.drupalcode.org/project/ai_context/-/commit/5778b42b6dd0c72e7d485acde32181e8cda0671e) Issue #3586304: Clean up CCC form and table accessibility cleanup — Juan Correa (2026-07-08T01:56:19.000+00:00) - [c41e48f0](https://git.drupalcode.org/project/ai_context/-/commit/c41e48f0290b5991f50dd8161069ad6deae4c985) Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. — Pravesh Poonia (2026-07-08T01:53:05.000+00:00) - [52da637e](https://git.drupalcode.org/project/ai_context/-/commit/52da637ef3fea28ae3e2203172c522b8aebff0cf) Issue #3586323: Update agent edit form path in test. — Kristen Pol (2026-07-07T15:35:38.000-07:00) ======================================================================== ## [12] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Sven Decabooter (svendecabooter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                        AI 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). ### [Refactor translation workflow to support Tool API and agent-driven translation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585523) State: opened | Updated: 2026-07-07 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: category::plan, code, priority::normal, state::needsWork Description: I am investigating whether I can have an AI Agent perform an entity translation, when a user requests this as part of an administrative AI agent interface. This would probably need some major refactoring of the module logic, since there are currently 2 endpoints: - UI batch translation - Drush command translation This would add a third one: Tool API translation So logic should be abstracted as much as possible where relevant, so all 3 entry points use the same code, rather than replicating it. I haven't investigated this further in detail, but already raising an issue here, in case someone … --- MERGE REQUESTS (24h) --- ### [Draft: Refactor entity translation into a shared orchestrator service](https://git.drupalcode.org/project/ai_translate/-/merge_requests/27) State: opened | Author: Sven Decabooter (svendecabooter) | Branch: 3585523-translation-worflow-refactor-1.3 | 1117 diff lines Description: ## Summary This MR starts the `ai_translate` refactoring needed to support a shared translation workflow across multiple entrypoints. It introduces a shared `EntityTranslationOrchestrator` service and moves duplicated entity-translation logic out of the UI controller and Drush command into that service. The goal is to establish one reusable path for entity translation instead of maintaining separate orchestration in each entrypoint. ## What changed Added: - `EntityTranslationOrchestratorInterface` - `EntityTranslationOrchestrator` - `EntityTranslationResult` Updated: - `src/Controller/AiTran… ### [Draft: Refactor entity translation into a shared orchestrator service](https://git.drupalcode.org/project/ai_translate/-/merge_requests/26) State: closed | Author: Sven Decabooter (svendecabooter) | Branch: 3585523-issue-branch | 1107 diff lines Description: ## Summary This MR starts the `ai_translate` refactoring needed to support a shared translation workflow across multiple entrypoints. It introduces a shared `EntityTranslationOrchestrator` service and moves duplicated entity-translation logic out of the UI controller and Drush command into that service. The goal is to establish one reusable path for entity translation instead of maintaining separate orchestration in each entrypoint. ## What changed Added: - `EntityTranslationOrchestratorInterface` - `EntityTranslationOrchestrator` - `EntityTranslationResult` Updated: - `src/Controller/AiTran… --- COMMITS (24h) --- (none) ======================================================================== ## [13] summariseModule:ai_vdb_provider_pinecone:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Pinecone VDB Provider (machine name: ai_vdb_provider_pinecone) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                          Pinecone VDB Provider

                          then use

                          ,

                          ,

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

                            How can I help on this project?

                            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Pinecone: Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-07-07 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [14] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                            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). ### [Add events for failures](https://git.drupalcode.org/project/agui/-/work_items/3590041) State: opened | Updated: 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: Ahmad Khalil (ahmad-khalil-imagex) | Labels: category::feature, code, priority::normal, v1.0.x-dev Description: Ideally when their are issues/timeouts with response, we have the ability to react to this. For example, let's say the remote throws some sort of exception, we could react to this in a meaningful way to the user. We should introduce some event triggers for these cases. ### [Debug should include timestamps](https://git.drupalcode.org/project/agui/-/work_items/3590042) State: opened | Updated: 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: Description: Debugging SSE events sometimes involves timing. Debug events should also include a human readable timestamp to help with this. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [15] 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] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [2] Fix PHPStan issues on API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3563396 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [5] 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 [6] Add YAML support to the MDX editor code blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586585 [7] AI CKEditor tools (Tone, Summarise) fail with "Call to a member function get() on null" on Drupal 11.4.0 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586584 [8] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [9] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [10] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [11] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [12] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [13] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [14] Resolve #3563396 "Fix phpstan issues api 2.0.x" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1074 [15] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [16] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [17] task: #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1759 [18] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1758 [19] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1757 [20] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1756 [21] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1755 [22] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1749 [23] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1752 [24] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1753 [25] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1754 [26] replace hardcoded "summarize" no-selection message with overridable... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1751 [27] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1748 [28] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1739 [29] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1750 [30] replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1240 [31] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1745 [32] Resolve #3574723 "Enforce execution principal" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1233 [33] Create a configurable search api processor for XB data (experience_builder, MR) — https://git.drupalcode.org/project/experience_builder/-/merge_requests/492 [34] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [35] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [36] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [37] Resolve #3548526 "1.3.x support file handling" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/79 [38] Issue #3558801: Route the OpenAI chat operation through the Responses API... (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/78 [39] Refactor HTTP client & add tests (ai_provider_google_vertex, MR) — https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/21 [40] fix: Milvus connection failures fixes. (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/51 [41] Resolve #3589484 "Milvus restart on failure" (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/45 [42] 3551588: Write (Create/Update) Operations Support (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/42 [43] ai_agents status subscriber fatals when tool status output has no function.name (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585983 [44] "Use Artifact storage" checkbox not necessary? (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586046 [45] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [46] force_value is ignored when hide_property is unchecked (AI Agents 1.2.x) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586045 [47] Fix AgentStatusSubscriber fatals when tool status output has no function.name (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/295 [48] Issue #3586042 Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/284 [49] fix: #3586045 persist force_value tool restrictions saved from the agent form (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/294 [50] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [51] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [52] AssertionError in AutoSaveHooks on non-node revision revert forms (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3578668 [53] Add content_translation_source and content_translation_outdated to `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591779 [54] Content template editor preview shows a stale snapshot instead of live edits (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591782 [55] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [56] Product verification: merging reference field-level field properties with the referenced entity's own data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591681 [57] UI Exception / 500 Error when triggering Preview on Content Templates causes persistent state lock (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591684 [58] Remove feature flag for content entity reference props and make it public (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591781 [59] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [60] bnjmnm investigation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591780 [61] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [62] Document relevance of ordering of operations in `Component::preSave` to prevent future bugs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591778 [63] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [64] Introduce the authentication and security model for headless draft preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591775 [65] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [66] Installing Canvas breaks private file system (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591647 [67] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [68] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [69] Canvas AI: remove unused historyStore subscription and decide on IndexedDB chat persistence (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [70] DX: `php (lint)` CI job runs against 11.2, fails on 11.3/11.4 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591767 [71] Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [72] Canvas AI: Client-side orchestration loop for Canvas AI(POC) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591615 [73] redirectCanvasToDefaultLanguage() fights modules that support language-prefixed editor URLs (e.g. canvas_multilingual), causing redirect loops (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591772 [74] Canvas AI: Agent system prompts render with an error in the MDX editor (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591776 [75] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [76] Make Canvas test suite pass on 11.4; drop support for 11.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591764 [77] Automated Drupal 12 compatibility fixes for canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591556 [78] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [79] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [80] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [81] Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591773 [82] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [83] Create new update path fixture: Drupal 11.3 + Canvas 1.7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591774 [84] Explicitly support `comment` as a referenceable content entity type (stop omitting it from the content entity types endpoint) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591674 [85] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [86] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [87] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [88] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [89] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [90] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [91] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [92] fix(Page): #3591763 Publishing a page without a URL alias fails: its empty... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1331 [93] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [94] Issue #3591779: Exclude content_translation_source/outdated from PropSourceSuggester suggestions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1340 [95] fix(Page builder): #3591782 Content template editor preview shows a stale snapshot instead of live edits (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1339 [96] chore(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [97] Resolve #3591781 "Remove feature flag for content entity reference props and make it public" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1338 [98] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [99] Draft: #3591780 playwright reports fail even when all shards pass (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1337 [100] Draft: Stage Canvas autosaves in a dedicated Workspace (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1056 [101] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [102] Draft: feat: Introduce the authentication and security model for headless draft preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1336 [103] chore(Component sources): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [104] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [105] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [106] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [107] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [108] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [109] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1150 [110] 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 [111] feat(Internal HTTP API): #3591674 Support comment as a referenceable content entity type (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1335 [112] #3591773: Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1334 [113] Issue #3591663: Fail validation for props that do not exist on a component (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1330 [114] Assess duadp module's integration with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586322 [115] Beta vs 1.1 CCC API gap analysis (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586318 [116] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [117] Avoid functional-test dual-container traps (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586325 [118] Add basic accessibility test coverage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586326 [119] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [120] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [121] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [122] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [123] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [124] [Meta] CCC cleanup from beta3 code review findings for beta3 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586310 [125] AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586323 [126] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [127] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [128] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [129] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [130] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [131] Selector loads the entire catalog when an agent has no scope subscriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586315 [132] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [133] Usage record page leaks context item content and grants links without access checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586311 [134] Replace brittle hardcoded admin path assertions in functional and kernel tests with route-derived URLs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586324 [135] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [136] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [137] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [138] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [139] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [140] Issue #3586306: Update `ai_context_tags` have an `enforced` dependency on ai_context (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/212 [141] Issue #3586299: Fix test and documentation consistency before rc1. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/207 [142] Issue #3586292: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [143] Issue #3586304: Clean up CCC form and table accessibility cleanup (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/205 [144] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [145] Issue #3586315: Avoid full catalog scan when agent has no scope subscriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/210 [146] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [147] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [148] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [149] 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 [150] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [151] 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 [152] Issue #3586300: Updated CCC cacheability and access metadata. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/204 [153] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [154] Issue #3586303: Announce filtered row counts to screen readers in JS filter behaviors. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/206 [155] Issue #3586311: Harden usage record and listing access checks. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/208 [156] Issue #3586323: Update agent edit form path in test. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/213 [157] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [158] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/27 [159] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/26 [160] Pinecone: Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [161] Add events for failures (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590041 [162] Debug should include timestamps (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590042 --- MODULE SUMMARIES ---

                                AI (Artificial Intelligence)

                                Two CKEditor UX issues were closed during the reporting period. The fix for AI CKEditor: Hardcoded "summarize" message shown for all plugins when no text is selected was merged, replacing the hardcoded "summarize" error message with an overridable getNoSelectedTextMessage() method in AiCKEditorPluginBase, allowing each plugin (Translate, Tone, SpellFix) to display its own contextual message. Related work on Plugin shouldn't show any fields if no text is selected was also merged, ensuring CKEditor plugins now hide all form fields when no text is selected, not just the error message.

                                A workaround for a core issue affecting the request stack was merged across multiple branches (commits a7c87e95 and f8d47c97). The AI CKEditor tools fail with "Call to a member function get() on null" on Drupal 11.4.0 issue was closed as a duplicate, indicating the workaround resolves the AiCKEditorPluginBase::buildCkEditorModalForm() crash on Drupal 11.4.0.

                                New agent skills are under development. Merge requests remain open for Add a configure-ai-settings agent skill (MR !1708) and [1.x] Add a setup-automators agent skill (MR !1759), both targeting drush-driven configuration via the Tool module. A new Add an AI reranking processor for Search API feature is in review (MR !1729), introducing an ai_reranker Search API processor that consumes the existing rerank operation type.

                                Work continues on PHPStan level 7 compliance for the API Explorer submodule (MR !1074 open) and on enforcing execution principals in AiAssistantApiRunner (MR !1233 open).

                                How can I help on this project?

                                Contributors: Abhisek Mazumdar (abhisekmazumdar), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [2], Daniel Rodriguez (danrod), scott falconer (scottfalconer)

                                ---

                                Experience Builder

                                A new merge request was opened to Create a configurable search api processor for XB data. This work introduces a Search API processor that can be configured to handle Experience Builder data, expanding the module's integration with Drupal's search ecosystem. The MR is currently awaiting review.

                                No merge requests were completed or commits pushed during this period. Development activity remains focused on extending the module's search capabilities through the processor configuration work.

                                How can I help on this project?

                                • Review the open Search API processor MR to provide feedback on the implementation and configuration approach.
                                • Test the configurable processor against various Search API configurations to validate compatibility and identify edge cases.

                                Contributors: Luhur Abdi Rizal (el7cosmos)

                                ---

                                AI Integration - ECA

                                Development activity this period focused on expanding ECA's coverage of AI operations and enabling deeper control over provider interactions.

                                A draft merge request was opened for Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA, introducing a new submodule that exposes AI module events (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) as first-class ECA events, conditions, and actions. The 4,886-line Draft: Resolve #3584407 "Ai eca interceptor" merge request remains under development and represents a significant architectural addition for intercepting and manipulating AI provider calls through ECA workflows.

                                Additionally, work began on Add ECA execute action for Summarization, which aims to add a missing execute action for the AI module's Summarization operation type. This would complete the set of per-operation actions alongside existing Chat, Embedding, Moderation, Speech to Text, and Text to Speech plugins.

                                How can I help on this project?

                                Review the draft AI ECA Interceptor merge request and provide feedback on the event architecture and plugin implementations. Test the Summarization action implementation once available to verify it correctly extends AiConfigActionBase and dispatches Summarization input objects.

                                Contributors: Marcus Johansson (Marcus_Johansson) ---

                                OpenAI Provider

                                File handling support for the 1.3.x branch was merged during this period via Resolve #3548526 "1.3.x support file handling", bringing 625 lines of changes to the codebase.

                                A significant architectural change is under review: Issue #3558801: Route the OpenAI chat operation through the Responses API... proposes migrating the chat operation from OpenAI's Chat Completions endpoint to the newer Responses API. This 1487-line MR reflects a shift in direction from an earlier approach that would have exposed Responses as a separate operation type. The Responses API is OpenAI's intended successor to Chat Completions, which will eventually be deprecated.

                                How can I help on this project?

                                Review the Responses API migration in MR !78, testing backward compatibility and validating the architectural shift from Chat Completions. Given the 1487-line changeset, particular attention to edge cases and streaming behavior would be valuable.

                                Contributors: Ahmad Khalil (ahmad-khalil-imagex), Bryan Sharpe (b_sharpe) ---

                                Google Vertex Provider

                                A significant Refactor HTTP client & add tests merge request was opened during this period. The MR introduces test coverage and refactors the HTTP client implementation, spanning over 1600 lines of diff. This work builds upon changes from a previous merge request focused on the same area. The refactor represents a substantial update to the module's architecture and quality assurance infrastructure.

                                No merge requests were merged and no commits were pushed during the reporting period. Activity was limited to the opening of the refactoring work.

                                How can I help on this project?

                                Review the Refactor HTTP client & add tests merge request, which is open and ready for feedback. Test the HTTP client changes and verify test coverage is comprehensive. Provide feedback on the refactored architecture and API design.

                                Contributors: Tamás Nagy (yce)

                                ---

                                Milvus VDB Provider

                                A merge request addressing Milvus restart on failure was merged during the reporting period, bringing 24 lines of changes to improve stability when the Milvus service falls over in Mac environments within DDEV. This fix targets scenarios where the vector database service fails while the rest of the DDEV site continues to function normally.

                                A separate merge request remains open addressing Milvus connection failures fixes, which involves 253 lines of changes. This larger patch is currently awaiting review and appears to tackle broader connection reliability issues with the Milvus vector database provider.

                                The focus for this module continues to be improving connection resilience and handling failure scenarios in local development environments, particularly around DDEV configurations.

                                How can I help on this project?

                                • Review the open connection failures fixes merge request to help move the 253-line patch toward completion.
                                • Test the merged restart-on-failure fix in Mac and DDEV environments to verify stability improvements and report any edge cases.

                                Contributors: Remco Hoeneveld (RemcoHoeneveld), Scott Euser (scotteuser) [1]

                                ---

                                Model Context Protocol

                                Activity over the past 24 hours centered on expanding the module's capabilities beyond read-only operations. A merge request for Write (Create/Update) Operations Support was opened, adding 1237 lines of code to enable create and update functionality. The MR remains under review and has not yet been merged.

                                No commits were pushed directly to the repository during this period, and no issues were updated or commented on. The write operations branch represents the primary area of active development.

                                How can I help on this project?

                                • Review the Write (Create/Update) Operations Support merge request, testing the create and update operations with various entity types and access permissions.
                                • Check for API documentation completeness and coding standards compliance in the 1237-line changeset.
                                Contributors: Shubham Goel (shubhamgoel) ---

                                AI Agents

                                The fix for force_value tool restrictions was merged, resolving an issue where forced argument values were ignored when the hide_property checkbox was left unchecked. The bug stemmed from AiAgentForm::save() referencing an undefined $restrictions variable, which prevented the action, values, hide_property, and not_break keys from being persisted. The merge includes a new functional test, ForceValueFormPersistenceTest, which verifies that restrictions are correctly saved and enforced at runtime.

                                Two open merge requests are under review. MR !295 addresses AgentStatusSubscriber fatals when tool status output has no function.name, fixing a fatal error in AgentStatusSubscriber.php:241 where getFunctionCallFromFunctionName() receives null instead of a string. MR !284 proposes switching the structured output schema field from a plain textarea to the ai_json_schema editor element, adding CodeMirror syntax highlighting and JSON linting to AiAgentForm::buildFormMetadata().

                                A support issue was opened questioning whether the "Use Artifact storage" checkbox is necessary, after observing that artifact storage is used even when the checkbox is disabled.

                                How can I help on this project?

                                Review MR !295 for the AgentStatusSubscriber fatal fix or MR !284 for the JSON schema editor improvement. Help investigate the artifact storage checkbox behavior by reproducing and documenting expected versus actual behavior.

                                Contributors: Ahmad Khader (Ahmad-Khader), AKHIL BABU (AkhilBabu), Prabhavathi Vanipenta (prabha1997)

                                ---

                                Tool API

                                Activity in the Tool API module remained quiet over the past 24 hours, with no merge requests merged or commits pushed. The primary focus continues to be research and proof of concept work around File Input Handling, which explores how Tools should accept and process file inputs securely when invoked by AI agents. Key research areas include input formats, file loading, and normalization schemas. This work is part of the AI Initiative Sprint and will inform decisions about whether file handling features should be implemented within this module or externally.

                                No significant blockers were reported during this period, though the file input research remains in progress and is currently assigned.

                                How can I help on this project?

                                The Tool API has limited open work at present. Developers interested in contributing could monitor the File Input Handling research issue for emerging tasks once the proof of concept concludes and follow-up issues are created. Check the project's issue queue for any newly opened unassigned issues that may benefit from fresh contributions.

                                ---

                                Drupal Canvas

                                Two major features merged this period. The rudimentary conflict resolution UI landed, providing a paginated conflict viewer with viewport selection and API integration. Users can now resolve conflicts by choosing between auto-saved and published entity versions. The heuristics for the content-entity-reference selection UI also merged, filtering out internal metadata (such as revision_default, workspace) and deduplicating computed properties like image URLs from the picker.

                                A critical bug fix addressed validation errors when deleting optional props from SDC or code components. The fix stores each prop's translatability per component version, preventing config-defined component trees from breaking when optional props are removed. Another fix resolved AI response validator failures for non-existent props by adding explicit validation.

                                Several issues remain open with active MRs: stale content template previews, filtering translation metadata from PropSourceSuggester, and removing the content entity reference feature flag. Progress on Drupal 12 compatibility and boolean prop handling continues.

                                How can I help on this project?

                                Review the open MR for stale content template editor preview snapshots. Test the PropSourceSuggester translation metadata filter. Pick up unassigned issues like documenting Component::preSave operation ordering.

                                Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Christian López Espínola (penyaskito) [2], Feliksas Mazeikis (f.mazeikis) [1], Fons Vandamme (f0ns), Jakob P (japerry), Lauri Timmanee (lauriii), project update bot (Project-Update-Bot), Ravi Maniyar (ravi.maniyar.123) [1], scott falconer (scottfalconer), Stephanie Galata (sgalata), Wim Leers (wimleers)

                                ---

                                Context Control Center (CCC)

                                Two accessibility and documentation merge requests landed in the reporting period. Clean up CCC form and table accessibility cleanup replaced disabled read-only selects with plain text, added visible labels for screen readers, updated JavaScript filter behaviors to announce result counts via Drupal.announce(), and added a table caption to the agent overview. Clean up CCC documentation and API consistency aligned the context prefix fallback string in AiContextSystemPromptSubscriber with the install config default and updated scope API documentation to replace stale getManageUrl() references with the current getManageRoute() method signature.

                                A test compatibility issue was resolved when AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path closed after updating the hardcoded agent edit form path assertion to use the route-derived URL, preventing breakage when upstream modules change route paths.

                                Work continues on several API stability blockers ahead of the beta3 release and eventual rc1. Beta vs 1.1 CCC API gap analysis closed after findings were fed into follow-up issues covering scope plugin naming, conditional subcontext behavior, and selector performance. Multiple open merge requests address cacheability metadata, access checks in usage record pages, tooltip accessibility, and inconsistencies in constructor promotion and local variable naming conventions.

                                How can I help on this project?

                                Review open merge requests for Usage record page leaks context item content and grants links without access checks (MR !208), Selector loads the entire catalog when an agent has no scope subscriptions (MR !210), or Exposed tooltip/truncated content and icon meaning to assistive tech (MR !199). Test Improve conditional subcontext disabled-state behavior and admin UX (MR !194) manually with realistic subcontext hierarchies.

                                Contributors: Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Pravesh Poonia (Pravesh_Poonia) [1], Rob Loach (robloach), Tamas Balog (tbalog)

                                ---

                                AI translate

                                A significant refactoring effort is underway to unify the module's translation workflow across multiple entrypoints. Currently, entity translation logic is duplicated between the UI batch translation controller and the Drush command. Work has begun to consolidate this into a shared orchestrator pattern to support a third entrypoint: Tool API translation for agent-driven workflows.

                                A draft merge request, Refactor entity translation into a shared orchestrator service, was opened during the reporting period. The refactor introduces EntityTranslationOrchestratorInterface, EntityTranslationOrchestrator, and EntityTranslationResult as new service components. The UI controller and Drush command are being updated to delegate orchestration to this shared service rather than maintaining separate implementations. The MR remains in draft status, addressing the Refactor translation workflow to support Tool API and agent-driven translation issue, which is currently marked as needs work.

                                How can I help on this project?

                                Review the draft orchestrator refactor MR and provide feedback on the service architecture, interface design, or test coverage. Testing the refactored workflow against existing UI and Drush translation scenarios would help validate the consolidation approach.

                                Contributors: Sven Decabooter (svendecabooter)

                                ---

                                Pinecone VDB Provider

                                Activity on the Pinecone VDB Provider remained quiet during this period, with no merge requests merged or commits pushed. The open feature request for Pinecone: Support batching on indexing operations continues to await implementation. This issue proposes extending batching capabilities to the Pinecone provider, similar to work previously completed in the Milvus provider. No related merge requests have been opened yet, and the issue remains unassigned and in needs review state.

                                How can I help on this project?

                                • Pick up the batching operations feature request by implementing support for batch indexing, following the Milvus provider's approach as a reference.
                                • Review the provider's existing indexing API methods to identify where batching would provide the most performance benefit for bulk operations.
                                ---

                                AG-UI

                                Activity in the AG-UI module over the past 24 hours focused on issue tracking rather than code integration. Two feature requests were updated relating to error handling and debugging capabilities for server-sent events (SSE).

                                The Add events for failures issue proposes introducing event triggers to handle remote exceptions and timeouts in a user-friendly manner. This would allow developers to react programmatically when the remote service throws exceptions or experiences connectivity issues.

                                A separate request to Debug should include timestamps aims to improve SSE debugging by adding human-readable timestamps to debug events, which would assist with timing-related troubleshooting.

                                No merge requests were opened or merged, and no commits were pushed during this period. Both issues remain open with no related patches or merge requests attached.

                                How can I help on this project?

                                ======================================================================== ## [16] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 0 Judge flags: 6 ======================================================================== ## [17] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [2], Daniel Rodriguez (danrod), scott falconer (scottfalconer)". 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). ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-07-08 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Fix PHPStan issues on API Explorer](https://git.drupalcode.org/project/ai/-/work_items/3563396) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Daniel Rodriguez (danrod) | Labels: aiApiExplorer, category::task, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1074 !1063 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation In 2.0.x we have upped the phpstan level to 7, this has added a lot of issues that needs to be resolved. We will fix these in steps. This issue will make sure that AI API Explorer is fixed. Proposed resolution Fix all t… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Has Testing Steps, aiSearch Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [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-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 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… ### [Add YAML support to the MDX editor code blocks](https://git.drupalcode.org/project/ai/-/work_items/3586585) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent Description: ## Problem/Motivation The MDX editor currently does not support YAML code blocks. The system prompts of the Canvas AI agents contain YAML, so the MDX editor cannot render those blocks properly. We need YAML supported as a code-block language in the MDX editor. ## Steps to reproduce 1. Using `ai_agents` `^1.3`, create an AI agent. 2. In the instructions field, insert a code block. 3. Try to set the code block language to YAML. 4. YAML is not available in the language list. ### [AI CKEditor tools (Tone, Summarise) fail with "Call to a member function get() on null" on Drupal 11.4.0](https://git.drupalcode.org/project/ai/-/work_items/3586584) State: closed | Updated: 2026-07-07 | Author: Nick Abbott (SirClickALot) | Assigned: unassigned | Labels: state::closed, why::duplicate Description: Problem/motivation On Drupal 11.4.0, using any AI CKEditor tool that relies on the shared `AiCKEditorPluginBase::buildCkEditorModalForm()` method (confirmed with Tone and Summarize) throws an uncaught error and returns a 500 response from `/api/ai-ckeditor/dialog`. This happens on two independent Drupal 11.4.0 sites with no contrib modules in common (one runs Markdownify, CrowdSec, and Advban; the other runs none of these), which rules out a third-party module conflict. The root cause is this line in `AiCKEditorPluginBase.php`: $editor_id = $this->requestStack->getParentRequest()->get('… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-07-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1759 [task: #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/merge_requests/1759) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 2343 diff lines Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3575346) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1739 [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1739) | State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev), 275 diff lines Description: >>> [!note] Migrated issue Reported by: [annmarysruthy](https://www.drupal.org/user/3664314) Related to !1240 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: All AI CKEditor plugins display "You must select some text before you can summarize it" even when the active plugin is Translate, Tone, or SpellFix.[One-line issue summary for stakeholders] Check-in Date: 02/24/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Most AI CKEditor plugins (e.g., Translate, Tone, SpellFix, etc.) require selec… ### [Plugin shouldn't show any fields if no text is selected](https://git.drupalcode.org/project/ai/-/work_items/3557016) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1745 [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1745) | State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev), 47 diff lines Description: >>> [!note] Migrated issue Reported by: [damienmckenna](https://www.drupal.org/user/108450) Related to !1117 >>> Problem/Motivation When opening a ckeditor plugin, if no text is selected the UI shows the "You must select some text before you can summarize it." message, but then will also show some of the other fields from the specific plugin, e.g. the Tone plugin shows the "Choose tone" selector. Proposed resolution Don't show anything in the ckeditor plugin popup (particularly for the Tone plugin) if no text has been selected. Remaining tasks Don't show anything in the ckeditor plugin po… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, UX, aiAutomators Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… --- MERGE REQUESTS (24h) --- ### [Resolve #3563396 "Fix phpstan issues api 2.0.x"](https://git.drupalcode.org/project/ai/-/merge_requests/1074) State: opened | Author: Daniel Rodriguez (danrod) | Branch: 3563396-fix-phpstan-issues-api-2.0.x | 1368 diff lines Description: Closes #3563396 ### [Issue #3586543: Add AI reranking processor for Search API.](https://git.drupalcode.org/project/ai/-/merge_requests/1729) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3586543-add-ai-reranking-processor-for-search-api | 1273 diff lines Description: ## Description A new Search API processor plugin (`ai_reranker`) that re-orders query results using the `rerank` operation type already in AI Core. The `rerank` operation was added in #3488114 but nothing consumed it for Search API. #3557901 proposed putting reranking in `ai_search`, but reranking is a generic capability. It belongs in the `ai` core module where the operation type itself lives, so it works with any Search API backend (database, Solr, anything), not just the vector backend. **New files:** - `src/Plugin/search_api/processor/AiReranker.php`: `ProcessorPluginBase` plugin runni… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1758) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95-3 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1757) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95-2 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1756) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-a7c87e95 | 22 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… ### [Workaround until core issue is fixed](https://git.drupalcode.org/project/ai/-/merge_requests/1755) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherr-pick-a2f45e68330b1fd1910c12a653885ce25138ea5d | 22 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1749) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6-2 | 69 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1752) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97 | 275 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1753) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97-2 | 275 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… ### [feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all...](https://git.drupalcode.org/project/ai/-/merge_requests/1754) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-f8d47c97-3 | 275 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… ### [replace hardcoded "summarize" no-selection message with overridable...](https://git.drupalcode.org/project/ai/-/merge_requests/1751) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4fe69426 | 267 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1748) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6 | 47 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Cherry-pick from 2.0.x](https://git.drupalcode.org/project/ai/-/merge_requests/1750) State: merged 2026-07-07 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-4ed89fe6-3 | 47 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… ### [replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin](https://git.drupalcode.org/project/ai/-/merge_requests/1240) State: merged 2026-07-07 | Author: Ann Mary Sruthy (annmarysruthy) | Branch: 3575346-ai-ckeditor-hardcoded | 267 diff lines Description: feat: #3575346 AI CKEditor: replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin Closes #3575346 ### [Resolve #3574723 "Enforce execution principal"](https://git.drupalcode.org/project/ai/-/merge_requests/1233) State: opened | Author: scott falconer (scottfalconer) | Branch: 3574723-enforce-execution-principal | 735 diff lines Description: Closes #3574723 --- COMMITS (24h) --- - [a7c87e95](https://git.drupalcode.org/project/ai/-/commit/a7c87e9581fce3537894d1aed47edc110bae06c2) Workaround until core issue is fixed — Artem Dmitriiev (2026-07-07T08:30:30.000+00:00) - [f8d47c97](https://git.drupalcode.org/project/ai/-/commit/f8d47c973d65669fc7b2f13cfa00705d0eb53111) feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... — Artem Dmitriiev (2026-07-07T07:29:14.000+00:00) ======================================================================== ## [18] summariseModule:experience_builder:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Experience Builder (machine name: experience_builder) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Luhur Abdi Rizal (el7cosmos)". 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

                                  Experience Builder

                                  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). (none) --- MERGE REQUESTS (24h) --- ### [Create a configurable search api processor for XB data](https://git.drupalcode.org/project/experience_builder/-/merge_requests/492) State: opened | Author: Luhur Abdi Rizal (el7cosmos) | Branch: 3483301-create-a-configurable | 470823 diff lines Description: Closes #3483301 --- COMMITS (24h) --- (none) ======================================================================== ## [19] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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). ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: opened | Updated: 2026-07-08 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ricardo Castañeda (cadence96) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… --- 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 | 4886 diff lines Description: Closes #3584407 --- COMMITS (24h) --- (none) ======================================================================== ## [20] summariseModule:ai_provider_openai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: OpenAI Provider (machine name: ai_provider_openai) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khalil (ahmad-khalil-imagex), Bryan Sharpe (b_sharpe)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                      OpenAI Provider

                                      then use

                                      ,

                                      ,

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

                                        How can I help on this project?

                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [Resolve #3548526 "1.3.x support file handling"](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/79) State: merged 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Branch: 3548526-1.3.x-support-file-handling | 625 diff lines Description: Closes #3548526 ### [Issue #3558801: Route the OpenAI chat operation through the Responses API...](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/78) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3558801-responses-api-chat | 1487 diff lines Description: Issue #3558801: Route the OpenAI chat operation through the Responses API instead of Chat Completions. # MR Summary — Convert the OpenAI chat operation to the Responses API (Issue #3558801) ## Why this was done OpenAI's Responses API is the successor to Chat Completions, and OpenAI intends to eventually deprecate Chat Completions. The issue originally proposed exposing Responses as a separate responses operation type (MR !56), but the maintainers (comments #6 and #9) rejected that direction: * No other provider distinguishes chat vs. responses — the operation type doesn't change, only Open… --- COMMITS (24h) --- (none) ======================================================================== ## [21] summariseModule:ai_provider_google_vertex:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Google Vertex Provider (machine name: ai_provider_google_vertex) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Tamás Nagy (yce)". 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

                                        Google Vertex Provider

                                        then use

                                        ,

                                        ,

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

                                          How can I help on this project?

                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [Refactor HTTP client & add tests](https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/21) State: opened | Author: Tamás Nagy (yce) | Branch: 3567022-add-test-coverage | 1626 diff lines Description: Includes changes from https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/16/commits. --- COMMITS (24h) --- (none) ======================================================================== ## [22] summariseModule:ai_vdb_provider_milvus:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Milvus VDB Provider (machine name: ai_vdb_provider_milvus) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Remco Hoeneveld (RemcoHoeneveld), Scott Euser (scotteuser) [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                          Milvus VDB Provider

                                          then use

                                          ,

                                          ,

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

                                            How can I help on this project?

                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [fix: Milvus connection failures fixes.](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/51) State: opened | Author: Remco Hoeneveld (RemcoHoeneveld) | Branch: 3608584-milvus-connection-failures | 253 diff lines Description: Closes #3608584 ### [Resolve #3589484 "Milvus restart on failure"](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/45) State: merged 2026-07-07 | Author: Scott Euser (scotteuser) | Branch: 3589484-milvus-restart-on-failure | 24 diff lines Description: Closes #3589484 --- COMMITS (24h) --- - [da61ea23](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/commit/da61ea230122726f6e38814368a18f23eb5f71b7) fix: #3589484 Milvus sometimes falls over in Mac within DDEV yet the rest of the DDEV site works fine — Scott Euser (2026-07-07T08:37:21.000+00:00) ======================================================================== ## [23] summariseModule:mcp:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Shubham Goel (shubhamgoel)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                            Model Context Protocol

                                            then use

                                            ,

                                            ,

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

                                              How can I help on this project?

                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). (none) --- MERGE REQUESTS (24h) --- ### [3551588: Write (Create/Update) Operations Support](https://git.drupalcode.org/project/mcp/-/merge_requests/42) State: opened | Author: Shubham Goel (shubhamgoel) | Branch: 3551588-write-op-create-update | 1237 diff lines Description: Closes #3551588 --- COMMITS (24h) --- (none) ======================================================================== ## [24] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khader (Ahmad-Khader), AKHIL BABU (AkhilBabu), Prabhavathi Vanipenta (prabha1997)". 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). ### [ai_agents status subscriber fatals when tool status output has no function.name](https://git.drupalcode.org/project/ai_agents/-/work_items/3585983) State: opened | Updated: 2026-07-08 | Author: scott falconer (scottfalconer) | Assigned: unassigned | Labels: automation::suggestionExists, category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !295 [Fix AgentStatusSubscriber fatals when tool status output has no function.name](https://git.drupalcode.org/project/ai_agents/-/merge_requests/295) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 345 diff lines Description: - Triggered through: ai_agents_debugger running Content Type Agent with EchoAI. - Problem: Debugger gets EchoAI output, then the response handling fatals while recording tool/status information. - Evidence: FunctionCallPluginManager::getFunctionCallFromFunctionName(): Argument #1 ($function_name) must be of type string, null given - Call site: web/modules/contrib/ai_agents/src/EventSubscriber/ AgentStatusSubscriber.php:241 - Relevant code behavior: $tool->getOutputRenderArray() can produce data without $tool_as_array['function']['name'], but line 241 pas… ### ["Use Artifact storage" checkbox not necessary?](https://git.drupalcode.org/project/ai_agents/-/work_items/3586046) State: opened | Updated: 2026-07-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::support, priority::normal, state::accepted Description: I've recently noticed that tools in my agents are using artifact storage even when I don't have the "use artifact storage" enabled in the tool configuration. For example, I am using the "Load entity by ID" tool - without "Use artifact storage" enabled. After running the agent, looking in the log, I see: > Tool Plugin executed successfully: Successfully loaded node entity with ID 108 > An artifact has been created for the returned loaded_entity output. To use this entity for subsequent tool input arguments, pass the artifact string '{{entity:node:108:en}}' for entity inputs. > The artifact e… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-07-07 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !284 [Issue #3586042 Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/merge_requests/284) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 53 diff lines Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [force_value is ignored when hide_property is unchecked (AI Agents 1.2.x)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586045) State: closed | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, state::fixed Description: ### Summary When a tool argument is restricted with the **Force value** action but **Hide property is left unchecked**, the forced value is not enforced at execution time. The model can call the tool with any value it chooses, and the tool runs with that value instead of the forced one. ### Steps to reproduce 1. Create an AI agent that uses the **AI Search: RAG search** (`ai_search_rag_search`) tool. 2. In the tool usage limits, set the **index** argument to **Force value → `drupal`**, and leave **Hide property unchecked**. Configure this via the AI Agents Explorer. 3. Open the agent in the… --- MERGE REQUESTS (24h) --- ### [fix: #3586045 persist force_value tool restrictions saved from the agent form](https://git.drupalcode.org/project/ai_agents/-/merge_requests/294) State: merged 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Branch: 3586045-force-value-bug | 169 diff lines Description: ## Summary `AiAgentForm::save()` referenced an undefined `$restrictions` variable while building `tool_usage_limits`, so a force_value restriction was stored without its `action`, `values`, `hide_property` and `not_break`. The forced value was then ignored at runtime regardless of whether hide_property was enabled. ## Fix Build each restriction from the submitted `$values` and store the processed array. ## Test Adds `ForceValueFormPersistenceTest` (functional): as the root user it enables the `ai_agent:list_config_entities` tool, submits a force_value restriction on `entity_type` through … --- COMMITS (24h) --- (none) ======================================================================== ## [25] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                                                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). ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [26] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Christian López Espínola (penyaskito) [2], Feliksas Mazeikis (f.mazeikis) [1], Fons Vandamme (f0ns), Jakob P (japerry), Lauri Timmanee (lauriii), project update bot (Project-Update-Bot), Ravi Maniyar (ravi.maniyar.123) [1], scott falconer (scottfalconer), Stephanie Galata (sgalata), Wim Leers (wimleers)". 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). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-07-08 | 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: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [AssertionError in AutoSaveHooks on non-node revision revert forms](https://git.drupalcode.org/project/canvas/-/work_items/3578668) State: opened | Updated: 2026-07-08 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, category::bug Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !716 >>> - With canvas enabled, opening the AI Context revision revert confirmation route throws AssertionError: assert($entity instanceof RevisionableInterface) in canvas/ src/Hook/AutoSaveHooks.php. - Reproduced against ai_context issue https://git.drupalcode.org/project/ai_context/-/work_items/3577427 - The failure is not specific to AI Context logic; Canvas currently assumes revert forms are either NodeRevisionRevertForm or EntityFormInterface. - This likely should be generalized fo… ### [Add content_translation_source and content_translation_outdated to `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()`](https://git.drupalcode.org/project/canvas/-/work_items/3591779) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, priority::normal, shapeMatching, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1340 [Issue #3591779: Exclude content_translation_source/outdated from PropSourceSuggester suggestions](https://git.drupalcode.org/project/canvas/-/merge_requests/1340) | State: opened | Author: Christian López Espínola (penyaskito), 93 diff lines Description: ## Problem/Motivation `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()` filters out entity base fields that are never meaningful to offer as prop sources (for example `default_langcode`, `revision_default` and `revision_log_message`). When one of a content entity type's bundles is translatable, the `content_translation` module adds two fixed-name bookkeeping base fields to that entity type: `content_translation_source` and `content_translation_outdated`. These hold internal translation metadata and are never meaningful to display, but `isConsideredIrrelevant()` did … ### [Content template editor preview shows a stale snapshot instead of live edits](https://git.drupalcode.org/project/canvas/-/work_items/3591782) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, category::bug, pageBuilder, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1339 [fix(Page builder): #3591782 Content template editor preview shows a stale snapshot instead of live edits](https://git.drupalcode.org/project/canvas/-/merge_requests/1339) | State: opened | Author: Christian López Espínola (penyaskito), 89 diff lines Description: ### Overview In a content template editor, after previewing the template and returning to the editor, the preview frame keeps showing a **stale preview snapshot** instead of the live editor content. Subsequent edits — for example linking a component prop to an entity field, or changing a text field — update the form and the model, but the preview frame does not reflect them. The edits appear to have no effect until an unrelated action forces a fresh render. The editor frame's source is selected as `snapshotHTML || html`: the preview snapshot takes precedence over the live editor html wheneve… ### [Add heuristics for exposing fields/props to the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/work_items/3591669) State: closed | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii), Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: category::task, internalHttpApi, priority::critical, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1289 [chore(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1289) | State: merged 2026-07-07 | Author: Christian López Espínola (penyaskito), 1222 diff lines Description: ### Overview When a Code Component Developer uses the `content-entity-reference` "Typed Data browser" UI (added in #3585354) to pick which entity data a prop consumes, the picker offers fields and properties it should not: - **Internal metadata** that storage would reject anyway (e.g. the `revision_default` / `workspace` base fields). - **A duplicated image URL**: the `image` field surfaces *"Resolved image URL with ?alternateWidths query parameter"* twice, because the `src` and `src_with_alternate_widths` computed properties share that label. `src` exists precisely as the developer-facing a… ### [Product verification: merging reference field-level field properties with the referenced entity's own data](https://git.drupalcode.org/project/canvas/-/work_items/3591681) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Lauri Timmanee (lauriii) | Labels: DX (Developer Experience), Needs product manager review, category::task, dataModel Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1104077](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1104077). ### Overview !1112 merges the reference field's own field-level properties (e.g. an image reference's `alt`, `width`, `height`, `src`) together with the data of the entity it points to (e.g. that file/user entity's own fields) into a single object. A product manager needs to confirm this merged shape is the intended editor/component experience before it is relied upon. Concrete example of the produced … ### [UI Exception / 500 Error when triggering Preview on Content Templates causes persistent state lock](https://git.drupalcode.org/project/canvas/-/work_items/3591684) State: closed | Updated: 2026-07-08 | Author: Mayur Sose (mayur-sose) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, category::bug, pageBuilder, priority::critical Description: A regression has introduced a Preview button for Content Templates, which was previously hidden. Clicking this button triggers a 500 Internal Server Error API exception. Furthermore, attempting to exit the preview state fails to clear the editor state, resulting in a persistent UI layout lock across all subsequent pages or templates until a hard browser refresh is performed. Technical Impact: Backend: The system executes an unhandled or invalid exception routine when validating the entity bundle type against the preview controller endpoint. Frontend: The application state machine fails to re… ### [Remove feature flag for content entity reference props and make it public](https://git.drupalcode.org/project/canvas/-/work_items/3591781) State: opened | Updated: 2026-07-08 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1338 [Resolve #3591781 "Remove feature flag for content entity reference props and make it public"](https://git.drupalcode.org/project/canvas/-/merge_requests/1338) | State: opened | Author: Christian López Espínola (penyaskito), 188 diff lines Description: Content entity reference props were introduced behind a hidden dev feature flag in #3591711: a hidden `canvas_dev_er` module exposes `drupalSettings.canvas.devEntityReferenceMode`, and the code editor only shows the "Content entity reference" prop type when that setting is `true` (except for existing components that already use it, so they remain editable). The feature is now ready to be released. This issue tracks removing the feature flag and making content entity reference props public. ### Proposed resolution - Remove the hidden `canvas_dev_er` module and the `drupalSettings.canvas.devE… ### [Add feature flag for content entity reference props](https://git.drupalcode.org/project/canvas/-/work_items/3591711) State: closed | Updated: 2026-07-07 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: Content entity reference props are not fully stable yet, so the code editor should only show this prop type when an explicit dev feature flag is enabled. Add a hidden `canvas_dev_er` module. When enabled, Canvas exposes `drupalSettings.canvas.devEntityReferenceMode`. The code editor should show the Content entity reference prop type only when that setting is `true`. Existing components that already use content entity reference props should continue to show that prop type so they remain editable. ### [bnjmnm investigation](https://git.drupalcode.org/project/canvas/-/work_items/3591780) State: opened | Updated: 2026-07-07 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1337 [Draft: #3591780 playwright reports fail even when all shards pass](https://git.drupalcode.org/project/canvas/-/merge_requests/1337) | State: opened | Author: Ben Mullins (bnjmnm), 123 diff lines Description: will elaborate depending on investigation results ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: closed | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, category::task, componentSources Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [chore(Component sources): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: merged 2026-07-07 | Author: Christian López Espínola (penyaskito), 4999 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Document relevance of ordering of operations in `Component::preSave` to prevent future bugs](https://git.drupalcode.org/project/canvas/-/work_items/3591778) State: opened | Updated: 2026-07-07 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: DX (Developer Experience), category::task, configManagement, priority::normal Description: ### Overview `Component::preSave()` runs a sequence of self-healing config updaters (`CanvasConfigUpdater` methods). Their relative order is significant, but nothing documents it: - A heal that changes versioned settings creates a new active version (e.g. the `required`-flag heal), which changes what "the active version" is for every heal that runs after it. - A heal that derives data from the live implementation (e.g. the `derived_schema_metadata` backfill from #3591727) therefore produces different per-version outcomes depending on whether it runs before or after a version-creati… ### [Rudimentary conflict resolution UI](https://git.drupalcode.org/project/canvas/-/work_items/3591601) State: closed | Updated: 2026-07-07 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Wim Leers (wimleers), Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, category::feature, pageBuilder, priority::critical Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1183 [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) | State: merged 2026-07-07 | Author: Ravi Maniyar (ravi.maniyar.123), 4300 diff lines Description: ### Overview We are adding "Conflict resolution UI". This issue will add basic UI elements based on that allow users to open and interact with "Conflict resolution UI". ### Proposed resolution Add ability to open "Conflict resolution UI" using CTA button introduced in https://git.drupalcode.org/project/canvas/-/work_items/3585970. Create rudimentary version of the "Conflict resolution UI" which: * displays all of the conflicts in paginated (1 of X) UI with navigation controls ("\" * allows users to select which of the entities they want to use in order to resolve the conflict (auto-save v… ### [Introduce the authentication and security model for headless draft preview](https://git.drupalcode.org/project/canvas/-/work_items/3591775) State: opened | Updated: 2026-07-07 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: Configuration schema, Needs security review, validation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1336 [Draft: feat: Introduce the authentication and security model for headless draft preview](https://git.drupalcode.org/project/canvas/-/merge_requests/1336) | State: opened | Author: Bálint Kléri (balintbrews), 13362 diff lines Description: First building block of the [Canvas Headless milestone](https://git.drupalcode.org/project/canvas/-/milestones/5). Headless frontends can only fetch published content. For live preview — and for editors to trust it — the frontend must render draft content: unpublished entities, forward revisions, and eventually Canvas auto-save state. That requires an authentication model that answers three questions well: on whose authority does the frontend read drafts, with what limits, and how is that access revoked. Goals: - Draft access is bound to the editor: the frontend sees exactly what the edit… ### [Add support for file fields using custom stream wrappers (currently only `public` is supported)](https://git.drupalcode.org/project/canvas/-/work_items/3577155) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: Darrell Green (codefever) | Labels: Contributed project blocker, category::feature, priority::major, shapeMatching Description: >>> [!note] Migrated issue Reported by: [darrellhq](https://www.drupal.org/user/356505) >>> Overview FileUriItemOverride::propertyDefinitions() adds a UriSchemeConstraint to the file_uri field type's value property with a hardcoded allowedSchemes => ['public']. Because this override is applied globally via hook_field_info_alter() in ShapeMatchingHooks, it affects all file entities — not just those used within Canvas components. This causes entity validation failures for any site that stores files using a non-public:// stream wrapper (e.g., s3:// via the S3FS module, or private://)… ### [Installing Canvas breaks private file system](https://git.drupalcode.org/project/canvas/-/work_items/3591647) State: closed | Updated: 2026-07-07 | Author: John Birchall (John_B) | Assigned: unassigned | Labels: category::bug, dataModel, priority::major, state::closed ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-07-07 | Author: Gábor Hojtsy (goba) | Assigned: Gábor Hojtsy (goba), Ted Bowman (tedbow) | Labels: Usability, state::needsReview, translation Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [Changing Metadata Clears Canvas AI Prompt Text](https://git.drupalcode.org/project/canvas/-/work_items/3558257) State: opened | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: >>> [!note] Migrated issue Reported by: [vipin.mittal18](https://www.drupal.org/user/319716) Related to !530 >>> Overview When composing a prompt in Canvas AI, if any page metadata (such as meta description) is modified before submitting the prompt, all previously entered text in the Canvas AI prompt field is erased. Proposed resolution Updating any metadata field (title, description, etc.) should not clear the text entered in the Canvas AI prompt field. The data in the Canvas AI prompt and in the metadata fields should be managed independently without interference from one another. St… ### [Canvas AI: remove unused historyStore subscription and decide on IndexedDB chat persistence](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-07-07 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::active Description: Follow-up to #3558257. The original symptom of this issue, in-progress chat messages disappearing when editing page metadata during an active run, is resolved by #3558257 / MR !530. That MR freezes DeepChat's `history` prop and stabilizes its other props, so a metadata edit no longer re-renders the panel or resets DeepChat, and the imperative in-progress bubble is retained. Two cleanup items remain, deferred from !530. ### 1. Remove the unused historyStore subscription In `ui/src/components/aiExtension/AiWizard.tsx`, `historyStore` still exposes a `subscribe()` method backed by a `subscribe… ### [DX: `php (lint)` CI job runs against 11.2, fails on 11.3/11.4](https://git.drupalcode.org/project/canvas/-/work_items/3591767) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), priority::critical, projectManagement Description: ## Problem While working on !1332, I just realized why @balintbrews and others have been reporting > I NEVER see a passing `phpcs` or `phpstan` locally … they most likely are developing on Drupal 11.3 (or now 11.4), not the _minimum_ Drupal core version supported by Canvas! While using AI to get !1332 to pass, `phpcs` and `phpstan` _also_ fail, because they're running against 11.4, not the new minimum version (11.3, because 11.2 support was dropped by Drupal core). ## Solution Update Canvas' `composer run lint:phpcs`, `composer run lint:phpstan` etc commands detect_ that the core version … ### [Canvas AI: Client-side orchestration loop roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3591777) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: Description: ## Development strategy - All work for this revamp lands on a long-lived integration branch `1.x-ai-revamp`, cut from `1.x`. - Each child issue is developed in its own issue fork; its MR targets `1.x-ai-revamp`, not `1.x`. - `1.x` is merged into `1.x-ai-revamp` regularly (merge, never rebase) to keep it current. - Once all child issues are merged, `1.x-ai-revamp` is merged into `1.x` in a single integration MR. - Breaking changes are acceptable (`canvas_ai` is beta). The upgrade path is a `hook_update_N` that deletes stale `ai_agent` config entities plus system-prompt/config updates; no data … ### [Canvas AI: Client-side orchestration loop for Canvas AI(POC)](https://git.drupalcode.org/project/canvas/-/work_items/3591615) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, state::needsReview Description: ## Problem Every Canvas AI request is a single synchronous PHP call. The full chain — orchestrator → sub-agent → tool calls → validation — must complete before the server responds. This causes two concrete failures: - **Timeouts on hosted platforms (e.g. DrupalForge).** A full page build exceeds the request time limit. The user gets nothing. - **Full regeneration on any error.** If one component in a large response fails validation, the entire response is regenerated — wasting time and tokens. There is no streaming and no partial feedback. ## How `ai_chatbot` already solves this The `ai_c… ### [redirectCanvasToDefaultLanguage() fights modules that support language-prefixed editor URLs (e.g. canvas_multilingual), causing redirect loops](https://git.drupalcode.org/project/canvas/-/work_items/3591772) State: opened | Updated: 2026-07-07 | Author: Stephanie Galata (sgalata) | Assigned: unassigned | Labels: Description: ### Overview `CanvasRouteOptionsEventSubscriber::redirectCanvasToDefaultLanguage()` unconditionally strips the language prefix from `/canvas` editor URLs and 302-redirects to the prefix-free path. The code's own `@todo` notes this is an interim measure until Canvas natively supports language-prefixed URLs (#3546597). The [canvas_multilingual](https://www.drupal.org/project/canvas_multilingual) contrib module makes language-prefixed editor URLs valid and meaningful: it provides a language-aware editor where `/{prefix}/canvas/editor/...` opens that language's translation. With both modules ins… ### [Canvas AI: Agent system prompts render with an error in the MDX editor](https://git.drupalcode.org/project/canvas/-/work_items/3591776) State: opened | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, ai, state::accepted Description: ## Problem/Motivation The Canvas AI agents' system prompts are not rendered correctly in the MDX editor — the Agent Instructions field shows a render error. ## Steps to reproduce 1. Using `ai_agents` `^1.3`, open the Canvas page builder agent, the template builder agent, and the component agent. 2. The Agent Instructions field contains a render error. ## Related Related to [project/ai#3586585](https://git.drupalcode.org/project/ai/-/work_items/3586585) — add YAML support to the MDX editor. Once that issue is resolved, fix the remaining syntax issues here. ### [Automated Drupal 12 compatibility fixes for canvas 1.x-dev](https://git.drupalcode.org/project/canvas/-/work_items/3591603) State: opened | Updated: 2026-07-07 | Author: project update bot (Project-Update-Bot) | Assigned: Wim Leers (wimleers), Björn Brala (bbrala), project update bot (Project-Update-Bot) | Labels: AI-accelerated, DX (Developer Experience), Drupal 12 compatibility, priority::major Description: ## Problem/Motivation This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. The changes are posted by the [Project Update Bot](https://www.drupal.org/u/project-update-bot) official user account. This account will not receive any issue credit contributions. To stop the bot from posting further updates, post a comment containing `/ProjectUpdateBot:ignore` anywhere in its body. The bot will then leave this issue alone without it needing to be closed. ## Proposed resolution A merge reque… ### [Make Canvas test suite pass on 11.4; drop support for 11.2](https://git.drupalcode.org/project/canvas/-/work_items/3591764) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, Needs followup, blocker, projectManagement Description: Yesterday, https://www.drupal.org/project/drupal/releases/11.4.0 was released. This needs 2 ~MRs~ key things to happen, easiest to do in a single MR: - [x] Canvas should be tested explicitly against 11.4 → most commits of !1332 - [x] Canvas should drop 11.2 support, because Drupal core dropped security support for 11.2 → require (9eccebfc15ac5906efe49eb42195d025ffc66017) + remove all 11.2 mentions (5122ccf5e11fdd8f05fc1805d074efa2979275e8) - [x] Follow-up for `resolvable_uri`: #3591770+ Note that the latter will unblock !1241. ### [Automated Drupal 12 compatibility fixes for canvas](https://git.drupalcode.org/project/canvas/-/work_items/3591556) State: closed | Updated: 2026-07-07 | Author: drupalbot | Assigned: unassigned | Labels: Drupal 12 compatibility, ProjectUpdateBotD12, category::task, code Description: >>> [!note] Migrated issue Reported by: [project update bot](https://www.drupal.org/user/3644742) Related to !1150 >>> Problem/Motivation Hello project maintainers, This is an automated issue to help make this module compatible with Drupal 12. Changes will periodically be added to this issue that remove deprecated API uses. To stop further changes from being posted, change the status to anything other than Active, Needs review, Needs work or Reviewed and tested by the community. Alternatively, you can remove the "ProjectUpdateBotD12" tag from the issue to stop the bot from posting updates… ### [Boolean field values resetting when using Patterns](https://git.drupalcode.org/project/canvas/-/work_items/3591637) State: closed | Updated: 2026-07-07 | Author: Amanda Donnelly (aadownie) | Assigned: unassigned | Labels: Description: When using Patterns in the 1.5 update, boolean values are not staying their set value when using Patterns after content is edited. To reproduce: Add a component that uses a boolean value, set with a default 'true', and a basic text field. In my example this boolean was used to show/hide a section of markup. Create a page with this component added, but set the boolean to 'false', then create a pattern with this layout. Add a new page, and drag the pattern over, which should have this boolean set to 'false' hiding the markup. Edit the text field. When the preview reloads, the formerly hidd… ### [Boolean prop values not retained correctly on SDC components with multiple boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591697) State: closed | Updated: 2026-07-07 | Author: Joery Lemmens (flyke) | Assigned: unassigned | Labels: Description: This is a recreation of issue [#3492368](https://www.drupal.org/project/experience_builder/issues/3492368) in the experience_builder module so that the issue ends up on the correct module and issue que. Please watch the video in that issue! I am using Drupal 11.3.12 and I'm having an issue with boolean props on both canvas 1.6.0 and latest canvas dev. I have a (card) component with multiple boolean props where example and default are all set to false. I create a card (I dont change any boolean props) and when changing the text content, it seems that all boolean prop widgets are still uncheck… ### [Cast transform treats serialized "0" as true for boolean props](https://git.drupalcode.org/project/canvas/-/work_items/3591739) State: opened | Updated: 2026-07-07 | Author: Dirk Hacker (dehacker) | Assigned: unassigned | Labels: Description: **Summary:** * Unchecked Drupal checkboxes serialize as `"0"`. * `transforms.cast` only treats `'false'` as false, then `Boolean(value)`. * `Boolean("0") === true` → unchecked booleans flip to `true` on auto-save when another field changes. **Repro:** 1. Component with two boolean props (e.g. Hero Standard `popup_form` + `ppc_header`). 2. Open in Canvas editor; leave `popup_form` unchecked, toggle `ppc_header`. 3. Observe `popup_form` saved as `true`. **Fix:** Explicit handling when `to === 'boolean'` for `'0'`, `0`, `''`, `null`, `'false'`. ### [Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form](https://git.drupalcode.org/project/canvas/-/work_items/3591773) State: opened | Updated: 2026-07-07 | Author: Stephanie Galata (sgalata) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1334 [#3591773: Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form](https://git.drupalcode.org/project/canvas/-/merge_requests/1334) | State: opened | Author: Stephanie Galata (sgalata), 84 diff lines Description: ### Overview In the component inputs form, a boolean SDC prop rendered as a checkbox is initialized to *checked* even when its stored value is `false`. Confirmed on Canvas 1.7.1; the code is unchanged on `1.x`. The cause is in `getCurrentValueFromProps()` (`ui/src/components/form/react-hook-form/utils/index.ts`). For checkboxes, none of the early branches match a typical unchecked Drupal checkbox render array, so the function falls through to: - `props.value` / `props.attributes.value` — but a checkbox's `value` attribute is its **return value when checked** (usually `"1"`), not its state. … ### [Boolean props auto-enable when another prop is changed in the Canvas form](https://git.drupalcode.org/project/canvas/-/work_items/3591716) State: opened | Updated: 2026-07-07 | Author: Alamgir Hossain (alamgir.hossain.cse) | Assigned: unassigned | Labels: Description: ## Summary In Canvas, when editing a component that has boolean props (e.g. `card-program`), changing any non-boolean prop causes all boolean props to appear enabled (toggle switches flip to ON) even though the user never toggled them. ## Root causes Two bugs were identified: ### 1. `|| []` coerces boolean `false` to `[]` in `layoutModelSlice.ts` In `_addNewComponentToLayout` → `buildInitialData()`, when building the initial model for a newly dropped component: ```typescript // BEFORE (buggy): initialData.resolved[propName] = prop.default_values?.resolved || []; // For boolean false: fal… ### [Create new update path fixture: Drupal 11.3 + Canvas 1.7](https://git.drupalcode.org/project/canvas/-/work_items/3591774) State: opened | Updated: 2026-07-07 | Author: Wim Leers (wimleers) | Assigned: unassigned | Labels: DX (Developer Experience), Needs update path tests, Performance, category::task Description: - 11.2 support dropped in #3591764+ - critical translation support added in 1.8.0, in #3591727+ IOW: let's create a successor for `tests/fixtures/update/drupal-11.2.10-with-canvas-1.2.0.bare.php.gz`. ### [Explicitly support `comment` as a referenceable content entity type (stop omitting it from the content entity types endpoint)](https://git.drupalcode.org/project/canvas/-/work_items/3591674) State: opened | Updated: 2026-07-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::feature, internalHttpApi, priority::normal, state::accepted Description: > **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see [note 1106693](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1106693). ### Overview The content entity types endpoint lists which content entity types/bundles can be referenced. To decide eligibility it builds an unsaved **stub** entity per bundle and runs a `'view'` access check on it. For the `comment` entity type this check throws: `CommentAccessControlHandler::checkAccess()` dereferences the commented entity (`$entity->getCommentedEntity()`), which a bundle-level stub … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: closed | Updated: 2026-07-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: AKHIL BABU (AkhilBabu) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1330 [Issue #3591663: Fail validation for props that do not exist on a component](https://git.drupalcode.org/project/canvas/-/merge_requests/1330) | State: merged 2026-07-07 | Author: Abhishek Dhariwal (adaptative), 389 diff lines Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… --- 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 | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [Draft: Add Twig filter for image styles](https://git.drupalcode.org/project/canvas/-/merge_requests/536) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3562276-support-selection-of | 942 diff lines Description: Closes #3562276 ### [fix(Page): #3591763 Publishing a page without a URL alias fails: its empty...](https://git.drupalcode.org/project/canvas/-/merge_requests/1331) State: opened | Author: Fons Vandamme (f0ns) | Branch: 3591763-publishing-a-page-without-a-url-alias-fails-with-500-assertionerror-in-pagehooksensurepathautoskipped | 89 diff lines Description: Publishing a canvas_page without a URL alias fails with a 500 when Pathauto is installed. `ContentEntityStorageBase::invokeHook('presave')` runs field `preSave()` before presave hooks are invoked, and `FieldItemList::preSave()` filters empty items. A path item without an alias is empty and gets removed, so `PageHooks::ensurePathautoSkipped()` receives NULL from `first()` and the assertion fails. Pages with an existing alias are unaffected. This MR appends a new path item when the list is empty, then sets `PathautoState::SKIP` on it as before. It adds a `PagePathautoIntegrationTest` kernel tes… ### [Resolve #3587161 "Integrate ddev local devepment enviroment into canvas"](https://git.drupalcode.org/project/canvas/-/merge_requests/1014) State: opened | Author: Jakob P (japerry) | Branch: 3587161-integrate-ddev-drupal-contrib-into | 1926 diff lines Description: This MR is designed to converge the various add-ons used to support canvas into one centralized and recommended development environment. It uses the architecture from ddev-drupal-contrib (but doesn't bring in the addon, see below) to create an ephemeral Drupal environment within the module, and add scaffolding to support the various test systems used within Canvas, including phpunit, Cypress, and Playwright (via the Lullabot/ddev-playwright add-on). It also merges in UI commands from the ddev-drupal-xb-dev addon, which shouldn't be needed anymore once this MR lands. ## Why ddev-drupal-contrib… ### [#3591698: Promote canvas_dev_translation into canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1258) State: opened | Author: Wim Leers (wimleers) | Branch: 3591698-rip-canvas-dev-translation | 287 diff lines Description: Drop `canvas_dev_translation`. AI-accelerated: Yes ## Testing instructions - [x] CI still passes - [ ] **Manually:** Translate a `ContentTemplate` component tree using TMGMT or Config Translation and observe it works - [ ] **Manually:** Translate a `Page` component tree using TMGMT or Config Translation and observe it works Closes #3591698 ### [Draft: Stage Canvas autosaves in a dedicated Workspace](https://git.drupalcode.org/project/canvas/-/merge_requests/1056) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3588540-stage-canvas-autosaves | 4843 diff lines Description: AI-Generated: Yes, Cursor was used to assist with the creation of this MR. ## Testing instructions * [ ] Apply MR + Run update hooks * [ ] Test making changes + publishing them Closes #3588540 ### [Decouple component_tree translation logic from TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1320) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591754-decouple-tmgmt | 1213 diff lines Description: The logic that extracts a component tree's translatable strings and writes translations back is moved out of `ComponentTreeFieldProcessor` (which extends a `tmgmt_content` class, so it only loads with TMGMT installed) into a standalone `ComponentTreeTranslator` service under `src/Translation/`. `ComponentTreeFieldProcessor` becomes a thin TMGMT adapter that delegates to it. `ComponentInputsTranslatablesExtractor` moves to `src/Translation/` alongside it. Behavior is unchanged; code is moved, not rewritten. This is needed to avoid duplication in https://git.drupalcode.org/project/canvas_transl… ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: closed | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [Draft: Issue #3591668: Add text-based comparison of entities UI](https://git.drupalcode.org/project/canvas/-/merge_requests/1266) State: opened | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3591668-text-based-comparison-of-entities-ui | 5229 diff lines Description: ## Description Adds a text-based comparison view to the conflict-resolution UI so users can compare the published and auto-saved versions of a Canvas page as YAML. This is a stacked MR. The change for #3591668 is in commit `b6a8a7fc`; earlier commits belong to the conflict-detection and conflict-resolution dependencies. ### What changed - Added a **Text** tab alongside the existing Visual and Props views. - Fetches the published and auto-saved entity exports in parallel. - Displays a side-by-side YAML diff using `react-diff-viewer-continued`. - Highlights added, removed, and changed conten… ### [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 | 340 diff lines Description: **TL;DR:** Adds a new endpoint that provides Page entity in text-based format using default content exporter in core. For people with attention span or AI summary tools: BE part of "#3591668+" which is part of the "\[META\] Review of changes and Conflict resolution (https://git.drupalcode.org/project/canvas/-/work_items/3587587)". Adds the BE infrastructure required for the "Comparison of entities using text-based representation in side-by-side UI" capability. To keep the scope manageable, changes are limited to `Page` (`canvas_page`) entities. Effort is made to leave path open for other en… ### [Fix Canvas AI prompt reset on metadata changes](https://git.drupalcode.org/project/canvas/-/merge_requests/530) State: opened | Author: scott falconer (scottfalconer) | Branch: 3558257-changing-metadata-clears | 947 diff lines Description: ## Issue https://www.drupal.org/project/canvas/issues/3558257 ## Root cause `DeepChat` received inline object and function props — `images`, `requestBodyLimits`, the `connect` handler, and the style objects — recreated on every render. Editing page metadata re-rendered the component, so `DeepChat` saw new prop references, rebuilt its input, and cleared the typed prompt. ## Change - Memoize `DeepChat` and pass stable references. - Move static props to module-scope constants. - Move the `connect` handler into `useCallback`; it reads the latest values via refs. - Back the `onComponentRender` gu… ### [Automated Project Update Bot fixes](https://git.drupalcode.org/project/canvas/-/merge_requests/1150) State: closed | Author: project update bot (Project-Update-Bot) | Branch: project-update-bot-only | 2116 diff lines Description: Relates to #3591556. This merge request was automatically created by the Project Update Bot. It contains the changes from run 12-testset-826530. ### [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(Internal HTTP API): #3591674 Support comment as a referenceable content entity type](https://git.drupalcode.org/project/canvas/-/merge_requests/1335) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591674-comment-referenceable | 239 diff lines Description: ## What this does The content-entity-reference picker lists referenceable content entity types by building a bundle-level stub for each bundle and running a `view` access check on it. For `comment`, core's `CommentAccessControlHandler::checkAccess()` ends every `view` branch with `->andIf($entity->getCommentedEntity()->access('view', …))`. A bundle stub has no commented (parent) entity, so `getCommentedEntity()` is `NULL`, the access check throws, and the defensive `try/catch` in `getBundleViewAccess()` silently dropped `comment` from the results — even for users holding `access comments`. T… --- COMMITS (24h) --- - [8a4bdf7a](https://git.drupalcode.org/project/canvas/-/commit/8a4bdf7a46ee13106c7fe737e131ba708586f47c) chore(Internal HTTP API): #3591669 Add heuristics for exposing fields/props to the content-entity-reference selection UI — Christian López Espínola (2026-07-07T23:11:41.000+00:00) - [192f61ff](https://git.drupalcode.org/project/canvas/-/commit/192f61ff43a455c4c0c3c7c345f4eaf725aeccd8) chore(Component sources): #3591727 Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites — Christian López Espínola (2026-07-07T17:37:44.000+00:00) - [55d37bc4](https://git.drupalcode.org/project/canvas/-/commit/55d37bc47649858ba7a0170dd318475460ae4fca) feat(conflict): #3591601 Rudimentary conflict resolution UI — Ravi Maniyar (2026-07-07T15:05:25.000+00:00) - [d750fb5c](https://git.drupalcode.org/project/canvas/-/commit/d750fb5ca08dcf9140f53ea2b7cc97ac1c1819a3) feat(Conflict detection): #3591601 "Conflict resolution via API call and layout endpoint support for published entities" — Feliksas Mazeikis (2026-07-07T11:09:57.000+00:00) - [287f8951](https://git.drupalcode.org/project/canvas/-/commit/287f895113e08491b297cfc807c4869b0801d646) fix(AI): #3591663 Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props — Abhishek Dhariwal (2026-07-07T05:50:29.000+00:00) ======================================================================== ## [27] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Pravesh Poonia (Pravesh_Poonia) [1], Rob Loach (robloach), Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                    Context Control Center (CCC)

                                                    then use

                                                    ,

                                                    ,

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

                                                      How can I help on this project?

                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Assess duadp module's integration with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586322) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::plan Description: ## Problem/motivation Pointed out in these issues by flux423: - #3576092+s - #3577429+s The `duadp` module has a `duadp_ai_context` submodule. Let's understand how this is using ai_context to see if we need to factor in anything for beta4 or 1.1. ## Solution Assess the duadp` module's integration to see if anything can be learned from this, and create follow-up issues as needed. ### [Beta vs 1.1 CCC API gap analysis](https://git.drupalcode.org/project/ai_context/-/work_items/3586318) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description As we are getting closer to rc1, we need to do a gap analysis to see what are obvious API gaps that we should address prior to rc1 to properly enable contributed and custom module integration. ## Tasks * [x] Gather relevant beta3 and beta4 issues and documents * [x] Feed into fable 5 * [x] Review findings * [x] Add follow-up issues as needed ## Acceptance criteria * Analysis document is created and reviewed * Relevant follow-up issues are created ## Related issues - #3586289+s - #3581955+s - #3586281+s - #3586243+s - #3586268+s - #3586273+s ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !207 [Issue #3586299: Fix test and documentation consistency before rc1.](https://git.drupalcode.org/project/ai_context/-/merge_requests/207) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 621 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes improve test reliability and signal without changing production behavior. They are low-risk cleanup items suitable for pre-rc1. **Scope:** - **7.1** Standardize `#[RunTestsInSeparateProcesses]` on all Kernel, Functional, and FunctionalJavascript test classes (follow-up to #3586280). - **7.2** Replace documentation-only and introspection-only unit t… ### [Avoid functional-test dual-container traps](https://git.drupalcode.org/project/ai_context/-/work_items/3586325) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::needsReview Description: ## Problem/motivation Follow-up to: #3586258+s Pull item 7.3 from: #3586299+s _**Verify the issue problem and solution before proceeding.**_ ### Avoid functional-test dual-container traps **File:** - `tests/src/Functional/AiContextAdminSettingsTest.php` **Problem:** At least one functional test submits a form directly through the test container's `form_builder`. Functional tests run separate test and web-server containers, so direct form builder submission can miss browser/runtime behavior. **Recommended fix:** - Use `$this->drupalGet()` and browser-level `$this->submitForm()` when… ### [Add basic accessibility test coverage](https://git.drupalcode.org/project/ai_context/-/work_items/3586326) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, sprint candidate, state::accepted Description: ## Problem/motivation Follow-up to: #3586258+s Pull item 7.5 from: #3586298+s _**Verify the issue problem and solution before proceeding.**_ ### Add basic accessibility test coverage **Files:** - FunctionalJavascript tests or a focused accessibility test suite **Problem:** No accessibility or axe-style assertions were found in the test suite. **Recommended fix:** - Add focused coverage for the pages changed by the accessibility fixes: context item list, agents overview, and overview page. - At minimum, test `Drupal.announce()` behavior for filters and visible labels for tooltip… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !212 [Issue #3586306: Update `ai_context_tags` have an `enforced` dependency on ai_context](https://git.drupalcode.org/project/ai_context/-/merge_requests/212) | State: opened | Author: Rob Loach (robloach), 369 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [CCC beta3 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586182) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/Motivation Planning issue for beta3 release See the [milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues ) for all issues. Key must have issues are listed here. --- ## Proposed Resolution **Many issues were already closed and noted here:** - #3567798: META CCC MVP 1.0 roadmap - #3577644: CCC beta1 release planning - #3585902: CCC beta2 release planning **These are the ones below have been the focus since 11 May 2026 for beta3.** --- ### Must haves #### Blocked - N/A #### Todo - #3586296: CCC beta3 QA - #3586295: Create CCC beta3 release … ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !205 [Issue #3586304: Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/merge_requests/205) | State: merged 2026-07-08 | Author: Juan Correa (jucs7), 228 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [[Meta] CCC cleanup from beta3 code review findings for beta3](https://git.drupalcode.org/project/ai_context/-/work_items/3586310) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, blocker::beta 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-beta3-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/e83cda3d7f0df7594af44885c7037325/ai_context-beta3-1.0.x-issues.md) ### Old docs Fable 5 fin… ### [AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path](https://git.drupalcode.org/project/ai_context/-/work_items/3586323) State: closed | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !213 [Issue #3586323: Update agent edit form path in test.](https://git.drupalcode.org/project/ai_context/-/merge_requests/213) | State: merged 2026-07-07 | Author: Kristen Pol (kepol), 24 diff lines Description: ## Problem CI phpunit jobs are failing on multiple open MRs with the same functional test failure: - `AiContextAgentSettingsTest::testAgentNameLinkRespectsEditAccess` - Error: `No link containing href /admin/config/ai/agents/test_agent_link_access/edit/form found` Examples: - MR !210: https://git.drupalcode.org/project/ai_context/-/jobs/10792643 - MR !208: https://git.drupalcode.org/project/ai_context/-/jobs/10790623 MR !208 passed CI on 2026-07-03 and failed on 2026-07-07 with no ai_context code change in between. Composer resolved `drupal/ai_agents` 1.3.1 on the passing run and 1.3.2 on … ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, blocker::stable Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Create CCC beta3 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586295) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: ### Problem/Motivation Blocked by: #3586296+s Create CCC beta3 release. Tag: `1.0.0-beta3` ### Proposed resolution Create the release once at least the must-haves are done here: - #3586182+s - [beta3 milestone](https://git.drupalcode.org/project/ai_context/-/milestones/5#tab-issues) ### Target date or deadline 6 July 2026 ### Remaining tasks - Wait on must-haves - Tag code - Create the release in UI - Celebrate! ### AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code … ### [CCC beta3 QA](https://git.drupalcode.org/project/ai_context/-/work_items/3586296) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: ## Problem/Motivation Blocked by: #3586294+s Need a QA script for beta 3 to go through and test before the release ## Proposed resolution Create script with at least all major features covered ## Target date or deadline **6 July 2026** ## Remaining tasks - Create script - Go through QA script --- ## AI usage (if applicable) - [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. - [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human superv… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 14, category::task Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !194 [Issue #3586292: Ignore conditional context when disabled.](https://git.drupalcode.org/project/ai_context/-/merge_requests/194) | State: opened | Author: Kristen Pol (kepol), 1508 diff lines Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [Selector loads the entire catalog when an agent has no scope subscriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586315) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !210 [Issue #3586315: Avoid full catalog scan when agent has no scope subscriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/210) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 1082 diff lines Description: ## Problem Follow-up to: #3586294 Parent: #3586310 `AiContextSelector::getPrefilteredPublishedItemIds()` returns NULL when `$scopeSubscriptions` is empty, so the chunk loop loads **every published context item** (full entities including content fields) on every AI request. This hits the very common "global items only" agent configuration. With thousands of items that's dozens of chunked queries, thousands of entity hydrations, and thousands of per-item plugin `matchesCurrentContext()` calls per request — the `match_all` broad-scan warning only logs, it doesn't avoid the work. ## Resoluti… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !206 [Issue #3586303: Announce filtered row counts to screen readers in JS filter behaviors.](https://git.drupalcode.org/project/ai_context/-/merge_requests/206) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 69 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Usage record page leaks context item content and grants links without access checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586311) State: opened | Updated: 2026-07-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !208 [Issue #3586311: Harden usage record and listing access checks.](https://git.drupalcode.org/project/ai_context/-/merge_requests/208) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 516 diff lines Description: ## Problem Follow-up to: #3586294 Parent: #3586310 `AiContextUsageRecordController` renders the full current content of the referenced context item via the entity view builder with no `access('view')` check. The route only requires `view ai context usage`, so a user with that permission alone can read the content of items they cannot view — notably items unpublished since the usage was recorded (viewing those requires `view any unpublished ai context item` or ownership). The same page also exposes affordances without matching access: - The context item label is disclosed via `toLink()` in… ### [Replace brittle hardcoded admin path assertions in functional and kernel tests with route-derived URLs](https://git.drupalcode.org/project/ai_context/-/work_items/3586324) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Innovation, AI Sprint 14, blocker::stable Description: ## Problem Follow-up to: #3586323+s Several ai_context tests assert hardcoded admin URL paths instead of deriving expected paths from Drupal routes. This is the same failure class as [#3586323]: production code builds links with `Url::fromRoute()`, but tests break when an upstream module changes a route path. The agent edit form assertion was fixed separately in #3586323. This issue tracks the remaining brittle path assertions, grouped by risk. ### Pattern Brittle: ```php $this->assertSession()->linkByHrefExists('/admin/config/ai/agents/debug?agent_id=' . $agent_id); ``` Preferred: ``… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 982 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [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-07-07 | Author: Kristen Pol (kepol) | Assigned: Juan Correa (jucs7) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 3803 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 cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !204 [Issue #3586300: Updated CCC cacheability and access metadata.](https://git.drupalcode.org/project/ai_context/-/merge_requests/204) | State: opened | Author: Joshua Fernandes (joshua1234511), 120 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !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: opened | Author: Juan Correa (jucs7), 2954 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… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-07-07 | Author: Kristen Pol (kepol) | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !159 [Issue #3586218: Allow subcontext scope to override parent scope.](https://git.drupalcode.org/project/ai_context/-/merge_requests/159) | State: opened | Author: Kristen Pol (kepol), 3229 diff lines Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code --- MERGE REQUESTS (24h) --- ### [Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/202) State: merged 2026-07-08 | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/documentation-api-consistency-3586305 | 140 diff lines Description: Fixed 6.1 and 6.2 6.1 — Context prefix alignment The fallback string in AiContextSystemPromptSubscriber didn't match the value in config/install/ai_context.settings.yml. Aligned the PHP fallback to the canonical config default. 6.2 — Stale getManageUrl() docs scope_api.md and custom_scopes.md were still referencing getManageUrl(): ?string which no longer exists. Updated both files to document the actual getManageRoute(): ?array method with the correct return structure. ### [Draft: Issue #3586283: Finalize Context Importer and Extensions page.](https://git.drupalcode.org/project/ai_context/-/merge_requests/188) State: opened | Author: Kristen Pol (kepol) | Branch: 3586283-extensions-importers | 77 diff lines Description: ## Description See #3586283+s ## Testing instructions 1. 2. ## Checklist - [ ] I have updated the MR title to use format: `Issue #1234: My issue title.` - [ ] I have updated the MR description to include: `Closes #1234` - [ ] 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, ca… ### [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3586302-clean-up-ccc-tooltip-truncation-and-icon-only-content | 216 diff lines Description: ## Description Closes #3586302 ## Testing Instructions Create one item with a **long label/description** and a **purpose**, mark it Global or scoped, and add **3+ scope values** (to trigger the `+N` pill). Add a child subcontext (one Required, one Conditional). **1. Items list — `/admin/config/ai/context/items`** * **Tab** through the page; with a screen reader on (VoiceOver): * **Mouse hover** still shows the tooltips. * Inspect DOM: decorative SVGs have `aria-hidden="true"` + `focusable="false"`. **2. Agents form — `/admin/config/ai/context/agents`** (agents with long descriptions) * … ### [Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools.](https://git.drupalcode.org/project/ai_context/-/merge_requests/116) State: opened | Author: Jesse Hofmann-Smith (jessehs) | Branch: 3581955-inject-context-into | 479 diff lines Description: Closes #3581955 --- COMMITS (24h) --- - [5778b42b](https://git.drupalcode.org/project/ai_context/-/commit/5778b42b6dd0c72e7d485acde32181e8cda0671e) Issue #3586304: Clean up CCC form and table accessibility cleanup — Juan Correa (2026-07-08T01:56:19.000+00:00) - [c41e48f0](https://git.drupalcode.org/project/ai_context/-/commit/c41e48f0290b5991f50dd8161069ad6deae4c985) Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. — Pravesh Poonia (2026-07-08T01:53:05.000+00:00) - [52da637e](https://git.drupalcode.org/project/ai_context/-/commit/52da637ef3fea28ae3e2203172c522b8aebff0cf) Issue #3586323: Update agent edit form path in test. — Kristen Pol (2026-07-07T15:35:38.000-07:00) ======================================================================== ## [28] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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: Sven Decabooter (svendecabooter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                      AI 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). ### [Refactor translation workflow to support Tool API and agent-driven translation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585523) State: opened | Updated: 2026-07-07 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: category::plan, code, priority::normal, state::needsWork Description: I am investigating whether I can have an AI Agent perform an entity translation, when a user requests this as part of an administrative AI agent interface. This would probably need some major refactoring of the module logic, since there are currently 2 endpoints: - UI batch translation - Drush command translation This would add a third one: Tool API translation So logic should be abstracted as much as possible where relevant, so all 3 entry points use the same code, rather than replicating it. I haven't investigated this further in detail, but already raising an issue here, in case someone … --- MERGE REQUESTS (24h) --- ### [Draft: Refactor entity translation into a shared orchestrator service](https://git.drupalcode.org/project/ai_translate/-/merge_requests/27) State: opened | Author: Sven Decabooter (svendecabooter) | Branch: 3585523-translation-worflow-refactor-1.3 | 1117 diff lines Description: ## Summary This MR starts the `ai_translate` refactoring needed to support a shared translation workflow across multiple entrypoints. It introduces a shared `EntityTranslationOrchestrator` service and moves duplicated entity-translation logic out of the UI controller and Drush command into that service. The goal is to establish one reusable path for entity translation instead of maintaining separate orchestration in each entrypoint. ## What changed Added: - `EntityTranslationOrchestratorInterface` - `EntityTranslationOrchestrator` - `EntityTranslationResult` Updated: - `src/Controller/AiTran… ### [Draft: Refactor entity translation into a shared orchestrator service](https://git.drupalcode.org/project/ai_translate/-/merge_requests/26) State: closed | Author: Sven Decabooter (svendecabooter) | Branch: 3585523-issue-branch | 1107 diff lines Description: ## Summary This MR starts the `ai_translate` refactoring needed to support a shared translation workflow across multiple entrypoints. It introduces a shared `EntityTranslationOrchestrator` service and moves duplicated entity-translation logic out of the UI controller and Drush command into that service. The goal is to establish one reusable path for entity translation instead of maintaining separate orchestration in each entrypoint. ## What changed Added: - `EntityTranslationOrchestratorInterface` - `EntityTranslationOrchestrator` - `EntityTranslationResult` Updated: - `src/Controller/AiTran… --- COMMITS (24h) --- (none) ======================================================================== ## [29] summariseModule:ai_vdb_provider_pinecone:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Pinecone VDB Provider (machine name: ai_vdb_provider_pinecone) Reporting period: last 24h (2026-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                                                        Pinecone VDB Provider

                                                        then use

                                                        ,

                                                        ,

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

                                                          How can I help on this project?

                                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Pinecone: Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-07-07 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [30] 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-07-07T05:00:06+00:00 to 2026-07-08T05:00:06+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

                                                          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). ### [Add events for failures](https://git.drupalcode.org/project/agui/-/work_items/3590041) State: opened | Updated: 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: Ahmad Khalil (ahmad-khalil-imagex) | Labels: category::feature, code, priority::normal, v1.0.x-dev Description: Ideally when their are issues/timeouts with response, we have the ability to react to this. For example, let's say the remote throws some sort of exception, we could react to this in a meaningful way to the user. We should introduce some event triggers for these cases. ### [Debug should include timestamps](https://git.drupalcode.org/project/agui/-/work_items/3590042) State: opened | Updated: 2026-07-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: Description: Debugging SSE events sometimes involves timing. Debug events should also include a human readable timestamp to help with this. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [31] 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] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [2] Fix PHPStan issues on API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3563396 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [5] 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 [6] Add YAML support to the MDX editor code blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586585 [7] AI CKEditor tools (Tone, Summarise) fail with "Call to a member function get() on null" on Drupal 11.4.0 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586584 [8] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [9] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [10] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [11] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [12] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [13] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [14] Resolve #3563396 "Fix phpstan issues api 2.0.x" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1074 [15] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [16] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [17] task: #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1759 [18] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1758 [19] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1757 [20] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1756 [21] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1755 [22] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1749 [23] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1752 [24] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1753 [25] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1754 [26] replace hardcoded "summarize" no-selection message with overridable... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1751 [27] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1748 [28] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1739 [29] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1750 [30] replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1240 [31] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1745 [32] Resolve #3574723 "Enforce execution principal" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1233 [33] Create a configurable search api processor for XB data (experience_builder, MR) — https://git.drupalcode.org/project/experience_builder/-/merge_requests/492 [34] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [35] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [36] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [37] Resolve #3548526 "1.3.x support file handling" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/79 [38] Issue #3558801: Route the OpenAI chat operation through the Responses API... (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/78 [39] Refactor HTTP client & add tests (ai_provider_google_vertex, MR) — https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/21 [40] fix: Milvus connection failures fixes. (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/51 [41] Resolve #3589484 "Milvus restart on failure" (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/45 [42] 3551588: Write (Create/Update) Operations Support (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/42 [43] ai_agents status subscriber fatals when tool status output has no function.name (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585983 [44] "Use Artifact storage" checkbox not necessary? (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586046 [45] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [46] force_value is ignored when hide_property is unchecked (AI Agents 1.2.x) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586045 [47] Fix AgentStatusSubscriber fatals when tool status output has no function.name (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/295 [48] Issue #3586042 Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/284 [49] fix: #3586045 persist force_value tool restrictions saved from the agent form (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/294 [50] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [51] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [52] AssertionError in AutoSaveHooks on non-node revision revert forms (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3578668 [53] Add content_translation_source and content_translation_outdated to `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591779 [54] Content template editor preview shows a stale snapshot instead of live edits (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591782 [55] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [56] Product verification: merging reference field-level field properties with the referenced entity's own data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591681 [57] UI Exception / 500 Error when triggering Preview on Content Templates causes persistent state lock (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591684 [58] Remove feature flag for content entity reference props and make it public (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591781 [59] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [60] bnjmnm investigation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591780 [61] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [62] Document relevance of ordering of operations in `Component::preSave` to prevent future bugs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591778 [63] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [64] Introduce the authentication and security model for headless draft preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591775 [65] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [66] Installing Canvas breaks private file system (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591647 [67] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [68] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [69] Canvas AI: remove unused historyStore subscription and decide on IndexedDB chat persistence (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [70] DX: `php (lint)` CI job runs against 11.2, fails on 11.3/11.4 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591767 [71] Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [72] Canvas AI: Client-side orchestration loop for Canvas AI(POC) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591615 [73] redirectCanvasToDefaultLanguage() fights modules that support language-prefixed editor URLs (e.g. canvas_multilingual), causing redirect loops (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591772 [74] Canvas AI: Agent system prompts render with an error in the MDX editor (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591776 [75] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [76] Make Canvas test suite pass on 11.4; drop support for 11.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591764 [77] Automated Drupal 12 compatibility fixes for canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591556 [78] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [79] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [80] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [81] Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591773 [82] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [83] Create new update path fixture: Drupal 11.3 + Canvas 1.7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591774 [84] Explicitly support `comment` as a referenceable content entity type (stop omitting it from the content entity types endpoint) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591674 [85] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [86] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [87] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [88] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [89] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [90] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [91] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [92] fix(Page): #3591763 Publishing a page without a URL alias fails: its empty... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1331 [93] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [94] Issue #3591779: Exclude content_translation_source/outdated from PropSourceSuggester suggestions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1340 [95] fix(Page builder): #3591782 Content template editor preview shows a stale snapshot instead of live edits (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1339 [96] chore(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [97] Resolve #3591781 "Remove feature flag for content entity reference props and make it public" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1338 [98] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [99] Draft: #3591780 playwright reports fail even when all shards pass (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1337 [100] Draft: Stage Canvas autosaves in a dedicated Workspace (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1056 [101] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [102] Draft: feat: Introduce the authentication and security model for headless draft preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1336 [103] chore(Component sources): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [104] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [105] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [106] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [107] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [108] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [109] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1150 [110] 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 [111] feat(Internal HTTP API): #3591674 Support comment as a referenceable content entity type (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1335 [112] #3591773: Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1334 [113] Issue #3591663: Fail validation for props that do not exist on a component (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1330 [114] Assess duadp module's integration with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586322 [115] Beta vs 1.1 CCC API gap analysis (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586318 [116] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [117] Avoid functional-test dual-container traps (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586325 [118] Add basic accessibility test coverage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586326 [119] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [120] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [121] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [122] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [123] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [124] [Meta] CCC cleanup from beta3 code review findings for beta3 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586310 [125] AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586323 [126] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [127] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [128] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [129] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [130] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [131] Selector loads the entire catalog when an agent has no scope subscriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586315 [132] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [133] Usage record page leaks context item content and grants links without access checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586311 [134] Replace brittle hardcoded admin path assertions in functional and kernel tests with route-derived URLs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586324 [135] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [136] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [137] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [138] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [139] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [140] Issue #3586306: Update `ai_context_tags` have an `enforced` dependency on ai_context (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/212 [141] Issue #3586299: Fix test and documentation consistency before rc1. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/207 [142] Issue #3586292: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [143] Issue #3586304: Clean up CCC form and table accessibility cleanup (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/205 [144] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [145] Issue #3586315: Avoid full catalog scan when agent has no scope subscriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/210 [146] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [147] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [148] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [149] 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 [150] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [151] 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 [152] Issue #3586300: Updated CCC cacheability and access metadata. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/204 [153] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [154] Issue #3586303: Announce filtered row counts to screen readers in JS filter behaviors. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/206 [155] Issue #3586311: Harden usage record and listing access checks. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/208 [156] Issue #3586323: Update agent edit form path in test. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/213 [157] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [158] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/27 [159] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/26 [160] Pinecone: Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [161] Add events for failures (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590041 [162] Debug should include timestamps (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590042 --- MODULE SUMMARIES ---

                                                              AI (Artificial Intelligence)

                                                              The AI module delivered several user-facing fixes to its rich text editor (CKEditor) integration. A longstanding issue where all AI CKEditor tools displayed the same "you must select text to summarize" message has been resolved; each tool (Translate, Tone, SpellFix) now shows appropriate context-specific guidance when no text is selected. A related fix ensures that plugin configuration fields are hidden entirely until the user selects text, reducing confusion. Additionally, a compatibility workaround was applied to address fatal errors affecting CKEditor tools on Drupal 11.4.0.

                                                              Work is progressing on new automation capabilities. Merge requests are under review to add command-line tools (called "agent skills") that will allow site operators to configure AI settings, guardrails, and field automators programmatically rather than only through the administrative interface. These tools are intended to support scripted deployment and integration with AI-driven site management workflows.

                                                              A new Search API processor for reranking search results using AI models is in development. Reranking improves the relevance of semantic search by re-ordering results after an initial query; the processor will work with any Search API backend (database, Solr, or vector stores). Separately, work continues on embedding performance improvements and code quality tasks, including resolution of static analysis issues in the API Explorer component.

                                                              How can I help on this project?

                                                              • Review and approve the Search API reranking processor merge request to enable the feature for semantic search users.
                                                              • Prioritize a decision on how the module should notify site administrators when AI providers release better models, as this affects long-term maintainability and user experience.

                                                              Contributors: Abhisek Mazumdar (abhisekmazumdar), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [2], Daniel Rodriguez (danrod), scott falconer (scottfalconer)

                                                              ---

                                                              Experience Builder

                                                              A new merge request was opened to create a configurable search api processor for XB data. This work will enable better search functionality for content created with Experience Builder, making it easier for site visitors to find relevant information. The change is currently under review and represents progress toward improving the discoverability of content built using the module.

                                                              No other activity was recorded during this period. The module continues its development toward production readiness.

                                                              How can I help on this project?

                                                              • Ensure the team has access to review and testing resources to move the search processor work toward completion.
                                                              • Clarify whether improved search functionality aligns with near-term product priorities and communicate any timeline expectations to the team.

                                                              Contributors: Luhur Abdi Rizal (el7cosmos)

                                                              ---

                                                              AI Integration - ECA

                                                              Work this period focused on extending the module's coverage of AI operations and introducing capability for custom workflows to monitor and intervene in AI provider interactions.

                                                              A new work item was opened to add support for the Summarization operation, which will allow automated workflows to trigger text summarization tasks. This fills a gap in the module's current operation coverage and has been assigned for development.

                                                              A draft merge request was opened for the AI ECA Interceptor submodule, which will expose AI request and response events to workflow automation. This feature will enable organizations to inspect, log, transform, or block AI interactions before they reach providers or after responses are received. The capability is particularly relevant for governance, compliance monitoring, and custom error handling around rate limits and content safety violations.

                                                              Both initiatives are tagged as part of the road to version 1.0.0, indicating progress toward production readiness.

                                                              How can I help on this project?

                                                              • Clarify business priorities between operation coverage and interceptor capabilities to help guide which features reach 1.0.0 first.
                                                              • Ensure development resources remain allocated through the 1.0.0 milestone to sustain current momentum.

                                                              Contributors: Marcus Johansson (Marcus_Johansson)

                                                              ---

                                                              OpenAI Provider

                                                              The OpenAI Provider module made progress this period on future-proofing its integration with OpenAI's platform. A significant update was merged to add support for file handling capabilities, broadening the types of content the module can work with. This enhances the module's utility for workflows that involve documents or images alongside text-based interactions.

                                                              A second update is in progress to migrate the module's chat functionality to OpenAI's newer Responses API. OpenAI is phasing out its older Chat Completions interface in favor of Responses, which will eventually become the standard. This work ensures the module continues to function reliably as OpenAI evolves its platform, avoiding disruption for users who depend on chat features. The approach aligns the module with how other providers are implemented, maintaining consistency across the broader integration framework.

                                                              Both efforts represent strategic investments in the module's long-term viability and feature set, positioning it to support emerging use cases and platform changes.

                                                              How can I help on this project?

                                                              • Prioritize testing and review resources for the Responses API migration to accelerate its completion before OpenAI deprecates the older interface.
                                                              • Assess whether documentation or training materials need updating to reflect new file handling and API capabilities for end users.

                                                              Contributors: Ahmad Khalil (ahmad-khalil-imagex), Bryan Sharpe (b_sharpe)

                                                              ---

                                                              Google Vertex Provider

                                                              A significant merge request was opened to refactor the connection layer and add test coverage to the module. This work aims to improve the reliability and maintainability of the Google Vertex integration, making it easier to identify and prevent issues before they affect users. Testing infrastructure is a foundation for stable releases and reduces the risk of regressions as the module evolves.

                                                              The Refactor HTTP client & add tests merge request represents substantial progress toward production readiness, though the work is still under review and has not yet been integrated.

                                                              No issues were updated and no code was merged during this period. Activity remains focused on preparing the testing and architectural improvements for integration.

                                                              How can I help on this project?

                                                              • Prioritize review capacity to evaluate and merge the open testing work, which is essential for stable release readiness.
                                                              • Consider resourcing to support ongoing quality assurance efforts as the module matures toward production use.

                                                              Contributors: Tamás Nagy (yce)

                                                              ---

                                                              Milvus VDB Provider

                                                              The Milvus VDB Provider module saw progress on reliability improvements during this period. Work addressing connection stability issues was merged, specifically targeting scenarios where the Milvus service becomes unresponsive while the rest of the hosting environment remains functional. This resolves interruptions that could prevent users from accessing vector search capabilities.

                                                              Additionally, a new proposal has been opened to address broader connection failure handling. This work aims to make the integration more resilient when communication with the Milvus database is disrupted, reducing downtime and improving the user experience for sites relying on vector-based search and retrieval.

                                                              These improvements strengthen the module's production readiness by addressing operational stability, which is essential for maintaining consistent service quality as adoption grows.

                                                              How can I help on this project?

                                                              • Prioritize testing resources to validate the connection failure fixes in real-world deployment scenarios, especially diverse hosting environments.
                                                              • Ensure the team has capacity to review and finalize the open connection handling work to maintain momentum on reliability improvements.

                                                              Contributors: Remco Hoeneveld (RemcoHoeneveld), Scott Euser (scotteuser) [1]

                                                              ---

                                                              Model Context Protocol

                                                              A new merge request has been opened to add support for write operations, specifically create and update functionality. This capability would allow users to not only read data through the Model Context Protocol module, but also to create new content and modify existing content. This represents a significant expansion of the module's capabilities, moving it from a read-only integration to a bi-directional system that can actively manage content within Drupal.

                                                              The merge request is currently under review. No issues were updated and no code was committed to the main codebase during this period.

                                                              How can I help on this project?

                                                              • Ensure the team has dedicated code review capacity to evaluate the write operations merge request, as this feature significantly expands the module's scope and risk profile.
                                                              • Clarify the security and permission requirements for write operations to guide development decisions.

                                                              Contributors: Shubham Goel (shubhamgoel)

                                                              ---

                                                              AI Agents

                                                              The project resolved a bug affecting how agents enforce tool restrictions. Previously, when administrators configured a tool to use a forced value but left the property visible, the restriction was silently ignored and the AI model could call the tool with any value it chose. This has now been fixed, ensuring that forced values are respected regardless of visibility settings. The correction means agents will now behave as configured, improving reliability and control over tool behavior.

                                                              Work is underway to improve the user experience when configuring agents. A change is being reviewed that would replace the plain text box for structured output schemas with a dedicated code editor featuring syntax highlighting and validation, making it easier to define and maintain complex output formats without errors.

                                                              Two additional issues were opened: one addressing a crash in the debugging interface when certain tool responses lack expected metadata, and another questioning whether the artifact storage checkbox is necessary given observed behavior. Both have proposed solutions under review.

                                                              How can I help on this project?

                                                              • Prioritize review and testing of the code editor improvement, which will reduce configuration errors and support faster agent development.
                                                              • Clarify the intended behavior of artifact storage to resolve user confusion and ensure documentation aligns with actual functionality.

                                                              Contributors: Ahmad Khader (Ahmad-Khader), AKHIL BABU (AkhilBabu), Prabhavathi Vanipenta (prabha1997)

                                                              ---

                                                              Tool API

                                                              The Tool API project saw limited activity during this period. An issue titled File Input Handling was opened to investigate how the module should handle file inputs when tools are invoked by AI agents. This research task focuses on determining secure approaches for accepting and processing files, including input formats, file loading, and normalization. The work is exploratory in nature and will inform future design decisions about whether file handling capabilities should be integrated into this module or developed separately.

                                                              No code changes were merged or committed during the reporting period. As an early-stage module supporting AI integration, ongoing research and planning work like this is typical and helps ensure the foundation is built correctly before broader feature development begins.

                                                              How can I help on this project?

                                                              • Clarify strategic priority: Confirm whether file handling for AI agents is a near-term requirement or can be deferred based on adoption patterns.
                                                              • Ensure research findings are reviewed: Allocate time for decision-makers to evaluate outcomes once the proof of concept is complete.
                                                              ---

                                                              Drupal Canvas

                                                              Over the past 24 hours, Drupal Canvas made significant progress on core infrastructure for translation, conflict resolution, and AI-powered page building, with three major integrations completed.

                                                              A fix for translation support was merged, addressing a critical issue where deleting optional component properties broke existing pages on multilingual sites. The system now tracks each property's translation requirements per component version, ensuring smooth evolution of component libraries without disrupting live content.

                                                              The rudimentary conflict resolution interface was completed, giving editors a visual tool to resolve conflicts between their draft changes and published content. Users can now compare conflicting versions side-by-side and choose which to keep, reducing the risk of lost work when multiple editors touch the same page.

                                                              Work also merged to refine which content fields appear in component configuration, filtering out internal metadata and duplicate options to streamline the editing experience. Additionally, a validation fix for Canvas AI prevents the system from accepting invalid component configurations, improving reliability of AI-generated pages.

                                                              Several open issues continue to evolve, including authentication infrastructure for headless preview, broader conflict resolution capabilities, and client-side AI orchestration to avoid timeouts on hosted platforms.

                                                              How can I help on this project?

                                                              Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Christian López Espínola (penyaskito) [2], Feliksas Mazeikis (f.mazeikis) [1], Fons Vandamme (f0ns), Jakob P (japerry), Lauri Timmanee (lauriii), project update bot (Project-Update-Bot), Ravi Maniyar (ravi.maniyar.123) [1], scott falconer (scottfalconer), Stephanie Galata (sgalata), Wim Leers (wimleers)

                                                              ---

                                                              Context Control Center (CCC)

                                                              The Context Control Center module made progress on quality improvements and release preparation during the reporting period. Two merge requests were completed: one addressing form and table accessibility, including replacing disabled read-only select elements with plain text and improving screen reader feedback, and another fixing documentation inconsistencies around default configuration values and outdated API references.

                                                              A test failure was also resolved. The module's functional tests had begun failing due to a change in an external dependency (the AI Agents module), which altered an administrative URL without notice. The hardcoded path in the test was updated to restore CI pipeline stability.

                                                              Work continues on the beta 3 release. A gap analysis comparing the current beta API against requirements for a stable 1.0 release was completed and closed, generating several follow-up issues. Multiple merge requests remain in progress addressing cacheability, access control, performance (particularly avoiding full-catalog scans for agents with no scope subscriptions), and further accessibility improvements. Several issues are exploring integration opportunities with related modules in the ecosystem, such as the Annotations and DUADP modules, to ensure the module supports emerging use cases.

                                                              The project remains in active development toward beta 3, with planning underway for release candidate and stable versions.

                                                              How can I help on this project?

                                                              • Prioritize review and merge decisions on the eight open merge requests currently awaiting maintainer feedback to unblock beta 3 release preparation.
                                                              • Clarify strategic direction on integrations with the Annotations and DUADP modules to guide whether follow-up work should be scoped into the stable 1.0 roadmap or deferred.

                                                              Contributors: Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Pravesh Poonia (Pravesh_Poonia) [1], Rob Loach (robloach), Tamas Balog (tbalog)

                                                              ---

                                                              AI translate

                                                              The AI translate module is undergoing a strategic refactoring to support multiple ways of triggering translations. Currently, translations can only be requested through the user interface or command-line tools. Work is now underway to prepare the module to support a third method: agent-driven translation, where AI agents can perform translations automatically through a tool interface.

                                                              This expansion requires restructuring the module's core logic. Rather than maintaining separate code for each entry point, a unified service layer is being developed to handle all translation workflows. A draft merge request for refactoring entity translation into a shared orchestrator service has been opened, introducing new shared components that consolidate duplicated logic from existing interfaces.

                                                              This work positions the module to support more automated and programmatic translation workflows, which could reduce manual effort and enable new integration possibilities. The module remains in active development as the refactoring continues.

                                                              How can I help on this project?

                                                              • Consider allocating additional development resources to accelerate the refactoring work, which will unlock new automated translation capabilities.
                                                              • Identify early adopter teams who could benefit from agent-driven translation once available, to inform prioritization and testing.

                                                              Contributors: Sven Decabooter (svendecabooter)

                                                              ---

                                                              Pinecone VDB Provider

                                                              The Pinecone VDB Provider is an integration module that connects Drupal to Pinecone's vector database service, enabling advanced search and content discovery capabilities powered by AI.

                                                              During this period, a new feature request was opened to add batching support for indexing operations. Batching allows the system to process multiple content items together rather than one at a time, which can significantly improve performance when indexing large volumes of content. This enhancement was inspired by similar work completed in a related database provider. The feature is currently awaiting review, with no development work started yet.

                                                              No code changes were merged or committed during this 24-hour window. The module continues in its current state while the batching feature is being considered.

                                                              How can I help on this project?

                                                              • Clarify whether improved indexing performance is a priority for your content strategy, which would help determine resource allocation for the batching feature.
                                                              • Consider connecting development teams across related database providers to share implementation approaches and accelerate delivery.
                                                              ---

                                                              AG-UI

                                                              AG-UI saw two new feature requests opened during this period, both focused on improving observability and troubleshooting capabilities. The first request concerns Add events for failures, which would enable the system to detect and respond to connection issues or remote service exceptions in a way that provides meaningful feedback to users. The second request, Debug should include timestamps, would add human-readable timing information to debugging output to help diagnose performance and sequencing issues.

                                                              Both items represent incremental improvements to the module's reliability and developer experience rather than core functionality changes. No code was merged or committed during this period. As these are enhancement requests for an early-stage module, the open items do not present immediate concerns.

                                                              How can I help on this project?

                                                              • Clarify priority between reliability improvements and new feature development to guide resource allocation.
                                                              • Ensure developer capacity is available to address observability requests if user feedback indicates troubleshooting is a barrier to adoption.
                                                              ======================================================================== ## [32] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 0 ======================================================================== ## [33] 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] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [2] Fix PHPStan issues on API Explorer (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3563396 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [5] 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 [6] Add YAML support to the MDX editor code blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586585 [7] AI CKEditor tools (Tone, Summarise) fail with "Call to a member function get() on null" on Drupal 11.4.0 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586584 [8] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [9] AI CKEditor: Hardcoded “summarize” message shown for all plugins when no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575346 [10] Plugin shouldn't show any fields if no text is selected (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3557016 [11] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [12] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [13] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [14] Resolve #3563396 "Fix phpstan issues api 2.0.x" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1074 [15] Issue #3586543: Add AI reranking processor for Search API. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1729 [16] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [17] task: #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1759 [18] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1758 [19] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1757 [20] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1756 [21] Workaround until core issue is fixed (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1755 [22] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1749 [23] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1752 [24] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1753 [25] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1754 [26] replace hardcoded "summarize" no-selection message with overridable... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1751 [27] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1748 [28] feat: #3575346 AI CKEditor: Hardcoded “summarize” message shown for all... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1739 [29] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1750 [30] replace hardcoded "summarize" no-selection message with overridable getNoSelectedTextMessage() per plugin (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1240 [31] Cherry-pick from 2.0.x (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1745 [32] Resolve #3574723 "Enforce execution principal" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1233 [33] Create a configurable search api processor for XB data (experience_builder, MR) — https://git.drupalcode.org/project/experience_builder/-/merge_requests/492 [34] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [35] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [36] Draft: Resolve #3584407 "Ai eca interceptor" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/8 [37] Resolve #3548526 "1.3.x support file handling" (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/79 [38] Issue #3558801: Route the OpenAI chat operation through the Responses API... (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/78 [39] Refactor HTTP client & add tests (ai_provider_google_vertex, MR) — https://git.drupalcode.org/project/ai_provider_google_vertex/-/merge_requests/21 [40] fix: Milvus connection failures fixes. (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/51 [41] Resolve #3589484 "Milvus restart on failure" (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/45 [42] 3551588: Write (Create/Update) Operations Support (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/42 [43] ai_agents status subscriber fatals when tool status output has no function.name (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585983 [44] "Use Artifact storage" checkbox not necessary? (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586046 [45] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [46] force_value is ignored when hide_property is unchecked (AI Agents 1.2.x) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586045 [47] Fix AgentStatusSubscriber fatals when tool status output has no function.name (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/295 [48] Issue #3586042 Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/284 [49] fix: #3586045 persist force_value tool restrictions saved from the agent form (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/294 [50] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [51] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [52] AssertionError in AutoSaveHooks on non-node revision revert forms (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3578668 [53] Add content_translation_source and content_translation_outdated to `\Drupal\canvas\ShapeMatcher\PropSourceSuggester::isConsideredIrrelevant()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591779 [54] Content template editor preview shows a stale snapshot instead of live edits (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591782 [55] Add heuristics for exposing fields/props to the content-entity-reference selection UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591669 [56] Product verification: merging reference field-level field properties with the referenced entity's own data (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591681 [57] UI Exception / 500 Error when triggering Preview on Content Templates causes persistent state lock (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591684 [58] Remove feature flag for content entity reference props and make it public (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591781 [59] Add feature flag for content entity reference props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591711 [60] bnjmnm investigation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591780 [61] Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591727 [62] Document relevance of ordering of operations in `Component::preSave` to prevent future bugs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591778 [63] Rudimentary conflict resolution UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591601 [64] Introduce the authentication and security model for headless draft preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591775 [65] Add support for file fields using custom stream wrappers (currently only `public` is supported) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3577155 [66] Installing Canvas breaks private file system (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591647 [67] Canvas translation onboarding has translation form and default language options that should not be possible to change (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591740 [68] Changing Metadata Clears Canvas AI Prompt Text (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3558257 [69] Canvas AI: remove unused historyStore subscription and decide on IndexedDB chat persistence (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [70] DX: `php (lint)` CI job runs against 11.2, fails on 11.3/11.4 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591767 [71] Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [72] Canvas AI: Client-side orchestration loop for Canvas AI(POC) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591615 [73] redirectCanvasToDefaultLanguage() fights modules that support language-prefixed editor URLs (e.g. canvas_multilingual), causing redirect loops (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591772 [74] Canvas AI: Agent system prompts render with an error in the MDX editor (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591776 [75] Automated Drupal 12 compatibility fixes for canvas 1.x-dev (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591603 [76] Make Canvas test suite pass on 11.4; drop support for 11.2 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591764 [77] Automated Drupal 12 compatibility fixes for canvas (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591556 [78] Boolean field values resetting when using Patterns (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591637 [79] Boolean prop values not retained correctly on SDC components with multiple boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591697 [80] Cast transform treats serialized "0" as true for boolean props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591739 [81] Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591773 [82] Boolean props auto-enable when another prop is changed in the Canvas form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591716 [83] Create new update path fixture: Drupal 11.3 + Canvas 1.7 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591774 [84] Explicitly support `comment` as a referenceable content entity type (stop omitting it from the content entity types endpoint) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591674 [85] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [86] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [87] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [88] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [89] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [90] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [91] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [92] fix(Page): #3591763 Publishing a page without a URL alias fails: its empty... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1331 [93] Resolve #3587161 "Integrate ddev local devepment enviroment into canvas" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1014 [94] Issue #3591779: Exclude content_translation_source/outdated from PropSourceSuggester suggestions (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1340 [95] fix(Page builder): #3591782 Content template editor preview shows a stale snapshot instead of live edits (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1339 [96] chore(Internal HTTP API): #3591669 Heuristics for the content-entity-reference selection UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1289 [97] Resolve #3591781 "Remove feature flag for content entity reference props and make it public" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1338 [98] #3591698: Promote canvas_dev_translation into canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1258 [99] Draft: #3591780 playwright reports fail even when all shards pass (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1337 [100] Draft: Stage Canvas autosaves in a dedicated Workspace (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1056 [101] Decouple component_tree translation logic from TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1320 [102] Draft: feat: Introduce the authentication and security model for headless draft preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1336 [103] chore(Component sources): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [104] Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1316 [105] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [106] Draft: Issue #3591668: Add text-based comparison of entities UI (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1266 [107] Draft: feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [108] Fix Canvas AI prompt reset on metadata changes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/530 [109] Automated Project Update Bot fixes (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1150 [110] 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 [111] feat(Internal HTTP API): #3591674 Support comment as a referenceable content entity type (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1335 [112] #3591773: Unchecked checkbox for a boolean SDC prop initializes as checked in the component inputs form (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1334 [113] Issue #3591663: Fail validation for props that do not exist on a component (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1330 [114] Assess duadp module's integration with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586322 [115] Beta vs 1.1 CCC API gap analysis (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586318 [116] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [117] Avoid functional-test dual-container traps (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586325 [118] Add basic accessibility test coverage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586326 [119] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [120] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [121] CCC beta3 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586182 [122] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [123] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [124] [Meta] CCC cleanup from beta3 code review findings for beta3 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586310 [125] AiContextAgentSettingsTest fails with ai_agents 1.3.2+ due to hardcoded edit form path (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586323 [126] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [127] Create CCC beta3 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586295 [128] CCC beta3 QA (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586296 [129] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [130] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [131] Selector loads the entire catalog when an agent has no scope subscriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586315 [132] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [133] Usage record page leaks context item content and grants links without access checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586311 [134] Replace brittle hardcoded admin path assertions in functional and kernel tests with route-derived URLs (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586324 [135] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [136] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [137] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [138] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [139] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [140] Issue #3586306: Update `ai_context_tags` have an `enforced` dependency on ai_context (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/212 [141] Issue #3586299: Fix test and documentation consistency before rc1. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/207 [142] Issue #3586292: Ignore conditional context when disabled. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/194 [143] Issue #3586304: Clean up CCC form and table accessibility cleanup (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/205 [144] Issue #3586305: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/202 [145] Issue #3586315: Avoid full catalog scan when agent has no scope subscriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/210 [146] Draft: Issue #3586283: Finalize Context Importer and Extensions page. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/188 [147] Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/199 [148] Issue #3581955: Add EventSubscriber to inject context into ai_ckeditor tools. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/116 [149] 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 [150] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [151] 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 [152] Issue #3586300: Updated CCC cacheability and access metadata. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/204 [153] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [154] Issue #3586303: Announce filtered row counts to screen readers in JS filter behaviors. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/206 [155] Issue #3586311: Harden usage record and listing access checks. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/208 [156] Issue #3586323: Update agent edit form path in test. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/213 [157] Refactor translation workflow to support Tool API and agent-driven translation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585523 [158] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/27 [159] Draft: Refactor entity translation into a shared orchestrator service (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/26 [160] Pinecone: Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [161] Add events for failures (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590041 [162] Debug should include timestamps (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590042 --- TODAY'S MODULE SUMMARIES ---

                                                                AI (Artificial Intelligence)

                                                                The AI module delivered several user-facing fixes to its rich text editor (CKEditor) integration. A longstanding issue where all AI CKEditor tools displayed the same "you must select text to summarize" message has been resolved; each tool (Translate, Tone, SpellFix) now shows appropriate context-specific guidance when no text is selected. A related fix ensures that plugin configuration fields are hidden entirely until the user selects text, reducing confusion. Additionally, a compatibility workaround was applied to address fatal errors affecting CKEditor tools on Drupal 11.4.0.

                                                                Work is progressing on new automation capabilities. Merge requests are under review to add command-line tools (called "agent skills") that will allow site operators to configure AI settings, guardrails, and field automators programmatically rather than only through the administrative interface. These tools are intended to support scripted deployment and integration with AI-driven site management workflows.

                                                                A new Search API processor for reranking search results using AI models is in development. Reranking improves the relevance of semantic search by re-ordering results after an initial query; the processor will work with any Search API backend (database, Solr, or vector stores). Separately, work continues on embedding performance improvements and code quality tasks, including resolution of static analysis issues in the API Explorer component.

                                                                How can I help on this project?

                                                                • Review and approve the Search API reranking processor merge request to enable the feature for semantic search users.
                                                                • Prioritize a decision on how the module should notify site administrators when AI providers release better models, as this affects long-term maintainability and user experience.

                                                                Contributors: Abhisek Mazumdar (abhisekmazumdar), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [2], Daniel Rodriguez (danrod), scott falconer (scottfalconer)

                                                                ---

                                                                Experience Builder

                                                                A new merge request was opened to create a configurable search api processor for XB data. This work will enable better search functionality for content created with Experience Builder, making it easier for site visitors to find relevant information. The change is currently under review and represents progress toward improving the discoverability of content built using the module.

                                                                No other activity was recorded during this period. The module continues its development toward production readiness.

                                                                How can I help on this project?

                                                                • Ensure the team has access to review and testing resources to move the search processor work toward completion.
                                                                • Clarify whether improved search functionality aligns with near-term product priorities and communicate any timeline expectations to the team.

                                                                Contributors: Luhur Abdi Rizal (el7cosmos)

                                                                ---

                                                                AI Integration - ECA

                                                                Work this period focused on extending the module's coverage of AI operations and introducing capability for custom workflows to monitor and intervene in AI provider interactions.

                                                                A new work item was opened to add support for the Summarization operation, which will allow automated workflows to trigger text summarization tasks. This fills a gap in the module's current operation coverage and has been assigned for development.

                                                                A draft merge request was opened for the AI ECA Interceptor submodule, which will expose AI request and response events to workflow automation. This feature will enable organizations to inspect, log, transform, or block AI interactions before they reach providers or after responses are received. The capability is particularly relevant for governance, compliance monitoring, and custom error handling around rate limits and content safety violations.

                                                                Both initiatives are tagged as part of the road to version 1.0.0, indicating progress toward production readiness.

                                                                How can I help on this project?

                                                                • Clarify business priorities between operation coverage and interceptor capabilities to help guide which features reach 1.0.0 first.
                                                                • Ensure development resources remain allocated through the 1.0.0 milestone to sustain current momentum.

                                                                Contributors: Marcus Johansson (Marcus_Johansson)

                                                                ---

                                                                OpenAI Provider

                                                                The OpenAI Provider module made progress this period on future-proofing its integration with OpenAI's platform. A significant update was merged to add support for file handling capabilities, broadening the types of content the module can work with. This enhances the module's utility for workflows that involve documents or images alongside text-based interactions.

                                                                A second update is in progress to migrate the module's chat functionality to OpenAI's newer Responses API. OpenAI is phasing out its older Chat Completions interface in favor of Responses, which will eventually become the standard. This work ensures the module continues to function reliably as OpenAI evolves its platform, avoiding disruption for users who depend on chat features. The approach aligns the module with how other providers are implemented, maintaining consistency across the broader integration framework.

                                                                Both efforts represent strategic investments in the module's long-term viability and feature set, positioning it to support emerging use cases and platform changes.

                                                                How can I help on this project?

                                                                • Prioritize testing and review resources for the Responses API migration to accelerate its completion before OpenAI deprecates the older interface.
                                                                • Assess whether documentation or training materials need updating to reflect new file handling and API capabilities for end users.

                                                                Contributors: Ahmad Khalil (ahmad-khalil-imagex), Bryan Sharpe (b_sharpe)

                                                                ---

                                                                Google Vertex Provider

                                                                A significant merge request was opened to refactor the connection layer and add test coverage to the module. This work aims to improve the reliability and maintainability of the Google Vertex integration, making it easier to identify and prevent issues before they affect users. Testing infrastructure is a foundation for stable releases and reduces the risk of regressions as the module evolves.

                                                                The Refactor HTTP client & add tests merge request represents substantial progress toward production readiness, though the work is still under review and has not yet been integrated.

                                                                No issues were updated and no code was merged during this period. Activity remains focused on preparing the testing and architectural improvements for integration.

                                                                How can I help on this project?

                                                                • Prioritize review capacity to evaluate and merge the open testing work, which is essential for stable release readiness.
                                                                • Consider resourcing to support ongoing quality assurance efforts as the module matures toward production use.

                                                                Contributors: Tamás Nagy (yce)

                                                                ---

                                                                Milvus VDB Provider

                                                                The Milvus VDB Provider module saw progress on reliability improvements during this period. Work addressing connection stability issues was merged, specifically targeting scenarios where the Milvus service becomes unresponsive while the rest of the hosting environment remains functional. This resolves interruptions that could prevent users from accessing vector search capabilities.

                                                                Additionally, a new proposal has been opened to address broader connection failure handling. This work aims to make the integration more resilient when communication with the Milvus database is disrupted, reducing downtime and improving the user experience for sites relying on vector-based search and retrieval.

                                                                These improvements strengthen the module's production readiness by addressing operational stability, which is essential for maintaining consistent service quality as adoption grows.

                                                                How can I help on this project?

                                                                • Prioritize testing resources to validate the connection failure fixes in real-world deployment scenarios, especially diverse hosting environments.
                                                                • Ensure the team has capacity to review and finalize the open connection handling work to maintain momentum on reliability improvements.

                                                                Contributors: Remco Hoeneveld (RemcoHoeneveld), Scott Euser (scotteuser) [1]

                                                                ---

                                                                Model Context Protocol

                                                                A new merge request has been opened to add support for write operations, specifically create and update functionality. This capability would allow users to not only read data through the Model Context Protocol module, but also to create new content and modify existing content. This represents a significant expansion of the module's capabilities, moving it from a read-only integration to a bi-directional system that can actively manage content within Drupal.

                                                                The merge request is currently under review. No issues were updated and no code was committed to the main codebase during this period.

                                                                How can I help on this project?

                                                                • Ensure the team has dedicated code review capacity to evaluate the write operations merge request, as this feature significantly expands the module's scope and risk profile.
                                                                • Clarify the security and permission requirements for write operations to guide development decisions.

                                                                Contributors: Shubham Goel (shubhamgoel)

                                                                ---

                                                                AI Agents

                                                                The project resolved a bug affecting how agents enforce tool restrictions. Previously, when administrators configured a tool to use a forced value but left the property visible, the restriction was silently ignored and the AI model could call the tool with any value it chose. This has now been fixed, ensuring that forced values are respected regardless of visibility settings. The correction means agents will now behave as configured, improving reliability and control over tool behavior.

                                                                Work is underway to improve the user experience when configuring agents. A change is being reviewed that would replace the plain text box for structured output schemas with a dedicated code editor featuring syntax highlighting and validation, making it easier to define and maintain complex output formats without errors.

                                                                Two additional issues were opened: one addressing a crash in the debugging interface when certain tool responses lack expected metadata, and another questioning whether the artifact storage checkbox is necessary given observed behavior. Both have proposed solutions under review.

                                                                How can I help on this project?

                                                                • Prioritize review and testing of the code editor improvement, which will reduce configuration errors and support faster agent development.
                                                                • Clarify the intended behavior of artifact storage to resolve user confusion and ensure documentation aligns with actual functionality.

                                                                Contributors: Ahmad Khader (Ahmad-Khader), AKHIL BABU (AkhilBabu), Prabhavathi Vanipenta (prabha1997)

                                                                ---

                                                                Tool API

                                                                The Tool API project saw limited activity during this period. An issue titled File Input Handling was opened to investigate how the module should handle file inputs when tools are invoked by AI agents. This research task focuses on determining secure approaches for accepting and processing files, including input formats, file loading, and normalization. The work is exploratory in nature and will inform future design decisions about whether file handling capabilities should be integrated into this module or developed separately.

                                                                No code changes were merged or committed during the reporting period. As an early-stage module supporting AI integration, ongoing research and planning work like this is typical and helps ensure the foundation is built correctly before broader feature development begins.

                                                                How can I help on this project?

                                                                • Clarify strategic priority: Confirm whether file handling for AI agents is a near-term requirement or can be deferred based on adoption patterns.
                                                                • Ensure research findings are reviewed: Allocate time for decision-makers to evaluate outcomes once the proof of concept is complete.
                                                                ---

                                                                Drupal Canvas

                                                                Over the past 24 hours, Drupal Canvas made significant progress on core infrastructure for translation, conflict resolution, and AI-powered page building, with three major integrations completed.

                                                                A fix for translation support was merged, addressing a critical issue where deleting optional component properties broke existing pages on multilingual sites. The system now tracks each property's translation requirements per component version, ensuring smooth evolution of component libraries without disrupting live content.

                                                                The rudimentary conflict resolution interface was completed, giving editors a visual tool to resolve conflicts between their draft changes and published content. Users can now compare conflicting versions side-by-side and choose which to keep, reducing the risk of lost work when multiple editors touch the same page.

                                                                Work also merged to refine which content fields appear in component configuration, filtering out internal metadata and duplicate options to streamline the editing experience. Additionally, a validation fix for Canvas AI prevents the system from accepting invalid component configurations, improving reliability of AI-generated pages.

                                                                Several open issues continue to evolve, including authentication infrastructure for headless preview, broader conflict resolution capabilities, and client-side AI orchestration to avoid timeouts on hosted platforms.

                                                                How can I help on this project?

                                                                Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Christian López Espínola (penyaskito) [2], Feliksas Mazeikis (f.mazeikis) [1], Fons Vandamme (f0ns), Jakob P (japerry), Lauri Timmanee (lauriii), project update bot (Project-Update-Bot), Ravi Maniyar (ravi.maniyar.123) [1], scott falconer (scottfalconer), Stephanie Galata (sgalata), Wim Leers (wimleers)

                                                                ---

                                                                Context Control Center (CCC)

                                                                The Context Control Center module made progress on quality improvements and release preparation during the reporting period. Two merge requests were completed: one addressing form and table accessibility, including replacing disabled read-only select elements with plain text and improving screen reader feedback, and another fixing documentation inconsistencies around default configuration values and outdated API references.

                                                                A test failure was also resolved. The module's functional tests had begun failing due to a change in an external dependency (the AI Agents module), which altered an administrative URL without notice. The hardcoded path in the test was updated to restore CI pipeline stability.

                                                                Work continues on the beta 3 release. A gap analysis comparing the current beta API against requirements for a stable 1.0 release was completed and closed, generating several follow-up issues. Multiple merge requests remain in progress addressing cacheability, access control, performance (particularly avoiding full-catalog scans for agents with no scope subscriptions), and further accessibility improvements. Several issues are exploring integration opportunities with related modules in the ecosystem, such as the Annotations and DUADP modules, to ensure the module supports emerging use cases.

                                                                The project remains in active development toward beta 3, with planning underway for release candidate and stable versions.

                                                                How can I help on this project?

                                                                • Prioritize review and merge decisions on the eight open merge requests currently awaiting maintainer feedback to unblock beta 3 release preparation.
                                                                • Clarify strategic direction on integrations with the Annotations and DUADP modules to guide whether follow-up work should be scoped into the stable 1.0 roadmap or deferred.

                                                                Contributors: Jesse Hofmann-Smith (jessehs), Joshua Fernandes (joshua1234511), Juan Correa (jucs7) [1], Kristen Pol (kepol) [1], Pravesh Poonia (Pravesh_Poonia) [1], Rob Loach (robloach), Tamas Balog (tbalog)

                                                                ---

                                                                AI translate

                                                                The AI translate module is undergoing a strategic refactoring to support multiple ways of triggering translations. Currently, translations can only be requested through the user interface or command-line tools. Work is now underway to prepare the module to support a third method: agent-driven translation, where AI agents can perform translations automatically through a tool interface.

                                                                This expansion requires restructuring the module's core logic. Rather than maintaining separate code for each entry point, a unified service layer is being developed to handle all translation workflows. A draft merge request for refactoring entity translation into a shared orchestrator service has been opened, introducing new shared components that consolidate duplicated logic from existing interfaces.

                                                                This work positions the module to support more automated and programmatic translation workflows, which could reduce manual effort and enable new integration possibilities. The module remains in active development as the refactoring continues.

                                                                How can I help on this project?

                                                                • Consider allocating additional development resources to accelerate the refactoring work, which will unlock new automated translation capabilities.
                                                                • Identify early adopter teams who could benefit from agent-driven translation once available, to inform prioritization and testing.

                                                                Contributors: Sven Decabooter (svendecabooter)

                                                                ---

                                                                Pinecone VDB Provider

                                                                The Pinecone VDB Provider is an integration module that connects Drupal to Pinecone's vector database service, enabling advanced search and content discovery capabilities powered by AI.

                                                                During this period, a new feature request was opened to add batching support for indexing operations. Batching allows the system to process multiple content items together rather than one at a time, which can significantly improve performance when indexing large volumes of content. This enhancement was inspired by similar work completed in a related database provider. The feature is currently awaiting review, with no development work started yet.

                                                                No code changes were merged or committed during this 24-hour window. The module continues in its current state while the batching feature is being considered.

                                                                How can I help on this project?

                                                                • Clarify whether improved indexing performance is a priority for your content strategy, which would help determine resource allocation for the batching feature.
                                                                • Consider connecting development teams across related database providers to share implementation approaches and accelerate delivery.
                                                                ---

                                                                AG-UI

                                                                AG-UI saw two new feature requests opened during this period, both focused on improving observability and troubleshooting capabilities. The first request concerns Add events for failures, which would enable the system to detect and respond to connection issues or remote service exceptions in a way that provides meaningful feedback to users. The second request, Debug should include timestamps, would add human-readable timing information to debugging output to help diagnose performance and sequencing issues.

                                                                Both items represent incremental improvements to the module's reliability and developer experience rather than core functionality changes. No code was merged or committed during this period. As these are enhancement requests for an early-stage module, the open items do not present immediate concerns.

                                                                How can I help on this project?

                                                                • Clarify priority between reliability improvements and new feature development to guide resource allocation.
                                                                • Ensure developer capacity is available to address observability requests if user feedback indicates troubleshooting is a barrier to adoption.
                                                                ======================================================================== ## [34] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 4