diff --git a/.github/workflows/rnmobile-android-runner.yml b/.github/workflows/rnmobile-android-runner.yml
index 65bb55e3f63201..43a71809b5bbe7 100644
--- a/.github/workflows/rnmobile-android-runner.yml
+++ b/.github/workflows/rnmobile-android-runner.yml
@@ -28,7 +28,7 @@ jobs:
show-progress: ${{ runner.debug == '1' && 'true' || 'false' }}
- name: Use desired version of Java
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73 # v4.4.0
+ uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
distribution: 'corretto'
java-version: '17'
@@ -47,7 +47,7 @@ jobs:
run: npm run native test:e2e:setup
- name: Gradle cache
- uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0
+ uses: gradle/actions/setup-gradle@473878a77f1b98e2b5ac4af93489d1656a80a5ed # v4.2.0
# AVD cache disabled as it caused emulator termination to hang indefinitely.
# https://github.com/ReactiveCircus/android-emulator-runner/issues/385
diff --git a/.github/workflows/rnmobile-ios-runner.yml b/.github/workflows/rnmobile-ios-runner.yml
index 8851c7c12c4a4a..d28ee65c719e43 100644
--- a/.github/workflows/rnmobile-ios-runner.yml
+++ b/.github/workflows/rnmobile-ios-runner.yml
@@ -27,7 +27,7 @@ jobs:
with:
show-progress: ${{ runner.debug == '1' && 'true' || 'false' }}
- - uses: ruby/setup-ruby@7bae1d00b5db9166f4f0fc47985a3a5702cb58f0 # v1.197.0
+ - uses: ruby/setup-ruby@a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc # v1.202.0
with:
# `.ruby-version` file location
working-directory: packages/react-native-editor/ios
diff --git a/backport-changelog/6.7/7676.md b/backport-changelog/6.7/7676.md
new file mode 100644
index 00000000000000..19d9dc59048457
--- /dev/null
+++ b/backport-changelog/6.7/7676.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7676
+
+* https://github.com/WordPress/gutenberg/pull/66359
diff --git a/backport-changelog/6.8/7265.md b/backport-changelog/6.8/7265.md
new file mode 100644
index 00000000000000..44ba36053aa0d9
--- /dev/null
+++ b/backport-changelog/6.8/7265.md
@@ -0,0 +1,4 @@
+https://github.com/WordPress/wordpress-develop/pull/7265
+
+* https://github.com/WordPress/gutenberg/pull/66850
+* https://github.com/WordPress/gutenberg/pull/66947
diff --git a/backport-changelog/6.8/7759.md b/backport-changelog/6.8/7759.md
new file mode 100644
index 00000000000000..a0ad85b06e6b05
--- /dev/null
+++ b/backport-changelog/6.8/7759.md
@@ -0,0 +1,4 @@
+https://github.com/WordPress/wordpress-develop/pull/7759
+
+* https://github.com/WordPress/gutenberg/pull/66896
+
diff --git a/backport-changelog/6.8/7784.md b/backport-changelog/6.8/7784.md
new file mode 100644
index 00000000000000..b18dca88112a71
--- /dev/null
+++ b/backport-changelog/6.8/7784.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7784
+
+* https://github.com/WordPress/gutenberg/pull/66948
diff --git a/changelog.txt b/changelog.txt
index bcbfbb2dc48449..ba6f0ce133ec1c 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,325 @@
== Changelog ==
+= 19.7.0-rc.2 =
+
+
+- Comments controller: fix issue where comments are allowed when closed (https://github.com/WordPress/gutenberg/pull/66976)
+
+
+= 19.6.2 =
+
+- Comments controller: fix issue where comments are allowed when closed [#66976](https://github.com/WordPress/gutenberg/pull/66976)
+
+
+= 19.7.0-rc.1 =
+
+
+## Changelog
+
+### Enhancements
+
+- Add "show template" to preview dropdown. ([66514](https://github.com/WordPress/gutenberg/pull/66514))
+- Iframe: Always enable for block themes, in core too. ([66800](https://github.com/WordPress/gutenberg/pull/66800))
+- Media Utils: Add experimental `sideloadMedia`. ([66378](https://github.com/WordPress/gutenberg/pull/66378))
+- Post fields: Clean up. ([66941](https://github.com/WordPress/gutenberg/pull/66941))
+- Post fields: Extract `title` from `edit-site` to `fields` package. ([66940](https://github.com/WordPress/gutenberg/pull/66940))
+- Post fields: Move `comment_status` from edit-site to fields package. ([66934](https://github.com/WordPress/gutenberg/pull/66934))
+- Post fields: Move `date` fields from `edit-site` to `fields` package. ([66938](https://github.com/WordPress/gutenberg/pull/66938))
+- Post fields: Move `status` from `edit-site` to `fields`. ([66937](https://github.com/WordPress/gutenberg/pull/66937))
+- Relocate “View” external link to end of editor header controls. ([66785](https://github.com/WordPress/gutenberg/pull/66785))
+
+#### Block Library
+- Added toggle control to set any image as feature image if no feature image is set for post. ([65896](https://github.com/WordPress/gutenberg/pull/65896))
+- Improve cover z-index solution. ([66249](https://github.com/WordPress/gutenberg/pull/66249))
+- Post Content: Add border and spacing support. ([66366](https://github.com/WordPress/gutenberg/pull/66366))
+- Query Loop: Use templateSlug and postType for more context. ([65820](https://github.com/WordPress/gutenberg/pull/65820))
+- Update text case of "Starter Content". ([66954](https://github.com/WordPress/gutenberg/pull/66954))
+- [Details Block]: Adds anchor support in details block. ([66734](https://github.com/WordPress/gutenberg/pull/66734))
+
+#### Components
+- Guide: Use small size button for page controls. ([66607](https://github.com/WordPress/gutenberg/pull/66607))
+- MenuItem: Add 40px size prop on Button. ([66596](https://github.com/WordPress/gutenberg/pull/66596))
+- Notice: Add appropriate size props to Buttons. ([66593](https://github.com/WordPress/gutenberg/pull/66593))
+- PaletteEdit: Add appropriate size props to Buttons. ([66590](https://github.com/WordPress/gutenberg/pull/66590))
+- Popover: Add small size prop to close button. ([66587](https://github.com/WordPress/gutenberg/pull/66587))
+
+#### Global Styles
+- Global styles revisions: Move focus and active state to list item. ([66780](https://github.com/WordPress/gutenberg/pull/66780))
+- Site editor: Integrate global styles controls and style book preview into the styles panel. ([65619](https://github.com/WordPress/gutenberg/pull/65619))
+
+#### DataViews
+- DataViews Fields API: Default getValueFromId supports nested objects. ([66890](https://github.com/WordPress/gutenberg/pull/66890))
+
+#### Block Editor
+- Inserter: Add 'Starter Content' category to the inserter. ([66819](https://github.com/WordPress/gutenberg/pull/66819))
+
+#### Zoom Out
+- Enable zoom out mode for non-iframe editor. ([66789](https://github.com/WordPress/gutenberg/pull/66789))
+
+#### Themes
+- Theme JSON Resolver: Remove theme json merge in resolve_theme_file_uris. ([66662](https://github.com/WordPress/gutenberg/pull/66662))
+
+#### Edit Mode
+- Image block: Add support for "more" dropdown for additional tools in Write mode. ([66605](https://github.com/WordPress/gutenberg/pull/66605))
+
+#### Style Book
+- Add a landing section to stylebook tabs. ([66545](https://github.com/WordPress/gutenberg/pull/66545))
+
+#### Media
+- Media Library: Expose filters dropdown for individual images, such as with the Image block. ([65965](https://github.com/WordPress/gutenberg/pull/65965))
+
+
+### Bug Fixes
+
+- Block toolbar: Restrict visible child calculation to known blocks. ([66702](https://github.com/WordPress/gutenberg/pull/66702))
+- ComplementaryArea: Fix button position. ([66677](https://github.com/WordPress/gutenberg/pull/66677))
+- Fix Paragraph appender layout shift (building on 66061). ([66779](https://github.com/WordPress/gutenberg/pull/66779))
+- Fix: Set the `fit-content` width for images that are not `.svg`. ([66643](https://github.com/WordPress/gutenberg/pull/66643))
+- Preference modal: Avoid fetching all reusable blocks when the site editor loads. ([66621](https://github.com/WordPress/gutenberg/pull/66621))
+- Revert "Set image width to `fit-content` to solve aspect ratio problems in Firefox. (#66217)". ([66804](https://github.com/WordPress/gutenberg/pull/66804))
+- Safari: Fix site editor template error. ([66647](https://github.com/WordPress/gutenberg/pull/66647))
+- Safari: Prevent focus capturing caused by flex display. ([66402](https://github.com/WordPress/gutenberg/pull/66402))
+- Select Mode: Hide tool selector in the post editor and force design mode. ([66784](https://github.com/WordPress/gutenberg/pull/66784))
+- Shadow panel: Make the delete modal text translatable. ([66712](https://github.com/WordPress/gutenberg/pull/66712))
+- Site Editor: Fix template for page-on-front option. ([66739](https://github.com/WordPress/gutenberg/pull/66739))
+- WP Scripts: Make watch mode more resilient for developer errors. ([66752](https://github.com/WordPress/gutenberg/pull/66752))
+- getDefaultTemplateId: Ensure entity configuration is loaded. ([66650](https://github.com/WordPress/gutenberg/pull/66650))
+
+#### Block Library
+- Cover: Fix media library image selection. ([66782](https://github.com/WordPress/gutenberg/pull/66782))
+- Cover: Show DropZone only when dragging withing the block. ([66912](https://github.com/WordPress/gutenberg/pull/66912))
+- Media & Text: Set `.wp-block-media-text__media a` display to block. ([66915](https://github.com/WordPress/gutenberg/pull/66915))
+- Prevent duplicate post format taxonomy queries. ([66627](https://github.com/WordPress/gutenberg/pull/66627))
+- Query Loop: Check for postTypeFromContext before using it. ([66655](https://github.com/WordPress/gutenberg/pull/66655))
+- Query Loop: Remove postTypeFromContext. ([66681](https://github.com/WordPress/gutenberg/pull/66681))
+
+#### Block Editor
+- Appender: Fix initial position. ([66711](https://github.com/WordPress/gutenberg/pull/66711))
+- Appender: Fix outside canvas styles. ([66630](https://github.com/WordPress/gutenberg/pull/66630))
+- Block Inspector: Restore bottom margin for RadioControl. ([66688](https://github.com/WordPress/gutenberg/pull/66688))
+- Iframed editor: Fix relative wp-content URLs. ([66751](https://github.com/WordPress/gutenberg/pull/66751))
+
+#### Global Styles
+- Section Styles: Fix insecure properties removal for inner block types and elements. ([66896](https://github.com/WordPress/gutenberg/pull/66896))
+- Style book: Reduce margin selector specificity so that it doesn't override global block styles. ([66895](https://github.com/WordPress/gutenberg/pull/66895))
+- Theme JSON: Replace top-level background style objects on merge. ([66656](https://github.com/WordPress/gutenberg/pull/66656))
+
+#### Components
+- FormTokenField: Fix token styles. ([66640](https://github.com/WordPress/gutenberg/pull/66640))
+- Storybook: Fix DataViews action modals. ([66727](https://github.com/WordPress/gutenberg/pull/66727))
+- ToggleGroupControl: Fix active background for `zero` value. ([66855](https://github.com/WordPress/gutenberg/pull/66855))
+
+#### Post Editor
+- Disable device preview button in pattern/template part/navitation editor. ([65970](https://github.com/WordPress/gutenberg/pull/65970))
+- PostTaxonomiesFlatTermSelector: Abstract wrapper component. ([66625](https://github.com/WordPress/gutenberg/pull/66625))
+- VisualEditor: Always output has-global-padding classname when in post only mode. ([66626](https://github.com/WordPress/gutenberg/pull/66626))
+
+#### DataViews
+- Fix TypeError when duplicating uncategorized theme patterns. ([66889](https://github.com/WordPress/gutenberg/pull/66889))
+- Tweak primary field in patterns grid layout. ([66733](https://github.com/WordPress/gutenberg/pull/66733))
+
+#### Meta Boxes
+- Fix: Show Meta Boxes at the bottom of the screen regardless of the current rendering mode. ([66508](https://github.com/WordPress/gutenberg/pull/66508))
+- Hide metaboxes in Zoom Out. ([66886](https://github.com/WordPress/gutenberg/pull/66886))
+
+#### Site Editor
+- DataViews: Fix 'aria-label' for pattern preview element. ([66601](https://github.com/WordPress/gutenberg/pull/66601))
+- Site Hub: Fixed navigation redirect on mobile devices for classic themes. ([66867](https://github.com/WordPress/gutenberg/pull/66867))
+
+#### Media
+- Add `x-wav` mime type for wav files in Firefox. ([66850](https://github.com/WordPress/gutenberg/pull/66850))
+- Ensure HEIC files selectable from “Upload” button. ([66292](https://github.com/WordPress/gutenberg/pull/66292))
+
+#### Patterns
+- Fix uncategorized pattern browsing when pattern has no categories. ([66945](https://github.com/WordPress/gutenberg/pull/66945))
+
+#### Interactivity API
+- Fix property modification from inherited context two or more levels above. ([66872](https://github.com/WordPress/gutenberg/pull/66872))
+
+#### Block API
+- Process Block Type: Copy deprecation to a new object instead of mutating when stabilizing supports. ([66849](https://github.com/WordPress/gutenberg/pull/66849))
+
+#### Design Tools
+- Block Gap: Fix block spacing control for axial gap supported blocks. ([66783](https://github.com/WordPress/gutenberg/pull/66783))
+
+#### Document Settings
+- Editor: Restore the 'PluginPostStatusInfo' slot position. ([66665](https://github.com/WordPress/gutenberg/pull/66665))
+
+#### Templates API
+- Fix flash when clicking template name in the editor when a plugin registered template matches a default WP theme template. ([66359](https://github.com/WordPress/gutenberg/pull/66359))
+
+#### Block bindings
+- Fix unset array key warning in block-bindings.php. ([66337](https://github.com/WordPress/gutenberg/pull/66337))
+
+
+### Accessibility
+
+- Fix : Snackbar Notice Inconsistency. ([66405](https://github.com/WordPress/gutenberg/pull/66405))
+- Image: Add `aria-haspopup` prop write mode `more` tools menu items. ([66815](https://github.com/WordPress/gutenberg/pull/66815))
+- Site Icon Focus fix. ([66952](https://github.com/WordPress/gutenberg/pull/66952))
+
+#### Components
+- Popover: Fix missing label of the headerTitle Close button. ([66813](https://github.com/WordPress/gutenberg/pull/66813))
+
+#### Post Editor
+- Fix inconsistent sidebars close buttons sizes. ([66756](https://github.com/WordPress/gutenberg/pull/66756))
+
+#### Block Library
+- Remove unnecessary tooltip from Video block Text tracks button. ([66716](https://github.com/WordPress/gutenberg/pull/66716))
+
+#### Block Editor
+- Speak 'Block moved up/down' after using keyboard actions to move up/down. ([64966](https://github.com/WordPress/gutenberg/pull/64966))
+
+#### Patterns
+- Block Patterns List: Fix visual title and tooltip inconsistencies. ([64815](https://github.com/WordPress/gutenberg/pull/64815))
+
+
+### Performance
+
+- Inline Commenting: Avoid querying comments on editor load. ([66670](https://github.com/WordPress/gutenberg/pull/66670))
+- Patterns: Receive intermediate responses while unbound request is resolving. ([66713](https://github.com/WordPress/gutenberg/pull/66713))
+- Perf metrics: Update select and other metrics to use non-empty paragraphs. ([66762](https://github.com/WordPress/gutenberg/pull/66762))
+- Site Editor: Preload settings requests. ([66488](https://github.com/WordPress/gutenberg/pull/66488))
+- Site Editor: Speed up load by preloading home and front-page templates. ([66579](https://github.com/WordPress/gutenberg/pull/66579))
+- Site editor: Preload post if needed. ([66631](https://github.com/WordPress/gutenberg/pull/66631))
+
+#### Global Styles
+- Preload user global styles based on user caps. ([66541](https://github.com/WordPress/gutenberg/pull/66541))
+
+
+### Experiments
+
+- Add `isVisible` option to fields within DataForm. ([65826](https://github.com/WordPress/gutenberg/pull/65826))
+- DataViews: Implement `isItemClickable` and `onClickItem` props. ([66365](https://github.com/WordPress/gutenberg/pull/66365))
+
+#### DataViews
+- Quick Edit - Slug Field: Improve slug preview. ([66559](https://github.com/WordPress/gutenberg/pull/66559))
+- QuickEdit: Add password field data to the pages quick edit. ([66567](https://github.com/WordPress/gutenberg/pull/66567))
+
+
+### Documentation
+
+- Add 6.6.2 to Version in WordPress. ([66870](https://github.com/WordPress/gutenberg/pull/66870))
+- Add missing properties for DataViews/DataForm components. ([66749](https://github.com/WordPress/gutenberg/pull/66749))
+- Add section about the Fields API. ([66761](https://github.com/WordPress/gutenberg/pull/66761))
+- Block Bindings: Documentation API reference. ([66251](https://github.com/WordPress/gutenberg/pull/66251))
+- Docs: Include a note about supported licenses in WordPress packages. ([66562](https://github.com/WordPress/gutenberg/pull/66562))
+- Document `filterSortAndPaginate` & `isItemValid` utilities. ([66738](https://github.com/WordPress/gutenberg/pull/66738))
+- Feat: Storybook: Improve component organisation - Navigation Category - Issue #66275. ([66658](https://github.com/WordPress/gutenberg/pull/66658))
+- Feat: Storybook: Improve component organisation - Overlays Category - Issue #66275. ([66657](https://github.com/WordPress/gutenberg/pull/66657))
+- Feat: Storybook: Improve component organisation - Selection & Input Category - Issue #66275. ([66660](https://github.com/WordPress/gutenberg/pull/66660))
+- Feat: Storybook: Improve component organisation - Typography - Issue #66275. ([66633](https://github.com/WordPress/gutenberg/pull/66633))
+- Improve readability of DataViews documentation. ([66766](https://github.com/WordPress/gutenberg/pull/66766))
+- Move documentation for filter operators to proper place. ([66743](https://github.com/WordPress/gutenberg/pull/66743))
+- Reorganize to bootstrap DataForm API section. ([66729](https://github.com/WordPress/gutenberg/pull/66729))
+- Storybook: Improve component organisation - Actions. ([66680](https://github.com/WordPress/gutenberg/pull/66680))
+- Storybook: Log `warning()` when in dev mode. ([66568](https://github.com/WordPress/gutenberg/pull/66568))
+- Update Commands documentation with the existing contexts. ([66860](https://github.com/WordPress/gutenberg/pull/66860))
+
+
+### Code Quality
+
+- BlockPatternsList: Use the Async component. ([66744](https://github.com/WordPress/gutenberg/pull/66744))
+- Core Commands: Fix add new post URL assignment. ([66830](https://github.com/WordPress/gutenberg/pull/66830))
+- Inline Commenting: Optimize store selector and misc changes. ([66592](https://github.com/WordPress/gutenberg/pull/66592))
+- Remove unnecessary boolean assignments. ([66857](https://github.com/WordPress/gutenberg/pull/66857))
+- TypeScript: Fix and improve types for private-apis. ([66667](https://github.com/WordPress/gutenberg/pull/66667))
+
+#### Block Editor
+- Fix 'useSelect' dependencies for the 'RichText' component. ([66964](https://github.com/WordPress/gutenberg/pull/66964))
+- Fix ESLint warning for 'useBlockTypesState' hook. ([66757](https://github.com/WordPress/gutenberg/pull/66757))
+- Fix React Compiler error for 'BlockProps' util component. ([66809](https://github.com/WordPress/gutenberg/pull/66809))
+- Optimize `getVisibleElementBounds` in scrollable cases. ([66546](https://github.com/WordPress/gutenberg/pull/66546))
+- Revert: Fix unable to remove empty blocks on merge (#65262) + alternative. ([66564](https://github.com/WordPress/gutenberg/pull/66564))
+- URLInput: Fix incorrect classname for suggestions. ([66714](https://github.com/WordPress/gutenberg/pull/66714))
+
+#### Site Editor
+- Avoid using edited entity state in site editor loading hook. ([66924](https://github.com/WordPress/gutenberg/pull/66924))
+- Avoid using edited post selectors in welcome guide. ([66926](https://github.com/WordPress/gutenberg/pull/66926))
+- Edit Site: Refactor to remove usage of edited entity state. ([66922](https://github.com/WordPress/gutenberg/pull/66922))
+- Edit Site: Remove leftover 'priority-queue' dependency. ([66773](https://github.com/WordPress/gutenberg/pull/66773))
+- Remove useEditedEntityRecord hook. ([66955](https://github.com/WordPress/gutenberg/pull/66955))
+
+#### Components
+- Fix React Compiler error for 'useScrollRectIntoView'. ([66498](https://github.com/WordPress/gutenberg/pull/66498))
+- Panel: Add 40px size prop to Button. ([66589](https://github.com/WordPress/gutenberg/pull/66589))
+- Radio: Deprecate 36px default size. ([66572](https://github.com/WordPress/gutenberg/pull/66572))
+- Snackbar: Use `link` variant for action Button. ([66560](https://github.com/WordPress/gutenberg/pull/66560))
+
+#### Data Layer
+- Convert the emitter module in data package to TS. ([66669](https://github.com/WordPress/gutenberg/pull/66669))
+- Data: Rename useSelect internals to fix React Compiler violations. ([66807](https://github.com/WordPress/gutenberg/pull/66807))
+- Data: Upgrade Redux to v5.0.1. ([66966](https://github.com/WordPress/gutenberg/pull/66966))
+
+#### Post Editor
+- ESLint: Fix React Compiler violations in various commands. ([66787](https://github.com/WordPress/gutenberg/pull/66787))
+- Fix TS types for editor package. ([66754](https://github.com/WordPress/gutenberg/pull/66754))
+
+#### Zoom Out
+- Zoom-out: Move default background to the iframe component. ([66284](https://github.com/WordPress/gutenberg/pull/66284))
+
+#### Design Tools
+- Typography: Stabilize typography block supports within block processing. ([63401](https://github.com/WordPress/gutenberg/pull/63401))
+
+
+### Tools
+
+#### Testing
+- Media: Check for `wav` mime type using isset. ([66947](https://github.com/WordPress/gutenberg/pull/66947))
+
+#### Build Tooling
+- Enforce the same order of fields in `package.json` files. ([66239](https://github.com/WordPress/gutenberg/pull/66239))
+- Introduce React Scanner for component usage stats. ([65463](https://github.com/WordPress/gutenberg/pull/65463))
+
+
+### Various
+
+- Style engine: Wrap array_merge in conditionals to prevent unnecessary merging. ([66661](https://github.com/WordPress/gutenberg/pull/66661))
+
+#### Block Library
+- Update placeholder text for blocks that support drag and drop. ([66842](https://github.com/WordPress/gutenberg/pull/66842))
+- update: Add Media to Add media in cover block. ([66835](https://github.com/WordPress/gutenberg/pull/66835))
+
+
+## First-time contributors
+
+The following PRs were merged by first-time contributors:
+
+- @benharri: Fix unset array key warning in block-bindings.php. ([66337](https://github.com/WordPress/gutenberg/pull/66337))
+- @benniledl: Add 6.6.2 to Version in WordPress. ([66870](https://github.com/WordPress/gutenberg/pull/66870))
+- @Infinite-Null: Media & Text: Set `.wp-block-media-text__media a` display to block. ([66915](https://github.com/WordPress/gutenberg/pull/66915))
+- @karthick-murugan: Site Icon Focus fix. ([66952](https://github.com/WordPress/gutenberg/pull/66952))
+- @rinkalpagdar: Post Content: Add border and spacing support. ([66366](https://github.com/WordPress/gutenberg/pull/66366))
+- @yogeshbhutkar: Site Hub: Fixed navigation redirect on mobile devices for classic themes. ([66867](https://github.com/WordPress/gutenberg/pull/66867))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @adamsilverstein @afercia @Aljullu @amitraj2203 @andrewserong @benharri @benniledl @carolinan @cbravobernal @DAreRodz @dcalhoun @ellatrix @fabiankaegy @gigitux @gziolo @hbhalodia @Infinite-Null @jasmussen @jorgefilipecosta @jsnajdr @juanfra @karthick-murugan @kevin940726 @louwie17 @Mamaduka @manzoorwanijk @matiasbenedetto @mikachan @mirka @n2erjo00 @ntsekouras @oandregal @ramonjd @renatho @rinkalpagdar @Soean @stokesman @swissspidy @t-hamano @tellthemachines @tyxla @up1512001 @Vrishabhsk @yogeshbhutkar @youknowriad
+
+
+= 19.6.1 =
+
+
+## Changelog
+
+### Bug Fixes
+
+#### List View
+- Block Editor: Fix stale dependencies of selectors depending on editorTool preference. ([66833](https://github.com/WordPress/gutenberg/pull/66833))
+
+
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@mcsf
+
+
= 19.6.0 =
diff --git a/docs/contributors/versions-in-wordpress.md b/docs/contributors/versions-in-wordpress.md
index 62347f2d644a61..4ba7b34da15552 100644
--- a/docs/contributors/versions-in-wordpress.md
+++ b/docs/contributors/versions-in-wordpress.md
@@ -7,6 +7,7 @@ If anything looks incorrect here, please bring it up in #core-editor in [WordPre
| Gutenberg Versions | WordPress Version |
| ------------------ | ----------------- |
| 18.6-19.3 | 6.7 |
+| 17.8-18.5 | 6.6.2 |
| 17.8-18.5 | 6.6.1 |
| 17.8-18.5 | 6.6 |
| 16.8-17.7 | 6.5.5 |
diff --git a/docs/reference-guides/core-blocks.md b/docs/reference-guides/core-blocks.md
index 4db90e9b2f8142..a27de8211c824a 100644
--- a/docs/reference-guides/core-blocks.md
+++ b/docs/reference-guides/core-blocks.md
@@ -254,7 +254,7 @@ Hide and show additional content. ([Source](https://github.com/WordPress/gutenbe
- **Name:** core/details
- **Category:** text
-- **Supports:** align (full, wide), color (background, gradients, link, text), interactivity (clientNavigation), layout (~~allowEditing~~), spacing (blockGap, margin, padding), typography (fontSize, lineHeight), ~~html~~
+- **Supports:** align (full, wide), anchor, color (background, gradients, link, text), interactivity (clientNavigation), layout (~~allowEditing~~), spacing (blockGap, margin, padding), typography (fontSize, lineHeight), ~~html~~
- **Attributes:** showContent, summary
## Embed
diff --git a/docs/reference-guides/data/data-core-edit-site.md b/docs/reference-guides/data/data-core-edit-site.md
index 775dd66a821ef0..a16c53861daada 100644
--- a/docs/reference-guides/data/data-core-edit-site.md
+++ b/docs/reference-guides/data/data-core-edit-site.md
@@ -52,6 +52,8 @@ _Returns_
### getEditedPostId
+> **Deprecated**
+
Returns the ID of the currently edited template or template part.
_Parameters_
@@ -64,6 +66,8 @@ _Returns_
### getEditedPostType
+> **Deprecated**
+
Returns the current edited post type (wp_template or wp_template_part).
_Parameters_
@@ -189,6 +193,8 @@ _Returns_
### isPage
+> **Deprecated**
+
Whether or not the editor has a page loaded into it.
_Related_
@@ -273,6 +279,8 @@ _Parameters_
### setEditedEntity
+> **Deprecated**
+
Action that sets an edited entity.
_Parameters_
@@ -287,6 +295,8 @@ _Returns_
### setEditedPostContext
+> **Deprecated**
+
Set's the current block editor context.
_Parameters_
@@ -345,6 +355,8 @@ _Parameters_
### setNavigationMenu
+> **Deprecated**
+
Action that sets a navigation menu.
_Parameters_
@@ -385,6 +397,8 @@ _Returns_
### setTemplatePart
+> **Deprecated**
+
Action that sets a template part.
_Parameters_
diff --git a/gutenberg.php b/gutenberg.php
index 89e65de4e94794..f79182f3ead567 100644
--- a/gutenberg.php
+++ b/gutenberg.php
@@ -5,7 +5,7 @@
* Description: Printing since 1440. This is the development plugin for the block editor, site editor, and other future WordPress core functionality.
* Requires at least: 6.5
* Requires PHP: 7.2
- * Version: 19.6.0
+ * Version: 19.7.0-rc.2
* Author: Gutenberg Team
* Text Domain: gutenberg
*
diff --git a/lib/class-wp-theme-json-gutenberg.php b/lib/class-wp-theme-json-gutenberg.php
index dafa8b25f278fc..10f80c3f3cdb7b 100644
--- a/lib/class-wp-theme-json-gutenberg.php
+++ b/lib/class-wp-theme-json-gutenberg.php
@@ -2749,9 +2749,21 @@ private static function get_block_nodes( $theme_json, $selectors = array(), $opt
foreach ( $theme_json['styles']['blocks'] as $name => $node ) {
$node_path = array( 'styles', 'blocks', $name );
if ( $include_node_paths_only ) {
- $nodes[] = array(
+ $variation_paths = array();
+ if ( $include_variations && isset( $node['variations'] ) ) {
+ foreach ( $node['variations'] as $variation => $variation_node ) {
+ $variation_paths[] = array(
+ 'path' => array( 'styles', 'blocks', $name, 'variations', $variation ),
+ );
+ }
+ }
+ $node = array(
'path' => $node_path,
);
+ if ( ! empty( $variation_paths ) ) {
+ $node['variations'] = $variation_paths;
+ }
+ $nodes[] = $node;
} else {
$selector = null;
if ( isset( $selectors[ $name ]['selector'] ) ) {
@@ -3565,26 +3577,12 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme
$variation_output = static::remove_insecure_styles( $variation_input );
- // Process a variation's elements and element pseudo selector styles.
- if ( isset( $variation_input['elements'] ) ) {
- foreach ( $valid_element_names as $element_name ) {
- $element_input = $variation_input['elements'][ $element_name ] ?? null;
- if ( $element_input ) {
- $element_output = static::remove_insecure_styles( $element_input );
-
- if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) {
- foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) {
- if ( isset( $element_input[ $pseudo_selector ] ) ) {
- $element_output[ $pseudo_selector ] = static::remove_insecure_styles( $element_input[ $pseudo_selector ] );
- }
- }
- }
+ if ( isset( $variation_input['blocks'] ) ) {
+ $variation_output['blocks'] = static::remove_insecure_inner_block_styles( $variation_input['blocks'] );
+ }
- if ( ! empty( $element_output ) ) {
- _wp_array_set( $variation_output, array( 'elements', $element_name ), $element_output );
- }
- }
- }
+ if ( isset( $variation_input['elements'] ) ) {
+ $variation_output['elements'] = static::remove_insecure_element_styles( $variation_input['elements'] );
}
if ( ! empty( $variation_output ) ) {
@@ -3622,6 +3620,59 @@ public static function remove_insecure_properties( $theme_json, $origin = 'theme
return $theme_json;
}
+ /**
+ * Remove insecure element styles within a variation or block.
+ *
+ * @since 6.8.0
+ *
+ * @param array $elements The elements to process.
+ * @return array The sanitized elements styles.
+ */
+ protected static function remove_insecure_element_styles( $elements ) {
+ $sanitized = array();
+ $valid_element_names = array_keys( static::ELEMENTS );
+
+ foreach ( $valid_element_names as $element_name ) {
+ $element_input = $elements[ $element_name ] ?? null;
+ if ( $element_input ) {
+ $element_output = static::remove_insecure_styles( $element_input );
+
+ if ( isset( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] ) ) {
+ foreach ( static::VALID_ELEMENT_PSEUDO_SELECTORS[ $element_name ] as $pseudo_selector ) {
+ if ( isset( $element_input[ $pseudo_selector ] ) ) {
+ $element_output[ $pseudo_selector ] = static::remove_insecure_styles( $element_input[ $pseudo_selector ] );
+ }
+ }
+ }
+
+ $sanitized[ $element_name ] = $element_output;
+ }
+ }
+ return $sanitized;
+ }
+
+ /**
+ * Remove insecure styles from inner blocks and their elements.
+ *
+ * @since 6.8.0
+ *
+ * @param array $blocks The block styles to process.
+ * @return array Sanitized block type styles.
+ */
+ protected static function remove_insecure_inner_block_styles( $blocks ) {
+ $sanitized = array();
+ foreach ( $blocks as $block_type => $block_input ) {
+ $block_output = static::remove_insecure_styles( $block_input );
+
+ if ( isset( $block_input['elements'] ) ) {
+ $block_output['elements'] = static::remove_insecure_element_styles( $block_input['elements'] );
+ }
+
+ $sanitized[ $block_type ] = $block_output;
+ }
+ return $sanitized;
+ }
+
/**
* Processes a setting node and returns the same node
* without the insecure settings.
diff --git a/lib/compat/wordpress-6.7/compat.php b/lib/compat/wordpress-6.7/compat.php
index cd533a42cc528e..e58eca56ef71f9 100644
--- a/lib/compat/wordpress-6.7/compat.php
+++ b/lib/compat/wordpress-6.7/compat.php
@@ -40,7 +40,13 @@ function _gutenberg_add_block_templates_from_registry( $query_result, $query, $t
}
if ( ! isset( $query['wp_id'] ) ) {
- $template_files = _gutenberg_get_block_templates_files( $template_type, $query );
+ // We need to unset the post_type query param because some templates
+ // would be excluded otherwise, like `page.html` when looking for
+ // `page` templates.
+ // See: https://github.com/WordPress/gutenberg/issues/65584
+ $template_files_query = $query;
+ unset( $template_files_query['post_type'] );
+ $template_files = _gutenberg_get_block_templates_files( $template_type, $template_files_query );
/*
* Add templates registered in the template registry. Filtering out the ones which have a theme file.
diff --git a/lib/compat/wordpress-6.8/class-gutenberg-rest-comment-controller-6-8.php b/lib/compat/wordpress-6.8/class-gutenberg-rest-comment-controller-6-8.php
index 981b9dbd840319..60b45b1a63adef 100644
--- a/lib/compat/wordpress-6.8/class-gutenberg-rest-comment-controller-6-8.php
+++ b/lib/compat/wordpress-6.8/class-gutenberg-rest-comment-controller-6-8.php
@@ -10,6 +10,10 @@
class Gutenberg_REST_Comment_Controller_6_8 extends WP_REST_Comments_Controller {
public function create_item_permissions_check( $request ) {
+ if ( empty( $request['comment_type'] ) || 'comment' === $request['comment_type'] ) {
+ return parent::create_item_permissions_check( $request );
+ }
+
if ( ! is_user_logged_in() ) {
if ( get_option( 'comment_registration' ) ) {
return new WP_Error(
@@ -90,14 +94,6 @@ public function create_item_permissions_check( $request ) {
);
}
- if ( 'draft' === $post->post_status && 'comment' === $request['comment_type'] ) {
- return new WP_Error(
- 'rest_comment_draft_post',
- __( 'Sorry, you are not allowed to create a comment on this post.' ),
- array( 'status' => 403 )
- );
- }
-
if ( 'trash' === $post->post_status ) {
return new WP_Error(
'rest_comment_trash_post',
@@ -114,14 +110,6 @@ public function create_item_permissions_check( $request ) {
);
}
- if ( ! comments_open( $post->ID ) && 'comment' === $request['comment_type'] ) {
- return new WP_Error(
- 'rest_comment_closed',
- __( 'Sorry, comments are closed for this item.' ),
- array( 'status' => 403 )
- );
- }
-
return true;
}
}
diff --git a/lib/compat/wordpress-6.8/functions.php b/lib/compat/wordpress-6.8/functions.php
new file mode 100644
index 00000000000000..a4658d1a182c73
--- /dev/null
+++ b/lib/compat/wordpress-6.8/functions.php
@@ -0,0 +1,35 @@
+ 'audio/wav'`
+ *
+ * @since 6.8.0
+ *
+ * @param string[] $mime_types Mime types.
+ * @return string[] Mime types keyed by the file extension regex corresponding to those types.
+*/
+function gutenberg_get_mime_types_6_8( $mime_types ) {
+ /*
+ * Only add support if there is existing support for 'wav'.
+ * Some plugins may have deliberately disabled it.
+ */
+ if ( ! isset( $mime_types['wav'] ) && ! isset( $mime_types['wav|x-wav'] ) ) {
+ return $mime_types;
+ }
+ /*
+ * Also, given that other themes or plugins may have already
+ * tried to add x-wav type support, only
+ * add the mime type if it doesn't already exist
+ * to avoid overriding any customizations.
+ */
+ if ( ! isset( $mime_types['x-wav'] ) && ! isset( $mime_types['wav|x-wav'] ) ) {
+ $mime_types['x-wav'] = 'audio/wav';
+ }
+ return $mime_types;
+}
+add_filter( 'mime_types', 'gutenberg_get_mime_types_6_8', 99 );
diff --git a/lib/load.php b/lib/load.php
index 6236f0eb04b3c6..d7e4a33cd02c92 100644
--- a/lib/load.php
+++ b/lib/load.php
@@ -119,6 +119,7 @@ function gutenberg_is_experiment_enabled( $name ) {
// WordPress 6.8 compat.
require __DIR__ . '/compat/wordpress-6.8/preload.php';
require __DIR__ . '/compat/wordpress-6.8/blocks.php';
+require __DIR__ . '/compat/wordpress-6.8/functions.php';
// Experimental features.
require __DIR__ . '/experimental/block-editor-settings-mobile.php';
diff --git a/package-lock.json b/package-lock.json
index 80abc752c92120..b4d618b6da02ec 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "gutenberg",
- "version": "19.6.0",
+ "version": "19.7.0-rc.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "gutenberg",
- "version": "19.6.0",
+ "version": "19.7.0-rc.2",
"hasInstallScript": true,
"license": "GPL-2.0-or-later",
"workspaces": [
@@ -135,7 +135,7 @@
"react-scanner": "1.2.0",
"react-test-renderer": "18.3.1",
"reassure": "0.7.1",
- "redux": "4.1.2",
+ "redux": "5.0.1",
"resize-observer-polyfill": "1.5.1",
"rimraf": "3.0.2",
"rtlcss": "4.0.0",
@@ -21155,6 +21155,7 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -43764,12 +43765,9 @@
}
},
"node_modules/redux": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz",
- "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==",
- "dependencies": {
- "@babel/runtime": "^7.9.2"
- }
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
+ "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="
},
"node_modules/regenerate": {
"version": "1.4.2",
@@ -53963,7 +53961,7 @@
"equivalent-key-map": "^0.2.2",
"is-plain-object": "^5.0.0",
"is-promise": "^4.0.0",
- "redux": "^4.1.2",
+ "redux": "^5.0.1",
"rememo": "^4.0.2",
"use-memo-one": "^1.1.1"
},
@@ -54685,6 +54683,7 @@
"@wordpress/core-data": "*",
"@wordpress/data": "*",
"@wordpress/dataviews": "*",
+ "@wordpress/date": "*",
"@wordpress/element": "*",
"@wordpress/hooks": "*",
"@wordpress/html-entities": "*",
@@ -54700,6 +54699,7 @@
"@wordpress/warning": "*",
"change-case": "4.1.2",
"client-zip": "^2.4.5",
+ "clsx": "2.1.1",
"remove-accents": "^0.5.0"
},
"engines": {
diff --git a/package.json b/package.json
index 741475d8177705..87cf9a5cacd943 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gutenberg",
- "version": "19.6.0",
+ "version": "19.7.0-rc.2",
"private": true,
"description": "A new WordPress editor experience.",
"author": "The WordPress Contributors",
@@ -144,7 +144,7 @@
"react-scanner": "1.2.0",
"react-test-renderer": "18.3.1",
"reassure": "0.7.1",
- "redux": "4.1.2",
+ "redux": "5.0.1",
"resize-observer-polyfill": "1.5.1",
"rimraf": "3.0.2",
"rtlcss": "4.0.0",
diff --git a/packages/block-editor/src/components/block-list/block.js b/packages/block-editor/src/components/block-list/block.js
index 2215625596dc5c..6d4655189d9723 100644
--- a/packages/block-editor/src/components/block-list/block.js
+++ b/packages/block-editor/src/components/block-list/block.js
@@ -24,8 +24,8 @@ import {
isReusableBlock,
getBlockDefaultClassName,
hasBlockSupport,
+ createBlock,
store as blocksStore,
- privateApis as blocksPrivateApis,
} from '@wordpress/blocks';
import { withFilters } from '@wordpress/components';
import { withDispatch, useDispatch, useSelect } from '@wordpress/data';
@@ -47,8 +47,6 @@ import { PrivateBlockContext } from './private-block-context';
import { unlock } from '../../lock-unlock';
-const { isUnmodifiedBlockContent } = unlock( blocksPrivateApis );
-
/**
* Merges wrapper props with special handling for classNames and styles.
*
@@ -313,6 +311,7 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
function switchToDefaultOrRemove() {
const block = getBlock( clientId );
const defaultBlockName = getDefaultBlockName();
+ const defaultBlockType = getBlockType( defaultBlockName );
if ( getBlockName( clientId ) !== defaultBlockName ) {
const replacement = switchToBlockType(
block,
@@ -329,6 +328,15 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
selectBlock( nextBlockClientId );
} );
}
+ } else if ( defaultBlockType.merge ) {
+ const attributes = defaultBlockType.merge(
+ {},
+ block.attributes
+ );
+ replaceBlocks(
+ [ clientId ],
+ [ createBlock( defaultBlockName, attributes ) ]
+ );
}
}
@@ -342,6 +350,9 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
* to the moved block.
*/
function moveFirstItemUp( _clientId, changeSelection = true ) {
+ const wrapperBlockName = getBlockName( _clientId );
+ const wrapperBlockType = getBlockType( wrapperBlockName );
+ const isTextualWrapper = wrapperBlockType.category === 'text';
const targetRootClientId = getBlockRootClientId( _clientId );
const blockOrder = getBlockOrder( _clientId );
const [ firstClientId ] = blockOrder;
@@ -351,50 +362,14 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
isUnmodifiedBlock( getBlock( firstClientId ) )
) {
removeBlock( _clientId );
- } else {
+ } else if ( isTextualWrapper ) {
registry.batch( () => {
- const firstBlock = getBlock( firstClientId );
- const isFirstBlockContentUnmodified =
- isUnmodifiedBlockContent( firstBlock );
- const defaultBlockName = getDefaultBlockName();
- const replacement = switchToBlockType(
- firstBlock,
- defaultBlockName
- );
- const canTransformToDefaultBlock =
- !! replacement?.length &&
- replacement.every( ( block ) =>
- canInsertBlockType( block.name, _clientId )
- );
-
if (
- isFirstBlockContentUnmodified &&
- canTransformToDefaultBlock
- ) {
- // Step 1: If the block is empty and can be transformed to the default block type.
- replaceBlocks(
- firstClientId,
- replacement,
- changeSelection
- );
- } else if (
- isFirstBlockContentUnmodified &&
- firstBlock.name === defaultBlockName
- ) {
- // Step 2: If the block is empty and is already the default block type.
- removeBlock( firstClientId );
- const nextBlockClientId =
- getNextBlockClientId( clientId );
- if ( nextBlockClientId ) {
- selectBlock( nextBlockClientId );
- }
- } else if (
canInsertBlockType(
- firstBlock.name,
+ getBlockName( firstClientId ),
targetRootClientId
)
) {
- // Step 3: If the block can be moved up.
moveBlocksToPosition(
[ firstClientId ],
_clientId,
@@ -402,17 +377,21 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
getBlockIndex( _clientId )
);
} else {
- const canLiftAndTransformToDefaultBlock =
- !! replacement?.length &&
+ const replacement = switchToBlockType(
+ getBlock( firstClientId ),
+ getDefaultBlockName()
+ );
+
+ if (
+ replacement &&
+ replacement.length &&
replacement.every( ( block ) =>
canInsertBlockType(
block.name,
targetRootClientId
)
- );
-
- if ( canLiftAndTransformToDefaultBlock ) {
- // Step 4: If the block can be transformed to the default block type and moved up.
+ )
+ ) {
insertBlocks(
replacement,
getBlockIndex( _clientId ),
@@ -421,7 +400,6 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
);
removeBlock( firstClientId, false );
} else {
- // Step 5: Continue the default behavior.
switchToDefaultOrRemove();
}
}
@@ -433,6 +411,8 @@ const applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {
removeBlock( _clientId, false );
}
} );
+ } else {
+ switchToDefaultOrRemove();
}
}
diff --git a/packages/block-editor/src/components/block-lock/modal.js b/packages/block-editor/src/components/block-lock/modal.js
index 7d09f7b63f8cd0..3be23f6adde146 100644
--- a/packages/block-editor/src/components/block-lock/modal.js
+++ b/packages/block-editor/src/components/block-lock/modal.js
@@ -24,7 +24,7 @@ import useBlockDisplayInformation from '../use-block-display-information';
import { store as blockEditorStore } from '../../store';
// Entity based blocks which allow edit locking
-const ALLOWS_EDIT_LOCKING = [ 'core/block', 'core/navigation' ];
+const ALLOWS_EDIT_LOCKING = [ 'core/navigation' ];
function getTemplateLockValue( lock ) {
// Prevents all operations.
diff --git a/packages/block-editor/src/components/block-mover/README.md b/packages/block-editor/src/components/block-mover/README.md
index 38520072b4ac86..b781de773ef9f3 100644
--- a/packages/block-editor/src/components/block-mover/README.md
+++ b/packages/block-editor/src/components/block-mover/README.md
@@ -1,12 +1,10 @@
-# Block mover
+# BlockMover
-Block movers allow moving blocks inside the editor using up and down buttons.
+BlockMover component allows moving blocks inside the editor using up and down buttons.
![Block mover screenshot](https://make.wordpress.org/core/files/2020/08/block-mover-screenshot.png)
-## Development guidelines
-
-### Usage
+## Usage
Shows the block mover buttons in the block toolbar.
@@ -15,13 +13,22 @@ import { BlockMover } from '@wordpress/block-editor';
const MyMover = () =>
The mover by default is vertical
-- But it can also accommodate horizontal blocks. -
-We can also hide the drag handle.
-