What’s new in Gutenberg 15.1? (8 February)

“What’s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in the release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Site Editor project (formerly called Full Site Editing).

Gutenberg 15.1 has been released and is available for download!

This release sees the integration of Openverse through the Media tab, the addition of custom CSSCSS Cascading Style Sheets. per blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. via the styles sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. and theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML., navigation menus in the browse mode sidebar, and the facility to add shadow presets in global styles.

Table of Contents

Openverse integration in the Inserter

Openverse is now integrated into the Inserter in the Editor. It is now possible to get access to an extensive library of free stock photos that are available for free use, directly from the Media tab.  (46251)

Global Styles now supports shadow presets

Access to shadow presets from the UIUI User interface of Global Styles has been added to Gutenberg 15.1. There are now four shadow presets (Natural, Crisp, Sharp and Soft) defined by default, but new and custom ones can be defined for the theme via ‘theme.json’. (46502)

Add custom CSS on a per-block basis

It is now possible to add custom CSS styles on a per-block basis. Custom CSS can be added via the Global Styles UI, which will be applied to all the block occurrences. Default CSS styles can also be defined for each block via theme.json.  (46571)

Gutenberg 15.1 introduces Navigation to the browse mode sidebar in the Site Editor. This enables the user to manage their site’s navigation menus from within, thereby providing a more integrated site editing experience. (46436). This navigation menuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. also includes the items of each menú so we can navigate through them directly from the Site Editor sidebar. (47387)

Other notable highlights

New menu options for copying and pasting styles between blocks

Applying the styling from one block to another can now be done more readily with the addition of a new group in the Options menu of the block’s toolbar. The new group contains the options to “Copy styles” and “Paste styles”. Previously only the “Copy styles” option was available, leaving it unclear how to paste them into the receiving block. The process is now clearer and more easily discoverable. (47430)

Featured images in templates can be sized

The release of Gutenberg 15.1 brings the ability to adjust the size of the featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. placeholder in the single post and single page templates from within the Site Editor UI. As well as allowing the size of the featured image to be defined it also adds scaling options, namely ‘Cover’, ‘Contain’, or ‘Fill’, that determine how the image will appear within the container. (46868)

Changelog

Enhancements

Block Library

  • Add Crowdsignal Embed Variation for a new oEmbed endpoint. (47382)
  • Add anchor support for dynamic blocks. (44771)
  • Add box shadow support to blocks (using code editor for now). (46896)
  • Cover block: Add HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. element selection. (46969)
  • Decode entities in page list item title. (47571)
  • Enable image size for featured images in templates. (46848)
  • Gallery Block: Add toolbar button to add a caption. (47325)
  • Make the off-canvas navigation editor the default experience. (46995)
  • Move copy and pasting styles menu items to a separate menu group. (47430)
  • Navigation: Add a manage menus button to the menu selector dropdown. (47005)
  • Navigation: Allow multiple navigations with the same ref. (47453)
  • Navigation: Remove filters disabling tabs for link and submenu. (47593)
  • Navigation: Remove the manage menus button from the selector. (47441)
  • Page List: Swap the positions of the parent page selector and customize button. (47547)
  • Page List: Update the edit/customize copy. (47549)
  • Post excerptExcerpt An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin’s metabox.: Add text alignment to the placeholder. (45003)
  • Query LoopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop. Block: Use BlockPatternsList component for Query block patterns modal. (47366)
  • Remove endless spinned for removed navigations. (47578)
  • Remove the list view button from the navigation block. (47032)
  • Table Block: Support rowspan attribute in table HTML, including when pasting. (46629)
  • Update icons for off-canvas navigation. (47337)
  • Migrate from TextControl to InputControl to remove margin overrides. (47161)
  • Multiple blocks: Add missing has-link-color class to the front. (47357)
  • [Navigation]: Update example with no mobile view. (47508)
  • Navigation Block List View: Improve the accessible Name of the Tree Grid inside the component. (47031)

