# Prompt log — 24h 2026-06-29 ======================================================================== ## [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-06-29T05:00:06+00:00 to 2026-06-30T05: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), Ahmad Khalil (ahmad-khalil-imagex), Joshua Fernandes (joshua1234511), Pravesh Poonia (Pravesh_Poonia), Rob Loach (robloach), Thomas Werthmüller (weri)". 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). ### [Tool Explorer does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582473) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1446 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Tool Explorer does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The Tool Explorer UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the Tool Explorer has styling issues that make it diffi… ### [MDX Editor does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582474) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1445 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: MDX Editor does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The MDX Editor UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the MDX Editor has styling issues that make it difficult to u… ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project)](https://git.drupalcode.org/project/ai/-/work_items/3586556) State: opened | Updated: 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation The `ai` module ships a deprecated copy of Field Widget Actions at `ai/modules/field_widget_actions/`. Its `field_widget_actions.info.yml` is already marked: `lifecycle: deprecated lifecycle_link: https://www.drupal.org/node/3568339 ` This bundled copy has the **same machine name** (`field_widget_actions`) **and the same PHP namespace** (`Drupal\field_widget_actions\`) as the standalone contrib project https://www.drupal.org/project/field_widget_actions. When both are present in a codebase — which happens for any project that has `drupal/ai` as a (dev) dependency alon… ### [Preserve HTML in streamed output](https://git.drupalcode.org/project/ai/-/work_items/3586558) State: opened | Updated: 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1734 [Resolve #3586558 "Preserve HTML in streamed output"](https://git.drupalcode.org/project/ai/-/merge_requests/1734) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 212 diff lines Description: ## Summary As reported in https://git.drupalcode.org/project/ai_translate/-/work_items/3585526, there seems to be an issue with HTML processing in streamed outputs. I wasn't able to look into the issue much closer, but the proposed fix seems to imply changes to the AI core module. ## Environment - Drupal version: 11.3.10 - Paragraphs: 8.x-1.20 Original Issue When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus lig… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task 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 a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/work_items/3586536) State: opened | Updated: 2026-06-29 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1680 [Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/merge_requests/1680) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 142 diff lines Description: # Title Support the `ai_json_schema` element inside off-canvas dialogs (correct rendering + value sync) ## Description The `ai_json_schema` form element (`Drupal\ai\Element\AiJsonSchema`) is documented for use "in any Drupal form", but it does not work when rendered inside Drupal's **off-canvas dialog** — which is how the `bpmn_io` modeller shows configuration forms. Upstream the element is only used on full-page forms (e.g. AI API Explorer), where it works; off-canvas has never been exercised, so this is not a regression — it is making the element robust in a context new consumers need. T… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x 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… ### [force_value + hide_property in tool_usage_limits does not inject value at tool execution time](https://git.drupalcode.org/project/ai/-/work_items/3586577) State: opened | Updated: 2026-06-29 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: (Written with the help of Claude Sonnet 4.6) I've been testing AI Search (1.3.0-alpha3) with AI (1.5.x-dev) and I think I have found an issue. After creating a search assistant pointing at a vector DB index, it does not work. I looked at the configuration of the AI agent that was created when I created the assistant, and it looks like if both force_value and hide_property are enabled, the forced value is never actually injected when the tool executes. The result is a validation error: > Invalid value for [parameter] in [tool]: This value should not be null. Claude seems to think this is… ### [Rethrow exceptions from queue processor](https://git.drupalcode.org/project/ai/-/work_items/3571498) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ahmad Khalil (ahmad-khalil-imagex) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [nicxvan](https://www.drupal.org/user/531480) >>> [Tracker] Update Summary: Exceptions should be rethrown so custom processors can handle them Short Description: Rethrow exceptions Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to handle unstructured and other exceptions ourselves in a process runner Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolutio… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-06-29 | Author: ro-no-lo | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/work_items/3586569) State: opened | Updated: 2026-06-29 | Author: mxh (hauptm) | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::needsReview Description: ## Summary When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Problem Making this status information optional improves general UX. ## Proposed solution *(optional)* Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Workaroun… ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-29 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug, priority::normal Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… ### [Add cache-write and tool-use prompt tokens to TokenUsageDto](https://git.drupalcode.org/project/ai/-/work_items/3586576) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Marcus Johansson (Marcus_Johansson) | Labels: aiCoreModule, category::feature, priority::normal, v1.5.x-dev Description: ## Problem/Motivation `TokenUsageDto` (`src/Dto/TokenUsageDto.php`) only models five token counts: ```php public ?int $input = NULL, public ?int $output = NULL, public ?int $total = NULL, public ?int $reasoning = NULL, public ?int $cached = NULL, ``` Two token-usage values reported by the major providers have nowhere to live in this DTO, so they are silently dropped before reaching logging/observability or any cost-reporting layer: ### 1. Cache **write** / cache creation tokens The current `cached` field maps only to **cache reads** (`prompt_tokens_details.cached_tokens` in `OpenAiBasedPr… ### [Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) State: closed | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: Valery Lourie (valthebald) | Labels: category::plan, priority::normal, state::accepted Description: Drupal AI Contribution meeting from June 15 at 18:00 to June 16, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586480: Drupal AI Contribution meeting 2026-06-01](https://git.drupalcode.org/project/ai/-/work_items/3586480) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: harivansh sharma (harivansh) | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Marcus Johansson (Marcus_Johansson) | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [[META] AI background / autonamous agents](https://git.drupalcode.org/project/ai/-/work_items/3560619) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [guptahemant](https://www.drupal.org/user/3278073) >>> [Tracker] Update Summary: Background Agent Processing - We have a plan for the intial preparation of background agents Short Description: Allows Agents to work on the sever without direct user involvement enabling many automation features such as firing on cron or in response to content changes. Includes significant Architecture improvements. Check-in Date: 07/12/2025 Additional Collaborators: @guptahemant, @harivansh Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker]… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ricardo Castañeda (cadence96) | Labels: UX, aiAutomators, category::feature, priority::normal Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy](https://git.drupalcode.org/project/ai/-/work_items/3586573) State: opened | Updated: 2026-06-29 | Author: Thomas Werthmüller (weri) | Assigned: unassigned | Labels: category::feature, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1733 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1733) | State: opened | Author: Thomas Werthmüller (weri), 38 diff lines Description: ## Summary When I create a taxonomy for the tone of voice and allow to translate the terms, in the UI of the CKEditor always the default language is displayed and also the description of this term is used for prompting and not the translated version. ## Environment - Drupal version: 11 - Module version: 1.4.3 ### Screenshots ![CleanShot_2026-06-26_at_16.30.17](https://git.drupalcode.org/-/project/106525/uploads/0df4b3af6167109ba085e44a575e6a88/CleanShot_2026-06-26_at_16.30.17.png){width="725" height="600"} --- MERGE REQUESTS (24h) --- ### [Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone.](https://git.drupalcode.org/project/ai/-/merge_requests/1735) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/remove-bundled-field-widget-actions-3586556 | 3221 diff lines Description: Finishes the deprecation of the bundled field_widget_actions sub-module: - Adds drupal/field_widget_actions: ^1.0 to composer.json require so the standalone package (same machine name, same PHP namespace) is always present on composer update. - Deletes modules/field_widget_actions/ (34 files) entirely. Sites that had the bundled module enabled continue to work seamlessly: the standalone has an identical machine name and namespace, so core.extension entries resolve without any migration. ai_automators.info.yml is left unchanged (optional integration); FieldWidgetProcessing.php already gu… ### [Issue #3586475: Rename the RegExp Guardrail labels to RegEx](https://git.drupalcode.org/project/ai/-/merge_requests/1689) State: opened | Author: Rob Loach (robloach) | Branch: 3586475-guardrails-regex-plugin-name | 205 diff lines Description: ## Description This renames the regexp guardrail labels to "RegEx" for consistency within the UI. It doesn't change the machine IDs, or class names, just the labels. ## Testing instructions 1. Visit the Guardrails administration screen 2. Expect to see RegEx, instead of regexp Closes #3586475 ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-review of my own code - [x] I have added or updated tests, or explained in the description why this change is not covered by tests - [x] I have updated documentation for any new or chan… ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… ### [Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode.](https://git.drupalcode.org/project/ai/-/merge_requests/1529) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3584977-restricttotopic-guardrail-add | 895 diff lines Description: Closes #3584977 --- COMMITS (24h) --- (none) ======================================================================== ## [2] summariseModule:ai_initiative:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

    Drupal AI Initiative

    then use

    ,

    ,

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

      How can I help on this project?

      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Onboard Gold AI partner: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Gold partner: Reading Room ## Proposed resolution Go through onboarding form and do what I can and then hand off to dev, marketing, UX, and QA teams as needed. ## Target date or deadline June 2026 ## Remaining tasks - [x] Create partner onboarding tab from template - [x] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [x] Add to mailing lists - [x] Add to private Slack channels (partners/contributors) - [x] Add to public Slack channels (marketing/UX/QA/ai-contrib) - [x] Add to non-dev meeting invites (marketing/UX) - [x] A… ### [Run AI partner audit report: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586591+s We want to make sure they were successfully onboarded to the right places. ### Proposed resolution Run the audit report for this partner after a week or two to look for gaps. ### Target date or deadline July 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report > Related issue: [Issue #3579583](https://www.drupal.org/node/3579583) ### [Add Gold AI partner to d.o pages: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586591+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** https://www.drupal.org/reading-room **100 word text:** Reading Room is an independent digital agency specialising in complex, mission-critical digital platforms. Since 1996, the agency has helped organisations modernise, scale and continuously improve the digital products and services their audiences rely on. Our multidisciplinary teams provide the strategic thinking, engineering capability and ongoing partnership needed to deliver robust, secure and high-performing digital service… ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> > [!note] Migrated issue > > > > > > Reported by: [kristen pol](https://www.drupal.org/user/8389) [Tracker] **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Additional Collaborators:** *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields are available [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ON… ### [Convert partner templates into GitLab templates](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority::normal, state::accepted Description: ## Problem/motivation Partner issue templates were created when we were using d.o issues: - #3579583+ - #3579591+ - #3579584+ We should use GitLab templates. ## Solution Convert to GitLab templates. ## Tasks - Create templates - Review and test ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Gitlab Control Server - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: CNAME gitlab.drupal-ai-initiative.org => forgespotclustertogw9g.elb.devpanel.com ### [Module Finder - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: Point module-finder.drupal-ai-initiative.org towards dp-yosnzdse.elb.devpanel.com --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [3] summariseModule:ai_integration_eca:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Integration - ECA (machine name: ai_integration_eca) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

      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 Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [4] summariseModule:ai_agents_test:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

        AI Agents Test

        then use

        ,

        ,

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

          How can I help on this project?

          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [5] summariseModule:ai_provider_openai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: OpenAI Provider (machine name: ai_provider_openai) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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: Paul Sheldrake (paulsheldrake)". 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) --- ### [add support for batch embeddings](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59) State: opened | Author: Paul Sheldrake (paulsheldrake) | Branch: 3568659-support-batched-embeddings | 284 diff lines Description: Closes #3568659 --- COMMITS (24h) --- (none) ======================================================================== ## [6] summariseModule:ai_provider_anthropic:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

            Anthropic Provider

            then use

            ,

            ,

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

              How can I help on this project?

              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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: #3607044 Append a trailing user message when a conversation ends with a non-user role](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3607044-chat-requests-rejected | 158 diff lines Description: Fixes #3607044. `AnthropicProvider::chat()` forwards messages as-is; Anthropic rejects a conversation whose last message is not from the user ("the conversation must end with a user message" / no assistant prefill). The AI Agents multi-agent handoff (e.g. Drupal Canvas AI) can end a conversation with a trailing assistant or system message, producing a generic "Something went wrong" in Canvas AI. This overrides `chat()` to append a minimal trailing `user` message ("Continue.") whenever the last message role is not `user` (covering both trailing assistant and system). Tested on Drupal 11.3, a… --- COMMITS (24h) --- (none) ======================================================================== ## [7] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Artem Dmitriiev (a.dmitriiev)". 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) --- ### [add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3568651-batch-inserts-index-only | 297 diff lines Description: Closes #3568651 --- COMMITS (24h) --- (none) ======================================================================== ## [8] summariseModule:ai_image_alt_text:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Image Alt Text (machine name: ai_image_alt_text) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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: Peter Philipp (daspeter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                AI Image Alt Text

                then use

                ,

                ,

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

                  How can I help on this project?

                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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) --- ### [task: #3606995 Support newer versions of drupal/ai](https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31) State: opened | Author: Peter Philipp (daspeter) | Branch: 3606995-support-newer-versions | 12 diff lines Description: Closes #3606995 --- COMMITS (24h) --- (none) ======================================================================== ## [9] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                  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). ### [Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586043) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !287 [fix: #3586043 Coerce array dynamical token values to string in applyTokens()](https://git.drupalcode.org/project/ai_agents/-/merge_requests/287) | State: opened | Author: Rajab Natshah (RajabNatshah), 144 diff lines Description: ### Problem On every AI Agent run, a PHP warning is logged (and shown as a status message inside the Drupal Canvas AI editor): ``` Warning: Array to string conversion in Drupal\Core\Utility\Token->doReplace() (line 283 of core/lib/Drupal/Core/Utility/Token.php). ``` ### Backtrace (abridged) ``` Token.php(283): str_replace() Token.php(214): Drupal\Core\Utility\Token->doReplace() token_or/src/Token.php(27): ...->replacePlain() eca/.../TokenDecoratorTrait.php(444): ... ai_agents/src/PluginBase/AiAgentEntityWrapper.php(1323): ...->replacePlain() ai_agents/src/PluginBase/AiAgentEntityWrapper.ph… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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). ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-29 | Author: Stephan Huber (stmh) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [11] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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), AKHIL BABU (AkhilBabu) [2], Andrew Belcher (andrewbelcher), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito), Feliksas Mazeikis (f.mazeikis), Gábor Hojtsy (goba), Kunal Sachdev (kunal.sachdev) [1], Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [1], Ted Bowman (tedbow), utkarsh_33 (Utkarsh_33), Wim Leers (wimleers) [2]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                      Drupal Canvas

                      then use

                      ,

                      ,

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

                        How can I help on this project?

                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Canvas AI: In-progress chat messages disappear when editing page metadata during an active run](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-06-30 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::needsReview Description: Follow-up to #3558257. ### Problem While the AI agent is running, editing the page title or meta description removes the in-progress status messages from the chat UI. ### Steps to reproduce 1. Install Canvas AI on Drupal CMS 2 (starter recipe). 2. Open a new page and open the chatbot. 3. Prompt: `Add an "Our Plans" section for SportsFlix, a sports streaming platform`. 4. While it is still running, type in the description or title field. 5. The in-progress messages disappear from the chat UI. ### Root cause The in-progress status bubble is added imperatively in `startPolling()` via `chatEl.a… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-06-30 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side)](https://git.drupalcode.org/project/canvas/-/work_items/3591751) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1315 [fix: #3591751 Compile JSX server-side for AI-created code components](https://git.drupalcode.org/project/canvas/-/merge_requests/1315) | State: opened | Author: Rajab Natshah (RajabNatshah), 188 diff lines Description: ## Problem/Motivation Code components (`js_component`) created or edited **programmatically** — e.g. by the AI tools in `canvas_ai` — render as `[object Object]` in the editor preview and on the page. They never hydrate. ## Cause `canvas_ai` stores the source JSX but leaves the compiled JS empty: - `modules/canvas_ai/src/Plugin/AiFunctionCall/CreateComponent.php` → `"compiledJs" => ""` - `modules/canvas_ai/src/Plugin/AiFunctionCall/EditComponentJs.php` → `"compiledJs" => ""` Code components are normally compiled in the **browser** editor (swc/wasm) on save, which sets `compiledJs`. The pr… ### [Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/work_items/3591750) State: opened | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1314 [chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/merge_requests/1314) | State: opened | Author: Bálint Kléri (balintbrews), 531 diff lines Description: A CLI `push` can update `canvas.asset_library.global` in multiple steps during the same push. One update writes global CSS/JS fields, and a later update writes dependency manifest fields such as `imports`, `assets`, and `shared`. This is brittle because repeated `PATCH` requests to the same config entity in one `push` can depend on backend behavior around intermediate/staged config state. If a later `PATCH` is applied against an older version of the entity, fields from the earlier `PATCH` can be lost. Change the CLI push flow to: 1. Build and prepare the global CSS/JS asset library update. … ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: Ted Bowman (tedbow) | Labels: Usability Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1303 [Fix high level translation settings experience for Canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1303) | State: opened | Author: Gábor Hojtsy (goba), 113 diff lines Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/work_items/3591746) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1310 [#3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/merge_requests/1310) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 33 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality: 1. `npm run lint:cspell` is almost always forgotten, probably because it currently says: _"ALWAYS run `npm run fix` when JavaScript code is updated.". (Which implies it's only necessary for front-end changes, which is not true) 2. Often, but definitely not always, are there PHPCS and/or PHPStan violations. 3. The most common PHPCS violation: 80 cols rule, and specifically fo… ### [Language Switcher displays "Untitled page" instead of Actual Title](https://git.drupalcode.org/project/canvas/-/work_items/3591744) State: opened | Updated: 2026-06-29 | Author: Vipin Mittal (vipin.mittal18) | Assigned: utkarsh_33 (Utkarsh_33) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1308 [Resolve "Language Switcher displays "Untitled page" instead of Actual Title"](https://git.drupalcode.org/project/canvas/-/merge_requests/1308) | State: opened | Author: utkarsh_33 (Utkarsh_33), 62 diff lines Description: When translating a config template, the Language Switcher pop-up displays "Untitled Page" instead of the actual page title. **Steps to Reproduce** 1. Open a page associated with a config template. 1. Open the Language Switcher pop-up to create or edit a translation. 1. Observe the title displayed in the pop-up. **Expected Result** The Language Switcher pop-up should display the actual page title so that users can easily identify the page being translated. ### [Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/work_items/3591747) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1311 [#3591747: Add `docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/merge_requests/1311) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 9 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality that introduced 2 new ADRs, both of which were AI-accelerated: 1. It referenced the current state of the implementation, pointing to prior issues, future issues and `@todo`s 2. In its writing, it would refer to concrete code in Drupal core, documentation handbook pages for Drupal core etc (which may change!) instead of referring exclusively to other ADRs ### [Have recipe imports validate prop value structure](https://git.drupalcode.org/project/canvas/-/work_items/3591749) State: opened | Updated: 2026-06-29 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Description: I ran into a scenario where a recipe included a page that had components with invald value structure The `text` property was a formatted text field, which expected a map with text and format properties. ``` components: - uuid: a548b48d-58a8-4077-aa04-da9405a6f418 component_id: js.text inputs: text: "You are not authorized to access this page." ``` This incorrectly formatted value imported fine, and even showed up in the canvas UI without issue but there was a fatal error when `\Drupal\canvas\Tmgmt\ComponentInputsTranslatablesExtractor` attempted to identify tra… ### [Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map](https://git.drupalcode.org/project/canvas/-/work_items/3591748) State: opened | Updated: 2026-06-29 | Author: Andrew Belcher (andrewbelcher) | Assigned: unassigned | Labels: category::bug, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1312 [🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope](https://git.drupalcode.org/project/canvas/-/merge_requests/1312) | State: opened | Author: Andrew Belcher (andrewbelcher), 153 diff lines Description: _Claude Code was used to trace and analyse the bug, and write up the issue._ ## Problem/Motivation When a code component (JavaScript component) imports another code component that *also* shares a dependency with it, the shared component forms a "diamond" — `Pricing` imports both `Card` and `Button`, and `Card` also imports `Button` (one shared leaf): ```mermaid graph TD Pricing -->|"@/components/demo_card"| Card Pricing -->|"@/components/demo_button"| Button Card -->|"@/components/demo_button"| Button ``` In the browser the page fails to hydrate with: ``` [astro-island] Error … ### [Enabling content translation of Canvas pages results in an unsupported state by default; forward port core's #3606969](https://git.drupalcode.org/project/canvas/-/work_items/3591745) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: unassigned | Labels: Needs upstream bugfix, category::bug, translation Description: Currently content translation allows to configure both inputs and component tree translation. However Canvas UI currently only supports inputs translation not different component trees. The default configuration on the content translation UI enables both, resulting in an unsupported combination. Talking to the Canvas team the component tree part is intended to be marked translatable, so it can be supported in the future. So instead of changing the translatability of that, the UI should be modified to disallow configuring the tree to be translatable. ![Screenshot 2026-06-29 at 12.28.19.png](h… ### [WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/work_items/3591734) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: Narendra Singh Rathore (NarendraR), Christian López Espínola (penyaskito) | Labels: Needs tests, Needs upstream bugfix, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1296 [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) | State: opened | Author: Narendra Singh Rathore (NarendraR), 704 diff lines - MR !1313 [fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1313) | State: opened | Author: Christian López Espínola (penyaskito), 255 diff lines Description: I went to try Canvas 1.7.0 translation today with a brand new install of Drupal CMS Haven. I don't think the issue is due to Haven, so submitting here. I think previously this config form had separate settings under the components for the tree and inputs but that is not an option that I have for some reason, so this is how I have it set up. ![Screenshot 2026-06-26 at 11.29.44.png](https://git.drupalcode.org/-/project/19391/uploads/fe3690f7cf31f5eafd12c4cf6de93f29/Screenshot_2026-06-26_at_11.29.44.png){width="755" height="600"} I have `canvas_dev_translation` enabled and `content|config|inte… ### [Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality](https://git.drupalcode.org/project/canvas/-/work_items/3591583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, category::task, priority::critical, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1151 >>> Overview It's 2026. The majority of software developers is either using AI LLMs (but everybody says "AI" despite it not actually being intelligent so I'll run with it anyway) voluntarily or is pressured to do so. Whichever your stance may be, it is the reality. In Drupal core (see #3585894: LLM harm reduction in Drupal core contribution, AGENTS.md guidelines). But also in Drupal Canvas. Drupal CMS already adopted it (https://git.drupalcode.org/project/drupal_cms/-/work_items/3569529… ### [Canvas AI: Expose Props of Blocks to the Agent](https://git.drupalcode.org/project/canvas/-/work_items/3569120) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative, AI Product Development, ai, category::bug Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) Related to !498 >>> Overview Currently CanvasAiPageBuilderHelper::getAllComponentsKeyedBySource() does this <?php      if ($source === SingleDirectoryComponent::SOURCE_PLUGIN_ID) {        $this->processSdc($component, $sdc_definitions, $output);      }      elseif ($source === JsComponent::SOURCE_PLUGIN_ID) {        $this->processCodeComponents($co… ### [Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat](https://git.drupalcode.org/project/canvas/-/work_items/3591724) State: opened | Updated: 2026-06-29 | Author: Aidan Foster (aidanfoster) | Assigned: unassigned | Labels: Description: **Source:** Drupal AI UX Weekly Meeting, June 22, 2026. @Marcus_Johansson reviewed and gave an update on the prototype Drupal Canvas AI brand @AkhilBabu based on the experimental prototype that creates components one-at-a-time on this experimental branch https://github.com/akhilbabu-qed-42/c2026/tree/canvas-ai-poc The approach looks very promising from early testing but we need to update the UI to accommodate the changes. ## **Problem / Motivation** Canvas AI now builds a page component by component. While it is building, interacting with the canvas (adding or removing components) breaks t… ### [Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/work_items/3571785) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1309 [Draft: #3571785: Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/merge_requests/1309) | State: opened | Author: Wim Leers (wimleers), 1755 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview One of the things that @phenaproxima has expressed multiple times as being very hard to understand for somebody proficient-at-Drupal-but-new-to-Canvas, is Canvas' concept of "dangling component trees". https://git.drupalcode.org/project/canvas/-/work_items/3571116 already got us a good chunk of the way there to eliminating/eradicating this altogether. Proposed resolution Completely eradicate it. User interface changes None. > Related issue: [Issue #3571116](https://www.drupal.org/node/35711… ### [Use toast messages to inform users about the detected conflicts](https://git.drupalcode.org/project/canvas/-/work_items/3591715) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, backend, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1295 [Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message"](https://git.drupalcode.org/project/canvas/-/merge_requests/1295) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 1052 diff lines Description: Original plan was to leverage Canvas notifications, but after some discussions with @8ballsteve , @amangrover90 and @ravi.maniyar.123 we've come to conclusion that purely client side toast messages that look similar to Canvas notifications, but aren't is a better fit at this time. MvP requirements for toast messages are: * Displayed on `HTTP 409` with errors containing items with code 4 from `HTTP GET` to `/auto-saves/pending` endpoint * Once displayed, we should store information required to make sure the toast notification is not being spammed on each `HTTP 409` response * Once dismisse… ### [Updated translation is not reflected on preview](https://git.drupalcode.org/project/canvas/-/work_items/3591743) State: opened | Updated: 2026-06-29 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Needs steps to reproduce, category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1307 [Fix translation for newly added component.](https://git.drupalcode.org/project/canvas/-/merge_requests/1307) | State: opened | Author: Chandan Singh (chandu7929), 37 diff lines Description: Adding translation for newly added component doesn't reflect on page preview: - Create a canvas page - Drag and drop heading component on the page - Publish changes - Translate the created canvas page - Navigate back to canvas - drag and drop text component on page - publish changes - Update translation by adding translation for text component as well. - Navigate to canvas - preview Afrikaans translation - observe only Heading component is present for Afrikaans translation where as for English heading and text both are present ### [Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent](https://git.drupalcode.org/project/canvas/-/work_items/3552818) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project soft blocker, DevDaysAthens2026, category::bug, code Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !961 >>> Problem/Motivation Canvas decorates plugin.manager.sdc: Drupal\canvas\Plugin\ComponentPluginManager: decorates: plugin.manager.sdc parent: Drupal\Core\Theme\ComponentPluginManager arguments: ['@entity_type.manager', '@Drupal\canvas\ComponentIncompatibilityReasonRepository'] tags: - { name: canvas.component_source } But the implementation may be incorrect: https://git.drupalcode.org/project/canvas/-/blob/1.x/src/Plugin/ComponentPluginManager.php It extends Drup… ### [Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity](https://git.drupalcode.org/project/canvas/-/work_items/3590840) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1120 >>> Overview https://git.drupalcode.org/project/canvas/-/work_items/3558237 made CODEOWNERS a lot simpler. It made it more pragmatic. 3 observations: It has helped to increase velocity. Especially with multiple teams working in parallel on various Canvas features. The most pain we've seen in the ~6 months since then are in the area of CI: flaky tests etc. @justafish has been the main driver towards fixing that velocity killer. The most risk we've seen since then is in the area of data … ### [Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()](https://git.drupalcode.org/project/canvas/-/work_items/3591733) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Wim Leers (wimleers), Kunal Sachdev (kunal.sachdev) | Labels: autoSave, category::task, priority::minor, state::fixed Description: **Overview** There is a workaround to prevent locale's js_alter hook from trying to file_get_contents() the draft JS auto-save URL added in test `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` which was added in #3591654 and which also has a @todo to remove this workaround in #3591719 which is closed as a duplicate of #3591729 where the main issue was resolved. Now that the main issue is resolved in #3591729 so we can remove this workaround. ### [WIP: Apply saved config language override to auto-saved versions in layout](https://git.drupalcode.org/project/canvas/-/work_items/3583043) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ted Bowman (tedbow) | Labels: autoSave, category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !864 [Draft: Resolve #3583043 "Auto save config override"](https://git.drupalcode.org/project/canvas/-/merge_requests/864) | State: closed | Author: Ted Bowman (tedbow), 452 diff lines Description: >>> [!note] Migrated issue Reported by: [tedbow](https://www.drupal.org/user/240860) Related to !864 >>> Overview Experiment with applying Config Language Config override on API layout routes Proposed resolution User interface changes > Related issue: [Issue #3582464](https://www.drupal.org/node/3582464) ### [Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()`](https://git.drupalcode.org/project/canvas/-/work_items/3530808) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, blocker, category::bug, componentSources Description: >>> [!note] Migrated issue Reported by: [phenaproxima](https://www.drupal.org/user/205645) Related to !448 !1157 >>> Overview If you have an SDC with a date prop, Experience Builder will mistakenly create a Component config entity for it that doesn't comply with config schema. The component entity will have a default_value: { value: 'whatever' }} structure, which doesn't match the field.value.datetime config schema type from core. Proposed resolution @larowlan already went down this rabbit hole and discovered that -- strange as this (and it really is) -- core's doing the right thing here.… ### [Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591712) State: closed | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1280 [feat(CLI Tool): Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1280) | State: merged 2026-06-29 | Author: Bálint Kléri (balintbrews), 6501 diff lines Description: Now that the CLI tool has undergone a lot of development; the `upload` and `download` commands got deprecated in favor of `push` and `pull`, and the `build` command was rewritten from the ground up, we accumulated inconsistencies in the output of the various commands. Also, since the original output was designed about a year ago, AI coding agents became important consumers of these commands. It's time to consolidate, simplify, and rethink the output of all CLI commands. ### [Prevent creation of Canvas pages in a non-default language at API level via validation constraint](https://git.drupalcode.org/project/canvas/-/work_items/3591742) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, data integrity, page Description: #3591625+ prevented the creation of Canvas `Page`s via the UI/entity form. Good. But not enough. @goba reported this in Slack: > I don't see a reason why Canvas can't force field values in this alter further, I agree only disabling this does not force the value per say, it assumes the value was disabled to begin with. But the field setting could be forced a similar way. He opened #3591740+ for improving the help text that `\Drupal\canvas\Hook\ModuleHooks::afterBuildCanvasPageLanguageSettings()` adds. But in addition to that, we should make Canvas' `Page`s fail validation when they're being… ### [Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support](https://git.drupalcode.org/project/canvas/-/work_items/3584136) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [subbu94](https://www.drupal.org/user/3513305) > > Related to !907 ### Overview The `canvas_component_agent` system prompt in `ai_agents.ai_agent.canvas_component_agent.yml` contains several bugs that cause the agent to generate invalid or broken code components. These problems were surfaced across four related issues: \[#3584114\], \[#3558216\], \[#3564656\], and \[#3551659\]. This issue consolidates them so they can be fixed together in a single pass over the agent configuration. ### Acceptance criteria When this issue is resolved, the … ### [Access check when publishing auto-save items needs be performed earlier](https://git.drupalcode.org/project/canvas/-/work_items/3591736) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, category::bug, internalHttpApi Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1302 [#3591736 "Access check in ApiAutoSaveController::post() should be performed earlier"](https://git.drupalcode.org/project/canvas/-/merge_requests/1302) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 204 diff lines Description: With the changes in !1271 the access check happens too late in the handling of auto-save items publishing request. If a user submits a list to `ApiAutoSaveController::post()` of entities they have no access to, the entities get filtered out in `ApiAutoSaveController::getPublishableAutoSaves()` via: ``` $access = $item['entity']->access('view label', return_as_object: TRUE); ... return $access->isAllowed() && ($item['is_default_translation'] ?? TRUE); ``` This results in a s set of "publishable auto-save items" that misses the entities the user has submitted. This then fail… ### [Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/work_items/3556922) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [akhil babu](https://www.drupal.org/user/3632866) > > Related to !813 ### Overview Getting the following error occasionally when generating a title, metadata, or adding components using the Page Builder agent from the chat interface. ![/files/issues/2025-11-10/Image-%201_0.png](https://www.drupal.org/files/issues/2025-11-10/Image-%201_0.png) This error usually occurs when new components are added or a full page is generated while the title and description are empty. Currently the UI has 3 separate handlers for adding/updating canvas page… ### [Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan](https://git.drupalcode.org/project/canvas/-/work_items/3591729) State: closed | Updated: 2026-06-29 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, autoSave, category::bug, internalHttpApi Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` The interface-translation system (`locale`) scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` / `Drupal.formatPlural()` strings, reading each one with `file_get_contents()`. Canvas registers the draft asset library's JS as a root-relative route URL (`/canvas/api… ### [Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context](https://git.drupalcode.org/project/canvas/-/work_items/3591654) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Ignacio Sánchez Holgueras (isholgueras), Kunal Sachdev (kunal.sachdev) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Description: **Overview** For content template in Canvas, the language selector in top bar shows a "Delete translation" option for languages that have a translation of the preview entity. However, the delete link generated by `ApiLayoutController::get()` currently always points to `canvas.api.content.translation.delete`, which is hardcoded to the `canvas_page` entity type and will fail to resolve for other entity types used as preview entities. **Proposed Solution** Use the dedicated `canvas.api.config.translation.delete` route in the template context - update `ApiLayoutController::get()` to point the de… ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, componentSources, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: opened | Author: Christian López Espínola (penyaskito), 795 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation](https://git.drupalcode.org/project/canvas/-/work_items/3591667) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, DX (Developer Experience), Needs ADR, data integrity Description: Title says it all. Context: Acquia Source has adopted Canvas long before it had a stable data model, and hence long before Canvas provided update paths. This has proven to cause seemingly random bugs during deployment, but time and time again the root cause has been data created _before_ Canvas provided update paths. This has been a time-consuming and costly affair (e.g. #3578865, #3579086). Canvas has invested _heavily_ into thorough validation to spot data integrity problems, to be able to guarantee that "if it passes validation, it will work [render + be editable with good UX]". ## Propo… ### [Prevent creation of Canvas pages in a non-default language in the UI/via the entity form](https://git.drupalcode.org/project/canvas/-/work_items/3591625) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: **Overview** - Currently, when creating a new Canvas page, the language selector displays all languages configured on the website, including both the default language and translated languages. - This behaviour allows users to create Canvas pages directly in non-default languages. However, Canvas pages should only be created in the site's default language (source language). - For non-default languages, users should not create separate Canvas pages. Instead, translated content should be managed through the translation interface, where translations are entered against the source-language Canvas … ### [[PP-1] Create Canvas pages in any enabled content language](https://git.drupalcode.org/project/canvas/-/work_items/3546597) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Needs followup, Needs tests, category::feature, page Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !494 >>> Overview Today, it is not possible to create a new Canvas page in a non-default language on the UI. Let's say we have 2 enabled languages in the website, English (default) and Spanish. It is not possible to create a Canvas page with langcode Spanish then. While it is possible, to create the Spanish language page on the command line or via Drupal recipes, once that is created, editing the page can be done only without the language prefix in the URL. With the language prefix in the URL, … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… ### [Canvas AI: Component context required props missing required flag](https://git.drupalcode.org/project/canvas/-/work_items/3591655) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: Tormi Tabor (tormi) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, Novice Description: ## Problem A regression in `CanvasAiPageBuilderHelper::processSdc()` causes the `required: true` flag to be dropped from component context metadata. Current code: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], TRUE)) { $output[$source_id]['components'][$component_id]['props'][$prop_name]['required'] = TRUE; } ` The flag should instead be added to the prop metadata: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], … ### [Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent](https://git.drupalcode.org/project/canvas/-/work_items/3591457) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) >>> Overview This issue will get broken down in to several sub issues in future. https://git.drupalcode.org/project/canvas/-/work_items/3582390 would add automated tests for the Canvas AI Orchestrtator agent. In the same way create tests for the Page builder agent and template builder agent so that we could save a lot of time in manual testing whenevr their system prompts changes. On a high level, to achieve this. For the tests, the agent should only see the components available in the canvas_test_s… --- MERGE REQUESTS (24h) --- ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: opened | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [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: 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 | 4644 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… ### [#3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()"](https://git.drupalcode.org/project/canvas/-/merge_requests/1294) State: merged 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591733-remove-workaround-in-apilayoutcontrollergettesttestconfigtranslationavailabilitylinksandpermissions | 34 diff lines ### [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) State: opened | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3591601-rudimentary-conflict-resolution-ui | 3703 diff lines Description: \[Description of changes\] ## What this MR adds This adds a conflict review flow for Canvas Pages. In simple terms: Canvas saves unpublished edits as auto-saves. A conflict happens when a user has unpublished Canvas changes, but the published Page is changed outside of that user’s Canvas session before they publish. This MR shows those conflicts in Review changes, prevents conflicted items from being published directly, and lets the user open a side-by-side resolver. In the resolver, the user can choose either: - **Published version**: discard the Canvas auto-save for that Page. - **New… ### [Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent.](https://git.drupalcode.org/project/canvas/-/merge_requests/498) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3569120-canvas-ai-expose | 413 diff lines Description: Closes #3569120 ### [feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity"](https://git.drupalcode.org/project/canvas/-/merge_requests/1193) State: opened | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3587526-prevention-of-publishing-be | 865 diff lines Description: **TL;DR:** Adds `HTTP 409` response to the "publish auto-save items" endpoint; Prevents publishing on the BE if [a conflict is detected](https://git.drupalcode.org/project/canvas/-/merge_requests/1213); **For people with attention span or AI summary tools:** This MR adds "Prevent publishing of auto-save items with detected conflicts on BE" capability described in the "\[META\] Review of changes and Conflict resolution" (https://git.drupalcode.org/project/canvas/-/work_items/3587587). It is BE implementation of https://git.drupalcode.org/project/canvas/-/work_items/3587526 and counter-part o… ### [feat(Conflict detection): #3587526 "Client side prevention of publishing"](https://git.drupalcode.org/project/canvas/-/merge_requests/1018) State: merged 2026-06-29 | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3587526-prevention-of-publishing | 200 diff lines Description: Client side changes for https://git.drupalcode.org/project/canvas/-/work_items/3587526+ This MR adds conflict handling for pending auto-save changes so users cannot publish changes that have unresolved conflicts. When a pending change is marked as conflicted, the review UI now: - Shows a conflict warning in the unpublished changes panel - Disables selection for conflicted changes - Excludes conflicted changes from Select All - Still allows non-conflicted changes to be selectively published The pending changes API response is also normalized so the frontend can handle both normal pending ch… ### [Issues/Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/merge_requests/813) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3556922-canvas-ai-an | 278 diff lines Description: Closes #3556922 --- COMMITS (24h) --- - [fdfed34a](https://git.drupalcode.org/project/canvas/-/commit/fdfed34a8160828e134f0aa553bcbff59c8da8f0) chore(Project management): #3591746 Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 — Wim Leers (2026-06-29T17:39:11.000+00:00) - [6a5e9014](https://git.drupalcode.org/project/canvas/-/commit/6a5e90149b5aaa7e5d7c85cfdc1ae85499258b60) chore(Project management): #3591747 Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` — Wim Leers (2026-06-29T17:27:13.000+00:00) - [de13400a](https://git.drupalcode.org/project/canvas/-/commit/de13400afc6441e8fe2cee2083ea62511d7702e4) chore(Auto-save): #3591733 Remove workaround in `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` — Kunal Sachdev (2026-06-29T12:46:28.000+00:00) - [b217c5b6](https://git.drupalcode.org/project/canvas/-/commit/b217c5b6dd05c9e4aece2f9be95eeaa8963a4a75) feat(CLI Tool): #3591712 Clean up the output of all CLI commands — Bálint Kléri (2026-06-29T11:42:41.000+00:00) - [a1b781c2](https://git.drupalcode.org/project/canvas/-/commit/a1b781c2ad551443617d0ebfb1fbb53d7eeb6282) fix(AI): #3569120 Canvas AI: Expose Props of Blocks to the Agent — AKHIL BABU (2026-06-29T10:55:56.000+00:00) - [0d1f16ec](https://git.drupalcode.org/project/canvas/-/commit/0d1f16ece5c3c0f7e7d4e18e273492bd1e342d59) feat(Conflict detection): #3587526 Client side prevention of publishing — Ravi Maniyar (2026-06-29T10:16:05.000+00:00) - [8f2c22b3](https://git.drupalcode.org/project/canvas/-/commit/8f2c22b39e283d2984400d7ae3b18cfe1f7fef11) fix(AI): #3556922 Canvas AI: consolidate Canvas page field updates into a single preview update — AKHIL BABU (2026-06-29T09:05:59.000+00:00) ======================================================================== ## [12] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Eric Homanchuk (erichomanchuk), Joshua Fernandes (joshua1234511), Kristen Pol (kepol), Pravesh Poonia (Pravesh_Poonia)". 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). ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Daniel Rodriguez (danrod) | 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), 2419 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 ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !151 [Issue #3586220: Add single context item display.](https://git.drupalcode.org/project/ai_context/-/merge_requests/151) | State: opened | Author: Eric Homanchuk (erichomanchuk), 6052 diff lines Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [Finalize Context Importer naming and review Extensions page UI/UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586283) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Description Follow-up to: #3586275+s Required for: #3586282+s ### Summary [#3586275](https://www.drupal.org/project/ai_context/issues/3586275) introduced the `ai_context_document_loader` submodule and a reworked **Settings → Extensions** page (`/admin/config/ai/context/settings/extensions`). Initial UX feedback has been considered, but needs refinement. For now, the submodule has been renamed from “Document Loader: Markdown Importer” to **“Document Loader: Context Importer”**. Before the submodule stabilization follow-up (experimental → stable) (#3586282), we need a focused pass to *… ### [Inject context into ai_ckeditor requests](https://git.drupalcode.org/project/ai_context/-/work_items/3581955) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !116 >>> Problem/Motivation The ai_context module cannot inject scope-matched context items into ai_ckeditor AI requests because ai_ckeditor bypasses the ai_agents pipeline (and its BuildSystemPromptEvent) entirely — it calls the AI provider directly in its own streaming controller. There is no event or hook point for ai_context to intercept. This issue is the ai_context companion to the ai_ckeditor entity context and event extensibility work tracked in the drupal/ai module issue queue. … ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !199 [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) | State: opened | Author: Joshua Fernandes (joshua1234511), 157 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-29 | 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 !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 501 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… --- MERGE REQUESTS (24h) --- ### [Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/201) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/context-prefix-and-manage-docs-3586298 | 45 diff lines Description: Fixes two RC1-blocking items from the AI Best Practices review: 1. Context prefix default alignment: The fallback string in AiContextSystemPromptSubscriber did not match the value shipped in config/install/ai_context.settings.yml. Aligned to the canonical config default. 2. Stale getManageUrl() docs: scope_api.md and custom_scopes.md still referenced the nonexistent getManageUrl(): ?string method. Updated to document the actual getManageRoute(): ?array method with the correct return type and structure. --- COMMITS (24h) --- (none) ======================================================================== ## [13] summariseModule:ai_search:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                          AI Search

                          then use

                          ,

                          ,

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

                            How can I help on this project?

                            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-29 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-29 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, priority::major, state::postponed Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [14] summariseModule:field_widget_actions:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                            Field Widget Actions

                            then use

                            ,

                            ,

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

                              How can I help on this project?

                              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-29 | Author: Daniel Bosen (daniel.bosen) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [15] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                              Pinecone VDB Provider

                              then use

                              ,

                              ,

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

                                How can I help on this project?

                                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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). ### [Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-06-29 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Issue #3586209: Add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32) | State: opened | Author: Rob Loach (robloach), 333 diff lines Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [16] summariseModule:ai_search_block:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI powered Search Block (machine name: ai_search_block) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                AI powered Search Block

                                then use

                                ,

                                ,

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

                                  How can I help on this project?

                                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 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) --- ### [feat: #3582452 Add guardrail set selection to ai_search_block](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3582452-add-guardrail-set | 799 diff lines Description: By: nikro Closes #3582452 --- COMMITS (24h) --- (none) ======================================================================== ## [17] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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). ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [18] 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] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [2] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [3] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [4] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [5] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [6] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [7] 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 [8] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [9] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [10] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [11] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [12] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [13] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [14] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [15] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [16] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [17] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [18] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [19] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [20] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [21] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [22] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [23] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [24] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [25] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [26] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [27] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [28] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [29] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [30] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [31] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [32] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [33] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [34] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [35] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [36] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [37] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [38] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [39] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [40] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [41] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [42] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [43] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [44] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [45] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [46] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [47] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [48] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [49] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [50] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [51] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [52] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [53] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [56] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [57] 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 [58] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [59] Language Switcher displays "Untitled page" instead of Actual Title (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [60] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [61] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [62] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [63] Enabling content translation of Canvas pages results in an unsupported state by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [64] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [65] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [66] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [67] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [68] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [69] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [70] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [71] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [72] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [73] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [74] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [75] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [76] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [77] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [78] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [79] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [80] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [81] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [82] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [83] 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 [84] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [85] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [86] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [87] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [88] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [89] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [90] 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 [91] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [92] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [93] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [94] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [95] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [96] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [97] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [98] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [99] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [100] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [101] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [102] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [103] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [104] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [105] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [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): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [108] chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [109] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [110] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [111] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [112] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [113] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [114] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [115] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [116] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [117] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [118] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [119] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [120] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [121] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [122] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [123] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [124] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [125] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [126] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [127] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [128] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [129] 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 [130] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [131] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [132] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [133] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [134] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [135] Issue #3586209: Add support for batching on indexing operations (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [136] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [137] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- MODULE SUMMARIES ---

                                      AI (Artificial Intelligence)

                                      Activity in the AI module over the past 24 hours focused on bug fixes, UI improvements, and preparations for agent-driven configuration workflows.

                                      Two merge requests remain open for HTML rendering issues: Preserve HTML in streamed output addresses escaping problems in streamed LLM responses that corrupt markup, while Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy ensures the CKEditor tone-of-voice selector respects content translation. Both have open MRs awaiting review.

                                      A new MR for Remove the deprecated bundled field_widget_actions sub-module was opened, which deletes the 34-file bundled copy and adds the standalone drupal/field_widget_actions package to composer.json, eliminating namespace collisions for sites that depend on both. A follow-up MR for Batch embeddings for improved indexing performance introduces BatchEmbeddingsInterface as a first-class operation type, routing batch calls through ProviderProxy for event and logging support without breaking existing EmbeddingsInterface implementations.

                                      Two new agent skills were defined to enable programmatic site configuration: Add a setup-guardrails agent skill and Add a configure-ai-settings agent skill, both targeting the Tool module's drush tool:run API.

                                      How can I help on this project?

                                      Review MR !1734 for Preserve HTML in streamed output or MR !1733 for Tone of voice CKEditor Plugin translation support. Test the batch embeddings follow-up in MR !1726 with a live vector DB indexing workflow.

                                      Contributors: Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Joshua Fernandes (joshua1234511), Pravesh Poonia (Pravesh_Poonia), Rob Loach (robloach), Thomas Werthmüller (weri)

                                      ---

                                      Drupal AI Initiative

                                      The past 24 hours saw significant administrative progress. Four meta issues related to the AI CMS Demo System were closed, covering repository access setup, technical concept documentation, the demo proof-of-concept, and the amazee.io hoster-specific implementation. A partner onboarding template issue was also closed, consolidating the workflow for bringing new partners into the initiative.

                                      Several onboarding tasks progressed for new Gold partner Reading Room, including mailing list additions, Slack channel access, and meeting invitations. Follow-up work items were created for running an audit report to verify successful onboarding and updating partner listings on drupal.org pages. A new task was opened to convert partner templates into GitLab templates, moving away from the previous drupal.org issue-based approach.

                                      Two DNS configuration issues were opened for infrastructure updates: pointing GitLab Control Server DNS and Module Finder DNS to their respective DevPanel endpoints.

                                      How can I help on this project?

                                      Both DNS configuration tasks (GitLab Control Server and Module Finder) are unassigned and ready to be picked up if you have infrastructure access. The GitLab template conversion task needs someone to create and test the new partner onboarding templates.

                                      ---

                                      AI Integration - ECA

                                      No merge requests were merged during this period. The module's development activity centered on planning new functionality.

                                      A new task was opened to add ECA execute action support for the TranslateText operation. The Add ECA execute action for Translate Text issue highlights a gap in the current action plugin coverage: while the AI Integration module provides a TranslateText operation type, there is no corresponding ECA action plugin to invoke it from ECA flows. The proposed solution involves creating a new action plugin extending AiConfigActionBase, similar to existing actions for Chat, Embedding, Moderation, Speech to Text, and Text to Speech operations. This work is tagged for the AI Initiative Sprint and the Road to 1.0.0 effort.

                                      No commits were pushed and no merge requests entered review during the reporting period.

                                      How can I help on this project?

                                      • Implement the TranslateText action plugin for issue 3585012 by creating a new plugin class modeled after the existing Chat action.
                                      • Test the existing ECA action plugins with recent AI Integration module changes to identify integration issues.
                                      ---

                                      AI Agents Test

                                      The module saw one significant planning update during the period. The research issue Research: merging ai_agents_test with ai_eval (and AiLlm test harness) was closed. This issue explored whether ai_agents_test should be consolidated with ai_eval, and how the core ai module's tests/src/AiLlm test harness fits into the overall testing strategy for AI configurations in Drupal. With this research now complete, the path forward for test tooling consolidation has been determined.

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

                                      How can I help on this project?

                                      Review the outcomes of the recently closed research issue to understand the planned direction for test module consolidation. Check the issue queue for any follow-up tasks that may need implementation based on those findings.

                                      ---

                                      OpenAI Provider

                                      Activity this period centered on embeddings support. A merge request for add support for batch embeddings was opened, introducing 284 lines of changes to enable batched embedding operations. The work addresses issue #3568659 and is currently awaiting review.

                                      No merge requests were completed or commits pushed during this period. The batch embeddings implementation remains the primary work item in progress.

                                      How can I help on this project?

                                      • Review the batch embeddings merge request to help move it toward completion. Test the implementation with various batch sizes and provide feedback on the API design.
                                      • Check the issue queue for unassigned bugs or feature requests that could benefit from attention.

                                      Contributors: Paul Sheldrake (paulsheldrake)

                                      ---

                                      Anthropic Provider

                                      A merge request was opened to address chat request rejections caused by conversations ending with non-user messages. The fix: #3607044 Append a trailing user message when a conversation ends with a non-user role MR modifies the AnthropicProvider::chat() method to automatically append a minimal user message ("Continue.") when the last message in a conversation is from the assistant or system role. This resolves issues with AI Agents multi-agent handoff scenarios, such as Drupal Canvas AI, where Anthropic's API requirement that conversations must end with a user message was causing generic error messages.

                                      How can I help on this project?

                                      Review and test the open trailing user message MR to validate the fix works across different multi-agent handoff scenarios. Test edge cases where conversations end with system or assistant messages to ensure the automatic user message append behaves correctly.

                                      Contributors: Rajab Natshah (RajabNatshah)

                                      ---

                                      Milvus VDB Provider

                                      A new merge request was opened to add support for batching on indexing operations. The 297-line patch introduces batch insert functionality specifically for index operations, which should improve performance when indexing large volumes of vector data into Milvus. The merge request is currently awaiting review.

                                      No issues were updated, merged, or closed during this reporting period.

                                      How can I help on this project?

                                      • Review the open batching on indexing operations merge request, testing the implementation with various dataset sizes and providing feedback on the API design.
                                      • Test the module with different Milvus server configurations to identify edge cases or compatibility issues that may need documentation or code fixes.

                                      Contributors: Artem Dmitriiev (a.dmitriiev)

                                      ---

                                      AI Image Alt Text

                                      A merge request was opened to support newer versions of drupal/ai, updating compatibility with the AI module. The MR is currently under review with no commits merged during the reporting period.

                                      How can I help on this project?

                                      • Review the open drupal/ai compatibility merge request and test it against newer versions of the AI module.
                                      • Check the module's issue queue for unaddressed bugs or feature requests that lack merge requests and could be picked up.

                                      Contributors: Peter Philipp (daspeter)

                                      ---

                                      AI Agents

                                      No merge activity occurred during this period. An Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) issue remains open, addressing a PHP warning that occurs on every AI Agent run when dynamical token values are arrays. The warning originates in core's Token.php and propagates through the token replacement chain in AiAgentEntityWrapper. MR !287 has been opened to fix this by coercing array values to strings in the applyTokens() method, but awaits review.

                                      How can I help on this project?

                                      • Review MR !287 to evaluate whether the array-to-string coercion approach properly handles edge cases in token replacement.
                                      • Test the fix against typical AI Agent workflows to verify the warning is resolved without breaking token functionality.

                                      Contributors: Rajab Natshah (RajabNatshah)

                                      ---

                                      Tool API

                                      The Tool API project saw discussion around a serialization regression during the reporting period. A MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization issue remains under investigation, where the module's normalizers interfere with standard Drupal REST entity serialization. When Tool is enabled alongside REST endpoints that normalize content entities to JSON, the serializer returns raw ContextDefinition and PluginDefinition objects instead of properly normalized data structures. This affects any ResourceBase plugins calling the serializer's normalize() method with JSON format.

                                      The issue is assigned but no merge requests have been opened yet. The root cause appears to be that MapDefinitionNormalizer and ContextDefinitionNormalizer are too broadly scoped and intercept serialization calls intended for entity fields. A similar issue was previously reported in the AI module (#3568588), suggesting this may be a cross-cutting concern for modules using these normalizer patterns.

                                      How can I help on this project?

                                      ---

                                      Drupal Canvas

                                      Over the past 24 hours, several significant merges improved data integrity, conflict detection, and AI tooling. The refinements to LLM guardrails in /AGENTS.md were merged, tightening guidance on running npm run lint:cspell for all code changes and addressing common PHPCS violations. A new /docs/adr/AGENTS.md file was introduced to ensure ADRs remain timeless and reference only other ADRs rather than transient code or issue links.

                                      The client-side conflict detection was merged, preventing publication of auto-save items with unresolved conflicts and disabling selection of conflicted changes in the review UI. The Canvas AI: Expose Props of Blocks to the Agent fix was committed, allowing the AI to see block component props. The Canvas AI preview rendering issue was resolved by consolidating field updates into a single preview update. The CLI command output cleanup was merged, consolidating and simplifying CLI tool messages.

                                      Active work includes open MRs for server-side JSX compilation for AI-created code components, diamond-dependency import-map fixes, and prop deletion validation. Translation work continues on TMGMT assertion errors and translation onboarding UX.

                                      How can I help on this project?

                                      Review the open MR for server-side JSX compilation to validate the fix for AI-created code components. Review the diamond-dependency test and help identify the root cause in import-map scoping. Pick up recipe validation for prop structure, which has no MR yet.

                                      Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative), AKHIL BABU (AkhilBabu) [2], Andrew Belcher (andrewbelcher), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito), Feliksas Mazeikis (f.mazeikis), Gábor Hojtsy (goba), Kunal Sachdev (kunal.sachdev) [1], Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [1], Ted Bowman (tedbow), utkarsh_33 (Utkarsh_33), Wim Leers (wimleers) [2]

                                      ---

                                      Context Control Center (CCC)

                                      Activity this period focused on accessibility fixes and pre-RC1 cleanup following an AI Best Practices audit. A meta issue tracking Fix CCC issues based on AI Best Practices results was updated with prioritized items blocking the release candidate. Two focused accessibility issues saw progress: Clean up CCC accessible interactive links and external links received MR !200 addressing link rendering, new-tab warnings, and cacheable access checks in list builders and revision UI, while Clean up CCC tooltip, truncation, and icon-only content gained MR !199 exposing tooltip and icon meaning to assistive technologies.

                                      A new merge request was opened fixing two RC1-blocking items: MR !201 aligns the context prefix default string in AiContextSystemPromptSubscriber with the canonical config/install/ai_context.settings.yml value, and corrects stale documentation referencing the nonexistent getManageUrl() method—updating scope_api.md and custom_scopes.md to document the actual getManageRoute() method with correct return signatures.

                                      Other open work includes MR !159 for Allow subcontext scope to override parent scope awaiting manual testing, and MR !151 implementing a two-column full view layout for Add full view layout for context item canonical and revision pages based on new design.

                                      How can I help on this project?

                                      Review MR !200 for accessible link rendering and external link handling patterns, or MR !199 for tooltip and icon accessibility improvements. Both are open and need technical review before merge. Alternatively, manually test MR !159 to verify subcontext scope inheritance toggle behavior works as designed.

                                      Contributors: Eric Homanchuk (erichomanchuk), Joshua Fernandes (joshua1234511), Kristen Pol (kepol), Pravesh Poonia (Pravesh_Poonia) ---

                                      AI Search

                                      Activity in the AI Search module this period was limited to planning and issue tracking. No merge requests were merged and no commits were pushed during the last 24 hours.

                                      Two issues saw updates. Work on Batch embeddings for improved indexing performance is awaiting functionality to be ported from AI Core, as the ai_search submodule is now deprecated. Meanwhile, Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated remains blocked on an upstream AI Core issue that must be resolved before compatibility work can proceed. The integration issue is preventing tests from passing, including functional tests for content indexing.

                                      Progress is currently blocked on upstream dependencies in the AI Core module. Once those are resolved, the 2.x branch will require compatibility updates and documentation of any breaking changes affecting VDB providers.

                                      How can I help on this project?

                                      • Monitor the upstream AI Core dependency blocking the 2.x integration and prepare compatibility patches once it merges.
                                      • Review the batch embeddings feature requirements and assess what porting work is needed from the deprecated ai_search submodule.
                                      ---

                                      Field Widget Actions

                                      No merge requests were merged or commits pushed during this period. Activity focused on a feature request to Generate UUIDs for list-style widget-action settings applied via config actions, which remains in needs work status. The issue addresses a limitation in the setupFieldWidgetAction config action where hard-coded UUIDs cause collisions when multiple suggestion buttons are added to a single edit form via recipes. The proposal is to allow actions to be declared as a plain list and have the plugin generate unique UUIDs at apply time, matching the behavior of the interactive UI. This would ensure each button targets its own field rather than all buttons writing to the same field.

                                      How can I help on this project?

                                      • Review the requirements for UUID generation in the setupFieldWidgetAction config action issue and provide feedback on the proposed approach.
                                      • Test the current collision behavior with multiple widget actions to document edge cases and help refine the solution.
                                      ---

                                      Pinecone VDB Provider

                                      Activity this period focused on feature development for batching support. Support batching on indexing operations remains in review. The work, which adds batching capability to the Pinecone provider similar to the Milvus provider implementation, has an open merge request (MR !32) awaiting feedback. No merges or commits landed during this reporting period.

                                      How can I help on this project?

                                      • Review MR !32 for the batching implementation, testing indexing performance with varying batch sizes.
                                      • Test the batching changes against a Pinecone instance to validate compatibility with the Pinecone API.
                                      Contributors: Rob Loach (robloach) ---

                                      AI powered Search Block

                                      A new merge request was opened to add guardrail set selection to ai_search_block. This feature branch introduces guardrail set configuration functionality, with 799 lines of diff indicating substantial changes to the module's configuration and form handling. The merge request is currently awaiting review.

                                      No commits were merged during this period, and no blocking issues were reported. The module appears to be in active development with focus on enhancing its AI safety and content moderation capabilities through guardrail integration.

                                      How can I help on this project?

                                      Review the open guardrail set selection merge request to provide feedback on the implementation. Test the new configuration options with different guardrail providers to ensure compatibility. Check the module's issue queue for unassigned bugs or feature requests that need attention.

                                      Contributors: Abhisek Mazumdar (abhisekmazumdar) ---

                                      AG-UI

                                      No merge requests were merged or commits pushed during this reporting period. The [META] Improve Drupal Assistant Implementation issue remains open. This meta issue tracks work to evolve the Drupal Assistant from a proof-of-concept demo into a full replacement for the ai_chatbot (Deepchat) module. The effort involves refactoring the assistant to align with the Polling service for AG-UI event emission and potentially spawning related issues in the AI module to integrate with necessary event hooks. The work considers both single non-streamed requests with all events and a streaming approach for improved user experience.

                                      How can I help on this project?

                                      Review the [META] Improve Drupal Assistant Implementation issue and contribute technical analysis on the best approach for integrating with the Polling service and AI module events. Help scope child issues for the refactoring work, or propose API patterns for the event emission architecture.

                                      ======================================================================== ## [19] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 1 Judge flags: 3 ======================================================================== ## [20] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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), Ahmad Khalil (ahmad-khalil-imagex), Joshua Fernandes (joshua1234511), Pravesh Poonia (Pravesh_Poonia), Rob Loach (robloach), Thomas Werthmüller (weri)". 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). ### [Tool Explorer does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582473) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1446 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Tool Explorer does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The Tool Explorer UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the Tool Explorer has styling issues that make it diffi… ### [MDX Editor does not render correctly with Gin dark theme](https://git.drupalcode.org/project/ai/-/work_items/3582474) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::normal, state::needsReview Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1445 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: MDX Editor does not render correctly with Gin dark theme Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation Follow up from https://git.drupalcode.org/project/ai_agents/-/work_items/3559183. The MDX Editor UI only looks correct when using the Claro admin theme or Gin in light mode. When using Gin with the dark theme enabled, the MDX Editor has styling issues that make it difficult to u… ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project)](https://git.drupalcode.org/project/ai/-/work_items/3586556) State: opened | Updated: 2026-06-30 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: ## Problem/Motivation The `ai` module ships a deprecated copy of Field Widget Actions at `ai/modules/field_widget_actions/`. Its `field_widget_actions.info.yml` is already marked: `lifecycle: deprecated lifecycle_link: https://www.drupal.org/node/3568339 ` This bundled copy has the **same machine name** (`field_widget_actions`) **and the same PHP namespace** (`Drupal\field_widget_actions\`) as the standalone contrib project https://www.drupal.org/project/field_widget_actions. When both are present in a codebase — which happens for any project that has `drupal/ai` as a (dev) dependency alon… ### [Preserve HTML in streamed output](https://git.drupalcode.org/project/ai/-/work_items/3586558) State: opened | Updated: 2026-06-30 | Author: Sven Decabooter (svendecabooter) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1734 [Resolve #3586558 "Preserve HTML in streamed output"](https://git.drupalcode.org/project/ai/-/merge_requests/1734) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 212 diff lines Description: ## Summary As reported in https://git.drupalcode.org/project/ai_translate/-/work_items/3585526, there seems to be an issue with HTML processing in streamed outputs. I wasn't able to look into the issue much closer, but the proposed fix seems to imply changes to the AI core module. ## Environment - Drupal version: 11.3.10 - Paragraphs: 8.x-1.20 Original Issue When translating basic pages, the LLM inserts \ tags after other tags like \ Example input: ``` 'De Geheimen van het Hof' is een reeks van zes speurtochten voor klassen: van het 1ste leerjaar tot en met het 6de leerjaar. De focus lig… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: opened | Updated: 2026-06-30 | Author: drupalbot | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task 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 a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/work_items/3586536) State: opened | Updated: 2026-06-29 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1680 [Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs](https://git.drupalcode.org/project/ai/-/merge_requests/1680) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 142 diff lines Description: # Title Support the `ai_json_schema` element inside off-canvas dialogs (correct rendering + value sync) ## Description The `ai_json_schema` form element (`Drupal\ai\Element\AiJsonSchema`) is documented for use "in any Drupal form", but it does not work when rendered inside Drupal's **off-canvas dialog** — which is how the `bpmn_io` modeller shows configuration forms. Upstream the element is only used on full-page forms (e.g. AI API Explorer), where it works; off-canvas has never been exercised, so this is not a regression — it is making the element robust in a context new consumers need. T… ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x 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… ### [force_value + hide_property in tool_usage_limits does not inject value at tool execution time](https://git.drupalcode.org/project/ai/-/work_items/3586577) State: opened | Updated: 2026-06-29 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: (Written with the help of Claude Sonnet 4.6) I've been testing AI Search (1.3.0-alpha3) with AI (1.5.x-dev) and I think I have found an issue. After creating a search assistant pointing at a vector DB index, it does not work. I looked at the configuration of the AI agent that was created when I created the assistant, and it looks like if both force_value and hide_property are enabled, the forced value is never actually injected when the tool executes. The result is a validation error: > Invalid value for [parameter] in [tool]: This value should not be null. Claude seems to think this is… ### [Rethrow exceptions from queue processor](https://git.drupalcode.org/project/ai/-/work_items/3571498) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ahmad Khalil (ahmad-khalil-imagex) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [nicxvan](https://www.drupal.org/user/531480) >>> [Tracker] Update Summary: Exceptions should be rethrown so custom processors can handle them Short Description: Rethrow exceptions Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to handle unstructured and other exceptions ourselves in a process runner Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI modules enabled, which AI provider, browser, etc. Proposed resolutio… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-06-29 | Author: ro-no-lo | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [ai_ckeditor: Add option to show or hide the "AI Writer" status information](https://git.drupalcode.org/project/ai/-/work_items/3586569) State: opened | Updated: 2026-06-29 | Author: mxh (hauptm) | Assigned: unassigned | Labels: Is Contextualized, category::feature, priority::minor, state::needsReview Description: ## Summary When enabling the ai_ckeditor submodule and enabling the plugin for the text format, a status information such as "AI Writer: Idle" is shown on every editor. This is provided in a hardcoded way by the AiNetworkStatus.js file. Some users may not want to see this status information. Therefore, it would be great being able to conveniently show or hide this information via configuration. ## Problem Making this status information optional improves general UX. ## Proposed solution *(optional)* Add a configuration option into `ai_ckeditor.settings` and expose it via UI. ## Workaroun… ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-29 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug, priority::normal Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… ### [Add cache-write and tool-use prompt tokens to TokenUsageDto](https://git.drupalcode.org/project/ai/-/work_items/3586576) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Marcus Johansson (Marcus_Johansson) | Labels: aiCoreModule, category::feature, priority::normal, v1.5.x-dev Description: ## Problem/Motivation `TokenUsageDto` (`src/Dto/TokenUsageDto.php`) only models five token counts: ```php public ?int $input = NULL, public ?int $output = NULL, public ?int $total = NULL, public ?int $reasoning = NULL, public ?int $cached = NULL, ``` Two token-usage values reported by the major providers have nowhere to live in this DTO, so they are silently dropped before reaching logging/observability or any cost-reporting layer: ### 1. Cache **write** / cache creation tokens The current `cached` field maps only to **cache reads** (`prompt_tokens_details.cached_tokens` in `OpenAiBasedPr… ### [Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) State: closed | Updated: 2026-06-29 | Author: Valery Lourie (valthebald) | Assigned: Valery Lourie (valthebald) | Labels: category::plan, priority::normal, state::accepted Description: Drupal AI Contribution meeting from June 15 at 18:00 to June 16, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586480: Drupal AI Contribution meeting 2026-06-01](https://git.drupalcode.org/project/ai/-/work_items/3586480) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: harivansh sharma (harivansh) | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Marcus Johansson (Marcus_Johansson) | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [[META] AI background / autonamous agents](https://git.drupalcode.org/project/ai/-/work_items/3560619) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::plan, priority, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [guptahemant](https://www.drupal.org/user/3278073) >>> [Tracker] Update Summary: Background Agent Processing - We have a plan for the intial preparation of background agents Short Description: Allows Agents to work on the sever without direct user involvement enabling many automation features such as firing on cron or in response to content changes. Includes significant Architecture improvements. Check-in Date: 07/12/2025 Additional Collaborators: @guptahemant, @harivansh Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker]… ### [Improve UX in Automators Tool add form (help text and workflow field behavior)](https://git.drupalcode.org/project/ai/-/work_items/3586382) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ricardo Castañeda (cadence96) | Labels: UX, aiAutomators, category::feature, priority::normal Description: >>> [!note] Migrated issue Reported by: [cadence96](https://www.drupal.org/user/3520894) >>> [Tracker] Update Summary: Improve UX in Automators Tool add form. Short Description: Add help text and improve field behavior in Automators Tool form. Check-in Date: 04/22/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The UX of the Automators Tool creation form (/admin/config/ai/ai-automators/automators_tool/add) can be improved to reduce confusion and guide users more effectively. The following issues were identified: Description field doe… ### [Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy](https://git.drupalcode.org/project/ai/-/work_items/3586573) State: opened | Updated: 2026-06-29 | Author: Thomas Werthmüller (weri) | Assigned: unassigned | Labels: category::feature, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1733 [fix: #3586573 Tone of voice CKEditor Plugin does not use the translated...](https://git.drupalcode.org/project/ai/-/merge_requests/1733) | State: opened | Author: Thomas Werthmüller (weri), 38 diff lines Description: ## Summary When I create a taxonomy for the tone of voice and allow to translate the terms, in the UI of the CKEditor always the default language is displayed and also the description of this term is used for prompting and not the translated version. ## Environment - Drupal version: 11 - Module version: 1.4.3 ### Screenshots ![CleanShot_2026-06-26_at_16.30.17](https://git.drupalcode.org/-/project/106525/uploads/0df4b3af6167109ba085e44a575e6a88/CleanShot_2026-06-26_at_16.30.17.png){width="725" height="600"} --- MERGE REQUESTS (24h) --- ### [Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone.](https://git.drupalcode.org/project/ai/-/merge_requests/1735) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/remove-bundled-field-widget-actions-3586556 | 3221 diff lines Description: Finishes the deprecation of the bundled field_widget_actions sub-module: - Adds drupal/field_widget_actions: ^1.0 to composer.json require so the standalone package (same machine name, same PHP namespace) is always present on composer update. - Deletes modules/field_widget_actions/ (34 files) entirely. Sites that had the bundled module enabled continue to work seamlessly: the standalone has an identical machine name and namespace, so core.extension entries resolve without any migration. ai_automators.info.yml is left unchanged (optional integration); FieldWidgetProcessing.php already gu… ### [Issue #3586475: Rename the RegExp Guardrail labels to RegEx](https://git.drupalcode.org/project/ai/-/merge_requests/1689) State: opened | Author: Rob Loach (robloach) | Branch: 3586475-guardrails-regex-plugin-name | 205 diff lines Description: ## Description This renames the regexp guardrail labels to "RegEx" for consistency within the UI. It doesn't change the machine IDs, or class names, just the labels. ## Testing instructions 1. Visit the Guardrails administration screen 2. Expect to see RegEx, instead of regexp Closes #3586475 ## Checklist - [x] I have linked the related issue in the MR title or description - [x] I have performed a self-review of my own code - [x] I have added or updated tests, or explained in the description why this change is not covered by tests - [x] I have updated documentation for any new or chan… ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… ### [Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode.](https://git.drupalcode.org/project/ai/-/merge_requests/1529) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3584977-restricttotopic-guardrail-add | 895 diff lines Description: Closes #3584977 --- COMMITS (24h) --- (none) ======================================================================== ## [21] summariseModule:ai_initiative:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                                        Drupal AI Initiative

                                        then use

                                        ,

                                        ,

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

                                          How can I help on this project?

                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Onboard Gold AI partner: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Problem/Motivation Need to onboard new Gold partner: Reading Room ## Proposed resolution Go through onboarding form and do what I can and then hand off to dev, marketing, UX, and QA teams as needed. ## Target date or deadline June 2026 ## Remaining tasks - [x] Create partner onboarding tab from template - [x] Review onboarding form - [ ] Send legal and invoicing contacts to DA - [x] Add to mailing lists - [x] Add to private Slack channels (partners/contributors) - [x] Add to public Slack channels (marketing/UX/QA/ai-contrib) - [x] Add to non-dev meeting invites (marketing/UX) - [x] A… ### [Run AI partner audit report: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ### Problem/Motivation Follow-up to: #3586591+s We want to make sure they were successfully onboarded to the right places. ### Proposed resolution Run the audit report for this partner after a week or two to look for gaps. ### Target date or deadline July 2026 ### Remaining tasks - [ ] Run report - [ ] Identify gaps - [ ] Email partner report > Related issue: [Issue #3579583](https://www.drupal.org/node/3579583) ### [Add Gold AI partner to d.o pages: Reading Room](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority, priority::normal Description: ## Proposed resolution Follow-up to: #3586591+s Update `/ai/partners` and `/ai/become-a-partner`. **Logo:** https://www.drupal.org/reading-room **100 word text:** Reading Room is an independent digital agency specialising in complex, mission-critical digital platforms. Since 1996, the agency has helped organisations modernise, scale and continuously improve the digital products and services their audiences rely on. Our multidisciplinary teams provide the strategic thinking, engineering capability and ongoing partnership needed to deliver robust, secure and high-performing digital service… ### [Onboard Gold/Silver AI partner: TEMPLATE](https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: category::task, management, priority, priority::normal Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> > [!note] Migrated issue > > > > > > Reported by: [kristen pol](https://www.drupal.org/user/8389) [Tracker] **Update Summary:** [One-line status update for stakeholders] **Check-in Date:** MM/DD/YYYY **Additional Collaborators:** *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields are available [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation **CREATING THIS AS A TEMPLATE THAT WILL BE COPIED FOR FUTURE ON… ### [Convert partner templates into GitLab templates](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::task, management, priority::normal, state::accepted Description: ## Problem/motivation Partner issue templates were created when we were using d.o issues: - #3579583+ - #3579591+ - #3579584+ We should use GitLab templates. ## Solution Convert to GitLab templates. ## Tasks - Create templates - Review and test ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Gitlab Control Server - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: CNAME gitlab.drupal-ai-initiative.org => forgespotclustertogw9g.elb.devpanel.com ### [Module Finder - point DNS](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589) State: opened | Updated: 2026-06-29 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: state::accepted Description: Point module-finder.drupal-ai-initiative.org towards dp-yosnzdse.elb.devpanel.com --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [22] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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

                                          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 Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: opened | Updated: 2026-06-30 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [23] summariseModule:ai_agents_test:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                                            AI Agents Test

                                            then use

                                            ,

                                            ,

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

                                              How can I help on this project?

                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [24] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Paul Sheldrake (paulsheldrake)". 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) --- ### [add support for batch embeddings](https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59) State: opened | Author: Paul Sheldrake (paulsheldrake) | Branch: 3568659-support-batched-embeddings | 284 diff lines Description: Closes #3568659 --- COMMITS (24h) --- (none) ======================================================================== ## [25] summariseModule:ai_provider_anthropic:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                Anthropic Provider

                                                then use

                                                ,

                                                ,

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

                                                  How can I help on this project?

                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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: #3607044 Append a trailing user message when a conversation ends with a non-user role](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3607044-chat-requests-rejected | 158 diff lines Description: Fixes #3607044. `AnthropicProvider::chat()` forwards messages as-is; Anthropic rejects a conversation whose last message is not from the user ("the conversation must end with a user message" / no assistant prefill). The AI Agents multi-agent handoff (e.g. Drupal Canvas AI) can end a conversation with a trailing assistant or system message, producing a generic "Something went wrong" in Canvas AI. This overrides `chat()` to append a minimal trailing `user` message ("Continue.") whenever the last message role is not `user` (covering both trailing assistant and system). Tested on Drupal 11.3, a… --- COMMITS (24h) --- (none) ======================================================================== ## [26] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Artem Dmitriiev (a.dmitriiev)". 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) --- ### [add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44) State: opened | Author: Artem Dmitriiev (a.dmitriiev) | Branch: 3568651-batch-inserts-index-only | 297 diff lines Description: Closes #3568651 --- COMMITS (24h) --- (none) ======================================================================== ## [27] summariseModule:ai_image_alt_text:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Image Alt Text (machine name: ai_image_alt_text) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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: Peter Philipp (daspeter)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                    AI Image Alt Text

                                                    then use

                                                    ,

                                                    ,

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

                                                      How can I help on this project?

                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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) --- ### [task: #3606995 Support newer versions of drupal/ai](https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31) State: opened | Author: Peter Philipp (daspeter) | Branch: 3606995-support-newer-versions | 12 diff lines Description: Closes #3606995 --- COMMITS (24h) --- (none) ======================================================================== ## [28] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                      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). ### [Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens)](https://git.drupalcode.org/project/ai_agents/-/work_items/3586043) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !287 [fix: #3586043 Coerce array dynamical token values to string in applyTokens()](https://git.drupalcode.org/project/ai_agents/-/merge_requests/287) | State: opened | Author: Rajab Natshah (RajabNatshah), 144 diff lines Description: ### Problem On every AI Agent run, a PHP warning is logged (and shown as a status message inside the Drupal Canvas AI editor): ``` Warning: Array to string conversion in Drupal\Core\Utility\Token->doReplace() (line 283 of core/lib/Drupal/Core/Utility/Token.php). ``` ### Backtrace (abridged) ``` Token.php(283): str_replace() Token.php(214): Drupal\Core\Utility\Token->doReplace() token_or/src/Token.php(27): ...->replacePlain() eca/.../TokenDecoratorTrait.php(444): ... ai_agents/src/PluginBase/AiAgentEntityWrapper.php(1323): ...->replacePlain() ai_agents/src/PluginBase/AiAgentEntityWrapper.ph… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [29] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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). ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-29 | Author: Stephan Huber (stmh) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [30] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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), AKHIL BABU (AkhilBabu) [2], Andrew Belcher (andrewbelcher), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito), Feliksas Mazeikis (f.mazeikis), Gábor Hojtsy (goba), Kunal Sachdev (kunal.sachdev) [1], Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [1], Ted Bowman (tedbow), utkarsh_33 (Utkarsh_33), Wim Leers (wimleers) [2]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                          Drupal Canvas

                                                          then use

                                                          ,

                                                          ,

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

                                                            How can I help on this project?

                                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Canvas AI: In-progress chat messages disappear when editing page metadata during an active run](https://git.drupalcode.org/project/canvas/-/work_items/3591731) State: opened | Updated: 2026-06-30 | Author: Abhishek Dhariwal (adaptative) | Assigned: unassigned | Labels: state::needsReview Description: Follow-up to #3558257. ### Problem While the AI agent is running, editing the page title or meta description removes the in-progress status messages from the chat UI. ### Steps to reproduce 1. Install Canvas AI on Drupal CMS 2 (starter recipe). 2. Open a new page and open the chatbot. 3. Prompt: `Add an "Our Plans" section for SportsFlix, a sports streaming platform`. 4. While it is still running, type in the description or title field. 5. The in-progress messages disappear from the chat UI. ### Root cause The in-progress status bubble is added imperatively in `startPolling()` via `chatEl.a… ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-06-30 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side)](https://git.drupalcode.org/project/canvas/-/work_items/3591751) State: opened | Updated: 2026-06-29 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1315 [fix: #3591751 Compile JSX server-side for AI-created code components](https://git.drupalcode.org/project/canvas/-/merge_requests/1315) | State: opened | Author: Rajab Natshah (RajabNatshah), 188 diff lines Description: ## Problem/Motivation Code components (`js_component`) created or edited **programmatically** — e.g. by the AI tools in `canvas_ai` — render as `[object Object]` in the editor preview and on the page. They never hydrate. ## Cause `canvas_ai` stores the source JSX but leaves the compiled JS empty: - `modules/canvas_ai/src/Plugin/AiFunctionCall/CreateComponent.php` → `"compiledJs" => ""` - `modules/canvas_ai/src/Plugin/AiFunctionCall/EditComponentJs.php` → `"compiledJs" => ""` Code components are normally compiled in the **browser** editor (swc/wasm) on save, which sets `compiledJs`. The pr… ### [Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/work_items/3591750) State: opened | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1314 [chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push](https://git.drupalcode.org/project/canvas/-/merge_requests/1314) | State: opened | Author: Bálint Kléri (balintbrews), 531 diff lines Description: A CLI `push` can update `canvas.asset_library.global` in multiple steps during the same push. One update writes global CSS/JS fields, and a later update writes dependency manifest fields such as `imports`, `assets`, and `shared`. This is brittle because repeated `PATCH` requests to the same config entity in one `push` can depend on backend behavior around intermediate/staged config state. If a later `PATCH` is applied against an older version of the entity, fields from the earlier `PATCH` can be lost. Change the CLI push flow to: 1. Build and prepare the global CSS/JS asset library update. … ### [Canvas translation onboarding has translation form and default language options that should not be possible to change](https://git.drupalcode.org/project/canvas/-/work_items/3591740) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: Ted Bowman (tedbow) | Labels: Usability Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1303 [Fix high level translation settings experience for Canvas](https://git.drupalcode.org/project/canvas/-/merge_requests/1303) | State: opened | Author: Gábor Hojtsy (goba), 113 diff lines Description: Problem 1️⃣: Currently the default language selector setting for Canvas is force-disabled, but the user can still select a default language. Everything in Canvas assumes the site default language is used, so the settings UI should force this too. --- Problem 2️⃣: Under there, this is the explanation: `Disabled for Canvas pages. Canvas pages must be created in the site's default language only. Translations are managed through the translation interface against the source-language page, not by creating pages in non-default languages.` But one would not only use Canvas pages in other languages… ### [Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/work_items/3591746) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1310 [#3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026](https://git.drupalcode.org/project/canvas/-/merge_requests/1310) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 33 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality: 1. `npm run lint:cspell` is almost always forgotten, probably because it currently says: _"ALWAYS run `npm run fix` when JavaScript code is updated.". (Which implies it's only necessary for front-end changes, which is not true) 2. Often, but definitely not always, are there PHPCS and/or PHPStan violations. 3. The most common PHPCS violation: 80 cols rule, and specifically fo… ### [Language Switcher displays "Untitled page" instead of Actual Title](https://git.drupalcode.org/project/canvas/-/work_items/3591744) State: opened | Updated: 2026-06-29 | Author: Vipin Mittal (vipin.mittal18) | Assigned: utkarsh_33 (Utkarsh_33) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1308 [Resolve "Language Switcher displays "Untitled page" instead of Actual Title"](https://git.drupalcode.org/project/canvas/-/merge_requests/1308) | State: opened | Author: utkarsh_33 (Utkarsh_33), 62 diff lines Description: When translating a config template, the Language Switcher pop-up displays "Untitled Page" instead of the actual page title. **Steps to Reproduce** 1. Open a page associated with a config template. 1. Open the Language Switcher pop-up to create or edit a translation. 1. Observe the title displayed in the pop-up. **Expected Result** The Language Switcher pop-up should display the actual page title so that users can easily identify the page being translated. ### [Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/work_items/3591747) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::normal, projectManagement Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1311 [#3591747: Add `docs/adr/AGENTS.md`](https://git.drupalcode.org/project/canvas/-/merge_requests/1311) | State: merged 2026-06-29 | Author: Wim Leers (wimleers), 9 diff lines Description: #3591583+ has been working well for me. Things I've noticed during my intense use of AI in the past few weeks while working on %"Symmetric Translation: Phase 1", where I worked solely on back-end functionality that introduced 2 new ADRs, both of which were AI-accelerated: 1. It referenced the current state of the implementation, pointing to prior issues, future issues and `@todo`s 2. In its writing, it would refer to concrete code in Drupal core, documentation handbook pages for Drupal core etc (which may change!) instead of referring exclusively to other ADRs ### [Have recipe imports validate prop value structure](https://git.drupalcode.org/project/canvas/-/work_items/3591749) State: opened | Updated: 2026-06-29 | Author: Ben Mullins (bnjmnm) | Assigned: unassigned | Labels: Description: I ran into a scenario where a recipe included a page that had components with invald value structure The `text` property was a formatted text field, which expected a map with text and format properties. ``` components: - uuid: a548b48d-58a8-4077-aa04-da9405a6f418 component_id: js.text inputs: text: "You are not authorized to access this page." ``` This incorrectly formatted value imported fine, and even showed up in the canvas UI without issue but there was a fatal error when `\Drupal\canvas\Tmgmt\ComponentInputsTranslatablesExtractor` attempted to identify tra… ### [Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map](https://git.drupalcode.org/project/canvas/-/work_items/3591748) State: opened | Updated: 2026-06-29 | Author: Andrew Belcher (andrewbelcher) | Assigned: unassigned | Labels: category::bug, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1312 [🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope](https://git.drupalcode.org/project/canvas/-/merge_requests/1312) | State: opened | Author: Andrew Belcher (andrewbelcher), 153 diff lines Description: _Claude Code was used to trace and analyse the bug, and write up the issue._ ## Problem/Motivation When a code component (JavaScript component) imports another code component that *also* shares a dependency with it, the shared component forms a "diamond" — `Pricing` imports both `Card` and `Button`, and `Card` also imports `Button` (one shared leaf): ```mermaid graph TD Pricing -->|"@/components/demo_card"| Card Pricing -->|"@/components/demo_button"| Button Card -->|"@/components/demo_button"| Button ``` In the browser the page fails to hydrate with: ``` [astro-island] Error … ### [Enabling content translation of Canvas pages results in an unsupported state by default; forward port core's #3606969](https://git.drupalcode.org/project/canvas/-/work_items/3591745) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: unassigned | Labels: Needs upstream bugfix, category::bug, translation Description: Currently content translation allows to configure both inputs and component tree translation. However Canvas UI currently only supports inputs translation not different component trees. The default configuration on the content translation UI enables both, resulting in an unsupported combination. Talking to the Canvas team the component tree part is intended to be marked translatable, so it can be supported in the future. So instead of changing the translatability of that, the UI should be modified to disallow configuring the tree to be translatable. ![Screenshot 2026-06-29 at 12.28.19.png](h… ### [WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/work_items/3591734) State: opened | Updated: 2026-06-29 | Author: Gábor Hojtsy (goba) | Assigned: Narendra Singh Rathore (NarendraR), Christian López Espínola (penyaskito) | Labels: Needs tests, Needs upstream bugfix, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1296 [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) | State: opened | Author: Narendra Singh Rathore (NarendraR), 704 diff lines - MR !1313 [fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT](https://git.drupalcode.org/project/canvas/-/merge_requests/1313) | State: opened | Author: Christian López Espínola (penyaskito), 255 diff lines Description: I went to try Canvas 1.7.0 translation today with a brand new install of Drupal CMS Haven. I don't think the issue is due to Haven, so submitting here. I think previously this config form had separate settings under the components for the tree and inputs but that is not an option that I have for some reason, so this is how I have it set up. ![Screenshot 2026-06-26 at 11.29.44.png](https://git.drupalcode.org/-/project/19391/uploads/fe3690f7cf31f5eafd12c4cf6de93f29/Screenshot_2026-06-26_at_11.29.44.png){width="755" height="600"} I have `canvas_dev_translation` enabled and `content|config|inte… ### [Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality](https://git.drupalcode.org/project/canvas/-/work_items/3591583) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI-accelerated, category::task, priority::critical, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1151 >>> Overview It's 2026. The majority of software developers is either using AI LLMs (but everybody says "AI" despite it not actually being intelligent so I'll run with it anyway) voluntarily or is pressured to do so. Whichever your stance may be, it is the reality. In Drupal core (see #3585894: LLM harm reduction in Drupal core contribution, AGENTS.md guidelines). But also in Drupal Canvas. Drupal CMS already adopted it (https://git.drupalcode.org/project/drupal_cms/-/work_items/3569529… ### [Canvas AI: Expose Props of Blocks to the Agent](https://git.drupalcode.org/project/canvas/-/work_items/3569120) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative, AI Product Development, ai, category::bug Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) Related to !498 >>> Overview Currently CanvasAiPageBuilderHelper::getAllComponentsKeyedBySource() does this <?php      if ($source === SingleDirectoryComponent::SOURCE_PLUGIN_ID) {        $this->processSdc($component, $sdc_definitions, $output);      }      elseif ($source === JsComponent::SOURCE_PLUGIN_ID) {        $this->processCodeComponents($co… ### [Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat](https://git.drupalcode.org/project/canvas/-/work_items/3591724) State: opened | Updated: 2026-06-29 | Author: Aidan Foster (aidanfoster) | Assigned: unassigned | Labels: Description: **Source:** Drupal AI UX Weekly Meeting, June 22, 2026. @Marcus_Johansson reviewed and gave an update on the prototype Drupal Canvas AI brand @AkhilBabu based on the experimental prototype that creates components one-at-a-time on this experimental branch https://github.com/akhilbabu-qed-42/c2026/tree/canvas-ai-poc The approach looks very promising from early testing but we need to update the UI to accommodate the changes. ## **Problem / Motivation** Canvas AI now builds a page component by component. While it is building, interacting with the canvas (adding or removing components) breaks t… ### [Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/work_items/3571785) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: AI-accelerated, DX (Developer Experience), category::task, dataModel Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1309 [Draft: #3571785: Refactor away the confusing "dangling component tree" concept](https://git.drupalcode.org/project/canvas/-/merge_requests/1309) | State: opened | Author: Wim Leers (wimleers), 1755 diff lines Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) >>> Overview One of the things that @phenaproxima has expressed multiple times as being very hard to understand for somebody proficient-at-Drupal-but-new-to-Canvas, is Canvas' concept of "dangling component trees". https://git.drupalcode.org/project/canvas/-/work_items/3571116 already got us a good chunk of the way there to eliminating/eradicating this altogether. Proposed resolution Completely eradicate it. User interface changes None. > Related issue: [Issue #3571116](https://www.drupal.org/node/35711… ### [Use toast messages to inform users about the detected conflicts](https://git.drupalcode.org/project/canvas/-/work_items/3591715) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: 1.x-dev, Conflict resolution, backend, priority::minor Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1295 [Draft: feat(Conflict detection): #3591723 "Add 'Conflict detected' toast message"](https://git.drupalcode.org/project/canvas/-/merge_requests/1295) | State: opened | Author: Ravi Maniyar (ravi.maniyar.123), 1052 diff lines Description: Original plan was to leverage Canvas notifications, but after some discussions with @8ballsteve , @amangrover90 and @ravi.maniyar.123 we've come to conclusion that purely client side toast messages that look similar to Canvas notifications, but aren't is a better fit at this time. MvP requirements for toast messages are: * Displayed on `HTTP 409` with errors containing items with code 4 from `HTTP GET` to `/auto-saves/pending` endpoint * Once displayed, we should store information required to make sure the toast notification is not being spammed on each `HTTP 409` response * Once dismisse… ### [Updated translation is not reflected on preview](https://git.drupalcode.org/project/canvas/-/work_items/3591743) State: opened | Updated: 2026-06-29 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Needs steps to reproduce, category::bug, translation Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1307 [Fix translation for newly added component.](https://git.drupalcode.org/project/canvas/-/merge_requests/1307) | State: opened | Author: Chandan Singh (chandu7929), 37 diff lines Description: Adding translation for newly added component doesn't reflect on page preview: - Create a canvas page - Drag and drop heading component on the page - Publish changes - Translate the created canvas page - Navigate back to canvas - drag and drop text component on page - publish changes - Update translation by adding translation for text component as well. - Navigate to canvas - preview Afrikaans translation - observe only Heading component is present for Afrikaans translation where as for English heading and text both are present ### [Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent](https://git.drupalcode.org/project/canvas/-/work_items/3552818) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Contributed project soft blocker, DevDaysAthens2026, category::bug, code Description: >>> [!note] Migrated issue Reported by: [pdureau](https://www.drupal.org/user/1903334) Related to !961 >>> Problem/Motivation Canvas decorates plugin.manager.sdc: Drupal\canvas\Plugin\ComponentPluginManager: decorates: plugin.manager.sdc parent: Drupal\Core\Theme\ComponentPluginManager arguments: ['@entity_type.manager', '@Drupal\canvas\ComponentIncompatibilityReasonRepository'] tags: - { name: canvas.component_source } But the implementation may be incorrect: https://git.drupalcode.org/project/canvas/-/blob/1.x/src/Plugin/ComponentPluginManager.php It extends Drup… ### [Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity](https://git.drupalcode.org/project/canvas/-/work_items/3590840) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: DX (Developer Experience), category::task, priority::major, projectManagement Description: >>> [!note] Migrated issue Reported by: [wim leers](https://www.drupal.org/user/99777) Related to !1120 >>> Overview https://git.drupalcode.org/project/canvas/-/work_items/3558237 made CODEOWNERS a lot simpler. It made it more pragmatic. 3 observations: It has helped to increase velocity. Especially with multiple teams working in parallel on various Canvas features. The most pain we've seen in the ~6 months since then are in the area of CI: flaky tests etc. @justafish has been the main driver towards fixing that velocity killer. The most risk we've seen since then is in the area of data … ### [Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()](https://git.drupalcode.org/project/canvas/-/work_items/3591733) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Wim Leers (wimleers), Kunal Sachdev (kunal.sachdev) | Labels: autoSave, category::task, priority::minor, state::fixed Description: **Overview** There is a workaround to prevent locale's js_alter hook from trying to file_get_contents() the draft JS auto-save URL added in test `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` which was added in #3591654 and which also has a @todo to remove this workaround in #3591719 which is closed as a duplicate of #3591729 where the main issue was resolved. Now that the main issue is resolved in #3591729 so we can remove this workaround. ### [WIP: Apply saved config language override to auto-saved versions in layout](https://git.drupalcode.org/project/canvas/-/work_items/3583043) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Ted Bowman (tedbow) | Labels: autoSave, category::task, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !864 [Draft: Resolve #3583043 "Auto save config override"](https://git.drupalcode.org/project/canvas/-/merge_requests/864) | State: closed | Author: Ted Bowman (tedbow), 452 diff lines Description: >>> [!note] Migrated issue Reported by: [tedbow](https://www.drupal.org/user/240860) Related to !864 >>> Overview Experiment with applying Config Language Config override on API layout routes Proposed resolution User interface changes > Related issue: [Issue #3582464](https://www.drupal.org/node/3582464) ### [Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()`](https://git.drupalcode.org/project/canvas/-/work_items/3530808) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, blocker, category::bug, componentSources Description: >>> [!note] Migrated issue Reported by: [phenaproxima](https://www.drupal.org/user/205645) Related to !448 !1157 >>> Overview If you have an SDC with a date prop, Experience Builder will mistakenly create a Component config entity for it that doesn't comply with config schema. The component entity will have a default_value: { value: 'whatever' }} structure, which doesn't match the field.value.datetime config schema type from core. Proposed resolution @larowlan already went down this rabbit hole and discovered that -- strange as this (and it really is) -- core's doing the right thing here.… ### [Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/work_items/3591712) State: closed | Updated: 2026-06-29 | Author: Bálint Kléri (balintbrews) | Assigned: Bálint Kléri (balintbrews) | Labels: cliTool, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1280 [feat(CLI Tool): Clean up the output of all CLI commands](https://git.drupalcode.org/project/canvas/-/merge_requests/1280) | State: merged 2026-06-29 | Author: Bálint Kléri (balintbrews), 6501 diff lines Description: Now that the CLI tool has undergone a lot of development; the `upload` and `download` commands got deprecated in favor of `push` and `pull`, and the `build` command was rewritten from the ground up, we accumulated inconsistencies in the output of the various commands. Also, since the original output was designed about a year ago, AI coding agents became important consumers of these commands. It's time to consolidate, simplify, and rethink the output of all CLI commands. ### [Prevent creation of Canvas pages in a non-default language at API level via validation constraint](https://git.drupalcode.org/project/canvas/-/work_items/3591742) State: closed | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Needs upstream bugfix, category::bug, data integrity, page Description: #3591625+ prevented the creation of Canvas `Page`s via the UI/entity form. Good. But not enough. @goba reported this in Slack: > I don't see a reason why Canvas can't force field values in this alter further, I agree only disabling this does not force the value per say, it assumes the value was disabled to begin with. But the field setting could be forced a similar way. He opened #3591740+ for improving the help text that `\Drupal\canvas\Hook\ModuleHooks::afterBuildCanvasPageLanguageSettings()` adds. But in addition to that, we should make Canvas' `Page`s fail validation when they're being… ### [Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support](https://git.drupalcode.org/project/canvas/-/work_items/3584136) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: AKHIL BABU (AkhilBabu) | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [subbu94](https://www.drupal.org/user/3513305) > > Related to !907 ### Overview The `canvas_component_agent` system prompt in `ai_agents.ai_agent.canvas_component_agent.yml` contains several bugs that cause the agent to generate invalid or broken code components. These problems were surfaced across four related issues: \[#3584114\], \[#3558216\], \[#3564656\], and \[#3551659\]. This issue consolidates them so they can be fixed together in a single pass over the agent configuration. ### Acceptance criteria When this issue is resolved, the … ### [Access check when publishing auto-save items needs be performed earlier](https://git.drupalcode.org/project/canvas/-/work_items/3591736) State: opened | Updated: 2026-06-29 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: AI-accelerated, backend, category::bug, internalHttpApi Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1302 [#3591736 "Access check in ApiAutoSaveController::post() should be performed earlier"](https://git.drupalcode.org/project/canvas/-/merge_requests/1302) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 204 diff lines Description: With the changes in !1271 the access check happens too late in the handling of auto-save items publishing request. If a user submits a list to `ApiAutoSaveController::post()` of entities they have no access to, the entities get filtered out in `ApiAutoSaveController::getPublishableAutoSaves()` via: ``` $access = $item['entity']->access('view label', return_as_object: TRUE); ... return $access->isAllowed() && ($item['is_default_translation'] ?? TRUE); ``` This results in a s set of "publishable auto-save items" that misses the entities the user has submitted. This then fail… ### [Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/work_items/3556922) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, AI Page Generation, ai Description: > [!note] Migrated issue > > > > > > Reported by: [akhil babu](https://www.drupal.org/user/3632866) > > Related to !813 ### Overview Getting the following error occasionally when generating a title, metadata, or adding components using the Page Builder agent from the chat interface. ![/files/issues/2025-11-10/Image-%201_0.png](https://www.drupal.org/files/issues/2025-11-10/Image-%201_0.png) This error usually occurs when new components are added or a full page is generated while the title and description are empty. Currently the UI has 3 separate handlers for adding/updating canvas page… ### [Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan](https://git.drupalcode.org/project/canvas/-/work_items/3591729) State: closed | Updated: 2026-06-29 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: JavaScript, autoSave, category::bug, internalHttpApi Description: ### Overview On a multilingual site, page renders that include a Canvas asset library draft emit a PHP warning: ``` file_get_contents(canvas/api/v0/auto-saves/js/asset_library/global): Failed to open stream: No such file or directory in _locale_parse_js_file() (core/modules/locale/locale.module:771) ``` The interface-translation system (`locale`) scans every JavaScript asset of type `file` on a page to extract `Drupal.t()` / `Drupal.formatPlural()` strings, reading each one with `file_get_contents()`. Canvas registers the draft asset library's JS as a root-relative route URL (`/canvas/api… ### [Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context](https://git.drupalcode.org/project/canvas/-/work_items/3591654) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: Ignacio Sánchez Holgueras (isholgueras), Kunal Sachdev (kunal.sachdev) | Labels: category::task, pageBuilder, priority::normal, state::needsReview Description: **Overview** For content template in Canvas, the language selector in top bar shows a "Delete translation" option for languages that have a translation of the preview entity. However, the delete link generated by `ApiLayoutController::get()` currently always points to `canvas.api.content.translation.delete`, which is hardcoded to the `canvas_page` entity type and will fail to resolve for other entity types used as preview entities. **Proposed Solution** Use the dedicated `canvas.api.config.translation.delete` route in the template context - update `ApiLayoutController::get()` to point the de… ### [Deleting optional props from an SDC/code component causes validation errors in config-defined component instances: regression for monolingual sites, bug for multilingual sites](https://git.drupalcode.org/project/canvas/-/work_items/3591727) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Christian López Espínola (penyaskito), Wim Leers (wimleers) | Labels: DX (Developer Experience), Regression, componentSources, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1300 [chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid](https://git.drupalcode.org/project/canvas/-/merge_requests/1300) | State: opened | Author: Christian López Espínola (penyaskito), 795 diff lines Description: The following [discussion](https://git.drupalcode.org/project/canvas/-/merge_requests/1271#note_1273034) from !1271 should be addressed: > :warning: :exploding_head: While sprinkling `self::assertEntityIsValid(…)` calls over @tedbow's a41099c6d32b6e13296eb0325b1a94cf8ef14b16, this was a highly unexpected find! > > This means #3591667+ would be surfacing validation errors for many component trees using `sdc` or `js` component instances that have had optional props removed. > > Fixing it is out of scope here; needs follow-up. ### Problem Removing an optional prop from an SDC/code component … ### [Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation](https://git.drupalcode.org/project/canvas/-/work_items/3591667) State: opened | Updated: 2026-06-29 | Author: Wim Leers (wimleers) | Assigned: Wim Leers (wimleers) | Labels: Configuration schema, DX (Developer Experience), Needs ADR, data integrity Description: Title says it all. Context: Acquia Source has adopted Canvas long before it had a stable data model, and hence long before Canvas provided update paths. This has proven to cause seemingly random bugs during deployment, but time and time again the root cause has been data created _before_ Canvas provided update paths. This has been a time-consuming and costly affair (e.g. #3578865, #3579086). Canvas has invested _heavily_ into thorough validation to spot data integrity problems, to be able to guarantee that "if it passes validation, it will work [render + be editable with good UX]". ## Propo… ### [Prevent creation of Canvas pages in a non-default language in the UI/via the entity form](https://git.drupalcode.org/project/canvas/-/work_items/3591625) State: closed | Updated: 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Assigned: unassigned | Labels: category::task, pageBuilder, priority::normal, state::fixed Description: **Overview** - Currently, when creating a new Canvas page, the language selector displays all languages configured on the website, including both the default language and translated languages. - This behaviour allows users to create Canvas pages directly in non-default languages. However, Canvas pages should only be created in the site's default language (source language). - For non-default languages, users should not create separate Canvas pages. Instead, translated content should be managed through the translation interface, where translations are entered against the source-language Canvas … ### [[PP-1] Create Canvas pages in any enabled content language](https://git.drupalcode.org/project/canvas/-/work_items/3546597) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: Needs followup, Needs tests, category::feature, page Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !494 >>> Overview Today, it is not possible to create a new Canvas page in a non-default language on the UI. Let's say we have 2 enabled languages in the website, English (default) and Spanish. It is not possible to create a Canvas page with langcode Spanish then. While it is possible, to create the Spanish language page on the command line or via Drupal recipes, once that is created, editing the page can be done only without the language prefix in the URL. With the language prefix in the URL, … ### [Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props](https://git.drupalcode.org/project/canvas/-/work_items/3591663) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, ai Description: ## Steps to Reproduce 1. Install `canvas_ai` on a Drupal CMS 2 site using the Byte Theme or Starter Theme (Mercury components are required). 2. Install `ai_api_explorer`. 3. Log in as user 1. 4. Go to: `/admin/config/ai/explorers/tools_explorer` 5. Select the **set_component_structure** tool from the dropdown. 6. Run the following Drush command to set the current layout value required by the tool: ```bash ddev drush php:eval " \Drupal::service('account_switcher')->switchTo(\Drupal\user\Entity\User::load(1)); \Drupal::service('canvas_ai.tempstore')->setData( 'curren… ### [Canvas AI: Component context required props missing required flag](https://git.drupalcode.org/project/canvas/-/work_items/3591655) State: opened | Updated: 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Assigned: Tormi Tabor (tormi) | Labels: 1.x-dev, AI Initiative Sprint, AI Innovation, Novice Description: ## Problem A regression in `CanvasAiPageBuilderHelper::processSdc()` causes the `required: true` flag to be dropped from component context metadata. Current code: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], TRUE)) { $output[$source_id]['components'][$component_id]['props'][$prop_name]['required'] = TRUE; } ` The flag should instead be added to the prop metadata: `// Mark required props. if (isset($sdc_definition['props']['required']) && \in_array($prop_name, $sdc_definition['props']['required'], … ### [Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent](https://git.drupalcode.org/project/canvas/-/work_items/3591457) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, ai, category::task Description: >>> [!note] Migrated issue Reported by: [akhil babu](https://www.drupal.org/user/3632866) >>> Overview This issue will get broken down in to several sub issues in future. https://git.drupalcode.org/project/canvas/-/work_items/3582390 would add automated tests for the Canvas AI Orchestrtator agent. In the same way create tests for the Page builder agent and template builder agent so that we could save a lot of time in manual testing whenevr their system prompts changes. On a high level, to achieve this. For the tests, the agent should only see the components available in the canvas_test_s… --- MERGE REQUESTS (24h) --- ### [Issue #3591731: Keep in-progress AI chat messages when page metadata is edited mid-run](https://git.drupalcode.org/project/canvas/-/merge_requests/1316) State: opened | Author: Abhishek Dhariwal (adaptative) | Branch: 3591731-inprogress-messages-metadata | 199 diff lines Description: Follow-up to #3558257. ### Summary While the AI agent runs, editing the page title or meta description removed the in-progress status messages from the chat. The in-progress bubble was added imperatively to DeepChat (`chatEl.addMessage`/`updateMessage`) and lived only in DeepChat's internal message list. Editing metadata re-renders the panel, DeepChat re-applies its `history` prop, and the bubble was dropped. This routes the in-progress message through `historyStore`: - `historyStore` gains a transient `liveMessage` slot (`setLiveMessage`/`clearLiveMessage`). It is part of the `getSnapshot(… ### [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: 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 | 4644 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… ### [#3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()"](https://git.drupalcode.org/project/canvas/-/merge_requests/1294) State: merged 2026-06-29 | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591733-remove-workaround-in-apilayoutcontrollergettesttestconfigtranslationavailabilitylinksandpermissions | 34 diff lines ### [feat(conflict): Add conflict resolution UI with viewport selection and route integration](https://git.drupalcode.org/project/canvas/-/merge_requests/1183) State: opened | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3591601-rudimentary-conflict-resolution-ui | 3703 diff lines Description: \[Description of changes\] ## What this MR adds This adds a conflict review flow for Canvas Pages. In simple terms: Canvas saves unpublished edits as auto-saves. A conflict happens when a user has unpublished Canvas changes, but the published Page is changed outside of that user’s Canvas session before they publish. This MR shows those conflicts in Review changes, prevents conflicted items from being published directly, and lets the user open a side-by-side resolver. In the resolver, the user can choose either: - **Published version**: discard the Canvas auto-save for that Page. - **New… ### [Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent.](https://git.drupalcode.org/project/canvas/-/merge_requests/498) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3569120-canvas-ai-expose | 413 diff lines Description: Closes #3569120 ### [feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity"](https://git.drupalcode.org/project/canvas/-/merge_requests/1193) State: opened | Author: Feliksas Mazeikis (f.mazeikis) | Branch: 3587526-prevention-of-publishing-be | 865 diff lines Description: **TL;DR:** Adds `HTTP 409` response to the "publish auto-save items" endpoint; Prevents publishing on the BE if [a conflict is detected](https://git.drupalcode.org/project/canvas/-/merge_requests/1213); **For people with attention span or AI summary tools:** This MR adds "Prevent publishing of auto-save items with detected conflicts on BE" capability described in the "\[META\] Review of changes and Conflict resolution" (https://git.drupalcode.org/project/canvas/-/work_items/3587587). It is BE implementation of https://git.drupalcode.org/project/canvas/-/work_items/3587526 and counter-part o… ### [feat(Conflict detection): #3587526 "Client side prevention of publishing"](https://git.drupalcode.org/project/canvas/-/merge_requests/1018) State: merged 2026-06-29 | Author: Ravi Maniyar (ravi.maniyar.123) | Branch: 3587526-prevention-of-publishing | 200 diff lines Description: Client side changes for https://git.drupalcode.org/project/canvas/-/work_items/3587526+ This MR adds conflict handling for pending auto-save changes so users cannot publish changes that have unresolved conflicts. When a pending change is marked as conflicted, the review UI now: - Shows a conflict warning in the unpublished changes panel - Disables selection for conflicted changes - Excludes conflicted changes from Select All - Still allows non-conflicted changes to be selectively published The pending changes API response is also normalized so the frontend can handle both normal pending ch… ### [Issues/Canvas AI: An unexpected error has occurred while rendering preview](https://git.drupalcode.org/project/canvas/-/merge_requests/813) State: merged 2026-06-29 | Author: AKHIL BABU (AkhilBabu) | Branch: 3556922-canvas-ai-an | 278 diff lines Description: Closes #3556922 --- COMMITS (24h) --- - [fdfed34a](https://git.drupalcode.org/project/canvas/-/commit/fdfed34a8160828e134f0aa553bcbff59c8da8f0) chore(Project management): #3591746 Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 — Wim Leers (2026-06-29T17:39:11.000+00:00) - [6a5e9014](https://git.drupalcode.org/project/canvas/-/commit/6a5e90149b5aaa7e5d7c85cfdc1ae85499258b60) chore(Project management): #3591747 Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` — Wim Leers (2026-06-29T17:27:13.000+00:00) - [de13400a](https://git.drupalcode.org/project/canvas/-/commit/de13400afc6441e8fe2cee2083ea62511d7702e4) chore(Auto-save): #3591733 Remove workaround in `ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()` — Kunal Sachdev (2026-06-29T12:46:28.000+00:00) - [b217c5b6](https://git.drupalcode.org/project/canvas/-/commit/b217c5b6dd05c9e4aece2f9be95eeaa8963a4a75) feat(CLI Tool): #3591712 Clean up the output of all CLI commands — Bálint Kléri (2026-06-29T11:42:41.000+00:00) - [a1b781c2](https://git.drupalcode.org/project/canvas/-/commit/a1b781c2ad551443617d0ebfb1fbb53d7eeb6282) fix(AI): #3569120 Canvas AI: Expose Props of Blocks to the Agent — AKHIL BABU (2026-06-29T10:55:56.000+00:00) - [0d1f16ec](https://git.drupalcode.org/project/canvas/-/commit/0d1f16ece5c3c0f7e7d4e18e273492bd1e342d59) feat(Conflict detection): #3587526 Client side prevention of publishing — Ravi Maniyar (2026-06-29T10:16:05.000+00:00) - [8f2c22b3](https://git.drupalcode.org/project/canvas/-/commit/8f2c22b39e283d2984400d7ae3b18cfe1f7fef11) fix(AI): #3556922 Canvas AI: consolidate Canvas page field updates into a single preview update — AKHIL BABU (2026-06-29T09:05:59.000+00:00) ======================================================================== ## [31] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Eric Homanchuk (erichomanchuk), Joshua Fernandes (joshua1234511), Kristen Pol (kepol), Pravesh Poonia (Pravesh_Poonia)". 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). ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Daniel Rodriguez (danrod) | 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), 2419 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 ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !151 [Issue #3586220: Add single context item display.](https://git.drupalcode.org/project/ai_context/-/merge_requests/151) | State: opened | Author: Eric Homanchuk (erichomanchuk), 6052 diff lines Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [Finalize Context Importer naming and review Extensions page UI/UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586283) State: opened | Updated: 2026-06-30 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Description Follow-up to: #3586275+s Required for: #3586282+s ### Summary [#3586275](https://www.drupal.org/project/ai_context/issues/3586275) introduced the `ai_context_document_loader` submodule and a reworked **Settings → Extensions** page (`/admin/config/ai/context/settings/extensions`). Initial UX feedback has been considered, but needs refinement. For now, the submodule has been renamed from “Document Loader: Markdown Importer” to **“Document Loader: Context Importer”**. Before the submodule stabilization follow-up (experimental → stable) (#3586282), we need a focused pass to *… ### [Inject context into ai_ckeditor requests](https://git.drupalcode.org/project/ai_context/-/work_items/3581955) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !116 >>> Problem/Motivation The ai_context module cannot inject scope-matched context items into ai_ckeditor AI requests because ai_ckeditor bypasses the ai_agents pipeline (and its BuildSystemPromptEvent) entirely — it calls the AI provider directly in its own streaming controller. There is no event or hook point for ai_context to intercept. This issue is the ai_context companion to the ai_ckeditor entity context and event extensibility work tracked in the drupal/ai module issue queue. … ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !199 [Issue #3586302: Exposed tooltip/truncated content and icon meaning to assistive tech.](https://git.drupalcode.org/project/ai_context/-/merge_requests/199) | State: opened | Author: Joshua Fernandes (joshua1234511), 157 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-29 | 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 !200 [Issue #3586301: Clean up CCC accessible interactive links and external links.](https://git.drupalcode.org/project/ai_context/-/merge_requests/200) | State: opened | Author: Pravesh Poonia (Pravesh_Poonia), 501 diff lines Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… --- MERGE REQUESTS (24h) --- ### [Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs.](https://git.drupalcode.org/project/ai_context/-/merge_requests/201) State: opened | Author: Pravesh Poonia (Pravesh_Poonia) | Branch: fix/context-prefix-and-manage-docs-3586298 | 45 diff lines Description: Fixes two RC1-blocking items from the AI Best Practices review: 1. Context prefix default alignment: The fallback string in AiContextSystemPromptSubscriber did not match the value shipped in config/install/ai_context.settings.yml. Aligned to the canonical config default. 2. Stale getManageUrl() docs: scope_api.md and custom_scopes.md still referenced the nonexistent getManageUrl(): ?string method. Updated to document the actual getManageRoute(): ?array method with the correct return type and structure. --- COMMITS (24h) --- (none) ======================================================================== ## [32] summariseModule:ai_search:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                                                              AI Search

                                                              then use

                                                              ,

                                                              ,

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

                                                                How can I help on this project?

                                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-29 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-29 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: category::bug, priority::major, state::postponed Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [33] summariseModule:field_widget_actions:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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

                                                                Field Widget Actions

                                                                then use

                                                                ,

                                                                ,

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

                                                                  How can I help on this project?

                                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-29 | Author: Daniel Bosen (daniel.bosen) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [34] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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: Rob Loach (robloach)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                  Pinecone VDB Provider

                                                                  then use

                                                                  ,

                                                                  ,

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

                                                                    How can I help on this project?

                                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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). ### [Support batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209) State: opened | Updated: 2026-06-29 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: category::feature, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Issue #3586209: Add support for batching on indexing operations](https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32) | State: opened | Author: Rob Loach (robloach), 333 diff lines Description: Inspired by https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 , we should extend the batching to the Pinecone provider too. --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [35] summariseModule:ai_search_block:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI powered Search Block (machine name: ai_search_block) Reporting period: last 24h (2026-06-29T05:00:06+00:00 to 2026-06-30T05: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)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                                                    AI powered Search Block

                                                                    then use

                                                                    ,

                                                                    ,

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

                                                                      How can I help on this project?

                                                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 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) --- ### [feat: #3582452 Add guardrail set selection to ai_search_block](https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3582452-add-guardrail-set | 799 diff lines Description: By: nikro Closes #3582452 --- COMMITS (24h) --- (none) ======================================================================== ## [36] 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-06-29T05:00:06+00:00 to 2026-06-30T05: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). ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-29 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [37] 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] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [2] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [3] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [4] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [5] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [6] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [7] 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 [8] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [9] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [10] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [11] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [12] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [13] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [14] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [15] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [16] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [17] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [18] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [19] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [20] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [21] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [22] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [23] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [24] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [25] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [26] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [27] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [28] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [29] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [30] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [31] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [32] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [33] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [34] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [35] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [36] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [37] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [38] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [39] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [40] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [41] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [42] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [43] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [44] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [45] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [46] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [47] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [48] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [49] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [50] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [51] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [52] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [53] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [56] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [57] 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 [58] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [59] Language Switcher displays "Untitled page" instead of Actual Title (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [60] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [61] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [62] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [63] Enabling content translation of Canvas pages results in an unsupported state by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [64] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [65] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [66] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [67] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [68] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [69] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [70] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [71] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [72] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [73] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [74] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [75] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [76] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [77] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [78] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [79] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [80] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [81] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [82] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [83] 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 [84] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [85] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [86] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [87] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [88] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [89] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [90] 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 [91] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [92] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [93] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [94] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [95] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [96] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [97] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [98] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [99] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [100] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [101] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [102] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [103] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [104] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [105] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [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): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [108] chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [109] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [110] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [111] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [112] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [113] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [114] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [115] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [116] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [117] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [118] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [119] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [120] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [121] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [122] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [123] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [124] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [125] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [126] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [127] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [128] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [129] 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 [130] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [131] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [132] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [133] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [134] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [135] Issue #3586209: Add support for batching on indexing operations (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [136] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [137] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- MODULE SUMMARIES ---

                                                                          AI (Artificial Intelligence)

                                                                          Development continues on the AI module with progress across user interface improvements, architectural enhancements, and tooling for agent-driven configuration. Several items moved forward during the period.

                                                                          Work on batch embeddings for improved indexing performance advanced with a new merge request that introduces batch embeddings as a first-class operation type, preserving backward compatibility while enabling faster vector database indexing. This change enables multiple chunks to be processed simultaneously rather than sequentially, addressing performance bottlenecks in search indexing workflows.

                                                                          Two new agent skills were proposed to allow AI-driven site configuration: setup-guardrails and configure-ai-settings. These would enable agents to configure operational settings and guardrails via command-line tools rather than requiring manual admin UI interaction, expanding autonomous agent capabilities. Both issues have been assigned for development.

                                                                          A fix for preserving HTML in streamed output is under review, addressing an issue where HTML tags were being malformed during translation workflows. A merge request to support translated taxonomy terms in the CKEditor tone-of-voice plugin was also opened. Work continued on adding semantic topic matching to the RestrictToTopic guardrail, allowing topic matching by meaning rather than exact string comparison.

                                                                          The bundled field_widget_actions sub-module, already deprecated, is now being fully removed to eliminate namespace conflicts with the standalone project. A merge request removing 34 files and adding the standalone package as a dependency was opened. Issue tracking for dark-theme rendering bugs in the Tool Explorer and MDX Editor, off-canvas dialog support for the JSON schema form element, and functional testing for AI CKEditor are all in progress.

                                                                          How can I help on this project?

                                                                          • Prioritize review and sign-off on the batch embeddings architecture change to unblock indexing performance improvements for production sites.
                                                                          • Clarify acceptance criteria for autonomous agent configuration skills to ensure they align with broader automation and security strategy.

                                                                          Contributors: Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Joshua Fernandes (joshua1234511), Pravesh Poonia (Pravesh_Poonia), Rob Loach (robloach), Thomas Werthmüller (weri)

                                                                          ---

                                                                          Drupal AI Initiative

                                                                          The Drupal AI Initiative completed foundational work on the AI CMS Demo System during this period. Four related work items were closed, covering repository setup and access configuration for partner organizations, the technical architecture defining how the system will be structured and maintained, the creation of a baseline demonstration instance, and the development of a hosting-specific implementation. This system will showcase AI capabilities integrated into Drupal CMS and provide a reference model for partners.

                                                                          Onboarding continues for Reading Room, a new Gold partner. Most onboarding steps have been completed, with outstanding items including adding the partner to public-facing pages and conducting a follow-up audit to verify successful integration. Additionally, work is underway to convert partner onboarding templates to native GitLab formats to streamline future partner integrations.

                                                                          Two infrastructure tasks were opened to configure domain name settings for the GitLab control server and module finder tool, which will support the initiative's technical operations.

                                                                          How can I help on this project?

                                                                          • Ensure legal and invoicing contacts for Reading Room are provided to the Drupal Association to complete partner onboarding.
                                                                          • Review and approve marketing content for the Reading Room partner announcement on public-facing pages.
                                                                          • Confirm infrastructure resources are available to complete DNS configuration for initiative tools.
                                                                          ---

                                                                          AI Integration - ECA

                                                                          This module connects the AI Integration framework with Drupal's Event-Condition-Action (ECA) system, allowing automated workflows to incorporate AI capabilities.

                                                                          Development work focused on expanding the range of AI operations available to automation workflows. A new task was opened to add support for text translation workflows, which would enable automated content translation using AI providers. This addresses a gap in the current offering, which already supports chat, embedding, content moderation, and speech conversion, but lacks translation capabilities. The addition would allow organizations to automate multilingual content workflows without custom development.

                                                                          No code changes were merged during this period. The module remains in active development toward its 1.0.0 release. As an evolving integration project, open feature requests like this are a normal part of building out comprehensive coverage of AI operations.

                                                                          How can I help on this project?

                                                                          • Clarify organizational priorities for which AI operations are most valuable to automate, to help the team sequence remaining feature work toward the stable release.
                                                                          • Consider allocating dedicated testing resources to validate AI workflow integrations as new operation types are added.
                                                                          ---

                                                                          AI Agents Test

                                                                          The AI Agents Test module saw limited activity in the past 24 hours. One research initiative examining the potential consolidation of testing infrastructure was closed. The Research: merging ai_agents_test with ai_eval (and AiLlm test harness) issue was resolved, which had been exploring whether multiple overlapping testing approaches in the Drupal AI ecosystem should be unified. This research is part of broader work to streamline how AI configurations are validated across different tools and modules.

                                                                          No code changes were merged or committed during this period. The module remains in an exploratory phase as architectural decisions around testing infrastructure are being finalized.

                                                                          How can I help on this project?

                                                                          • Clarify strategic priorities for testing infrastructure consolidation, ensuring the team has clear direction on whether to pursue integration or maintain separate tools.
                                                                          • Allocate resources to move from research to implementation once architectural decisions are confirmed.
                                                                          ---

                                                                          OpenAI Provider

                                                                          A new merge request has been opened to add support for batch embeddings. This enhancement will allow the module to process multiple embedding requests together, which can improve efficiency and reduce costs when working with OpenAI's services. Batch processing is particularly valuable for organizations handling large volumes of content or data that needs to be analyzed or indexed. The work is currently under review.

                                                                          No other activity was recorded during this period.

                                                                          How can I help on this project?

                                                                          • Prioritize review resources to evaluate the batch embeddings feature, ensuring it meets business requirements before merging.
                                                                          • Consider allocating budget for testing with realistic data volumes to validate cost savings from batch processing.

                                                                          Contributors: Paul Sheldrake (paulsheldrake)

                                                                          ---

                                                                          Anthropic Provider

                                                                          A merge request was opened to address a compatibility issue affecting conversational AI features. When multiple AI agents pass control to one another, the conversation can end with a message from the system or assistant rather than the user. The Anthropic service rejects these conversations, causing failures in tools like Drupal Canvas AI. The proposed fix ensures conversations always end with a user message, preventing rejections and allowing multi-agent workflows to function smoothly. This work supports more sophisticated AI-powered features in Drupal.

                                                                          How can I help on this project?

                                                                          • Prioritize testing and review of the conversational fix to ensure multi-agent AI features can ship reliably.
                                                                          • Assess whether additional integration testing resources are needed to validate complex AI workflow scenarios before release.
                                                                          Contributors: Rajab Natshah (RajabNatshah) ---

                                                                          Milvus VDB Provider

                                                                          This module enables Drupal to work with Milvus, a vector database used for AI-powered search and content recommendations. It remains in active development as the team works to improve performance and scalability.

                                                                          During this period, a new merge request was opened to add support for batching on indexing operations. This work will allow the system to process multiple pieces of content at once when building search indexes, rather than handling them one at a time. For sites with large content libraries, this should significantly reduce the time required to index content and improve system efficiency during content updates.

                                                                          The merge request is under review. No bugs or blocking issues were reported during this period.

                                                                          How can I help on this project?

                                                                          • Ensure the team has dedicated review capacity to evaluate and merge the batching functionality, which could deliver measurable performance improvements for content-heavy sites.
                                                                          • Clarify whether production deployment timelines require expedited testing resources for this indexing enhancement.

                                                                          Contributors: Artem Dmitriiev (a.dmitriiev)

                                                                          ---

                                                                          AI Image Alt Text

                                                                          A merge request was opened to add support for newer versions of the Drupal AI module, which the AI Image Alt Text module depends on. This compatibility work ensures the module can continue functioning as its underlying dependencies evolve, maintaining access to AI-powered alternative text generation for images across newer Drupal environments.

                                                                          The merge request is currently under review. Once integrated, this will allow sites using more recent versions of the AI module to adopt or continue using automated image accessibility features without compatibility constraints.

                                                                          How can I help on this project?

                                                                          • Prioritize code review resources to evaluate and merge the compatibility update, reducing time to deployment.
                                                                          • Consider funding automated compatibility testing to catch dependency issues earlier in future development cycles.

                                                                          Contributors: Peter Philipp (daspeter)

                                                                          ---

                                                                          AI Agents

                                                                          A bug was identified and addressed during this period that was causing warning messages to appear each time an AI agent ran. The issue, Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens), resulted from certain data values being incompatible with the text replacement system used by agents. This caused disruptive warnings to appear in the editing interface, affecting the user experience for anyone building or testing AI agent workflows.

                                                                          A fix has been prepared and is under review. Once merged, this will eliminate the warnings and provide a cleaner, more professional interface for users working with AI agents in the Drupal Canvas editor.

                                                                          The module remains in active development with normal iteration on quality and usability improvements as issues are discovered and resolved.

                                                                          How can I help on this project?

                                                                          • Prioritize code review resources to merge the pending fix, ensuring a smoother user experience for teams testing AI agent functionality.
                                                                          • Consider expanding testing coverage or user feedback cycles to catch interface issues earlier in the workflow.

                                                                          Contributors: Rajab Natshah (RajabNatshah)

                                                                          ---

                                                                          Tool API

                                                                          No development activity was recorded during this period. One issue remains under discussion: MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588), which affects how content is delivered through REST endpoints when the Tool module is enabled. This issue could prevent integrations that rely on REST APIs from functioning correctly. The problem is assigned and flagged for attention by the AI Initiative Sprint team, but no solution has been merged yet.

                                                                          The module is currently in beta, and active work on compatibility issues like this is a normal part of maturing toward a stable release.

                                                                          How can I help on this project?

                                                                          • Confirm whether REST API compatibility is a priority for planned integrations, and communicate urgency to the development team if needed.
                                                                          • Ensure the team has sufficient testing resources to validate fixes across different API configurations before the stable release.
                                                                          ---

                                                                          Drupal Canvas

                                                                          Over the past 24 hours, the project delivered several foundational improvements to AI functionality, conflict handling, and tooling quality. The AI agent's ability to work with block components was completed, enabling richer page-building capabilities. A longstanding issue causing unexpected errors during AI-driven page generation was resolved by consolidating how the system updates page fields during preview, improving reliability and user experience.

                                                                          On the conflict-resolution front, the client-side publishing flow now prevents users from publishing changes when conflicts are detected, reducing the risk of overwriting edits made outside their session. This complements earlier backend work and moves the conflict-detection feature closer to full integration.

                                                                          Guidelines for AI-assisted development were refined based on recent contributor experience, helping maintain code quality as the project scales. The CLI tool's output was cleaned up for consistency and better usability by both humans and AI agents. A test workaround was removed following an upstream fix, and several issues related to translation, auto-save behaviour, and component metadata were opened with merge requests already in progress.

                                                                          Two bugs remain under investigation: a rendering issue affecting AI-created code components (which fail to compile server-side and display as [object Object]), and a problem where in-progress chat messages disappear when editing page metadata during an active AI run. Both have open merge requests.

                                                                          How can I help on this project?

                                                                          • Prioritise review and merge of the two AI user-experience issues (chat messages disappearing mid-run, and code component rendering failures) to unblock quality improvements in the AI agent workflow.
                                                                          • Evaluate whether conflict-resolution UI work should be resourced for faster integration, as the backend and client-side pieces are now largely in place.

                                                                          Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative), AKHIL BABU (AkhilBabu) [2], Andrew Belcher (andrewbelcher), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito), Feliksas Mazeikis (f.mazeikis), Gábor Hojtsy (goba), Kunal Sachdev (kunal.sachdev) [1], Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [1], Ted Bowman (tedbow), utkarsh_33 (Utkarsh_33), Wim Leers (wimleers) [2]

                                                                          ---

                                                                          Context Control Center (CCC)

                                                                          The project is nearing its first release candidate and work over the last 24 hours has concentrated on refining user experience and accessibility ahead of that milestone. Two key areas of functionality progressed: a new full-page view layout for context items that improves readability and navigation, and a feature that allows sub-contexts to override their parent's scope settings, giving users more control over how context is applied. Both have open merge requests undergoing final review and testing.

                                                                          Separately, work began on improving accessibility across the module's interface. Issues related to tooltip and icon-only content and interactive and external links both saw new merge requests opened to address best-practice findings. A third merge request corrected a minor configuration inconsistency and outdated documentation. These changes ensure the interface is usable by screen readers and assistive technology.

                                                                          A broader tracking issue, Fix CCC issues based on AI Best Practices results, has been opened to coordinate outstanding items flagged by automated review. Most are non-blocking enhancements, with only a handful affecting configuration or public interfaces. Normal for pre-release software, these will be resolved in parallel with final testing.

                                                                          How can I help on this project?

                                                                          • Prioritize manual testing and sign-off for the two open layout and scope override features currently awaiting final validation.
                                                                          • Ensure design and UX stakeholders are available to review the context importer naming and extensions page changes outlined in this issue.

                                                                          Contributors: Eric Homanchuk (erichomanchuk), Joshua Fernandes (joshua1234511), Kristen Pol (kepol), Pravesh Poonia (Pravesh_Poonia)

                                                                          ---

                                                                          AI Search

                                                                          The AI Search module saw limited activity over the past 24 hours, with two issues updated but no code merged or committed. The focus remains on compatibility and performance improvements as the project evolves.

                                                                          Work continues on batch embeddings for improved indexing performance, which aims to make search indexing faster and more efficient when processing large amounts of content. This feature is being ported from related work in the AI Core module.

                                                                          A compatibility issue was also identified: Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated. Tests are currently failing due to changes in the underlying AI Core module. This issue is on hold pending completion of prerequisite work in AI Core, after which compatibility updates will be made to ensure the module continues functioning correctly.

                                                                          Both issues remain open with no assigned owners. This is typical for a module in active development, though progress depends on coordination with the AI Core project.

                                                                          How can I help on this project?

                                                                          • Assign resources to address the open compatibility bug, which is currently blocking test success and depends on coordination with the AI Core team.
                                                                          • Consider prioritizing the batch embeddings feature if indexing performance is a business priority for upcoming releases.
                                                                          ---

                                                                          Field Widget Actions

                                                                          No code changes or merge activity occurred during this period. One feature request remains under discussion: Generate UUIDs for list-style widget-action settings applied via config actions. This work would allow recipes to declare multiple action buttons on a single form without conflicts, enabling each button to target its own field correctly. Currently, hard-coded identifiers cause all buttons to write to the same location, limiting the flexibility of automated configuration deployment.

                                                                          The issue is part of the AI Initiative Sprint and has been assigned for development, but no implementation has been submitted yet. Progress on this feature would improve the experience for teams deploying AI-assisted content editing tools at scale.

                                                                          How can I help on this project?

                                                                          • Clarify priority and timeline expectations for the unique identifier generation feature to help focus development effort.
                                                                          • Ensure the assigned developer has protected time and necessary access to move the work forward this sprint.
                                                                          ---

                                                                          Pinecone VDB Provider

                                                                          The Pinecone VDB Provider module enables organizations to integrate with Pinecone, a vector database service used to power AI-driven search and recommendation features. During this reporting period, work began on improving how the system handles large-scale data indexing operations.

                                                                          A proposal to support batching on indexing operations was opened for review. Currently, indexing large volumes of data into Pinecone can be inefficient. The proposed enhancement would process data in batches, improving performance and reliability when populating the vector database with content. This matters for sites with substantial content libraries or those planning to scale their AI features, as it reduces processing time and resource consumption. The approach is inspired by similar work in a related provider, demonstrating alignment with broader platform improvements.

                                                                          No code changes were merged during this period. The batch indexing work is currently awaiting review.

                                                                          How can I help on this project?

                                                                          • Allocate reviewer capacity to evaluate the batching implementation currently awaiting feedback, accelerating its path to production readiness.
                                                                          • Clarify performance requirements or scaling targets for the vector database integration to help prioritize optimization work.

                                                                          Contributors: Rob Loach (robloach)

                                                                          ---

                                                                          AI powered Search Block

                                                                          Development activity this period focused on safety and content moderation capabilities. A new merge request was opened to add guardrail set selection to the module, spanning approximately 800 lines of changes. This feature will allow administrators to configure safety boundaries and content filtering rules for AI-powered search interactions, helping organizations maintain appropriate user experiences and reduce risk of inappropriate or off-brand responses.

                                                                          The work remains in review and has not yet been integrated into the module. No other development activity, issue updates, or commits occurred during this period.

                                                                          How can I help on this project?

                                                                          • Ensure the team has access to code review resources to assess and merge the pending guardrail functionality.
                                                                          • Clarify organizational requirements for AI content moderation to guide feature prioritization and testing.
                                                                          • Consider allocating quality assurance support to validate safety controls before wider deployment.
                                                                          Contributors: Abhisek Mazumdar (abhisekmazumdar) ---

                                                                          AG-UI

                                                                          No significant activity was recorded for AG-UI during this reporting period. The module's development continues with an open meta issue tracking improvements to the Drupal Assistant Implementation. This work aims to evolve a proof-of-concept conversational interface into a production-ready feature that could replace an existing chat component. The effort involves refining how the assistant handles requests and aligns with backend services, which would improve the user experience for site editors and administrators seeking contextual help.

                                                                          No merge requests were completed, commits were made, or status changes occurred in the last 24 hours. This is normal for an actively developed module between work cycles.

                                                                          How can I help on this project?

                                                                          • Confirm strategic priority: clarify whether the Drupal Assistant feature aligns with near-term product goals and allocate developer capacity accordingly.
                                                                          • Support cross-team coordination: ensure alignment between AG-UI and AI module teams to avoid duplication and enable shared infrastructure.
                                                                          ======================================================================== ## [38] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 2 Judge flags: 5 ======================================================================== ## [39] 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] Tool Explorer does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582473 [2] MDX Editor does not render correctly with Gin dark theme (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582474 [3] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [4] Remove the deprecated bundled `field_widget_actions` sub-module (it collides with the standalone project) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586556 [5] Preserve HTML in streamed output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586558 [6] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [7] 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 [8] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [9] Support the `ai_json_schema` element inside off-canvas dialogs (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586536 [10] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [11] force_value + hide_property in tool_usage_limits does not inject value at tool execution time (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586577 [12] Rethrow exceptions from queue processor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571498 [13] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [14] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [15] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [16] ai_ckeditor: Add option to show or hide the "AI Writer" status information (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586569 [17] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [18] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [19] Add cache-write and tool-use prompt tokens to TokenUsageDto (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586576 [20] Drupal AI Contribution meeting 2026-06-15 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586498 [21] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [22] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [23] [META] AI background / autonamous agents (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3560619 [24] Improve UX in Automators Tool add form (help text and workflow field behavior) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586382 [25] Tone of voice CKEditor Plugin does not use the translated version of the linked taxonomy (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586573 [26] Issue #3586556: Remove deprecated bundled field_widget_actions and require standalone. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1735 [27] Resolve #3586558 "Preserve HTML in streamed output" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1734 [28] Issue #3586475: Rename the RegExp Guardrail labels to RegEx (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1689 [29] Issue #3586536 Support the `ai_json_schema` element inside off-canvas dialogs (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1680 [30] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [31] Issue #3584977: RestrictToTopic guardrail: add semantic topic matching mode. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1529 [32] fix: #3586573 Tone of voice CKEditor Plugin does not use the translated... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1733 [33] Onboard Gold AI partner: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586591 [34] Run AI partner audit report: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579584 [35] Add Gold AI partner to d.o pages: Reading Room (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579591 [36] Onboard Gold/Silver AI partner: TEMPLATE (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3579583 [37] Convert partner templates into GitLab templates (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586567 [38] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [39] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [40] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [41] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [42] Gitlab Control Server - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586590 [43] Module Finder - point DNS (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586589 [44] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [45] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [46] add support for batch embeddings (ai_provider_openai, MR) — https://git.drupalcode.org/project/ai_provider_openai/-/merge_requests/59 [47] fix: #3607044 Append a trailing user message when a conversation ends with a non-user role (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/30 [48] add support for batching on indexing operations (ai_vdb_provider_milvus, MR) — https://git.drupalcode.org/project/ai_vdb_provider_milvus/-/merge_requests/44 [49] task: #3606995 Support newer versions of drupal/ai (ai_image_alt_text, MR) — https://git.drupalcode.org/project/ai_image_alt_text/-/merge_requests/31 [50] Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586043 [51] fix: #3586043 Coerce array dynamical token values to string in applyTokens() (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/287 [52] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [53] Canvas AI: In-progress chat messages disappear when editing page metadata during an active run (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591731 [54] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [55] canvas_ai: AI-created/edited code components render as [object Object] (compiledJs left empty, never compiled server-side) (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591751 [56] Merge global asset library updates into one PATCH in CLI push (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591750 [57] 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 [58] Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591746 [59] Language Switcher displays "Untitled page" instead of Actual Title (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591744 [60] Introduce LLM guardrails for ADRs: add `/docs/adr/AGENTS.md` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591747 [61] Have recipe imports validate prop value structure (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591749 [62] Code component with a "diamond" dependency fails to hydrate: intermediate component is dropped from the scoped import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591748 [63] Enabling content translation of Canvas pages results in an unsupported state by default; forward port core's #3606969 (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591745 [64] WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591734 [65] Introduce LLM guardrails to nudge Canvas contributors' AI use towards higher quality (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591583 [66] Canvas AI: Expose Props of Blocks to the Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3569120 [67] Canvas AI: UI/Functional update. Lock the canvas during a build and add a long-running AI-tasks UI element to the chat (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591724 [68] Refactor away the confusing "dangling component tree" concept (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3571785 [69] Use toast messages to inform users about the detected conflicts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591715 [70] Updated translation is not reflected on preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591743 [71] Contrib compatibility: ComponentPluginManager decorator should call decorated service instead of parent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3552818 [72] Simplify CODEOWNERS further, but require extra scrutiny for MRs affecting data integrity (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3590840 [73] Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions() (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591733 [74] WIP: Apply saved config language override to auto-saved versions in layout (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3583043 [75] Example values for SDC props powered by datetime fields (in core, more in contrib) are not config schema-conformant because Canvas does not call `FieldItemListInterface::processDefaultValue()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3530808 [76] Clean up the output of all CLI commands (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591712 [77] Prevent creation of Canvas pages in a non-default language at API level via validation constraint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591742 [78] Canvas AI - fix deprecated Image import, unsupported package handling, prop/slot name collision, hardcoded error messages, and add slots support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3584136 [79] Access check when publishing auto-save items needs be performed earlier (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591736 [80] Canvas AI: An unexpected error has occurred while rendering preview (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3556922 [81] Draft asset library JS asset registered as a file triggers file_get_contents() warning in locale's JS scan (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591729 [82] Update the delete link generation in ApiLayoutController.php to use canvas.api.config.translation.delete in the template context (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591654 [83] 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 [84] Add `canvas-validate-component-trees` Drupal CLI command to check health of Canvas component trees: validate every Canvas (content|config) entity, validate every content entity component tree field revision+translation (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591667 [85] Prevent creation of Canvas pages in a non-default language in the UI/via the entity form (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591625 [86] [PP-1] Create Canvas pages in any enabled content language (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3546597 [87] Canvas AI: Drupal\canvas_ai\AiResponseValidator fails to validate non-existent props (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591663 [88] Canvas AI: Component context required props missing required flag (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591655 [89] Canvas AI: Create tests for Canvas AI Page builder Agent and Canvas AI Template Builder Agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591457 [90] 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 [91] Fix high level translation settings experience for Canvas (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1303 [92] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [93] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [94] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [95] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [96] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [97] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [98] fix: #3591751 Compile JSX server-side for AI-created code components (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1315 [99] chore(CLI Tool): #3591750 Merge global asset library updates into one PATCH in CLI push (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1314 [100] #3591746: Refinements to LLM guardrails in `/AGENTS.md` based on real-world experience in June 2026 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1310 [101] #3591747: Add `docs/adr/AGENTS.md` (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1311 [102] 🤖 test(Code components): #3591748 Add failing test for diamond-dependency import-map scope (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1312 [103] fix(Component sources): #3591734 Offer empty translatable inputs of block components for translation instead of crashing TMGMT (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1313 [104] Draft: #3571785: Refactor away the confusing "dangling component tree" concept (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1309 [105] #3591736 "Access check in ApiAutoSaveController::post() should be performed earlier" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1302 [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): #3591723 "Add 'Conflict detected' toast message" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1295 [108] chore(Data model): #3591727 Store each prop's translatability per component version so deleting an optional prop keeps config-defined component trees valid (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1300 [109] Resolve "Language Switcher displays "Untitled page" instead of Actual Title" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1308 [110] #3591733"Remove workaround in ApiLayoutControllerGetTest::testConfigTranslationAvailabilityLinksAndPermissions()" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1294 [111] Draft: Resolve #3583043 "Auto save config override" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/864 [112] feat(conflict): Add conflict resolution UI with viewport selection and route integration (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1183 [113] feat(CLI Tool): Clean up the output of all CLI commands (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1280 [114] Fix translation for newly added component. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1307 [115] Issues/3569120: Canvas AI: Expose Props of Blocks to the Agent. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/498 [116] feat(Conflict detection): #3587526 "Detect conflicts during publishing of changes to Page entity" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1193 [117] feat(Conflict detection): #3587526 "Client side prevention of publishing" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1018 [118] Issues/Canvas AI: An unexpected error has occurred while rendering preview (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/813 [119] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [120] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [121] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [122] Finalize Context Importer naming and review Extensions page UI/UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586283 [123] Inject context into ai_ckeditor requests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3581955 [124] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [125] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [126] Issue #3586298: Fix context prefix default alignment and stale getManageUrl docs. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/201 [127] Issue #3586218: Allow subcontext scope to override parent scope. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/159 [128] Issue #3586220: Add single context item display. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/151 [129] 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 [130] Issue #3586301: Clean up CCC accessible interactive links and external links. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/200 [131] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [132] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [133] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [134] Support batching on indexing operations (ai_vdb_provider_pinecone, Issue) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/work_items/3586209 [135] Issue #3586209: Add support for batching on indexing operations (ai_vdb_provider_pinecone, MR) — https://git.drupalcode.org/project/ai_vdb_provider_pinecone/-/merge_requests/32 [136] feat: #3582452 Add guardrail set selection to ai_search_block (ai_search_block, MR) — https://git.drupalcode.org/project/ai_search_block/-/merge_requests/44 [137] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- TODAY'S MODULE SUMMARIES ---

                                                                            AI (Artificial Intelligence)

                                                                            Development continues on the AI module with progress across user interface improvements, architectural enhancements, and tooling for agent-driven configuration. Several items moved forward during the period.

                                                                            Work on batch embeddings for improved indexing performance advanced with a new merge request that introduces batch embeddings as a first-class operation type, preserving backward compatibility while enabling faster vector database indexing. This change enables multiple chunks to be processed simultaneously rather than sequentially, addressing performance bottlenecks in search indexing workflows.

                                                                            Two new agent skills were proposed to allow AI-driven site configuration: setup-guardrails and configure-ai-settings. These would enable agents to configure operational settings and guardrails via command-line tools rather than requiring manual admin UI interaction, expanding autonomous agent capabilities. Both issues have been assigned for development.

                                                                            A fix for preserving HTML in streamed output is under review, addressing an issue where HTML tags were being malformed during translation workflows. A merge request to support translated taxonomy terms in the CKEditor tone-of-voice plugin was also opened. Work continued on adding semantic topic matching to the RestrictToTopic guardrail, allowing topic matching by meaning rather than exact string comparison.

                                                                            The bundled field_widget_actions sub-module, already deprecated, is now being fully removed to eliminate namespace conflicts with the standalone project. A merge request removing 34 files and adding the standalone package as a dependency was opened. Issue tracking for dark-theme rendering bugs in the Tool Explorer and MDX Editor, off-canvas dialog support for the JSON schema form element, and functional testing for AI CKEditor are all in progress.

                                                                            How can I help on this project?

                                                                            • Prioritize review and sign-off on the batch embeddings architecture change to unblock indexing performance improvements for production sites.
                                                                            • Clarify acceptance criteria for autonomous agent configuration skills to ensure they align with broader automation and security strategy.

                                                                            Contributors: Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Joshua Fernandes (joshua1234511), Pravesh Poonia (Pravesh_Poonia), Rob Loach (robloach), Thomas Werthmüller (weri)

                                                                            ---

                                                                            Drupal AI Initiative

                                                                            The Drupal AI Initiative completed foundational work on the AI CMS Demo System during this period. Four related work items were closed, covering repository setup and access configuration for partner organizations, the technical architecture defining how the system will be structured and maintained, the creation of a baseline demonstration instance, and the development of a hosting-specific implementation. This system will showcase AI capabilities integrated into Drupal CMS and provide a reference model for partners.

                                                                            Onboarding continues for Reading Room, a new Gold partner. Most onboarding steps have been completed, with outstanding items including adding the partner to public-facing pages and conducting a follow-up audit to verify successful integration. Additionally, work is underway to convert partner onboarding templates to native GitLab formats to streamline future partner integrations.

                                                                            Two infrastructure tasks were opened to configure domain name settings for the GitLab control server and module finder tool, which will support the initiative's technical operations.

                                                                            How can I help on this project?

                                                                            • Ensure legal and invoicing contacts for Reading Room are provided to the Drupal Association to complete partner onboarding.
                                                                            • Review and approve marketing content for the Reading Room partner announcement on public-facing pages.
                                                                            • Confirm infrastructure resources are available to complete DNS configuration for initiative tools.
                                                                            ---

                                                                            AI Integration - ECA

                                                                            This module connects the AI Integration framework with Drupal's Event-Condition-Action (ECA) system, allowing automated workflows to incorporate AI capabilities.

                                                                            Development work focused on expanding the range of AI operations available to automation workflows. A new task was opened to add support for text translation workflows, which would enable automated content translation using AI providers. This addresses a gap in the current offering, which already supports chat, embedding, content moderation, and speech conversion, but lacks translation capabilities. The addition would allow organizations to automate multilingual content workflows without custom development.

                                                                            No code changes were merged during this period. The module remains in active development toward its 1.0.0 release. As an evolving integration project, open feature requests like this are a normal part of building out comprehensive coverage of AI operations.

                                                                            How can I help on this project?

                                                                            • Clarify organizational priorities for which AI operations are most valuable to automate, to help the team sequence remaining feature work toward the stable release.
                                                                            • Consider allocating dedicated testing resources to validate AI workflow integrations as new operation types are added.
                                                                            ---

                                                                            AI Agents Test

                                                                            The AI Agents Test module saw limited activity in the past 24 hours. One research initiative examining the potential consolidation of testing infrastructure was closed. The Research: merging ai_agents_test with ai_eval (and AiLlm test harness) issue was resolved, which had been exploring whether multiple overlapping testing approaches in the Drupal AI ecosystem should be unified. This research is part of broader work to streamline how AI configurations are validated across different tools and modules.

                                                                            No code changes were merged or committed during this period. The module remains in an exploratory phase as architectural decisions around testing infrastructure are being finalized.

                                                                            How can I help on this project?

                                                                            • Clarify strategic priorities for testing infrastructure consolidation, ensuring the team has clear direction on whether to pursue integration or maintain separate tools.
                                                                            • Allocate resources to move from research to implementation once architectural decisions are confirmed.
                                                                            ---

                                                                            OpenAI Provider

                                                                            A new merge request has been opened to add support for batch embeddings. This enhancement will allow the module to process multiple embedding requests together, which can improve efficiency and reduce costs when working with OpenAI's services. Batch processing is particularly valuable for organizations handling large volumes of content or data that needs to be analyzed or indexed. The work is currently under review.

                                                                            No other activity was recorded during this period.

                                                                            How can I help on this project?

                                                                            • Prioritize review resources to evaluate the batch embeddings feature, ensuring it meets business requirements before merging.
                                                                            • Consider allocating budget for testing with realistic data volumes to validate cost savings from batch processing.

                                                                            Contributors: Paul Sheldrake (paulsheldrake)

                                                                            ---

                                                                            Anthropic Provider

                                                                            A merge request was opened to address a compatibility issue affecting conversational AI features. When multiple AI agents pass control to one another, the conversation can end with a message from the system or assistant rather than the user. The Anthropic service rejects these conversations, causing failures in tools like Drupal Canvas AI. The proposed fix ensures conversations always end with a user message, preventing rejections and allowing multi-agent workflows to function smoothly. This work supports more sophisticated AI-powered features in Drupal.

                                                                            How can I help on this project?

                                                                            • Prioritize testing and review of the conversational fix to ensure multi-agent AI features can ship reliably.
                                                                            • Assess whether additional integration testing resources are needed to validate complex AI workflow scenarios before release.
                                                                            Contributors: Rajab Natshah (RajabNatshah) ---

                                                                            Milvus VDB Provider

                                                                            This module enables Drupal to work with Milvus, a vector database used for AI-powered search and content recommendations. It remains in active development as the team works to improve performance and scalability.

                                                                            During this period, a new merge request was opened to add support for batching on indexing operations. This work will allow the system to process multiple pieces of content at once when building search indexes, rather than handling them one at a time. For sites with large content libraries, this should significantly reduce the time required to index content and improve system efficiency during content updates.

                                                                            The merge request is under review. No bugs or blocking issues were reported during this period.

                                                                            How can I help on this project?

                                                                            • Ensure the team has dedicated review capacity to evaluate and merge the batching functionality, which could deliver measurable performance improvements for content-heavy sites.
                                                                            • Clarify whether production deployment timelines require expedited testing resources for this indexing enhancement.

                                                                            Contributors: Artem Dmitriiev (a.dmitriiev)

                                                                            ---

                                                                            AI Image Alt Text

                                                                            A merge request was opened to add support for newer versions of the Drupal AI module, which the AI Image Alt Text module depends on. This compatibility work ensures the module can continue functioning as its underlying dependencies evolve, maintaining access to AI-powered alternative text generation for images across newer Drupal environments.

                                                                            The merge request is currently under review. Once integrated, this will allow sites using more recent versions of the AI module to adopt or continue using automated image accessibility features without compatibility constraints.

                                                                            How can I help on this project?

                                                                            • Prioritize code review resources to evaluate and merge the compatibility update, reducing time to deployment.
                                                                            • Consider funding automated compatibility testing to catch dependency issues earlier in future development cycles.

                                                                            Contributors: Peter Philipp (daspeter)

                                                                            ---

                                                                            AI Agents

                                                                            A bug was identified and addressed during this period that was causing warning messages to appear each time an AI agent ran. The issue, Array to string conversion in Token::doReplace() when a dynamical token value is an array (applyTokens), resulted from certain data values being incompatible with the text replacement system used by agents. This caused disruptive warnings to appear in the editing interface, affecting the user experience for anyone building or testing AI agent workflows.

                                                                            A fix has been prepared and is under review. Once merged, this will eliminate the warnings and provide a cleaner, more professional interface for users working with AI agents in the Drupal Canvas editor.

                                                                            The module remains in active development with normal iteration on quality and usability improvements as issues are discovered and resolved.

                                                                            How can I help on this project?

                                                                            • Prioritize code review resources to merge the pending fix, ensuring a smoother user experience for teams testing AI agent functionality.
                                                                            • Consider expanding testing coverage or user feedback cycles to catch interface issues earlier in the workflow.

                                                                            Contributors: Rajab Natshah (RajabNatshah)

                                                                            ---

                                                                            Tool API

                                                                            No development activity was recorded during this period. One issue remains under discussion: MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588), which affects how content is delivered through REST endpoints when the Tool module is enabled. This issue could prevent integrations that rely on REST APIs from functioning correctly. The problem is assigned and flagged for attention by the AI Initiative Sprint team, but no solution has been merged yet.

                                                                            The module is currently in beta, and active work on compatibility issues like this is a normal part of maturing toward a stable release.

                                                                            How can I help on this project?

                                                                            • Confirm whether REST API compatibility is a priority for planned integrations, and communicate urgency to the development team if needed.
                                                                            • Ensure the team has sufficient testing resources to validate fixes across different API configurations before the stable release.
                                                                            ---

                                                                            Drupal Canvas

                                                                            Over the past 24 hours, the project delivered several foundational improvements to AI functionality, conflict handling, and tooling quality. The AI agent's ability to work with block components was completed, enabling richer page-building capabilities. A longstanding issue causing unexpected errors during AI-driven page generation was resolved by consolidating how the system updates page fields during preview, improving reliability and user experience.

                                                                            On the conflict-resolution front, the client-side publishing flow now prevents users from publishing changes when conflicts are detected, reducing the risk of overwriting edits made outside their session. This complements earlier backend work and moves the conflict-detection feature closer to full integration.

                                                                            Guidelines for AI-assisted development were refined based on recent contributor experience, helping maintain code quality as the project scales. The CLI tool's output was cleaned up for consistency and better usability by both humans and AI agents. A test workaround was removed following an upstream fix, and several issues related to translation, auto-save behaviour, and component metadata were opened with merge requests already in progress.

                                                                            Two bugs remain under investigation: a rendering issue affecting AI-created code components (which fail to compile server-side and display as [object Object]), and a problem where in-progress chat messages disappear when editing page metadata during an active AI run. Both have open merge requests.

                                                                            How can I help on this project?

                                                                            • Prioritise review and merge of the two AI user-experience issues (chat messages disappearing mid-run, and code component rendering failures) to unblock quality improvements in the AI agent workflow.
                                                                            • Evaluate whether conflict-resolution UI work should be resourced for faster integration, as the backend and client-side pieces are now largely in place.

                                                                            Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Abhishek Dhariwal (adaptative), AKHIL BABU (AkhilBabu) [2], Andrew Belcher (andrewbelcher), Bálint Kléri (balintbrews) [1], Chandan Singh (chandu7929), Christian López Espínola (penyaskito), Feliksas Mazeikis (f.mazeikis), Gábor Hojtsy (goba), Kunal Sachdev (kunal.sachdev) [1], Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah), Ravi Maniyar (ravi.maniyar.123) [1], Ted Bowman (tedbow), utkarsh_33 (Utkarsh_33), Wim Leers (wimleers) [2]

                                                                            ---

                                                                            Context Control Center (CCC)

                                                                            The project is nearing its first release candidate and work over the last 24 hours has concentrated on refining user experience and accessibility ahead of that milestone. Two key areas of functionality progressed: a new full-page view layout for context items that improves readability and navigation, and a feature that allows sub-contexts to override their parent's scope settings, giving users more control over how context is applied. Both have open merge requests undergoing final review and testing.

                                                                            Separately, work began on improving accessibility across the module's interface. Issues related to tooltip and icon-only content and interactive and external links both saw new merge requests opened to address best-practice findings. A third merge request corrected a minor configuration inconsistency and outdated documentation. These changes ensure the interface is usable by screen readers and assistive technology.

                                                                            A broader tracking issue, Fix CCC issues based on AI Best Practices results, has been opened to coordinate outstanding items flagged by automated review. Most are non-blocking enhancements, with only a handful affecting configuration or public interfaces. Normal for pre-release software, these will be resolved in parallel with final testing.

                                                                            How can I help on this project?

                                                                            • Prioritize manual testing and sign-off for the two open layout and scope override features currently awaiting final validation.
                                                                            • Ensure design and UX stakeholders are available to review the context importer naming and extensions page changes outlined in this issue.

                                                                            Contributors: Eric Homanchuk (erichomanchuk), Joshua Fernandes (joshua1234511), Kristen Pol (kepol), Pravesh Poonia (Pravesh_Poonia)

                                                                            ---

                                                                            AI Search

                                                                            The AI Search module saw limited activity over the past 24 hours, with two issues updated but no code merged or committed. The focus remains on compatibility and performance improvements as the project evolves.

                                                                            Work continues on batch embeddings for improved indexing performance, which aims to make search indexing faster and more efficient when processing large amounts of content. This feature is being ported from related work in the AI Core module.

                                                                            A compatibility issue was also identified: Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated. Tests are currently failing due to changes in the underlying AI Core module. This issue is on hold pending completion of prerequisite work in AI Core, after which compatibility updates will be made to ensure the module continues functioning correctly.

                                                                            Both issues remain open with no assigned owners. This is typical for a module in active development, though progress depends on coordination with the AI Core project.

                                                                            How can I help on this project?

                                                                            • Assign resources to address the open compatibility bug, which is currently blocking test success and depends on coordination with the AI Core team.
                                                                            • Consider prioritizing the batch embeddings feature if indexing performance is a business priority for upcoming releases.
                                                                            ---

                                                                            Field Widget Actions

                                                                            No code changes or merge activity occurred during this period. One feature request remains under discussion: Generate UUIDs for list-style widget-action settings applied via config actions. This work would allow recipes to declare multiple action buttons on a single form without conflicts, enabling each button to target its own field correctly. Currently, hard-coded identifiers cause all buttons to write to the same location, limiting the flexibility of automated configuration deployment.

                                                                            The issue is part of the AI Initiative Sprint and has been assigned for development, but no implementation has been submitted yet. Progress on this feature would improve the experience for teams deploying AI-assisted content editing tools at scale.

                                                                            How can I help on this project?

                                                                            • Clarify priority and timeline expectations for the unique identifier generation feature to help focus development effort.
                                                                            • Ensure the assigned developer has protected time and necessary access to move the work forward this sprint.
                                                                            ---

                                                                            Pinecone VDB Provider

                                                                            The Pinecone VDB Provider module enables organizations to integrate with Pinecone, a vector database service used to power AI-driven search and recommendation features. During this reporting period, work began on improving how the system handles large-scale data indexing operations.

                                                                            A proposal to support batching on indexing operations was opened for review. Currently, indexing large volumes of data into Pinecone can be inefficient. The proposed enhancement would process data in batches, improving performance and reliability when populating the vector database with content. This matters for sites with substantial content libraries or those planning to scale their AI features, as it reduces processing time and resource consumption. The approach is inspired by similar work in a related provider, demonstrating alignment with broader platform improvements.

                                                                            No code changes were merged during this period. The batch indexing work is currently awaiting review.

                                                                            How can I help on this project?

                                                                            • Allocate reviewer capacity to evaluate the batching implementation currently awaiting feedback, accelerating its path to production readiness.
                                                                            • Clarify performance requirements or scaling targets for the vector database integration to help prioritize optimization work.

                                                                            Contributors: Rob Loach (robloach)

                                                                            ---

                                                                            AI powered Search Block

                                                                            Development activity this period focused on safety and content moderation capabilities. A new merge request was opened to add guardrail set selection to the module, spanning approximately 800 lines of changes. This feature will allow administrators to configure safety boundaries and content filtering rules for AI-powered search interactions, helping organizations maintain appropriate user experiences and reduce risk of inappropriate or off-brand responses.

                                                                            The work remains in review and has not yet been integrated into the module. No other development activity, issue updates, or commits occurred during this period.

                                                                            How can I help on this project?

                                                                            • Ensure the team has access to code review resources to assess and merge the pending guardrail functionality.
                                                                            • Clarify organizational requirements for AI content moderation to guide feature prioritization and testing.
                                                                            • Consider allocating quality assurance support to validate safety controls before wider deployment.
                                                                            Contributors: Abhisek Mazumdar (abhisekmazumdar) ---

                                                                            AG-UI

                                                                            No significant activity was recorded for AG-UI during this reporting period. The module's development continues with an open meta issue tracking improvements to the Drupal Assistant Implementation. This work aims to evolve a proof-of-concept conversational interface into a production-ready feature that could replace an existing chat component. The effort involves refining how the assistant handles requests and aligns with backend services, which would improve the user experience for site editors and administrators seeking contextual help.

                                                                            No merge requests were completed, commits were made, or status changes occurred in the last 24 hours. This is normal for an actively developed module between work cycles.

                                                                            How can I help on this project?

                                                                            • Confirm strategic priority: clarify whether the Drupal Assistant feature aligns with near-term product goals and allocate developer capacity accordingly.
                                                                            • Support cross-team coordination: ensure alignment between AG-UI and AI module teams to avoid duplication and enable shared infrastructure.
                                                                            ======================================================================== ## [40] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 1 Judge flags: 6