Skip to content

Conversation

@tellthemachines
Copy link
Contributor

@tellthemachines tellthemachines commented Oct 3, 2025

What?

Starts addressing #71555.

This PR only removes the isNavigationMode check in places where we want the logic to apply to contentOnly mode in general:

block toolbar options menu

Removes "copy" and "cut" options for blocks in contentOnly mode (the options menu only appears on children of content blocks, such as: Images inside a Gallery; List items; Button; Paragraphs inside a Cover. An example from the "Call to action with grid layout with products and link" TT5 pattern:

Before After
Screenshot 2025-10-03 at 2 26 09 pm Screenshot 2025-10-03 at 2 26 40 pm

block toolbar

  • Simplifies section style switcher logic
  • Removes the inverted toolbar classname (that made toolbar white on black in write mode) (I think we don't want that anymore?)

rich text

Reduces editing tools to essential only in contentOnly mode so e.g. a Paragraph inside a pattern only has basic tools now:

Before After
Screenshot 2025-10-03 at 2 34 29 pm Screenshot 2025-10-03 at 2 35 42 pm

isSectionBlock

Removes isNavigationMode from the logic (shouldn't be any difference to contentOnly mode in patterns).

canInsertBlockTypeUnmemoized and canRemoveBlock

Removes isNavigationMode from conditions for allowing insertion/removal in contentOnly mode.

Site logo and Site title

Removes isNavigationMode from conditions for displaying editing tools in contentOnly mode.

What this PR doesn't address

  • Selectors and actions to enable/disable navigation mode
  • The actual write mode toggle
  • The write mode experiment
  • The logic in getBlockEditingMode and derivedNavModeBlockEditingModes (maybe we can remove this altogether? Or do we want to transfer any of that logic to contentOnly patterns?)
  • The logic in DisableNonPageContentBlocks (again, not quite sure what we want to keep or chuck out here?)

I think all these things can be addressed as follow-ups to keep the PRs as easy to review as possible :)

Testing

  1. Make sure write mode experiment is OFF and contentOnly patterns experiment is ON.
  2. Add some patterns to a template and make their content can be edited as expected. There should be some small changes as per the notes above (no copy/cut options, only basic editing tools for Paragraphs)
  3. Optionally disable the patterns experiment and make sure everything still works as expected in non-contentOnly mode :)
@github-actions
Copy link

github-actions bot commented Oct 3, 2025

Size Change: -432 B (-0.02%)

Total Size: 1.96 MB

Filename Size Change
build/block-editor/index.min.js 270 kB -142 B (-0.05%)
build/block-editor/style-rtl.css 15.9 kB -120 B (-0.75%)
build/block-editor/style.css 15.9 kB -123 B (-0.77%)
build/block-library/index.min.js 239 kB -47 B (-0.02%)
ℹ️ View Unchanged
Filename Size
build-module/a11y/index.min.js 482 B
build-module/block-library/accordion/view.min.js 656 B
build-module/block-library/file/view.min.js 466 B
build-module/block-library/form/view.min.js 533 B
build-module/block-library/image/view.min.js 1.78 kB
build-module/block-library/navigation/view.min.js 1.19 kB
build-module/block-library/query/view.min.js 767 B
build-module/block-library/search/view.min.js 639 B
build-module/interactivity-router/full-page.min.js 565 B
build-module/interactivity-router/index.min.js 11.6 kB
build-module/interactivity/debug.min.js 17.7 kB
build-module/interactivity/index.min.js 14.1 kB
build/a11y/index.min.js 925 B
build/annotations/index.min.js 2.13 kB
build/api-fetch/index.min.js 2.41 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.18 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.05 kB
build/block-editor/content-rtl.css 4.51 kB
build/block-editor/content.css 4.5 kB
build/block-editor/default-editor-styles-rtl.css 411 B
build/block-editor/default-editor-styles.css 411 B
build/block-library/blocks/accordion-heading/style-rtl.css 340 B
build/block-library/blocks/accordion-heading/style.css 340 B
build/block-library/blocks/accordion-item/style-rtl.css 213 B
build/block-library/blocks/accordion-item/style.css 213 B
build/block-library/blocks/accordion-panel/style-rtl.css 99 B
build/block-library/blocks/accordion-panel/style.css 99 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 61 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/breadcrumbs/style-rtl.css 203 B
build/block-library/blocks/breadcrumbs/style.css 203 B
build/block-library/blocks/button/editor-rtl.css 265 B
build/block-library/blocks/button/editor.css 265 B
build/block-library/blocks/button/style-rtl.css 554 B
build/block-library/blocks/button/style.css 554 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 349 B
build/block-library/blocks/buttons/style.css 349 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 139 B
build/block-library/blocks/code/style.css 139 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-author-name/style-rtl.css 72 B
build/block-library/blocks/comment-author-name/style.css 72 B
build/block-library/blocks/comment-content/style-rtl.css 120 B
build/block-library/blocks/comment-content/style.css 120 B
build/block-library/blocks/comment-date/style-rtl.css 65 B
build/block-library/blocks/comment-date/style.css 65 B
build/block-library/blocks/comment-edit-link/style-rtl.css 70 B
build/block-library/blocks/comment-edit-link/style.css 70 B
build/block-library/blocks/comment-reply-link/style-rtl.css 71 B
build/block-library/blocks/comment-reply-link/style.css 71 B
build/block-library/blocks/comment-template/style-rtl.css 191 B
build/block-library/blocks/comment-template/style.css 191 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 168 B
build/block-library/blocks/comments-pagination/editor.css 168 B
build/block-library/blocks/comments-pagination/style-rtl.css 201 B
build/block-library/blocks/comments-pagination/style.css 201 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 842 B
build/block-library/blocks/comments/editor.css 842 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 637 B
build/block-library/blocks/cover/editor-rtl.css 631 B
build/block-library/blocks/cover/editor.css 631 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 331 B
build/block-library/blocks/embed/editor.css 331 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 278 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 366 B
build/block-library/blocks/form-input/style.css 366 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/freeform/editor-rtl.css 2.59 kB
build/block-library/blocks/freeform/editor.css 2.59 kB
build/block-library/blocks/gallery/editor-rtl.css 615 B
build/block-library/blocks/gallery/editor.css 616 B
build/block-library/blocks/gallery/style-rtl.css 1.83 kB
build/block-library/blocks/gallery/style.css 1.83 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 334 B
build/block-library/blocks/group/editor.css 334 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 353 B
build/block-library/blocks/html/editor.css 354 B
build/block-library/blocks/image/editor-rtl.css 763 B
build/block-library/blocks/image/editor.css 763 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 139 B
build/block-library/blocks/latest-posts/editor.css 138 B
build/block-library/blocks/latest-posts/style-rtl.css 520 B
build/block-library/blocks/latest-posts/style.css 520 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 321 B
build/block-library/blocks/media-text/editor.css 320 B
build/block-library/blocks/media-text/style-rtl.css 543 B
build/block-library/blocks/media-text/style.css 542 B
build/block-library/blocks/more/editor-rtl.css 393 B
build/block-library/blocks/more/editor.css 393 B
build/block-library/blocks/navigation-link/editor-rtl.css 625 B
build/block-library/blocks/navigation-link/editor.css 628 B
build/block-library/blocks/navigation-link/style-rtl.css 190 B
build/block-library/blocks/navigation-link/style.css 188 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.23 kB
build/block-library/blocks/navigation/editor.css 2.24 kB
build/block-library/blocks/navigation/style-rtl.css 2.27 kB
build/block-library/blocks/navigation/style.css 2.26 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 356 B
build/block-library/blocks/page-list/editor.css 356 B
build/block-library/blocks/page-list/style-rtl.css 192 B
build/block-library/blocks/page-list/style.css 192 B
build/block-library/blocks/paragraph/editor-rtl.css 251 B
build/block-library/blocks/paragraph/editor.css 251 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author-biography/style-rtl.css 74 B
build/block-library/blocks/post-author-biography/style.css 74 B
build/block-library/blocks/post-author-name/style-rtl.css 69 B
build/block-library/blocks/post-author-name/style.css 69 B
build/block-library/blocks/post-author/style-rtl.css 188 B
build/block-library/blocks/post-author/style.css 189 B
build/block-library/blocks/post-comments-count/style-rtl.css 72 B
build/block-library/blocks/post-comments-count/style.css 72 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 525 B
build/block-library/blocks/post-comments-form/style.css 525 B
build/block-library/blocks/post-comments-link/style-rtl.css 71 B
build/block-library/blocks/post-comments-link/style.css 71 B
build/block-library/blocks/post-content/style-rtl.css 61 B
build/block-library/blocks/post-content/style.css 61 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 715 B
build/block-library/blocks/post-featured-image/editor.css 712 B
build/block-library/blocks/post-featured-image/style-rtl.css 347 B
build/block-library/blocks/post-featured-image/style.css 347 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/style-rtl.css 414 B
build/block-library/blocks/post-template/style.css 414 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 162 B
build/block-library/blocks/post-title/style.css 162 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 133 B
build/block-library/blocks/pullquote/editor.css 133 B
build/block-library/blocks/pullquote/style-rtl.css 365 B
build/block-library/blocks/pullquote/style.css 365 B
build/block-library/blocks/pullquote/theme-rtl.css 176 B
build/block-library/blocks/pullquote/theme.css 176 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 154 B
build/block-library/blocks/query-pagination/editor.css 154 B
build/block-library/blocks/query-pagination/style-rtl.css 237 B
build/block-library/blocks/query-pagination/style.css 237 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query-total/style-rtl.css 64 B
build/block-library/blocks/query-total/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 432 B
build/block-library/blocks/query/editor.css 432 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 236 B
build/block-library/blocks/read-more/style-rtl.css 131 B
build/block-library/blocks/read-more/style.css 131 B
build/block-library/blocks/rss/editor-rtl.css 126 B
build/block-library/blocks/rss/editor.css 126 B
build/block-library/blocks/rss/style-rtl.css 284 B
build/block-library/blocks/rss/style.css 283 B
build/block-library/blocks/search/editor-rtl.css 199 B
build/block-library/blocks/search/editor.css 199 B
build/block-library/blocks/search/style-rtl.css 665 B
build/block-library/blocks/search/style.css 666 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 773 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/editor-rtl.css 85 B
build/block-library/blocks/site-title/editor.css 85 B
build/block-library/blocks/site-title/style-rtl.css 143 B
build/block-library/blocks/site-title/style.css 143 B
build/block-library/blocks/social-link/editor-rtl.css 314 B
build/block-library/blocks/social-link/editor.css 314 B
build/block-library/blocks/social-links/editor-rtl.css 339 B
build/block-library/blocks/social-links/editor.css 338 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.51 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 92 B
build/block-library/blocks/tag-cloud/editor.css 92 B
build/block-library/blocks/tag-cloud/style-rtl.css 248 B
build/block-library/blocks/tag-cloud/style.css 248 B
build/block-library/blocks/template-part/editor-rtl.css 368 B
build/block-library/blocks/template-part/editor.css 368 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 B
build/block-library/blocks/term-template/editor-rtl.css 225 B
build/block-library/blocks/term-template/editor.css 225 B
build/block-library/blocks/term-template/style-rtl.css 135 B
build/block-library/blocks/term-template/style.css 135 B
build/block-library/blocks/terms-query/style-rtl.css 70 B
build/block-library/blocks/terms-query/style.css 70 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 413 B
build/block-library/blocks/video/editor.css 414 B
build/block-library/blocks/video/style-rtl.css 202 B
build/block-library/blocks/video/style.css 202 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.09 kB
build/block-library/common.css 1.09 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.5 kB
build/block-library/editor.css 11.5 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 15.5 kB
build/block-library/style.css 15.4 kB
build/block-library/theme-rtl.css 715 B
build/block-library/theme.css 719 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.9 kB
build/commands/index.min.js 16.3 kB
build/commands/style-rtl.css 997 B
build/commands/style.css 998 B
build/components/index.min.js 252 kB
build/components/style-rtl.css 13.7 kB
build/components/style.css 13.7 kB
build/compose/index.min.js 12.8 kB
build/core-commands/index.min.js 3.58 kB
build/core-data/index.min.js 75.4 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.44 kB
build/customize-widgets/style.css 1.44 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.7 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 590 B
build/edit-post/classic.css 591 B
build/edit-post/index.min.js 13.9 kB
build/edit-post/style-rtl.css 2.79 kB
build/edit-post/style.css 2.8 kB
build/edit-site/index.min.js 243 kB
build/edit-site/posts-rtl.css 9.43 kB
build/edit-site/posts.css 9.42 kB
build/edit-site/style-rtl.css 15.5 kB
build/edit-site/style.css 15.5 kB
build/edit-widgets/index.min.js 17.8 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.07 kB
build/editor/index.min.js 137 kB
build/editor/style-rtl.css 9.59 kB
build/editor/style.css 9.6 kB
build/element/index.min.js 4.86 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.23 kB
build/format-library/style-rtl.css 490 B
build/format-library/style.css 490 B
build/hooks/index.min.js 1.65 kB
build/html-entities/index.min.js 467 B
build/i18n/index.min.js 2.23 kB
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.32 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 867 B
build/list-reusable-blocks/style.css 868 B
build/media-utils/index.min.js 3.69 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.62 kB
build/nux/style-rtl.css 783 B
build/nux/style.css 780 B
build/patterns/index.min.js 7.55 kB
build/patterns/style-rtl.css 703 B
build/patterns/style.css 703 B
build/plugins/index.min.js 1.87 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 582 B
build/preferences/style.css 582 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 978 B
build/react-i18n/index.min.js 640 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.53 kB
build/reusable-blocks/style-rtl.css 273 B
build/reusable-blocks/style.css 273 B
build/rich-text/index.min.js 12.2 kB
build/router/index.min.js 5.47 kB
build/server-side-render/index.min.js 1.6 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.04 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.97 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 556 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/vips/index.min.js 36.2 kB
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.17 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.17 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@tellthemachines
Copy link
Contributor Author

tellthemachines commented Oct 3, 2025

Hmm, something I did here caused all blocks in posts to go into contentOnly mode (which is why the e2e are failing 💀)

Update: I think it's fixed now.

@github-actions
Copy link

github-actions bot commented Oct 3, 2025

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: tellthemachines <isabel_brison@git.wordpress.org> Co-authored-by: andrewserong <andrewserong@git.wordpress.org> Co-authored-by: talldan <talldanwp@git.wordpress.org> Co-authored-by: ramonjd <ramonopoly@git.wordpress.org> 

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@talldan
Copy link
Contributor

talldan commented Oct 3, 2025

The logic in getBlockEditingMode and derivedNavModeBlockEditingModes (maybe we can remove this altogether? Or do we want to transfer any of that logic to contentOnly patterns?)

I think that can all be removed if we're removing nav mode. Should be quite a lot of code. Happy for it to be in another PR if you want to split things up.

@tellthemachines tellthemachines force-pushed the try/remove-nav-mode-useage branch from 2d0495e to f9a7454 Compare October 7, 2025 00:37
@ramonjd
Copy link
Member

ramonjd commented Oct 7, 2025

What's the best way to test here? With the contentOnly experiment on? Write mode or none of them?

Those failing e2e tests are pretty flakey when I run them locally 🙃

For the editor > various > write design canvas tests, the editor canvas is completely blank with I run them in the playwright UI 🤔

@tellthemachines
Copy link
Contributor Author

tellthemachines commented Oct 7, 2025

What's the best way to test here? With the contentOnly experiment on? Write mode or none of them?

Best way to test is with contentOnly patterns experiment - make sure it works as expected - and also with no experiment on, nothing should have changed.

The goal is to remove the write mode toggle/experiment, so it doesn't matter whether it works or not! The write/design tests need removing, or maybe reworking into contentOnly pattern tests (I'm not sure we have any of those yet?)