Global Styles

  • Add “Learn more about CSS” help text to Custom CSS control. (47091)
  • Add padding when no tabs in the background panel. (44044)
  • Add validation message to custom CSS input. (47132)
  • Change “Custom” CSS navigation label to “Additional CSS”. (47093)
  • Make css input fill remainder of screen by default. (47437)
  • Move custom CSS to ellipsis menu if no custom CSS present yet. (47371)
  • Move custom css to its own inline style generation method and combine with customizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. CSS. (47396)
  • ToggleGroupControl: Add new opt-in prop. (47269)
  • Add check for edit CSS capability to overflow menu. (47714)
  • Reselect blocks after pasting styles. (47590)

Site Editor

  • Global Styles: Try per block custom CSS. (46571)
  • Restore the navigation menus in the site editor. (47485)
  • Update resize handle. (47138)
  • Update the site editor for better initialization. (47182)
  • Updates some spacing + dimensions in the Site Hub. (47120)
  • Add: Navigation menus to the browse mode sidebar. (46436)
  • Shadow: Add shadow presets and UI tools in global styles. (46502)
  • TextControl: Remove margin overrides and add new opt-in prop (pt 1/2). (47157)
  • [Webfonts] Rename to Fonts APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. (46749)
  • Add layout child sizing to Navigation block. (47584)
  • Add missing controls to flex layouts. (47134)
  • Always pass layout to inner blocks. (47477)
  • Site Hub: Remove the aria-label from the Edit button. (47343)
  • Add ability to open the editor on the selected post on navigation. (47387)
  • Allow clicking the site editor frame to enter edit mode. (47676)
  • Pattern Explorer Modal: Select the first categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. as the initial category. (47661)
  • [Patterns]: Support the blockTypes prop for patterns fetched from Pattern Directory. (47677)
  • Sticky Position: Fix top position while logged in on mobile. (47665)

Testing

  • Clean up sidebar tab end-to-end test utils. (47097)
  • Components: Refactor more tests to use real timers. (47318)
  • Components: Use real timers where possible. (47056)
  • Migrate Classic block tests to Playwright. (46689)

Block Editor

  • Add custom label to nav block list view appender. (47033)
  • Move Link Control action buttons into lower settings area. (47309)
  • Pattern Inserter: Show insertion indicator when hovering on patterns. (47316)
  • Add clear Apply and Cancel buttons to Link Control. (46933)
  • [Inserter]: Openverse integration. (46251)
  • TextControl: Remove margin overrides and add new opt-in prop (pt 2/2). (47158)
  • [Block editor]: Add setting to disable Openverse integration. (47404)
  • Block Inspector: Make Settings tab the default. (47592)
  • Sticky Position: Hide controls if the block is non-root (has parents). (47334)
  • Block Inspector: Avoid advanced panel only settings tab. (47474)
  • Stabilize the experimental control groups. (47105)
  • Table: Display fixed width table cells option by default. (47536)

Components

  • AligmentMatrixControl: Update center cell label to ‘Center’. (46852)
  • Button: Try improving padding for icon + text buttons. (46764)
  • Fix HStack documentation to show code sample. (47162)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

  • Announce when block inserted in Navigation list view. (47034)
  • Navigation block: Fix some off canvas appender accessibility issues. (47047)
  • [Block Editor]: Update text align toolbar control label. (47119)

Themes

  • Make child themes inherit parent’s style variations. (46554)
  • Shadow: Rename shadow palette to presets. (47272)

Bug Fixes

Block Library

  • Ensure appropriate fallback menu title in Nav block menu selector. (47073)
  • Fix duplicate template parts logic overriding existing template part. (47128)
  • Fix post featured image scaling on the front. (46838)
  • Nav offcanvas restore click to edit. (47608)
  • Navigation Block: Avoid showing the contrast checker warning twice. (47205)
  • Navigation Block: Fix warning error when no ref. (47479)
  • Page List: Add extra safety around warnings. (47603)
  • Refactor convert links. (46930)
  • Search Block: Apply border color correctly when button is outside or absent. (47067)
  • Template Parts: Avoid duplicate names on conversion from group of blocks. (47082)
  • [Block Editor – Post Template]: Fix layout styles. (47221)
  • Add an alt attribute to the linked featured image if there is no post title. (46830)
  • Post Template: Add default value for offset. (47308)
  • Parse (area-specific) context in template-part block. (47203)
  • Don’t use methods with the ‘gutenberg_’ prefix. (47649)
  • Navigation: Only show the deleted menu warning if a ref is specified. (47699)
  • [Query Loop]: Guard term addtion when the request hasn’t resolved. (47688)

