Install
Works with Drupal: ^11.2Using Composer to manage Drupal site dependencies
Alternative installation files
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_starktheme: 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