Install

Works with Drupal: ^11.2

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 27.97 MB
MD5: c73461ce6d41763c02846179160db577
SHA-1: 71070f9acde854851dd59cb00cf37e440d40eb87
SHA-256: a8b85a0f58f6535e9de059a515ed80d05176574155fd44a494aa23129e5a9aee
Download zip 29.34 MB
MD5: b1ca3bed416653d55eda36df580fd2ec
SHA-1: de174317de0fb97ba128deb4ef337dd76069bbec
SHA-256: 1d6bf28a3dd56a62d4063c3064dbb2e3e0b367828e93db41c4cb04e232f4ed49

Release notes

Summary

This release adds support for multi-value props and improves the CLI tooling for an improved developer experience when working with Canvas Code Components.

Key Improvements

  • Multi-value props: Adding support for multivalue properties within code components.
  • Code Component CLI tooling: Enhanced reliability and functionality with improved validation, better handling of component data, inclusion of additional metadata (such as page paths and descriptions), and consistent JSX processing.
  • Component architecture & data model: Introduced groundwork for symmetric translations expected to be released later this year.

Contributors (25)

balintbrews, bnjmnm, chandu7929, effulgentsia, fjgarlin, hooroomoo, isholgueras, jessebaker, justafish, larowlan, lauriii, longwave, mglaman, narendrar, neha_bawankar, pdureau, penyaskito, phenaproxima, shubham.prakash, tedbow, tim.plunkett, utkarsh_33, vipin.mittal18, wim leers, wotnak

Changelog

Issues: 72 issues resolved.

Changes since 1.3.3 (compare):

Feature

  • feat(CLI Tool): #3585978 Include page paths and descriptions in the CLI push/pull commands
  • feat(Component Sources): #3586342 Symmetrically translatable component trees, STEP 1: introduce `ComponentInstanceInputsConfigSchemaGeneratorInterface`
  • feat(CLI Tool): #3586959 Validate image prop example URLs in Code Component metadata files
  • feat: #3572553 Correct client request to eliminate need for normalization for Code Components
  • #3581110: Add Multi-Value List Text/Integer Prop Support (UI)

Plan

  • feat(Component sources) #3573831 ADR #11: Code components: new "entity reference" prop type to enable "view modes" that combine multiple entities plus static inputs

Bug

  • fix: #3574994 Keep contextual panel width static when left sidebar is toggled
  • fix: #3585703 Cannot add a new multi-value prop to an existing component without removing component from library.
  • fix(CLI Tool): #3585998 Empty props in pages pulled using the CLI fail validation
  • fix(Multi-Value Props): #3581829 Inline Validation in component instance form not triggered for Multi-Value SDC/code component props
  • fix(Component sources): #3577603 Assertion failure in component update when required prop already exists in both versions
  • fix: #3586033 Folder management operations flicker
  • fix(Multi-Value Props): #3586289 Multivalue prop does not remove value from preview pane when removed
  • fix(CLI Tool): #3586805 Compile local JSX imports with the automatic JSX runtime
  • feat: #3586288 Multivalue prop Playwright tests are flaky
  • fix(CLI Tool): #3586971 Apply the React JSX transform consistently in Workbench preview-build exports
  • fix(Multi-Value Props): #3584392 Unexpected Auto Row Creation and Weight Display in Multi-Cardinality Fields (UI)
  • fix: #3551867 Allow a required `type: string, contentMediaType: text/html` to contain an empty string while Content Author is typing, to allow matching live previewError when making required formatted text field empty
  • fix(CLI Tool) #3587397 Disallow empty string example values in Code Component metadata files
  • fix: #3587494 Unlike other multi-value props, date and link transforms keep empty rows, causing failures
  • fix: #3587592 [Allow Multiple Value] Unable to add required prop in the editor while creating code component
  • fix: #3587909 Fix vh-unit detection in useSyncIframeHeightToContent to force cross-frame layout reflow
  • tests: #3587922 ApiMediaControllersPostTest fails intermittently due to date-dependent itok in expected image URL
  • fix: #3586192 Inconsistent Border Radius on Right Side Panel for Multi-Value Props
  • fix(AI): #3586351 Grey border appearing around Canvas AI chat panel
  • fix(Multi-Value Props): #3588452 For Multivalue prop adding value to prop Link, makes setting panel inactive
  • fix(Multi-Value Props): #3582883 Removing a field for a prop of type Date and time property with "Allow multiple value" set to unlimited leaves the field blank
  • fix(Component sources): #3586958 Relative image paths are incorrectly allowed as example image prop values in SDCs and code component example values
  • fix: #3587539 Regression introduced by #3561392: Canvas' `hook_requirements()` not running on >=11.3
  • fix(Project management): #3588685 CI: #3586655 failed to configure canvas.install changes to trigger PHPUnit CI jobs
  • fix(Component sources): #3587211 Empty strings are incorrectly allowed as example string prop values in JavaScript component config schema
  • fix(Internal HTTP API): #3588741 ApiContentControllers::patch() double-encodes the 409 Conflict error message

