[Plan] Canvas AI Roadmap
> [!note] Migrated issue
>
> <!--Drupal.org comment-->
>
> <!--Migrated from issue #3579796.-->
>
> Reported by: [rakhimandhania](https://www.drupal.org/user/2475028)
\[Tracker\]\
**Update Summary:** Meta issue tracking the Canvas AI Page Generation roadmap — covering all deliverables from stable page building through to context control, code components, and SEO metadata generation.\
**Check-in Date:** 03/17/2026\
**Additional Collaborators:** \
_Metadata is used by the _[_AI Tracker._](https://www.drupalstarforge.ai/ "AI Tracker")_ Docs and additional fields _[_here_](https://www.drupalstarforge.ai/ai-dashboard/docs "AI Issue Tracker Documentation")_._\
\[/Tracker\]
## Summary
**Currently in progress**
This meta issue tracks planning and execution for the Canvas AI Page Generation capability — one of the eight core priorities in Drupal's 2026 AI roadmap: _"Describe what you need and get a usable page, built from your actual design system components."_
Canvas AI already has foundational support for page building, full page generation, code component creation, and SEO metadata. However, these exist in partial or prototype form. Several capabilities — iterative updates, multi-input page creation, brand context enforcement, human-in-the-loop workflows, and reusable design patterns — are under active development or not yet started.
This issue is the planning and coordination home for all related work. It tracks what is stable, what needs stabilisation, and what needs to be built, organised by deliverable and priority.
## Priority 0: (Targeted deadline: mid June)
These issues are **MUST HAVES**. They ensure that, for anyone who downloads the current stable release of the Canvas module, the Canvas AI features work out of the box and provide a stable beta experience. Issues listed in the order of urgency
| Issue | What it does | Why it's important |
|-------|--------------|--------------------|
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3573571</span> | Fixes a critical bug in CanvasAIComponentDescriptionForm, adds proper caching, and optimizes loading of component context used during page generation. | Several other issues are currently blocked by this issue. See below for details. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3569120</span> | Allows AI agents to see and use block component props. | Block components may have required props. Since the agent cannot see those props, it may choose a block without providing the required values, causing backend validation errors. This increases response times and can sometimes cause page generation to fail entirely. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3545816</span> | (**_Blocked by #3569120_**) Optimizes token usage by initially sending only the name and description of available components to the AI agent. Once the agent selects the components it wants to use, detailed metadata (such as props and slots) is loaded only for those components. | Currently, the full metadata for all components is sent in a single YAML payload, which consumes a significant number of tokens. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3549232</span> | (**_Blocked by #3545816_**) Allows AI-assisted editing of components that have been added to a Canvas page. | Currently, AI can add new components to a Canvas page, but it cannot modify or edit components that have already been added. |
| [<span dir="">#3582390: Canvas AI: Allow "verbose_context_for_orchestrator" to be passed in user input</span>](https://www.drupal.org/project/canvas/issues/3582390 "Status: Fixed") | Adds predefined tests for the Orchestrator Agent | Reduces manual testing effort when updating the Orchestrator Agent's system prompt.Provides a stable foundation for adding similar automated tests for other agents. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3535099</span><br><span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3534950</span><br><span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3568056</span><br><span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571260</span> | (Should get fixed along with <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3545816</span> | |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3558257</span> | Fixes a critical bug where, if someone changes the title or metadata of a Canvas page while the chat UI is open, the chat UI is cleared. | Adds significant rework to /ui/src/components/aiExtension/AiWizard.tsx, the core component that renders the chatbot. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3556922</span> | When a user generates a new page with AI and the page title and description are empty, a fatal error occurs during page generation, causing the entire process to fail. | Fixes the bug. |
_The issues above enable the features demonstrated in the _[_DrupalCon Chicago keynote_](https://www.youtube.com/watch?v=EU6n7D91m_M "https://www.youtube.com/watch?v=EU6n7D91m_M")_ from 1:10:26 to 1:12:15, including stable page generation and page editing. Note: Context Control integration and Media Library search are not included._
| Issue | What it does | Why it's important |
|-------|--------------|--------------------|
| [<span dir="">#3590309: Canvas AI: Update Agent configs after https://git.drupalcode.org/project/ai_agents/-/work_items/3585986 lands</span>](https://www.drupal.org/project/canvas/issues/3590309 "Status: Active") | Updates the Drupal Canvas Component Agent configuration to ensure it works correctly with AI 1.3. | A security feature introduced in AI Core prevents AI-generated code components from being created when using AI module ^1.3. |
| [<span dir="">#3584136: Canvas AI - Not able to create the components</span>](https://www.drupal.org/project/canvas/issues/3584136 "Status: Active") | Addresses multiple reported issues with AI code component generation. | Must have to make code component generation reliable |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3579471</span> | (**_Blocked by 3582390_**) Meta issue to add pre defined tests for Canvas Page builder and Canvas Template builder agents. | This should be completed before <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3545816</span> lands as it involves significant update to the system prompt of both agents. |
## Priority 1: Targeted deadline (end of July)
These issues are critical, as they define what is new in Canvas AI between DrupalCon Chicago and DrupalCon Rotterdam.
| Issue | What it does | Why it's important |
|-------|--------------|--------------------|
| [<span dir="">#3591465: Canvas AI: \[Discuss\] DrupalCon Chicago POC Features</span>](https://www.drupal.org/project/canvas/issues/3591465 "Status: Active") | Discuss the features that should be integrated into Canvas AI that were demonstrated as proof-of-concept implementations during DrupalCon Chicago. | This issue is only for discussion. New issues should be created for each feature that is ultimately chosen for integration and development. |
| [<span dir="">#3584087: \[Discuss\] Canvas AI: Review the current architecture</span>](https://www.drupal.org/project/canvas/issues/3584087 "Status: Active") | This is a discussion issue based on issues identified while testing the Driesnote Chicago proof of concept and to brainstorm ways to improve the experience. | This will be crucial for determining what has changed since DrupalCon Chicago by the time DrupalCon Rotterdam takes place. |
### Features Under Consideration
| Issue | What it does | Why it's important |
|-------|--------------|--------------------|
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3556590</span> | Adds a new agent to create content templates with AI | |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3546907</span> | The agent first generates a plan and then proceeds with implementation once approved by user | Keeps human in the loop |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3541872</span> | [DrupalCon Chicago ](https://www.youtube.com/watch?v=EU6n7D91m_M)(1:10:40 - 1:11:34) demonstrates Canvas Agents using images from the Media Library when creating and updating a page. This issue is for implementing that functionality in Canvas AI. | Integrating Media Library search would mean that Canvas AI would have a dependency on a vector database provider and would need to provide Search API server and index configurations out of the box. This issue is intended to discuss whether this functionality is needed at all, whether it should be part of Canvas AI core, or whether it should be implemented as a separate module. |
### Bug fixes
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3533864</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3553473</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3568057</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3551610</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3548721</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3535054</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3551614</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3572864</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3558200</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3556361</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3542219</span>
### Enhancements
| Issue | What it does | Why it's important |
|-------|--------------|--------------------|
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3534707</span> | Proposes merging the Title Generation and Metadata Generation agents into a single agent. | Having separate agents for these small tasks increases cost, response time, and hallucinations. The proposal also replaces the existing title and metadata update tools with a single tool capable of updating any Canvas page field. |
| [<span dir="">#3582418: Canvas AI: Apply an Image style to the uploaded image</span>](https://www.drupal.org/project/canvas/issues/3582418 "Status: Active") | The chatbot supports image uploads, but currently sends the original image directly to the agent. The only restriction is the upload size limit. | Sending the original image increases token usage and cost. An image optimization step should be applied before the image is sent to the agent. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3575780</span> | Provides visibility into the tools being used by an agent in the UI. | Currently, users cannot see what is happening while a sub-agent is working. Displaying only a loading indicator for approximately two minutes provides a poor user experience. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3551615</span> | The agent currently cannot add slots to code components. Support for component import and multi-valued props are also not yet implemented. | Any code component functionality available through manual creation should also be available through AI-generated component creation. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3544132</span> | Proposes a style guide for the Component Agent so it follows the existing design language and reuses components whenever possible.. | Ensures AI-generated components follow the site's existing design language, reducing the need for users to repeatedly provide styling guidelines. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3549432</span> | (**_Blocked by 3573571_**) Allows site builders to hide specific components from the AI agent. | Allows site builders to hide specific components from the AI agent. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3562580</span> | Adds a dedicated permission to access and manage the configuration settings related to Canvas AI | Currently only admin users can access Canvas AI related Configs. |
| <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571205</span> | Canvas supports reusable patterns. This enables the Page Builder Agent and Template Builder Agent to use those patterns when generating pages. | Canvas supports reusable patterns. This enables the Page Builder Agent and Template Builder Agent to use those patterns when generating pages. |
Everything below is a work in progress and may include duplicate items.
## Priority 2: Optimizations and Refactoring
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3568734</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3530709</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3532408</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571205</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3557075</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3556264</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3547595</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3539218</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3537423</span>
### Props, slots, and iteration
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3562095</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3549430</span>
### Image and attachment input
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3535530</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3535108</span>
### Bugs
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3554256</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3579015</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3553998</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3543583</span>
## Priority 3: New features
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3546907</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3547238</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3533085</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3534134</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571180</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571181</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571207</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571183</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571418</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571420</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3534854</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571184</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3568500</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3536200</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3546676</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3532519</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3532296</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3547177</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571212</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571421</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3556590</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3541872</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3571203</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3557146</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3564164</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3545826</span>
* <span dir=""> https://git.drupalcode.org/project/canvas/-/work_items/3533343</span>
## Suggested New Meta Issues To File
* **\[NEW META\]** Reusable page archetype and design pattern library for Canvas AI — defining page types (landing page, product page, blog post) and mapping them to component combinations and structural rules.
* **\[NEW META\]** Agent context contract definition — structured format for surfacing brand guidelines, accessibility rules, tone of voice, and design system constraints to Canvas AI agents, as a prerequisite for Context Control Center integration.
* **\[NEW META\]** Multi-input page generation pipeline — stable ingestion and structure extraction for PDFs, images, Figma files, text documents, and external URLs as page generation sources.
* **\[NEW META\]** Human-in-the-loop framework for Canvas AI — intervention points, approval/rejection workflows, and collaborative UX patterns during agentic page creation.
* **\[NEW META\]** Component metadata model and governance — standardised schema for component descriptions, AI-assisted metadata generation, site builder override controls,and context-overflow prevention.
issue