Install

Works with Drupal: ^11.2

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 28.16 MB
MD5: 5654255912c2da58352aa9ea12f8f045
SHA-1: c50da01e4f3f520716890be24d17a539c76d9ffa
SHA-256: 925ed0280ffef24510f4d995c867bde8b95ecc23ba27f1085ddbd1f60169f26d
Download zip 29.66 MB
MD5: 648fdc30b2a3c774477f0cff57bc0da4
SHA-1: 88f99dc35c3f4bf60446c8c2255b97235789cb3f
SHA-256: b9878340d6ce76183aa3de9ddf25577e7252db2806852f09ed549462334032ff

Release notes

This release adds page region and global layout management through the internal HTTP API for Canvas CLI and Workbench, strengthens autosave conflict detection, preview stability, component data normalization, image rendering, deleted component dependency handling, and invalid block plugin safeguards.

Contributors (42)

AkhilBabu, AnjaliPrasannan, LeventeB, NarendraR, akhil babu, amangrover90, balintbrews, bnjmnm, bsnodgrass, chandu7929, effulgentsia, f.mazeikis, folders, hooroomoo, isholgueras, jessebaker, joshua1234511, jucs7, justafish, kmwarboy, kunal.sachdev, larowlan, lauriii, lbesenyei, longwave, marcus_johansson, mglaman, mherchel, narendrar, nickolaj, penyaskito, phenaproxima, rikki_iki, sapnil_biswas, shubham.prakash, tedbow, tim.plunkett, traviscarden, utkarsh_33, wes.congruityworks.com, wimleers, wotnak

Changelog

Issues: 44 issues resolved.

Changes since 1.4.1 (compare):

  • chore(Internal HTTP API): #3591621 Allow Canvas CLI pushes when a page has auto-save data
  • chore: #3591622 Update JS packages
  • chore(AI): #3555239 Canvas AI: Make chat history length configurable
  • chore: #3588438 Rename `LinkedPropSource` to `LinkedProp` and `LinkedPropSourceInterface` to `LinkablePropSourceInterface`
  • fix: #3576410 Canvas' fix for the core bug in TextItemBase::applyDefaultValue() itself caused a bug
  • chore(CI): #3591196 ci: Update Drupal core pinned security versions in CI for gitlab jobs
  • chore(Shape matching): #3591028 Consistently use JSON-Schema Draft-07 dialect in frontend and backend by updating `justinrainbow/json-schema` to ^6.8.0
  • fix: #3591072 getFallbackCompiledJs() returns malformed JS
  • chore(Project management): #3588837 phpcs: Organize PHP imports alphabetically to reduce merge conflict frequency
  • fix(Component sources): #3580070 Detect and refuse invalid/lying block plugins (with invalid default configuration), instead of allowing them to crash Canvas
  • chore(Project management): #3591245 DX: Introduce `composer run lint` that runs PHPCS + PHPStan (sibling to `npm run lint`)
  • chore(Project management): #3591249 DX: Faster feedback loop: stop running `phpstan` twice for local development: ~30s → ~15s, only run twice on CI instead (currently 4!)
  • revert: #3580919 Align Folder Drag-and-Drop Behavior with Design Specs
  • fix: #3582390 Canvas AI: Allow "verbose_context_for_orchestrator" to be passed in user input
  • fix(Config management): #3591130 Deleted (code) components can still be referenced by folders: dependency handling is missing
  • chore(Project management): #3591594 Gitlab CI broken because of upstream Symfony security releases that are only available in the `drupal/core-recommended`'s development branch, not in tags → adopt `COMPOSER_NO_BLOCKING`
  • feat(Internal HTTP API): #3589801 Expose HTTP API for managing Page Regions
  • feat(Page builder): #3585452 Create a preview mode for non-default languages
  • task: #3562896 Manage props/page data forms with react-hook-form
  • chore(Project management): #3591597 phpcs: Enforce consistent placement of `cspell:ignore` comments to reduce merge conflict frequency
  • fix: #3587024 Handle change of cardinality (fewer/more values allowed): upgrade component instances with more values than cardinality allows by dropping those values (acceptable data loss)
  • chore(Component sources): #3548297 DX: rename `GeneratedFieldExplicitInputUxComponentSourceBase` → `JsonSchemaPropsComponentSourceBase`
  • task(Symmetric Translations): #3590572 Indicate translation availability per language in the Canvas language switcher dropdown
  • feat(CLI Tool): #3576837 Manage the global layout (aka regions) within Canvas Workbench
  • fix(AI): #3590307 revert the code in 3572865
  • fix(Page builder): #3588074 Stabilize Canvas preview for in-place vh updates and tall content
  • fix: #3591401 `video.spec.ts:21` is flaky: wait for Drupal's auto-upload behavior to attach
  • task: #3591374 Add machine name to JsComponent::renderComponent() output
  • fix(Symmetric Translations): #3591585 Canvas editor does not support language-prefixed URLs, breaks when accessed as /[langcode]/canvas/...
  • bug(Internal HTTP API): #3538825 ApiExceptionSubscriber prevents ExceptionLoggingSubscriber from running
  • chore(Project management): #3591606 Automate review using PHPStan: architecture test for `JsonSchemaPropsComponentSourceBase` + `(Js|SingleDirectory)Component`
  • task(AI): #3591516 Canvas AI: Restrict component catalog to canvas_test_sdc components when canvas_ai_agents_test is installed
  • revert(AI): #3586584 Code Component escaped code when creating with Canvas AI
  • fix: #3550869 Add next larger srcset candidate in canvas:image to prevent browser upscaling
  • chore(Project management): #3591611 Statically enforce that `CanvasConfigUpdater` `Component` update paths are wired into `::preSave()` (and ship a post_update)
  • chore(Project management): #3579681 Add composer run install-dev-deps to CONTRIBUTING.md
  • feat(CLI Tool): #3591610 Clean up output of Canvas Create
  • fix(Data model): #3591607 Canvas does not properly cast typed data, which results in bad normalization when computing component version hashes
  • Resolve #3589076 "Detect conflicts during autosave polling"
  • fix: Follow-up #3591585 Canvas editor does not support language-prefixed URLs, breaks when accessed as /[langcode]/canvas/...
  • chore(Theme builder): #3590553 Make getPageData() and getSiteData() SSR-compatible
  • fix(Symmetric Translations): #3591584 Publishing a canvas_page via auto-save API drops all non-default-language translations
  • fix: #3591605 [CI] Adding dev dependencies upgrades Drupal core minor
  • fix: #3591609 `undo-redo.cy.js:15` is flaky and never asserted undo/redo: re-query the swapping preview iframe
Created by: balintbrews
Created on: 3 Jun 2026 at 19:27 UTC
Last updated: 3 Jun 2026 at 19:28 UTC
Bug fixes
New features
Insecure
Unsupported

Other releases