Task

  • feat(Project management): #3585788 Make it easier to run PHPUnit tests: enable `composer run phpunit` from Canvas root
  • chore: #3585992 Fix undo-redo.cy.js flakyness
  • fix(CLI Tool): #3586011 Make sure all components are keyed using UUIDs when pushing pages
  • chore: #3586128 [upstream] Fix flaky phpunit tests because of phpunit.xml.dist bug in core; forward-port fix
  • feat(Data model): #3582478 ADR #10: Symmetrical translations of config-defined component trees: use dynamic config schema per component instance
  • fix(CLI Tool): #3586063 Make links between pages work in Canvas Workbench
  • chore: #3585979 CI: Use 6 shards for playwright to avoid 30m timeouts
  • fix(Multi-Value Props): #3579026 UI Flickering When Adding or Removing Items in Multi-Value Props
  • refactor(Redux-integrated field widgets): #3578635 Shift some linker and component patch responsibilities
  • fix: #3586137 Fix pattern.cy.js flakiness
  • chore(Project management): #3586535 Update PHPCS config to match Drupal 11 — selectively comply with `Drupal.Arrays.Array.LongLineDeclaration`
  • feat: #3586693 Consolidate module installs in Playwright tests
  • chore(CLI Tool): #3586726 Allow omitted props in Workbench page specs and component mocks
  • chore(Data model): #3585298 Add `dataDependencies.entityFields` to `JavaScriptComponent` config schema
  • fix: #3586022 Fix multivalue-form-design*.cy.js flakiness
  • chore(CI): #3586806 Cypress previewReady() flakes on opacity assertion against .editorFrame after #3574994
  • feat: #3586843 Add a merge request template
  • chore(Config management): #3586216 Follow-up for #3545236: move triplicated logic into `ComponentTreeConfigEntityBase` to simplify future update paths targeting component trees
  • test: #3587324 Remove duplicate routing.cy.js e2e test
  • chore: #3587395 Address upstream PHPStan changes
  • feat: #3516754 Require `minItems: 1` for required `type: array` props
  • docs: #3581038 [Notifications] Add usage documentation
  • chore(Project management): #3586655 CI: do not run E2E tests when zero JS or PHP is modified; reorganize `rules`
  • ci: #3586660 CI: Add additional caching to GitLab CI pipelines
  • chore(Project management): #3587543 Stop CI disruption from phpstan/phpstan and mglaman/phpstan-drupal: pin versions + introduce nightly `phpstan-is-up-to-date` CI job to nudge updates
  • chore(Project management): #3587543 Follow-up: use `composer` instead of `curl repo.packagist.org`
  • chore: #3586843 adjust merge request template
  • test: #3587337 Add eslint rules for Playwright tests
  • Resolve #3586589 "No popover staging (ci)"
  • feat(Multi-Value Props): #3577946 Remove Canvas Dev Mode flag for Multi-Value Props support
  • ci: #3529128 Speed up PHPUnit on CI; stop relying on drupal.org composer template
  • fix(ci): #3529128: Follow-up: revert accidental disabling of E2E CI jobs on MRs
  • ci: #3586660 CI: Add additional caching to GitLab CI pipelines
  • chore(Project management): #3587819 Optimize which PHPUnit CI jobs run: 1) nightly: ALL version+DB combos, 2) 1.x/merged MRs: 11.3 all DBs, 11.2 only SQLite
  • feat: #3582478 Change config schema type for `inputs` to allow translating via core's Config Translation UI for ContentTemplates & PageRegions
  • ci: #3529128 Add fix for PostgresSQL collisions, fix CI caching, restore fix for 11.2 phpunit flakiness
  • chore(Shape matching): #3587673 Introduce `JsonSchemaObjectRef` enum to replace hardcoded `json-schema-definitions://canvas.module/*` URI literals
  • ci: #3563458 Set CI_PAGES_DOMAIN to work in forks
  • chore(Project management): #3588021 [ci] Improve GitLab CI job output when there is a spellcheck failure
  • chore: #3588801 Update JS packages
  • fix: #3582464 Symmetrically translatable config-defined component trees, STEP 3: adjust sequence keys to be unique to avoid translations breaking when component instances are moved
Created by: tim.plunkett
Created on: 6 May 2026 at 18:25 UTC
Last updated: 6 May 2026 at 18:26 UTC
Bug fixes
New features
Insecure
Unsupported

Other releases