Install

Works with Drupal: ^11.2

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 27.86 MB
MD5: 01053cac79edfd45f5723d4eaaa8a58f
SHA-1: 32dba2ef8b6b839155eb15c991e65a6de3f3dd99
SHA-256: f3962dc27cce4d6ef3cf399035af4fb82f71d850da407db85308081ff812a3b8
Download zip 29.19 MB
MD5: 19068d35bf7bd1628b4667f446cc46c6
SHA-1: 5f2899d1fcbb12bb9b5f3ad663229cca36edffd4
SHA-256: a1c25e2778dc95c79c347a87389dcc10841d4548c4972e26a5e4b659d0971d1b

Release notes

Patch release (only bug fixes). Mostly preparation for the next minor release. Full list above, but highlighting:

  • For content editors, in the Canvas UI, Pages where limited to 50 unless you knew what you were looking for. Now it contains infinite scrolling updating the list.
  • For content editors, in the Canvas UI, regions are not rendered when building/previewing content templates that are not the default view mode, giving you a better representation of what you will see once published.
  • For recipe authors, you are not forced to install the canvas_stark theme: installing the Canvas module will take care of that.

Contributors (55)

AkhilBabu, NarendraR, Utkarsh_33, a.novolokov, ajv009, akhil babu, amangrover90, anavarre, attilatilman, balintbrews, bnjmnm, catch, chandu7929, effulgentsia, f.mazeikis, f0ns, fjgarlin, flyke, gábor hojtsy, heyyo, hooroomoo, isholgueras, jessebaker, jibran, justafish, kunal.sachdev, larowlan, lauriii, longwave, marcus_johansson, mayur-sose, mglaman, mohit_aghera, mstrelan, narendrar, neha_bawankar, nickolaj, pameeela, penyaskito, petar_basic, phenaproxima, rakhimandhania, root_emarketing, sapnil_biswas, scott falconer, shubham.prakash, tedbow, tim.plunkett, tushar1, utkarsh_33, vasantha deepika, velmir_taky, vipin.mittal18, wim leers, wotnak

Changelog

Issues: 99 issues resolved.

Changes since 1.3.2 (compare):