Block Editor

  • Fix Link Control action button visuals. (47306)
  • Fix Link UI incorrect text replacement in Rich Text. (45710)
  • In-between inserter: Fix console error when moving mouse in Firefox. (47168)
  • Remove double edit button in LinkUI. (47454)
  • Template parts and Reusable block: Fix multiple selection overlay styles. (47342)
  • Use tertiary variant on Link Control cancel button. (47313)
  • Add back block editor settings filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.. (47558)
  • Backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. WP_REST_Pattern_Directory_Controller changes from coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. (47409)
  • Block Editor: Move component styles needed for iframes to content styles. (47103)
  • Block Inserter: Correctly apply style to the default inserter. (47166)
  • Block editor: iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser.: Fix placeholder colors. (47416)
  • Fix reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. key error with position controls. (47367)
  • Revert “Navigation List View: Remove empty cell when there is no edit button”. (47061)
  • [Block Editor]: Fix onHover errors at BlockPattern. (47466)
  • [Block Editor]: Register the store through registerStore. (47488)
  • Avoid erroring when getQueryArgs processes a malformed URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. (45561)
  • MediaUtils: Move window access to function bodies. (46970)
  • Fix and simplify the Modal dialog close button label. (47540)
  • Fix misaligned layout control icons. (47089)
  • Fix/flex controls bugs. (47533)
  • E2E: Improve multiple block moving test stability. (47423)
  • Fix Post Visibility end-to-end tests. (47520)
  • Fix padding and margin visualizer positioning. (47483)
  • Fix padding and margin visualizer styles. (47139)
  • Pattern Inserter: Fix unintended preview panel display when hovering mouse over pattern. (47693)

Site Editor

  • Allow resizing the sidebar in the site editor using keyboard. (47176)
  • Block Editor: Add inert polyfill to iframe. (47398)
  • Browse mode: Add an H2 inside the sidebar navigation screen title. (47241)
  • Force visual editor in browse mode. (47329)
  • Template Sidebar: Fix list of current template part areas to show nested template parts. (47232)
  • useDisabled hook: Fix problem with not working in iframe. (47459)

Global Styles

  • Don’t remove Custom CSS for users with the correct caps. (47062)
  • Fix inline block declaration anti-pattern in global styles UI. (47374)
  • Fix param type in Theme_JSON_Resolver DocBlockdocblock (phpdoc, xref, inline docs). (47385)
  • Hide Custom CSS setting for users without ‘edit_css’ cap. (46815)

Webfonts

  • Add registered fonts to theme JSON AFTER the child and parent data has been merged. (47290)
  • [Fonts API] Remove local() from @font-face styles. (47254)
  • [Webfonts] Use Core’s _deprecated_argument() for deprecating data structures. (47125)

Components

  • Fix tab panel initial tab selection. (47100)
  • InputControl: Avoid uncontrolled to controlled warning. (47250)
  • ColorPalette: Use computed color when css variable is passed to ColorPicker. (47181)
  • Tabs focus: Followup for Windows high contrast. (46647)
  • Support private selectors and actions for stores registered via registry.registerStore() and for sub registries. (47421)

Performance

Block Editor

  • Block Editor: Improve getBlockInsertionPoint memoization. (47489)
  • Block Editor: Improve getPatternsByBlockTypes() selector performance. (47450)
  • Block Editor: Memoize getBlockInsertionPoint selector. (47448)
  • Block Editor: Optimize selected blocks in BlockSettingsMenuControls. (47462)
  • Color Palette: Don’t use unstable array reference for fallbacks. (47577)
  • Element: Enable concurrent mode by implementing mount/unmount with createRoot. (46467)
  • Lodash: Refactor away from _.setWith(). (47017)
  • Lodash: Refactor block editor away from _.map(). (47214)
  • Lodash: Deprecate _.map(). (47216)
  • Lodash: Refactor core data away from _.map(). (47189)
  • Log frontend perf results in codehealth. (47442)
  • Perf: Rely on more efficient Map for Priority Queue internal state. (47156)
  • Block Editor: Add a new hook for getting a stable block context object. (47028)
  • Fix crash when the first template-parts is deleted width del key. (47227)