Edit: actually it might make things easier if I remove the write mode experiment in this PR. I'll try that.

@ramonjd
Copy link
Member

ramonjd commented Oct 7, 2025

The write/design tests need removing, or maybe reworking into contentOnly pattern tests (I'm not sure we have any of those yet?)

Gotcha. I guess that some of them might be relevant for selecting child blocks. Maybe we can disable them/migrate them to a new suite. 🤔

@github-actions
Copy link

github-actions bot commented Oct 7, 2025

Flaky tests detected in d8c39ce.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/18303264792
📝 Reported issues:

@tellthemachines
Copy link
Contributor Author

Edit: actually it might make things easier if I remove the write mode experiment in this PR. I'll try that.

Actually, looking at how the experiment flag is tied up with __unstableGetEditorMode and all the selector logic that this PR doesn't remove, I think it best to leave it for a follow-up.

That way, this PR just removes the checks in components that are also used when patterns are in contentOnly mode. There are a few small changes to behaviour when just the patterns experiment is on, such as ensuring "copy" and "cut" options don't appear on contentOnly blocks inside patterns, that make the patterns experiment more consistent with our contentOnly goals.

This PR is now ready for review!

*/
const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' );

test.describe( 'Write/Design mode', () => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've disabled these for now instead of removing them because I think we can rewrite them to apply to contentOnly patterns instead. It might be better to wait until the feature is a bit more stable to do that though!

// we expect 4 items in the options menu
await expect( optionsMenu ).toHaveCount( 4 );
// we expect 2 items in the options menu: Duplicate and Delete.
await expect( optionsMenu ).toHaveCount( 2 );
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an expected change because patterns in contentOnly mode no longer have "cut" and "copy" options.

Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work looking to remove this!

I'm curious about the changes to cut and copy, and to removing the additional formatting options. Are they intentional removals, in the sense that we'd like content only mode to be simpler than it is on trunk? For some of the cases where we're removing the isNavigationMode check, would it be better to remove the whole check altogether rather than tying it to content only mode (which is a little more restrictive than what we currently have)?

I'm mostly wondering whether in some of these cases, it'd be better to allow the behaviour in all cases, rather than removing them. For example, for copy and cut, we already allow duplicate, add before/after, and delete, so if they're available, I wasn't sure why we'd remove copy and cut as well 🤔

Similarly, why do we want to restrict the additional formatting options like strikethrough, subscript and superscript, etc. Does it feel strange to have to click to edit a pattern to perform some of those formatting options?

// Shifts the toolbar to make room for the parent block selector.
const classes = clsx( 'block-editor-block-contextual-toolbar', {
'has-parent': showParentSelector,
'is-inverted-toolbar': isNavigationMode && ! hasFixedToolbar,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might already be imagining a different PR for it, but if this classname is removed, we can probably remove the CSS here, too?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that makes sense!

@tellthemachines
Copy link
Contributor Author

I'm curious about the changes to cut and copy, and to removing the additional formatting options. Are they intentional removals, in the sense that we'd like content only mode to be simpler than it is on trunk?

Yes, my reasoning is that we want contentOnly mode in patterns to function along the same lines as it was to with the "write mode" toggle. Cut/copy and formatting were originally removed for write mode in #71063 and #71058 and there's no reason to assume the requirements changed 😅 (though requirements haven't always been very clear for this feature, so I guess it's possible they might change)

There was also the intention for write mode to disable moving blocks around (#67408), though it was never successfully implemented. I think it makes sense if we consider that placement/layout is part of design. From that perspective, "copy" "cut" and "paste" are similar operations to "move", so I think that was why they were removed.

@andrewserong
Copy link
Contributor

Nice one, thanks for clarifying the thinking there @tellthemachines, that all sounds reasonable to me!

@ramonjd
Copy link
Member

ramonjd commented Oct 8, 2025

From that perspective, "copy" "cut" and "paste" are similar operations to "move", so I think that was why they were removed.

Are there any exceptions? For some patterns the first "content" block (para/heading) has the context menus:

Screenshot 2025-10-08 at 1 52 13 pm Screenshot 2025-10-08 at 1 55 07 pm

🤔

Copy link
Contributor

@talldan talldan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for handling this, it's testing well for me. 🎉

The only thing I wonder is if the experiment toggle should also be removed as part of the PR since it leaves write mode unusable. Not a big issue, but it might need to be addressed prior to this code shipping in a gutenberg release.

@talldan
Copy link
Contributor

talldan commented Oct 8, 2025

Are there any exceptions? For some patterns the first "content" block (para/heading) has the context menus:

@ramonjd How do we repro that? I do see Duplicate / Add Before / Add After / Delete, which seems like a possible bug, but I think it's also an issue in trunk. I'm not seeing the other options from your screenshot:
Screenshot 2025-10-08 at 11 09 54 am

@ramonjd
Copy link
Member

ramonjd commented Oct 8, 2025

How do we repro that? I do see Duplicate / Add Before / Add After / Delete, which seems like a possible bug, but I think it's also an issue in trunk

I could only reproduce with those two patterns in the screenshot, e.g.,. "Services, 3 columns". I don't trust my env. I'm seeing few things that others aren't today.

Thanks for double checking.

@tellthemachines
Copy link
Contributor Author

The only thing I wonder is if the experiment toggle should also be removed as part of the PR

I was initially going to remove it but then decided not to (see here)

I plan to follow this one up with a second PR to remove the experiment, the toggle and any remaining selectors not in use.

@tellthemachines
Copy link
Contributor Author

Are there any exceptions? For some patterns the first "content" block (para/heading) has the context menus

Hmm if the parent is a section root we allow inserting blocks there. The difference I see between blocks that get the menu and not is they're at the root of the pattern container, so it might be that. I guess that doesn't make sense with contentOnly patterns so we might want to remove the functionality, but better addressed as a separate PR perhaps.

@tellthemachines
Copy link
Contributor Author

Thanks for the reviews, folks! I'm going to go ahead and merge this so I can start working on the follow-ups.

@tellthemachines tellthemachines merged commit 23a593f into trunk Oct 8, 2025
69 checks passed
@tellthemachines tellthemachines deleted the try/remove-nav-mode-useage branch October 8, 2025 05:27
@github-actions github-actions bot added this to the Gutenberg 21.9 milestone Oct 8, 2025
sidharthpandita1 pushed a commit to sidharthpandita1/gutenberg that referenced this pull request Oct 10, 2025
…s#72043) Co-authored-by: tellthemachines <isabel_brison@git.wordpress.org> Co-authored-by: andrewserong <andrewserong@git.wordpress.org> Co-authored-by: talldan <talldanwp@git.wordpress.org> Co-authored-by: ramonjd <ramonopoly@git.wordpress.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Feature] Write mode [Type] Enhancement A suggestion for improvement.

5 participants