Bug

  • feat: #3554549 Playwright test isolation is incorrect, leading to random failures
  • fix: #3579365 Component triggers assert when adding array prop to an in use component
  • feat: #3546869 Editing support for `type: array`: support multiple-cardinality Field Widgets (`StaticPropSource`s)
  • fix(Internal HTTP API): #3579546 Ensure path aliases are re-used instead of re-created through the HTTP Pages API PATCH operation
  • feat: #3571352 Wrong navigation target after editing a region in the context of a content template
  • feat: #3554549 Playwright test isolation is incorrect, leading to random failures
  • chore(eslint): #3582336 ESLint running against cached dependencies
  • feat: #3582338 composer job fails with 503 due to Playwright browsers included in artifact upload
  • fix(Component sources): #3582201 astro.client library is added to the page without a client cache query buster
  • fix(Multi-Value Props): #3581869 Unable to change Allow multiple values setting for prop type Video
  • fix: #3581431 Error in link prop type when reordering list or select values
  • feat: #3554549 Playwright test isolation is incorrect, leading to random failures
  • feat: #3554549 Playwright test isolation is incorrect, leading to random failures
  • fix: #3534146 Expand/Collapse Arrow for SEO Setting Does Not Work
  • feat: #3554549 Playwright test isolation is incorrect, leading to random failures
  • chore(Multi-Value Props): #3581431 Fix regression due to 30a23c8f
  • fix(CLI Tool): #3582984 Allow top-level uuid in Workbench page specs
  • fix(Multi-Value Props): #3582601 Required prop example value not restored when unchecking "Allow multiple values"
  • fix(Multi-Value Props): #3582219 Multi-value Integer/Number Prop Reordering Resets Automatically
  • fix(Multi-Value Props): #3582772 Video multivalue props throw "Cannot read properties of undefined (reading 'endsWith')" error when switching to Limited mode
  • fix(Multi-Value Props): #3583277 Spacing Issue Between Input Field and Remove Button in Date/Time Multi-Value Props
  • fix(CLI Tool): #3563780 Push command should respect dependency order between components
  • fix(PHPUnit): #3583537 ci: PHPUnit reporting broken in HEAD
  • fix(Multi-Value Props): #3583230 Code-component editor: NULL value error when reordering multivalue prop with empty slots in limited mode
  • fix(Multi-Value Props): #3583386 Code Component: Prop Type Change Fails to Reset Configuration
  • fix(CLI Tool): #3583897 Page preview should not scroll to top in Workbench when HMR reloads page
  • fix(CLI Tool): #3582273 Prevent Workbench preview from reloading when links are clicked
  • fix(CLI Tool): #3576521 defineComponentCatalog function from drupal-canvas package doesn't resolve schema references for props
  • fix: #3572475 Canvas AI: Console error on opening the chatbot
  • fix(CLI Tool): #3583897 Allow changing pages without scrolling to top
  • fix(Component sources): #3584143 Incorrect property paths due to bugs in `BlockComponent::validateComponentInput()` + `ConstraintPropertyPathTranslatorTrait`
  • fix: #3572865 Canvas AI: Title and metadata generation agents fail when layout contains apostrophes
  • fix(Multi-Value Props): #3581478 type:array props with enum + meta:enum throws an exception in javascript
  • fix(Data model): #3583746 Catch OutOfRangeException for invalid component versions
  • fix(Extensions): #3584891 Extension dialog can remain stuck in drag mode after mouse release
  • fix(Multi-Value Props): #3583303 Validation Rules for Number/Integer Multi-Value Props
  • fix(CLI Tool): #3584906 Allow inherited EDITOR and PAGER env vars in @drupal-canvas/create
  • fix(Multi-Value Props): #3583639 Removing value for a required prop of type Integer returns 500
  • fix(Multi-Value Props): #3583303 Validation Rules for Number/Integer Multi-Value Props
  • fix(CLI Tool): #3585638 Preserve omitted optional props in Workbench mocks

Feature

  • feat(Data model): #3577654 Add a `inputs_resolved` computed property for ComponentTreeItem
  • feat(AI): #3579681 Canvas AI: Add 'YAML Path Equals' and 'YAML Path Exists' plugins
  • feat(Multi-Value Props): #3576166 Add Multi-Value Date/DateTime Prop Support (UI)
  • feat(CLI Tool): #3582303 Support access token via environment variable instead of just client_credentials flow
  • feat(CLI Tool): #3575874 Include Pages in the CLI push/pull commands
  • feat: #3574410 Hide global regions when editing a view mode other than Full
  • feat(CLI Tool): #3582814 Add non-interactive agent selection to @drupal-canvas/create
  • feat(CLI Tool): #3582709 Provide an endpoint to identify that a push is starting and has stopped
  • feat(CLI Tool): #3580221 Add CLI push/pull for fonts
  • feat(Page builder): #3583557 Add infinite scroll for pages listing and top navigation
  • feat(Internal HTTP API): #3578449 Add an unstable (v0) "canvas_external_api" POST route for uploading an image blob and getting back the ID and UUID of the created media entity
  • feat(CLI Tool): #3582865 Include Pages in the CLI validation command
  • feat(CLI Tool): #3583916 Create a new command for adding symlinks for agentic skills after repository has been scaffolded
  • feat(CLI Tool): #3585055 Add preview-build command to Workbench
  • feat(CLI Tool): #3578452 Include pages with images in the CLI push/pull commands
  • feat(CLI Tool): #3582921 Support OAuth 2.0 authorization_code login flow for Canvas CLI
  • feat(Component sources): #3585314 Add logo.url and favicon.url to site data for code components

Misc

  • Add lauriii to CODEOWNERS
  • Add built assets for release 1.3.3

Plan

  • chore: #3579810 Add additional maintainers to Canvas AI

