Skip to content

Suggest mode 2/7: suggestion storage, REST controller, and provider - #80428

Open
adamsilverstein wants to merge 2 commits into
suggest/intentfrom
suggest/data
Open

Suggest mode 2/7: suggestion storage, REST controller, and provider#80428
adamsilverstein wants to merge 2 commits into
suggest/intentfrom
suggest/data

Conversation

@adamsilverstein

@adamsilverstein adamsilverstein commented Jul 17, 2026

Copy link
Copy Markdown
Member

Part of #73411

What's in this PR

Adds the comment-meta storage backbone: _wp_suggestion payload meta and
sanitization (64KB cap, KSES on block snapshots), the 7.1 REST comment
controller subclass scoped to suggestion lifecycle updates, the
comment-meta SuggestionsProvider (create/update/delete, apply/reject for
attribute and structural operations, schema versioning + migration), the
pending-suggestion overlay store with its debounced write queue, and the
auto-save loop that persists overlay entries as note comments. Inline
(marker-based) operations are added by a later layer. Nothing captures
suggestions yet - that starts in the next layer.

Diagram

There is no UI in this layer. It is the write path that turns an edit into a stored suggestion, plus the read path back out:

How a suggestion gets stored: block edit to overlay to autosave to provider to REST to a note comment carrying _wp_suggestion meta

Testing

This is one layer of the stack. To exercise the whole feature, #78994 bundles all seven layers into one branch and builds it in Playground:

Test in WordPress Playground

👉 https://playground.wordpress.net/gutenberg.html?pr=78994

Enable Gutenberg > Experiments > Collaboration > Suggestion Mode, then follow the walkthrough in #73411, which also explains how to review the stack layer by layer.


Suggest mode stack

This rebuilds the manually-stacked Suggest mode work (#73411) as a GitHub Stack of 7 small, independently reviewable PRs, each building on the one below it:

  1. #80427 - editor intent (edit/suggest/view) + experiment gate
  2. #80428 - suggestion storage, REST controller, provider
  3. #80429 - block-level capture (attribute + structural)
  4. #80430 - inline marker primitive
  5. #80431 - inline suggestion operations
  6. #80432 - review UI (Apply/Reject sidebar + summary)
  7. #80433 - inline live wiring, docs, e2e

The whole feature can be exercised end-to-end via the combined testing branch #78994 (Playground). Behind the "Suggestion Mode" experiment (Gutenberg > Experiments).

Adds the comment-meta storage backbone: _wp_suggestion payload meta and
sanitization (64KB cap, KSES on block snapshots), the 7.1 REST comment
controller subclass scoped to suggestion lifecycle updates, the
comment-meta SuggestionsProvider (create/update/delete, apply/reject for
attribute and structural operations, schema versioning + migration), the
pending-suggestion overlay store with its debounced write queue, and the
auto-save loop that persists overlay entries as note comments. Inline
(marker-based) operations are added by a later layer. Nothing captures
suggestions yet - that starts in the next layer.
@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

Size Change: +4.04 kB (+0.05%)

Total Size: 7.82 MB

📦 View Changed
Filename Size Change
build/scripts/editor/index.min.js 514 kB +4.04 kB (+0.79%)

compressed-size-action

@adamsilverstein adamsilverstein added No Core Sync Required Indicates that any changes do not need to be synced to WordPress Core [Type] Feature New feature to highlight in changelogs. labels Jul 17, 2026
# Conflicts:
#	tools/eslint/suppressions.json
@adamsilverstein
adamsilverstein marked this pull request as ready for review August 5, 2026 22:24
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

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: adamsilverstein <adamsilverstein@git.wordpress.org>

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

No Core Sync Required Indicates that any changes do not need to be synced to WordPress Core [Package] Editor /packages/editor [Type] Feature New feature to highlight in changelogs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant