diff --git a/backport-changelog/6.8/7643.md b/backport-changelog/6.8/7643.md
index e3c923a487be06..f83aa411f9fff3 100644
--- a/backport-changelog/6.8/7643.md
+++ b/backport-changelog/6.8/7643.md
@@ -1,3 +1,4 @@
https://github.com/WordPress/wordpress-develop/pull/7643
* https://github.com/WordPress/gutenberg/pull/66432
+* https://github.com/WordPress/gutenberg/pull/66556
diff --git a/backport-changelog/6.8/7687.md b/backport-changelog/6.8/7687.md
new file mode 100644
index 00000000000000..f1505645df20c6
--- /dev/null
+++ b/backport-changelog/6.8/7687.md
@@ -0,0 +1,3 @@
+https://github.com/WordPress/wordpress-develop/pull/7687
+
+* https://github.com/WordPress/gutenberg/pull/66488
diff --git a/changelog.txt b/changelog.txt
index ca5175bc74eb46..420a6392415b36 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,5 +1,337 @@
== Changelog ==
+= 19.6.0-rc.2 =
+
+## Changelog
+
+### Enhancements
+
+- BlockGroupToolbar: Better i18n context for toolbar labels. ([66211](https://github.com/WordPress/gutenberg/pull/66211))
+- Core Data: Add the 'getEntitiesConfig' resolver. ([65871](https://github.com/WordPress/gutenberg/pull/65871))
+- Create Block: Adds `--target-dir` flag to allow the tool to target where to scaffold. ([53781](https://github.com/WordPress/gutenberg/pull/53781))
+- Editor Interface: Remove small header from global styles/plugin sidebar. ([64474](https://github.com/WordPress/gutenberg/pull/64474))
+- Remove purple coloring from DocumentBar and PostCard. ([66451](https://github.com/WordPress/gutenberg/pull/66451))
+- Scripts: Add BlueOak-1.0.0 license to GPL2 compatible. ([66139](https://github.com/WordPress/gutenberg/pull/66139))
+- WP Scripts: Add a `--root-folder` argument to the `plugin-zip` command. ([61375](https://github.com/WordPress/gutenberg/pull/61375))
+
+#### Components
+- Add elevation tokens to storybook. ([66122](https://github.com/WordPress/gutenberg/pull/66122))
+- Add foundations:Elevation to storybook. ([66124](https://github.com/WordPress/gutenberg/pull/66124))
+- Add radius foundation and tokens to storybook. ([66219](https://github.com/WordPress/gutenberg/pull/66219))
+- Combobox, FormTokenField: Show message when no matches found. ([66142](https://github.com/WordPress/gutenberg/pull/66142))
+- Storybook: Organizes components under 'Utilities'. ([66210](https://github.com/WordPress/gutenberg/pull/66210))
+- Tabs: Expose active tab item props, use ariakit prop types. ([66223](https://github.com/WordPress/gutenberg/pull/66223))
+- Tabs: Remove custom logic. ([66097](https://github.com/WordPress/gutenberg/pull/66097))
+- `DropdownMenuV2`: Rename to `Menu`. ([66289](https://github.com/WordPress/gutenberg/pull/66289))
+
+#### Block Library
+- Add Transformation from Separator to Spacer. ([66230](https://github.com/WordPress/gutenberg/pull/66230))
+- Add lightbox option in gallery block link control. ([64014](https://github.com/WordPress/gutenberg/pull/64014))
+- Archives: Add border block support. ([63400](https://github.com/WordPress/gutenberg/pull/63400))
+- Border support added to comments. ([66354](https://github.com/WordPress/gutenberg/pull/66354))
+- Cover Block: Add Image Resolution options. ([62926](https://github.com/WordPress/gutenberg/pull/62926))
+- HTML Block: Force HTML preview in view mode. ([66440](https://github.com/WordPress/gutenberg/pull/66440))
+
+#### Zoom Out
+- Add keyboard shortcut in editor. ([66400](https://github.com/WordPress/gutenberg/pull/66400))
+- Iterate zoom out shuffle into a more visual control. ([66194](https://github.com/WordPress/gutenberg/pull/66194))
+- Use the zoom-level value to scale the iframe. ([66280](https://github.com/WordPress/gutenberg/pull/66280))
+
+#### Site Editor
+- Remove synchronization of canvas mode into store. ([66213](https://github.com/WordPress/gutenberg/pull/66213))
+- Style Book: Clean up layout. ([66255](https://github.com/WordPress/gutenberg/pull/66255))
+- Update site icon and title position. ([66171](https://github.com/WordPress/gutenberg/pull/66171))
+
+#### Data Views
+- Fix alignment of action items in list layout. ([66273](https://github.com/WordPress/gutenberg/pull/66273))
+- Templates: Hide media field in list view. ([66573](https://github.com/WordPress/gutenberg/pull/66573))
+
+#### Global Styles
+- Backport: Caching of global styles for blocks from core. ([66349](https://github.com/WordPress/gutenberg/pull/66349))
+- Style Book: Add color tab. ([65692](https://github.com/WordPress/gutenberg/pull/65692))
+
+#### Real-time Collaboration
+- Inline Commenting: Disable comments on published posts for now. ([66583](https://github.com/WordPress/gutenberg/pull/66583))
+
+#### Post Editor
+- Set `ResizableEditor` height based on border-box. ([66342](https://github.com/WordPress/gutenberg/pull/66342))
+
+#### Icons
+- Add align-item related icons. ([66242](https://github.com/WordPress/gutenberg/pull/66242))
+
+#### REST API
+- Backport from WordPress core: Improvements for the post format query loop filter. ([66037](https://github.com/WordPress/gutenberg/pull/66037))
+
+
+### New APIs
+
+- Stabilize isPreviewMode flag. ([66149](https://github.com/WordPress/gutenberg/pull/66149))
+- scripts: Add build-blocks-manifest command. ([65866](https://github.com/WordPress/gutenberg/pull/65866))
+
+
+### Bug Fixes
+
+- Create block: Ensure $slug is replaced with passed slug. ([66528](https://github.com/WordPress/gutenberg/pull/66528))
+- Fix extraneous scrollbar in device previews. ([66494](https://github.com/WordPress/gutenberg/pull/66494))
+- GH-66090: Self nesting and circular nesting block fix. ([66121](https://github.com/WordPress/gutenberg/pull/66121))
+- Global styles: Move preload paths filter to 6.7 (previously 6.8). ([66543](https://github.com/WordPress/gutenberg/pull/66543))
+- Miscellaneous i18n fixes. ([66510](https://github.com/WordPress/gutenberg/pull/66510))
+- Remove most of the occurrences of the verb toggle. ([66371](https://github.com/WordPress/gutenberg/pull/66371))
+- SpacingSizesControl: Use generic label for linked button. ([66304](https://github.com/WordPress/gutenberg/pull/66304))
+
+#### Zoom Out
+- Disable zoom out toggle button when Style Book is open. ([66228](https://github.com/WordPress/gutenberg/pull/66228))
+- Don't switch editor mode when changing entities. ([66452](https://github.com/WordPress/gutenberg/pull/66452))
+- Fix scaling animation for device previews. ([66132](https://github.com/WordPress/gutenberg/pull/66132))
+- Fix zoom out not persisting while switching between editor and code editor. ([65932](https://github.com/WordPress/gutenberg/pull/65932))
+- Fix zoom out shortcut on Windows. ([66506](https://github.com/WordPress/gutenberg/pull/66506))
+- Fix: Activate zoom out on large viewport. ([66308](https://github.com/WordPress/gutenberg/pull/66308))
+- Hide slots and grouping buttons. ([66243](https://github.com/WordPress/gutenberg/pull/66243))
+- Remove zoom-out toolbar. ([66039](https://github.com/WordPress/gutenberg/pull/66039))
+- Resets the Zoom on viewed/edited entity change. ([66232](https://github.com/WordPress/gutenberg/pull/66232))
+- Revise zoom layout shift fix. ([66390](https://github.com/WordPress/gutenberg/pull/66390))
+- Zoom-out: Rely on zoom-level instead of zoom-out mode. ([66141](https://github.com/WordPress/gutenberg/pull/66141))
+
+#### Block Editor
+- Block inserter: Prevent editor from crashing if `blockType.parent` is a string. ([66234](https://github.com/WordPress/gutenberg/pull/66234))
+- Block toolbar: Account for scrollable blocks that affect the position of the block toolbar. ([66188](https://github.com/WordPress/gutenberg/pull/66188))
+- Fix extra scrollbar appearing when searching in the inserter. ([66229](https://github.com/WordPress/gutenberg/pull/66229))
+- Fix: Show paragraph block variations in rich text inserter. ([66318](https://github.com/WordPress/gutenberg/pull/66318))
+- Group: Fix padding select. ([65857](https://github.com/WordPress/gutenberg/pull/65857))
+- Link Shortcut: Only trigger the link shortcut if there's a text selection. ([66056](https://github.com/WordPress/gutenberg/pull/66056))
+- Remove relative position from sidebar tabpanel. ([66267](https://github.com/WordPress/gutenberg/pull/66267))
+- Rich text: Remove empty file. ([66553](https://github.com/WordPress/gutenberg/pull/66553))
+- Zoom Out: Fix bouncy drop zones. ([66399](https://github.com/WordPress/gutenberg/pull/66399))
+
+#### Components
+- ColorPalette: Prevent overflow of custom color button background. ([66152](https://github.com/WordPress/gutenberg/pull/66152))
+- Fix: Text overflow in Patterns filter. ([66504](https://github.com/WordPress/gutenberg/pull/66504))
+- RadioGroup: Fix arrow key navigation in RTL. ([66202](https://github.com/WordPress/gutenberg/pull/66202))
+- Tabs and TabPanel: Fix arrow key navigation in RTL. ([66201](https://github.com/WordPress/gutenberg/pull/66201))
+- Tabs and ToggleGroupControl: Round indicator size. ([66426](https://github.com/WordPress/gutenberg/pull/66426))
+- Tabs: Fix animation timings. ([66198](https://github.com/WordPress/gutenberg/pull/66198))
+- Tabs: Override tablist's tabindex only when necessary. ([66209](https://github.com/WordPress/gutenberg/pull/66209))
+- Tabs: Restore vertical alignment for tabs content. ([66215](https://github.com/WordPress/gutenberg/pull/66215))
+- Tabs: Update indicator more reactively. ([66207](https://github.com/WordPress/gutenberg/pull/66207))
+
+#### Post Editor
+- Always force iframe in pattern editor. ([65887](https://github.com/WordPress/gutenberg/pull/65887))
+- Editor: Multi-entity saving: Show correct count of entities to be saved. ([66482](https://github.com/WordPress/gutenberg/pull/66482))
+- Fix : "Set featured image" button border flashes on focus. ([66092](https://github.com/WordPress/gutenberg/pull/66092))
+- Fix Parent Check Condition in `buildTermsTree`. ([66006](https://github.com/WordPress/gutenberg/pull/66006))
+- Fix: Improve the DocumentBar post type label for the Homepage and Posts Page cases. ([66355](https://github.com/WordPress/gutenberg/pull/66355))
+- PostTaxonomiesFlatTermSelector: Restore space between tag list and most used tags. ([66566](https://github.com/WordPress/gutenberg/pull/66566))
+
+#### Block Library
+- Block registration: Normalize blockType.parent to `array`. ([66250](https://github.com/WordPress/gutenberg/pull/66250))
+- Button Block: Apply Stretch Styles Correctly. ([64770](https://github.com/WordPress/gutenberg/pull/64770))
+- Buttons: Fix the initial white space in nofollow rel. ([66303](https://github.com/WordPress/gutenberg/pull/66303))
+- Fix - Image block: Aspect ratio not responding when dimensions are not set. ([66217](https://github.com/WordPress/gutenberg/pull/66217))
+- Navigation block: Fix block appender size. ([66153](https://github.com/WordPress/gutenberg/pull/66153))
+
+#### Site Editor
+- Edit Site: Fix canvasMode var. ([66316](https://github.com/WordPress/gutenberg/pull/66316))
+- Fix button hover style in sidebar navigation screen. ([66505](https://github.com/WordPress/gutenberg/pull/66505))
+- Remove toggle verb from post list data views 'Toggle details panel'. ([66334](https://github.com/WordPress/gutenberg/pull/66334))
+- Revert 66431 (Site editor: Remove "default" admin CSS). ([66540](https://github.com/WordPress/gutenberg/pull/66540))
+- Restore block-library editor.css outside canvas. ([66556](https://github.com/WordPress/gutenberg/pull/66556))
+
+#### Meta Boxes
+- Typo metabox pane is a meta box panel. ([66502](https://github.com/WordPress/gutenberg/pull/66502))
+
+#### REST API
+- Preload: Fix multiple regressions around global styles. ([66468](https://github.com/WordPress/gutenberg/pull/66468))
+
+#### Style Book
+- Fix comment output in styles. ([66439](https://github.com/WordPress/gutenberg/pull/66439))
+
+#### Saving
+- Site editor: Fix save shortcut. ([66423](https://github.com/WordPress/gutenberg/pull/66423))
+
+#### CSS & Styling
+- Fix the navigation issue inside cover blocks. ([66093](https://github.com/WordPress/gutenberg/pull/66093))
+
+
+### Accessibility
+
+- Update the speak messages when switching editor modes. ([66278](https://github.com/WordPress/gutenberg/pull/66278))
+
+#### Post Editor
+- Add featured image alt text. ([66189](https://github.com/WordPress/gutenberg/pull/66189))
+- Fix : Badge Color contrast. ([66360](https://github.com/WordPress/gutenberg/pull/66360))
+
+#### Block Editor
+- ImageSizeControls: Replace ButtonGroup with ToggleGroupControl. ([65386](https://github.com/WordPress/gutenberg/pull/65386))
+- Improve the link preview accessibility and labels. ([60908](https://github.com/WordPress/gutenberg/pull/60908))
+
+#### Block Library
+- Search: Replace ButtonGroup usage with ToggleGroupControl. ([65340](https://github.com/WordPress/gutenberg/pull/65340))
+
+#### Global Styles
+- Global styles menu: Avoid visible labels and accessible names mismatch. ([65124](https://github.com/WordPress/gutenberg/pull/65124))
+
+#### Site Editor
+- Fix Global styles panel header buttons text overlap for 'Show button text labels'. ([63243](https://github.com/WordPress/gutenberg/pull/63243))
+
+
+### Performance
+
+- Backport from Core: Reuse block metadata in WP_Theme_JSON::Get_valid_block_style_variations() for better performance. ([66539](https://github.com/WordPress/gutenberg/pull/66539))
+- tests : - Fix/compare performance with correct branch. ([66196](https://github.com/WordPress/gutenberg/pull/66196))
+
+#### Site Editor
+- Remove "default" admin CSS. ([66431](https://github.com/WordPress/gutenberg/pull/66431))
+- Remove content styles outside canvas. ([66432](https://github.com/WordPress/gutenberg/pull/66432))
+
+#### Block bindings
+- Use `getEntityConfig` instead of `getPostTypes` to get available slugs. ([66101](https://github.com/WordPress/gutenberg/pull/66101))
+
+
+### Experiments
+
+- Add Inline comment experimental flag. ([60622](https://github.com/WordPress/gutenberg/pull/60622))
+- QuickEdit: Add slug field control. ([65196](https://github.com/WordPress/gutenberg/pull/65196))
+
+#### Data Views
+- Quick Edit: Fix JS error when bulk editing pages. ([66358](https://github.com/WordPress/gutenberg/pull/66358))
+- QuickEdit: Add Featured Image Control. ([64496](https://github.com/WordPress/gutenberg/pull/64496))
+- QuickEdit: Add Parent field. ([66527](https://github.com/WordPress/gutenberg/pull/66527))
+
+
+### Documentation
+
+- BaseControl: Auto-generate readme. ([66500](https://github.com/WordPress/gutenberg/pull/66500))
+- Components: Prevent generated readmes duplicating h1 elements when published. ([66180](https://github.com/WordPress/gutenberg/pull/66180))
+- Correct documentation on display type in flow layouts. ([66224](https://github.com/WordPress/gutenberg/pull/66224))
+- Docs: Interactivity API - Add documentation for `getServerState()` and `getServerContext()`. ([66104](https://github.com/WordPress/gutenberg/pull/66104))
+- Fix undo/redo Button size in Storybook playground. ([66538](https://github.com/WordPress/gutenberg/pull/66538))
+- Fix: JSON Schema Docgen doesn't work on Windows OS. ([66414](https://github.com/WordPress/gutenberg/pull/66414))
+- ItemGroup: Improve stories to default to bordered and separated. ([66191](https://github.com/WordPress/gutenberg/pull/66191))
+- README: Add Storybook badge. ([66529](https://github.com/WordPress/gutenberg/pull/66529))
+- Remove meetings that no longer occur from Contributor Guide. ([66421](https://github.com/WordPress/gutenberg/pull/66421))
+- Site editor routes: Add documentation for areas and prevent `edit` area from rendering when canvas is `edit`. ([66309](https://github.com/WordPress/gutenberg/pull/66309))
+- Update documentation about build process changes. ([66428](https://github.com/WordPress/gutenberg/pull/66428))
+- docs: Example for getSelectedBlock. ([66108](https://github.com/WordPress/gutenberg/pull/66108))
+
+
+### Code Quality
+
+- Block editor: Remove reusable blocks stylesheet from iframe. ([66285](https://github.com/WordPress/gutenberg/pull/66285))
+- Compose: Fix React Complier error for 'useCopyToClipboard'. ([66444](https://github.com/WordPress/gutenberg/pull/66444))
+- Composer: Fix React Compiler errors for 'useDropZone'. ([66469](https://github.com/WordPress/gutenberg/pull/66469))
+- Fields: Fix React Compiler mutation errors. ([66464](https://github.com/WordPress/gutenberg/pull/66464))
+- Interface: Remove duplicate 'withComplementaryAreaContext' file. ([66348](https://github.com/WordPress/gutenberg/pull/66348))
+- Interface: Remove unused private API support. ([66565](https://github.com/WordPress/gutenberg/pull/66565))
+- Interface: Use plugin context hook instead of HoC. ([66362](https://github.com/WordPress/gutenberg/pull/66362))
+- Remove clip & -webkit-clip-path for downloadable-block-list-item style.scss. ([66147](https://github.com/WordPress/gutenberg/pull/66147))
+- Scripts: Refactor to extract license logic. ([66179](https://github.com/WordPress/gutenberg/pull/66179))
+- Theme JSON: Get_block_nodes - relocate $selectors assignment. ([66265](https://github.com/WordPress/gutenberg/pull/66265))
+- Update a few function definitions. ([66315](https://github.com/WordPress/gutenberg/pull/66315))
+
+#### Block Editor
+- ESLint: Remove explicit `react-hooks/exhaustive-deps` disabling. ([66461](https://github.com/WordPress/gutenberg/pull/66461))
+- ESLint: Remove various React Compiler mutation violations. ([66327](https://github.com/WordPress/gutenberg/pull/66327))
+- Fix 'useInstanceId' hook reference. ([66406](https://github.com/WordPress/gutenberg/pull/66406))
+- Fix React Compiler error for Duotone. ([66492](https://github.com/WordPress/gutenberg/pull/66492))
+- Fix React Complier error for 'useEventListeners'. ([66495](https://github.com/WordPress/gutenberg/pull/66495))
+- Import only the actually used PostCSS exports. ([66379](https://github.com/WordPress/gutenberg/pull/66379))
+- No need to unlock public actions. ([66260](https://github.com/WordPress/gutenberg/pull/66260))
+- Remove patterns UI stylesheet from iframe. ([66306](https://github.com/WordPress/gutenberg/pull/66306))
+- Remove unnecessary Tooltip component from radius control linked button. ([66274](https://github.com/WordPress/gutenberg/pull/66274))
+- Rich Text: Fix React Complier error for 'useEventListeners'. ([66460](https://github.com/WordPress/gutenberg/pull/66460))
+- Storybook: Add BlockPatternsList story. ([66227](https://github.com/WordPress/gutenberg/pull/66227))
+
+#### Components
+- BorderBoxControl: Deprecate 36px default size. ([65752](https://github.com/WordPress/gutenberg/pull/65752))
+- BorderControl: Deprecate 36px default size. ([65755](https://github.com/WordPress/gutenberg/pull/65755))
+- DrodownMenuV2: Rename folder to `menu`. ([66473](https://github.com/WordPress/gutenberg/pull/66473))
+- ESLint: Stop disabling `react-hooks/exhaustive-deps` rule. ([66324](https://github.com/WordPress/gutenberg/pull/66324))
+- Fix React Compiler error for 'useAutocomplete'. ([66496](https://github.com/WordPress/gutenberg/pull/66496))
+- PaletteEdit: Use `ItemGroup` and `Item`, and avoid custom styles. ([66164](https://github.com/WordPress/gutenberg/pull/66164))
+- TabPanel: Add 40px size prop to tab Button. ([66557](https://github.com/WordPress/gutenberg/pull/66557))
+- Tabs: Align to standard compound components structure. ([66225](https://github.com/WordPress/gutenberg/pull/66225))
+- Tabs: Simplify styled components code. ([66208](https://github.com/WordPress/gutenberg/pull/66208))
+
+#### Zoom Out
+- Bundle behavior in block-editor and add story. ([66240](https://github.com/WordPress/gutenberg/pull/66240))
+- Editor: Handle zoom out state via the 'switchEditorMode' action. ([66262](https://github.com/WordPress/gutenberg/pull/66262))
+- Fix/html scale code quality. ([66181](https://github.com/WordPress/gutenberg/pull/66181))
+- Make useZoomOut hook private. ([66374](https://github.com/WordPress/gutenberg/pull/66374))
+- Remove double click to exit hook from the block-editor package. ([66335](https://github.com/WordPress/gutenberg/pull/66335))
+- Remove viewport check from useZoomOut hook. ([66341](https://github.com/WordPress/gutenberg/pull/66341))
+
+#### Post Editor
+- Editor: No need to reset mode when changing device preview types. ([66261](https://github.com/WordPress/gutenberg/pull/66261))
+- Editor: Use plugin context hook in 'PluginMoreMenuItem'. ([66351](https://github.com/WordPress/gutenberg/pull/66351))
+- Editor: Use plugin context hook in 'PluginPreviewMenuItem'. ([66350](https://github.com/WordPress/gutenberg/pull/66350))
+- Fix typo after #63669. ([66396](https://github.com/WordPress/gutenberg/pull/66396))
+- Remove leftover JS code from 66451. ([66472](https://github.com/WordPress/gutenberg/pull/66472))
+
+#### Block Library
+- Cleanup unnecessary notice removal. ([66409](https://github.com/WordPress/gutenberg/pull/66409))
+- ESLint: Fix a couple of React Compiler reassignment errors. ([66331](https://github.com/WordPress/gutenberg/pull/66331))
+- Footnotes: Remove extra callback when parsing content. ([66370](https://github.com/WordPress/gutenberg/pull/66370))
+- Gallery: Fix React Compiler reassignment error. ([66408](https://github.com/WordPress/gutenberg/pull/66408))
+- Table Block: Remove hasArrowIndicator prop. ([66204](https://github.com/WordPress/gutenberg/pull/66204))
+
+#### Style Book
+- Avoid state/effect combo when generating values. ([66446](https://github.com/WordPress/gutenberg/pull/66446))
+- Fix React Compiler error. ([66445](https://github.com/WordPress/gutenberg/pull/66445))
+
+#### Global Styles
+- Clean up: Adjust reusable-blocks dependencies. ([66302](https://github.com/WordPress/gutenberg/pull/66302))
+- Fix React Compiler variable mutation error. ([66410](https://github.com/WordPress/gutenberg/pull/66410))
+
+#### Interactivity API
+- iAPI: Add comments to the `deepMerge()` function. ([66220](https://github.com/WordPress/gutenberg/pull/66220))
+- iAPI: Add tests for handling arrays in `deepMerge()`. ([66218](https://github.com/WordPress/gutenberg/pull/66218))
+
+#### Navigation in Site View
+- Navigation: Improve trigger for fallback navigation. ([66478](https://github.com/WordPress/gutenberg/pull/66478))
+
+#### Plugins API
+- Plugins: Deprecate 'withPluginContext' HOC. ([66363](https://github.com/WordPress/gutenberg/pull/66363))
+
+#### Site Editor
+- Prepare route registration by refactoring the site editor router. ([66030](https://github.com/WordPress/gutenberg/pull/66030))
+
+
+### Tools
+
+- Add theme type to the bug report issue template. ([63851](https://github.com/WordPress/gutenberg/pull/63851))
+- Pull request automation: Use full npm install. ([66314](https://github.com/WordPress/gutenberg/pull/66314))
+- Use npm workspaces for packages (second attempt). ([66272](https://github.com/WordPress/gutenberg/pull/66272))
+
+#### Testing
+- Fix [Flaky Test] Entering zoomed out mode zooms the canvas. ([66212](https://github.com/WordPress/gutenberg/pull/66212))
+- Fix end-to-end test for padding appender. ([66080](https://github.com/WordPress/gutenberg/pull/66080))
+- Upgrade Playwright to v1.48. ([66296](https://github.com/WordPress/gutenberg/pull/66296))
+
+#### Build Tooling
+- Add new private `vips` package. ([64845](https://github.com/WordPress/gutenberg/pull/64845))
+- Revert "Use npm workspaces for packages". ([66270](https://github.com/WordPress/gutenberg/pull/66270))
+
+
+## First-time contributors
+
+The following PRs were merged by first-time contributors:
+
+- @AhmarZaidi: Remove toggle verb from post list data views 'Toggle details panel'. ([66334](https://github.com/WordPress/gutenberg/pull/66334))
+- @mediaformat: Remove clip & -webkit-clip-path for downloadable-block-list-item style.scss. ([66147](https://github.com/WordPress/gutenberg/pull/66147))
+- @nicolasgalvez: WP Scripts: Add a `--root-folder` argument to the `plugin-zip` command. ([61375](https://github.com/WordPress/gutenberg/pull/61375))
+- @poojabhimani12: Add Inline comment experimental flag. ([60622](https://github.com/WordPress/gutenberg/pull/60622))
+- @rinkalpagdar: Border support added to comments. ([66354](https://github.com/WordPress/gutenberg/pull/66354))
+- @rudrakshi-gupta: Add Transformation from Separator to Spacer. ([66230](https://github.com/WordPress/gutenberg/pull/66230))
+- @SH4LIN: GH-66090: Self nesting and circular nesting block fix. ([66121](https://github.com/WordPress/gutenberg/pull/66121))
+
+
+## Contributors
+
+The following contributors merged PRs in this release:
+
+@aaronrobertshaw @afercia @AhmarZaidi @akasunil @andrewserong @carolinan @cbravobernal @ciampo @dhruvang21 @ellatrix @getdave @gigitux @hbhalodia @jameskoster @jeryj @jsnajdr @juanfra @madhusudhand @MaggieCabrera @Mamaduka @mattrwalker @mcsf @mediaformat @michalczaplinski @mirka @mreishus @ndiego @nicolasgalvez @ntsekouras @oandregal @PARTHVATALIYA @peterwilsoncc @poojabhimani12 @prajapatisagar @ramonjd @renatho @rinkalpagdar @rudrakshi-gupta @ryanwelcher @SantosGuillamot @SH4LIN @sirreal @stokesman @swissspidy @t-hamano @talldan @tellthemachines @torounit @troychaplin @tyxla @vipul0425 @Vrishabhsk @vykes-mac @youknowriad @zaguiini
+
+
= 19.6.0-rc.1 =
## Changelog
diff --git a/docs/manifest.json b/docs/manifest.json
index 5e94c6b83b70d2..8f267e79ef4feb 100644
--- a/docs/manifest.json
+++ b/docs/manifest.json
@@ -371,6 +371,12 @@
"markdown_source": "../docs/reference-guides/block-api/block-attributes.md",
"parent": "block-api"
},
+ {
+ "title": "Bindings",
+ "slug": "block-bindings",
+ "markdown_source": "../docs/reference-guides/block-api/block-bindings.md",
+ "parent": "block-api"
+ },
{
"title": "Context",
"slug": "block-context",
diff --git a/docs/reference-guides/block-api/README.md b/docs/reference-guides/block-api/README.md
index 128b9abf0f0d7d..1b89b9246d8292 100644
--- a/docs/reference-guides/block-api/README.md
+++ b/docs/reference-guides/block-api/README.md
@@ -7,6 +7,7 @@ The following sections will walk you through the existing block APIs:
- [Annotations](/docs/reference-guides/block-api/block-annotations.md)
- [API Versions](/docs/reference-guides/block-api/block-api-versions.md)
- [Attributes](/docs/reference-guides/block-api/block-attributes.md)
+- [Bindings](/docs/reference-guides/block-api/block-bindings.md)
- [Context](/docs/reference-guides/block-api/block-context.md)
- [Deprecation](/docs/reference-guides/block-api/block-deprecation.md)
- [Edit and Save](/docs/reference-guides/block-api/block-edit-save.md)
diff --git a/docs/reference-guides/block-api/block-bindings.md b/docs/reference-guides/block-api/block-bindings.md
new file mode 100644
index 00000000000000..479396abc13c9c
--- /dev/null
+++ b/docs/reference-guides/block-api/block-bindings.md
@@ -0,0 +1,330 @@
+# Bindings
+
+
+Block Bindings API is only available for WordPress 6.5 and above.
+
+
+The Block Bindings API lets you “bind” dynamic data to the block’s attributes, which are then reflected in the final HTML markup that is output to the browser on the front end.
+
+An example could be connecting an Image block `url` attribute to a function that returns random images from an external API.
+
+```html
+
+```
+
+
+## Compatible blocks and their attributes
+
+Right now, not all block attributes are compatible with block bindings. There is some ongoing effort to increase this compatibility, but for now, this is the list:
+
+| Supported Blocks | Supported Attributes |
+| ---------------- | -------------------- |
+| Paragraph | content |
+| Heading | content |
+| Image | id, url, title, alt |
+| Button | text, url, linkTarget, rel |
+
+## Registering a custom source
+
+Registering a source requires defining at least `name`, a `label` and a `callback` function that gets a value from the source and passes it back to a block attribute.
+
+Once a source is registered, any supporting block's `metadata.bindings` attribute can be configured to read a value from that source.
+
+Registration can be done on the server via PHP or in the editor via JavaScript, and both can coexist.
+
+The label defined in server registration will be overridden by the label defined in the editor.
+
+### Server registration
+
+Server registration allows applying a callback that will be executed on the frontend for the bound attribute.
+
+The function to register a custom source is `register_block_bindings_source($name, $args)`:
+
+- `name`: `string` that sets the unique ID for the custom source.
+- `args`: `array` that contains:
+ - `label`: `string` with the human-readable name of the custom source.
+ - `uses_context`: `array` with the block context that is passed to the callback (optional).
+ - `get_value_callback`: `function` that will run on the bound block's render function. It accepts three arguments: `source_args`, `block_instance` and `attribute_name`. This value can be overridden with the filter `block_bindings_source_value`.
+
+Note that `register_block_bindings_source()` should be called from a handler attached to the `init` hook.
+
+Here is an example:
+
+```php
+add_action(
+ 'init',
+ function () {
+ register_block_bindings_source(
+ 'wpmovies/visualization-date',
+ array(
+ 'label' => __( 'Visualization Date', 'custom-bindings' ),
+ 'get_value_callback' => function ( array $source_args, $block_instance ) {
+ $post_id = $block_instance->context['postId'];
+ if ( isset( $source_args['key'] ) ) {
+ return get_post_meta( $post_id, $source_args['key'], true );
+ }
+ },
+ 'uses_context' => array( 'postId' ),
+ )
+ );
+ }
+);
+```
+
+This example needs a `post_meta` registered, and, also, a filter can be used to return a default `$visualization_date` value, which will be shown in the next heading.
+
+```php
+add_action(
+ 'init',
+ function () {
+ register_meta(
+ 'post',
+ 'wp_movies_visualization_date',
+ array(
+ 'show_in_rest' => true,
+ 'single' => true,
+ 'type' => 'string',
+ 'label' => __( 'Movie visualization date', 'custom-bindings' ),
+ )
+ );
+ }
+);
+```
+
+#### Block bindings source value filter
+
+_**Note:** Since WordPress 6.7._
+
+The value returned by `get_value_callback` can be modified with the `block_bindings_source_value` filter.
+The filter has the following parameters:
+
+- `value`: The value to be filtered.
+- `name`: The name of the source.
+- `source_args`: `array` containing source arguments.
+- `block_instance`: The block instance object.
+- `attribute_name`: The name of the attribute.
+
+Example:
+
+```php
+function wpmovies_format_visualization_date( $value, $name ) {
+ // Prevent the filter to be applied to other sources.
+ if ( $name !== 'wpmovies/visualization-date' ) {
+ return $value;
+ }
+ if ( ! $value ) {
+ return date( 'm/d/Y' );
+ }
+ return date( 'm/d/Y', strtotime( $value ) );
+}
+
+add_filter( 'block_bindings_source_value', 'wpmovies_format_visualization_date', 10, 2 );
+```
+
+#### Server registration Core examples
+
+There are a few examples in Core that can be used as reference.
+
+- Post Meta. [Source code](https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/block-bindings/post-meta.php)
+- Pattern overrides. [Source code](https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/block-bindings/pattern-overrides.php)
+- Twenty Twenty-Five theme. [Source code](https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-content/themes/twentytwentyfive/functions.php)
+
+
+### Editor registration
+
+_**Note:** Since WordPress 6.7._
+
+Editor registration on the client allows defining what the bound block will do when the value is retrieved or when the value is edited.
+
+The function to register a custom source is `registerBlockBindingsSource( args )`:
+
+- `args`: `object` with the following structure:
+ - `name`: `string` with the unique and machine-readable name.
+ - `label`: `string` with the human readable name of the custom source. In case it was defined already on the server, the server label will be overriden by this one, in that case, it is not recommended to be defined here. (optional)
+ - `usesContext`: `array` with the block context that the custom source may need. In case it was defined already on the server, it should not be defined here. (optional)
+ - `getValues`: `function` that retrieves the values from the source. (optional)
+ - `setValues`: `function` that allows updating the values connected to the source. (optional)
+ - `canUserEditValue`: `function` to determine if the user can edit the value. The user won't be able to edit by default. (optional)
+
+
+This example will show a custom post meta date in the editor and, if it doesn't exist, it will show today's date. The user can edit the value of the date. (Caution: This example does not format the user input as a date—it's only for educational purposes.)
+
+```js
+import {
+ registerBlockBindingsSource,
+} from '@wordpress/blocks';
+import { __ } from '@wordpress/i18n';
+import { store as coreDataStore } from '@wordpress/core-data';
+
+registerBlockBindingsSource( {
+ name: 'wpmovies/visualization-date',
+ label: __( 'Visualization Date', 'custom-bindings' ), // We can skip the label, as it was already defined in the server in the previous example.
+ usesContext: [ 'postType' ], // We can skip postId, as it was already defined in the server in the previous example.
+ getValues( { select, context } ) {
+ let wpMoviesVisualizationDate;
+ const { getEditedEntityRecord } = select( coreDataStore );
+ if ( context?.postType && context?.postId ) {
+ wpMoviesVisualizationDate = getEditedEntityRecord(
+ 'postType',
+ context?.postType,
+ context?.postId
+ ).meta?.wp_movies_visualization_date;
+ }
+ if ( wpMoviesVisualizationDate ) {
+ return {
+ content: wpMoviesVisualizationDate,
+ };
+ }
+
+ return {
+ content: new Date().toLocaleDateString( 'en-US' ),
+ };
+ },
+ setValues( { select, dispatch, context, bindings } ) {
+ dispatch( coreDataStore ).editEntityRecord(
+ 'postType',
+ context?.postType,
+ context?.postId,
+ {
+ meta: {
+ wp_movies_visualization_date: bindings?.content?.newValue,
+ },
+ }
+ );
+ },
+ canUserEditValue( { select, context } ) {
+ return true;
+ },
+} );
+```
+
+#### getValues
+
+The `getValues` function retrieves the value from the source on block loading. It receives an `object` as an argument with the following properties:
+
+- `bindings` returns the bindings object of the specific source. It must have the attributes as a key, and the value can be a `string` or an `object` with arguments.
+- `clientId` returns a `string` with the current block client ID.
+- `context` returns an `object` of the current block context, defined in the `usesContext` property. [More about block context.](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-context/).
+- `select` returns an `object` of a given store's selectors. [More info in their docs.](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-data/#select).
+
+The function must return an `object` with this structure:
+`{ 'block attribute' : value }`
+
+#### setValues
+
+The `setValues` function updates all the values of the source of the block bound. It receives an `object` as an argument with the following properties:
+
+- `bindings` returns the bindings object of the specific source. It must have the attributes as a key, and the value can be a `string` or an `object` with arguments. This object contains a `newValue` property with the user's input.
+- `clientId` returns a `string` with the current block client ID.
+- `context` returns an `object` of the current block context, defined in the `usesContext` property. [More about block context.](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-context/).
+- `dispatch` returns an `object` of the store's action creators. [More about dispatch](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-data/#dispatch).
+- `select` returns an `object` of a given store's selectors. [More info in their docs.](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-data/#select).
+
+
+#### Editor registration Core examples
+
+There are a few examples in Core that can be used as reference.
+
+- Post Meta. [Source code](https://github.com/WordPress/gutenberg/blob/5afd6c27bfba2be2e06b502257753fbfff1ae9f0/packages/editor/src/bindings/post-meta.js#L74-L146)
+- Pattern overrides. [Source code](https://github.com/WordPress/gutenberg/blob/5afd6c27bfba2be2e06b502257753fbfff1ae9f0/packages/editor/src/bindings/pattern-overrides.js#L8-L100)
+
+## Unregistering a source
+
+_**Note:** Since WordPress 6.7._
+
+`unregisterBlockBindingsSource` unregisters a block bindings source by providing its name.
+
+```js
+import { unregisterBlockBindingsSource } from '@wordpress/blocks';
+
+unregisterBlockBindingsSource( 'plugin/my-custom-source' );
+```
+
+## Getting all sources
+
+_**Note:** Since WordPress 6.7._
+
+`getBlockBindingsSources` returns all registered block bindings sources.
+
+```js
+import { getBlockBindingsSources } from '@wordpress/blocks';
+
+const registeredSources = getBlockBindingsSources();
+```
+
+## Getting one specific source
+
+_**Note:** Since WordPress 6.7._
+
+`getBlockBindingsSource` return a specific block bindings source by its name.
+
+```js
+import { getBlockBindingsSource } from '@wordpress/blocks';
+
+const blockBindingsSource = getBlockBindingsSource( 'plugin/my-custom-source' );
+```
+
+## Block Bindings Utils
+
+_**Note:** Since WordPress 6.7._
+
+UseBlockBindingUtils is a hook with two helpers that allows developers to edit the `metadata.bindings` attribute easily.
+
+It accepts a `clientId` string as a parameter, if it is not set, the function will use the current block client ID from the context.
+
+Example:
+
+```js
+import { useBlockBindingsUtils } from '@wordpress/block-editor';
+
+const { updateBlockBindings } = useBlockBindingsUtils('my-block-client-id-12345');
+...
+```
+
+### updateBlockBindings
+
+`updateBlockBindings` works similarly to `updateBlockAttributes`, and can be used to create, update, or remove specific connections.
+
+```js
+import { useBlockBindingsUtils } from '@wordpress/block-editor';
+
+const { updateBlockBindings } = useBlockBindingsUtils();
+
+function updateBlockBindingsURLSource( url ) {
+ updateBlockBindings({
+ url: {
+ source: 'myplugin/new-source',
+ }
+ })
+}
+
+// Remove binding from url attribute.
+function removeBlockBindingsURLSource() {
+ updateBlockBindings( { url: undefined } );
+}
+```
+
+### removeAllBlockBindings
+
+`removeAllBlockBindings` will remove all existing connections in a block by removing the `metadata.bindings` attribute.
+
+```js
+import { useBlockBindingsUtils } from '@wordpress/block-editor';
+
+const { removeAllBlockBindings } = useBlockBindingsUtils();
+
+function clearBlockBindings() {
+ removeAllBlockBindings();
+}
+```
+
+
+
diff --git a/docs/toc.json b/docs/toc.json
index 0d4689811b26ec..69fe86a08256b6 100644
--- a/docs/toc.json
+++ b/docs/toc.json
@@ -159,6 +159,9 @@
{
"docs/reference-guides/block-api/block-attributes.md": []
},
+ {
+ "docs/reference-guides/block-api/block-bindings.md": []
+ },
{ "docs/reference-guides/block-api/block-context.md": [] },
{
"docs/reference-guides/block-api/block-deprecation.md": []
diff --git a/gutenberg.php b/gutenberg.php
index 6723ae3d58fc0c..60b7614beefee4 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-rc.1
+ * Version: 19.6.0-rc.2
* Author: Gutenberg Team
* Text Domain: gutenberg
*
diff --git a/lib/client-assets.php b/lib/client-assets.php
index f6b17ffcce68be..f95ac27f81d010 100644
--- a/lib/client-assets.php
+++ b/lib/client-assets.php
@@ -361,6 +361,15 @@ function gutenberg_register_packages_styles( $styles ) {
);
$styles->add_data( 'wp-editor-classic-layout-styles', 'rtl', 'replace' );
+ gutenberg_override_style(
+ $styles,
+ 'wp-block-library-editor',
+ gutenberg_url( 'build/block-library/editor.css' ),
+ array(),
+ $version
+ );
+ $styles->add_data( 'wp-block-library-editor', 'rtl', 'replace' );
+
gutenberg_override_style(
$styles,
'wp-edit-blocks',
@@ -410,7 +419,7 @@ function gutenberg_register_packages_styles( $styles ) {
$styles,
'wp-edit-site',
gutenberg_url( 'build/edit-site/style.css' ),
- array( 'wp-components', 'wp-block-editor', 'wp-editor', 'common', 'forms', 'wp-commands', 'wp-preferences' ),
+ array( 'wp-components', 'wp-block-editor', 'wp-editor', 'wp-block-library-editor', 'common', 'forms', 'wp-commands', 'wp-preferences' ),
$version
);
$styles->add_data( 'wp-edit-site', 'rtl', 'replace' );
diff --git a/lib/compat/wordpress-6.8/preload.php b/lib/compat/wordpress-6.8/preload.php
new file mode 100644
index 00000000000000..5ba613e22033d4
--- /dev/null
+++ b/lib/compat/wordpress-6.8/preload.php
@@ -0,0 +1,34 @@
+name ) {
+ // Core already preloads both of these for `core/edit-post`.
+ $paths[] = '/wp/v2/settings';
+ $paths[] = array( '/wp/v2/settings', 'OPTIONS' );
+ $paths[] = '/?_fields=' . implode(
+ ',',
+ // @see packages/core-data/src/entities.js
+ array(
+ 'description',
+ 'gmt_offset',
+ 'home',
+ 'name',
+ 'site_icon',
+ 'site_icon_url',
+ 'site_logo',
+ 'timezone_string',
+ 'url',
+ )
+ );
+ }
+ return $paths;
+}
+add_filter( 'block_editor_rest_api_preload_paths', 'gutenberg_block_editor_preload_paths_6_8', 10, 2 );
diff --git a/lib/load.php b/lib/load.php
index 2c8a0fd0347c92..0540d4cd9efac7 100644
--- a/lib/load.php
+++ b/lib/load.php
@@ -116,6 +116,9 @@ function gutenberg_is_experiment_enabled( $name ) {
require __DIR__ . '/compat/wordpress-6.7/compat.php';
require __DIR__ . '/compat/wordpress-6.7/post-formats.php';
+// WordPress 6.8 compat.
+require __DIR__ . '/compat/wordpress-6.8/preload.php';
+
// Experimental features.
require __DIR__ . '/experimental/block-editor-settings-mobile.php';
require __DIR__ . '/experimental/blocks.php';
diff --git a/package-lock.json b/package-lock.json
index e2093a8759fb83..24812eff02ef8a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "gutenberg",
- "version": "19.6.0-rc.1",
+ "version": "19.6.0-rc.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "gutenberg",
- "version": "19.6.0-rc.1",
+ "version": "19.6.0-rc.2",
"hasInstallScript": true,
"license": "GPL-2.0-or-later",
"workspaces": [
diff --git a/package.json b/package.json
index eb38bedd023914..2218fd6171aa30 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "gutenberg",
- "version": "19.6.0-rc.1",
+ "version": "19.6.0-rc.2",
"private": true,
"description": "A new WordPress editor experience.",
"author": "The WordPress Contributors",
diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md
index eaf0904a5383d7..5fd48336f956c1 100644
--- a/packages/components/CHANGELOG.md
+++ b/packages/components/CHANGELOG.md
@@ -5,6 +5,13 @@
### Enhancements
- `MenuItem`: Add 40px size prop on Button ([#66596](https://github.com/WordPress/gutenberg/pull/66596)).
+- `Guide`: Use small size button for page controls ([#66607](https://github.com/WordPress/gutenberg/pull/66607)).
+- `PaletteEdit`: Add appropriate size props to Buttons ([#66590](https://github.com/WordPress/gutenberg/pull/66590)).
+- `Notice`: Add appropriate size props to Buttons ([#66593](https://github.com/WordPress/gutenberg/pull/66593)).
+
+### Internal
+
+- `Snackbar`: Use link variant for action Button ([#66560](https://github.com/WordPress/gutenberg/pull/66560)).
## 28.11.0 (2024-10-30)
diff --git a/packages/components/src/guide/page-control.tsx b/packages/components/src/guide/page-control.tsx
index 468670c6ad9b9b..80b0a641c2a430 100644
--- a/packages/components/src/guide/page-control.tsx
+++ b/packages/components/src/guide/page-control.tsx
@@ -27,6 +27,7 @@ export default function PageControl( {
aria-current={ page === currentPage ? 'step' : undefined }
>
}
aria-label={ sprintf(
diff --git a/packages/components/src/guide/style.scss b/packages/components/src/guide/style.scss
index 073bfc06843075..df52d5325f3fbf 100644
--- a/packages/components/src/guide/style.scss
+++ b/packages/components/src/guide/style.scss
@@ -34,7 +34,7 @@
}
}
- &__container {
+ .components-guide__container {
display: flex;
flex-direction: column;
justify-content: space-between;
@@ -42,7 +42,7 @@
min-height: 100%;
}
- &__page {
+ .components-guide__page {
display: flex;
flex-direction: column;
justify-content: center;
@@ -53,7 +53,7 @@
}
}
- &__footer {
+ .components-guide__footer {
align-content: center;
display: flex;
height: $button-size;
@@ -64,7 +64,7 @@
width: 100%;
}
- &__page-control {
+ .components-guide__page-control {
margin: 0;
text-align: center;
@@ -74,8 +74,6 @@
}
.components-button {
- height: 30px;
- min-width: 20px;
margin: -6px 0;
color: $gray-200;
}
diff --git a/packages/components/src/notice/index.tsx b/packages/components/src/notice/index.tsx
index 868576ecc9aa3f..6f3ca94d4f734a 100644
--- a/packages/components/src/notice/index.tsx
+++ b/packages/components/src/notice/index.tsx
@@ -142,6 +142,7 @@ function Notice( {
return (