Task

  • feat: #3580523 Prompt user to create a canvas.config.json with componentDir defined if it does not exist
  • feat: #3580209 [Notifications] notification storage and service
  • chore(PHPStan):: #3582335 Fix PHPStan errors in HEAD after 2.1.45 release
  • chore(Project management): #3578767 PHPStan: adopt mglaman/phpstan-drupal's `TodoCommentWithIssueUrlRule`
  • feat: #3582383 Skip running any lifecycle scripts during npm install
  • feat(AI): #3551315 AI Agent's Can't Access the "People Friendly" Labels appearing in canvas UI
  • feat: #3580212 [Notifications] cron cleanup
  • feat: #3580214 [Notifications] RTK Query API and Redux slice
  • feat: #3580210 [Notifications] REST API endpoints
  • feat: #3529128 Remove drupal.org composer template from .gitlab-ci.yml
  • feat: #3529128 Remove drupal.org composer template from .gitlab-ci.yml
  • chore(CI): #3582776 stylelint failures on HEAD
  • feat(CLI Tool): #3582632 Transform authored prop values for pages to server side format before push
  • feat: #3580215 [Notifications] Activity Center UI
  • feat: #3580217 [Notifications] Toast notifications
  • chore(Theme builder): #3580310 Rename ArtifactControllerTest to ApiArtifactControllerTest
  • chore(PHPUnit): #3581622 Create PredictableImageStyleItokTestTrait
  • feat(Internal HTTP API): #3502691 Introduce pagination for HTTP API to get list of content(pages).
  • feat(CLI Tool): #3582840 Allow specifying a UUID when creating a canvas_page via the content HTTP API
  • chore(PHPStan):: #3583559 Fix phpstan job after mglaman/phpstan-drupal:^2.0.13 release
  • feat(CLI Tool): #3582804 Add endpoint to retrieve a canvas_page by UUID
  • chore(PHPUnit): #3583494 CanvasTestSetup and ContentTemplateOnDependencyRemovalTest should not rely on magic and specify component versions for its test component tree
  • fix(CLI Tool): #3583947 Fix CLI push to not push files that are distributed with Canvas
  • fix: #3514033: Extensions API ADR should've been #0009, not #007
  • chore(Project maan: #3582966 PHPCS: Disallow CanvasKernelTestBase subclasses to do `->getTypedData()->validate()`, use `assertEntityIsValid()` instead
  • chore(PHPStan): #3584531 Fix CI due to phpstan 2.1.47 release
  • chore: #3584722 Align Canvas dialog implementation with design
  • fix: #3580247 Remove canvas_install() entirely and trigger the installation of canvas_stark unconditionally when Canvas itself is installed; forbid the use of `drupal_flush_all_caches` in Canvas's code base
  • chore(Project management): #3584511 PHPStan: convert PHPCS `Canvas.Tests.KernelTestBase.RequireAssertEntityIsValid` rule to a PHPStan rule
  • test(Multi-Value Props): #3577946 Add e2e test coverage
  • chore(Multi-Value Props): #3577946 Fix e2e test coverage
  • chore(CLI Tool): #3584969 Prepare new releases for JS packages
  • chore(CLI Tool): #3585013 Hide brand kit behind a flag in CLI Tool
  • chore(PHPStan,Core): #3585060 ci: Pin Drupal core to latest security releases + PHPStan 2.1.48 release
  • chore(CLI Tool): #3585241 Detect and automatically fix missing Tailwind CSS import at-rule in CLI pull
  • chore(PHPStan): #3585319 PHPStan: Test methods should never have optional parameters from a data provider
  • chore: #3585192 Don't rely on hook_schema for canvas notifications table
  • chore: #3585234 Since we lazy-create database schema for notifications, we should implement hook_uninstall to clean up the system
  • chore(Config management): #3581581 Follow-up for #3568264: add explicit test coverage proving code components can have multi-value `enum` prop shapes
  • fix(Multi-Value Props): #3576124 Enforce required validation for multi-value props in code component editor
  • chore(JavaScript): #3585854 Update JS packages
Created by: penyaskito
Created on: 21 Apr 2026 at 01:55 UTC
Last updated: 21 Apr 2026 at 02:00 UTC
Bug fixes
Insecure
Unsupported

Other releases