Post Editor

  • Lodash: Refactor HierarchicalTermSelector away from _.unescape(). (47567)
  • Lodash: Refactor PageAttributesParent away from _.unescape(). (47565)
  • Lodash: Refactor away from _.clone(). (47315)
  • Lodash: Refactor editor away from _.map(). (47191)
  • Lodash: Refactor flat term selection away from _.unescape(). (47572)
  • Lodash: Refactor post editor away from _.map(). (47193)

Block Library

  • Lodash: Refactor Categories List block away from _.unescape(). (47561)
  • Lodash: Refactor Tag Cloud block away from _.unescape(). (47562)
  • Lodash: Refactor NavigationLinkEdit away from _.unescape(). (47570)
  • Lodash: Refactor block library away from _.map(). (47215)
  • Lodash: Refactor some _.isEmpty() instances. (47353)
  • Lodash: Refactor blocks away from _.map(). (47188)
  • Lodash: Refactor away from _.unescape(). (47613)
  • Lodash: Refactor components away from _.map(). (47192)

Experiments

  • Introduce ExperimentalBlockEditorProvider. (47319)
  • Sharing private APIs with lock() and unlock(). (46131)
  • Use experiment locking/unlocking system for block interface selector and actions. (47375)
  • WP_HTML_Tag_Processor: Rename attribute_updates to lexical_updates. (47053)
  • Fully remove Navigation Editor screen and associated edit-navigation package. (47055)
  • Tag Processor: Only define classes if they don’t already exist. (47434)

Documentation

  • Improve gutenberg release documentation to explain the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party backporting process. (47372)
  • Quick update to the Gutenberg plugin description. (47432)
  • Fix typo in InspectorControls documentation. (47154)
  • QueryControls: Improve onCategoryChange prop documentation in README. (47452)
  • Refactor Button component to TypeScript. (46997)
  • Release docs: Add some extra clarification that no action is required by the coordinator when publishing packages. (47480)
  • Remove extra locking from Block Editor store. (47550)
  • Theme: Exclude readme from public documentation. (47220
  • Toolbar: Unify Storybook examples under one file, migrate from knobs to controls. (47117)

Code Quality

  • Remove ESLint ignore directive documentation. (47096)
  • Remove lodash mapKeys usage. (47600)

Components

  • ColorListPicker: Refactor to TypeScript. (46358)
  • ColorPalette, BorderControl, GradientPicker: Refine types and logic around single vs multiple palettes. (47384)
  • DropdownMenu: Convert Storybook examples from knobs to controls. (47149)
  • KeyboardShortcuts: Convert to TypeScript. (47429)
  • Notice: Refactor to TypeScript. (47118)
  • NumberControl: Clarify deprecation message about hideHTMLArrows prop. (47370)
  • Refactor QueryControls component to TypeScript. (46721)
  • Remove @storybook/addon-knobs from the repository. (47152)
  • Dropdown: Deprecate position prop, use popoverProps instead. (46865)
  • Fix missing hook deps in distraction free mode. (47611)
  • Sync settings from editor store to block-editor store. (47287)

Site Editor

  • Site Hub: Remove the aria-label from the Edit button. (47343)
  • Use variation as a prop instead of variationProp in the global styles UI. (47455)
  • Update theme.json. (47620)
  • Template Parts: Add unit tests for template part creation functions. (47224)
  • Lock browse mode selectors and actions. (47678)

Block Library

  • Export off canvas editor via experiments package. (47465)
  • Image Editor: Merge context provider into editor component. (47171)
  • Mark “post author name” as stable / no longer experimental. (45008)
  • Navigation: Remove the Gutenberg plugin check. (47579)

Global Styles

  • Change ‘get_legacy_theme_supports_for_theme_json’ compat dir. (47456)
  • GlobalStyles hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.: Do not smart merge presets in useGlobalSetting. (47415)
  • Move Global Styles APIs to wordpress/block-editor. (47098)
  • Update Global Styles Controller PHPUnit tests. (47502)

Patterns

  • Update Block Patterns Controller PHPUnit tests. (47569)
  • [Patterns]: Remove bundled patterns. (46450)
  • Move Pattern Directory categories endpoint to compat/6.3. (47486)

Plugin

  • No need to remove the ‘gutenberg_enqueue_global_styles_assets’ action. (47557)
  • Replace ‘should_skip_block_supports_serialization’ with the core utility method. (47195)

Block Editor

  • HeightControl: Stabilise the height control component in the block editor package. (47475)
  • Replace registerStore() call with register() in the block-editor store. (47447)
  • Stabilise BlockPreview props. (47231)
  • Update eslint-plugin-jsdoc to support Node 18 and 19. (47490)
  • Fix: Avoid using index as JSX key on offsite navigation editor LinkControlTransforms. (47083)
  • Refactores __ExperimentalOffCanvasEditor to OffCanvasEditor. (47553)
  • Rename __unstableInserterMediaCategories to inserterMediaCategories. (47492)
  • Stabilize the clearBlockSelection editor setting. (47627)
  • [Block Editor]: Stabilize __experimentalGetAllowedBlocks. (47210)
  • [Block Editor]: Stabilize __experimentalGetPatternsByBlockTypes. (47183)
  • URLInput test: Use valid URL value to pass through validation. (47444)

Testing

  • Multi-block selection and rich text test: Wait for expected UI to appear. (47173)
  • ESLint: Enable jest/recommended for tests. (47065)
  • Remove old test now migrated to Playwright. (47247)
  • RichText tests: Don’t use JSDOM explicitly, it’s set up by environment. (47445)
  • Position Block Support: Add PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher tests. (47626)

Tools

Testing

  • Run PHPUnit jobs across multiple PHP versions. (46510)
  • Add codeowners for Playwright tests. (47136)
  • Add end-to-end tests for ‘Import widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. area’ button. (47131)
  • ESLint: Disable jest rules for storybook playwright. (47141)
  • ESLint: Fix jest/expect-expect violations. (47219)
  • Reset default_comment_status to previous value after post comments form end-to-end test. (47481)
  • Tests: Use real timers where fake timers are unnecessary. (47144)
  • WP_HTML_Tag_Processor: Make get_attribute reflect attribute set via set_attribute, even without updating. (46680)
  • core-data: Refactor tests to use real timers. (47218)
  • test: Add separate mobile experiments file. (47513)
  • Migrate a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) end-to-end tests to Playwright. (46038)
  • Copy failing WP_HTML_Tag_Processor_Bookmark_Test tests from Core. (47720)

Build Tooling

  • Add test for experimental/block-editor-settings-mobile endpoint. (46816)
  • Fix GH action warning by upgrading actions/checkout. (47494)
  • Performance suite: Track Time To First Byte in the front-end. (47037)
  • React Native: Remove duplicate metro packages. (47377)
  • Simplify editor.canvas by removing hasIframe. (46986)
  • Storybook: Update storybook-source-link dep. (47425)
  • The prelint:Php script doesn’t work as expected when new dev dependencies get added to composer.json. (45468)
  • end-to-end (cover.test.js): Wait for the height input element. (47294)
  • end-to-end (multi-entity-saving.test.js): Wait for the font size picker controls to appear. (47242)

First time contributors

The following PRs were merged by first time contributors:

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @adamziel @afercia @ajlende @andrewserong @annezazu @anton-vlasenko @apeatling @audrasjb @brookewp @carolinan @chad1008 @ciampo @dcalhoun @dmsnell @draganescu @ellatrix @fabiankaegy @felixarntz @flootr @fluiddot @geriux @getdave @glendaviesnz @hellofromtonya @jameskoster @jasmussen @jffng @jorgefilipecosta @jsnajdr @kevin940726 @kienstra @kozer @madhusudhand @Mamaduka @mirka @noisysocks @ntsekouras @ntwb @oandregal @ockham @pbking @renatoagds @richtabor @Rodage @scruffian @SiobhyB @Soean @t-hamano @talldan @tellthemachines @tyxla @welenofsky @WunderBart @youknowriad

Props to @mburridge, @daisyo, @annezazu and @richtabor for reviewing this post.

#block-editor, #core-editor, #gutenberg, #gutenberg-new