Skip to content

Notes: Render @ mentions as span chips and narrow the kses class allowance - #80528

Merged
Mamaduka merged 11 commits into
trunkfrom
update/note-mention-span-chip
Jul 22, 2026
Merged

Notes: Render @ mentions as span chips and narrow the kses class allowance#80528
Mamaduka merged 11 commits into
trunkfrom
update/note-mention-span-chip

Conversation

@adamsilverstein

@adamsilverstein adamsilverstein commented Jul 21, 2026

Copy link
Copy Markdown
Member

Closes #80502.
Supersedes #80496 with the approach agreed in its discussion.

What

Switch the Notes @ mention markup from a link to a non-interactive span chip:

-<a class="wp-note-mention user-N" href="…">@Name</a>
+<span class="wp-note-mention user-N">@Name</span>

and replace the per-note kses arm/disarm machinery in lib/compat/wordpress-7.1/block-comments.php with two small always-on filters:

  1. a wp_kses_allowed_html filter that allows span with class in the pre_comment_content context, and
  2. a pre_comment_content filter at priority 11 (right after wp_filter_kses) that reduces every span's class to the only two tokens the mention markup uses: wp-note-mention and user-N.

Why

This lands the consensus from #80496:

  • Mentions aren't links (@Mamaduka): they are tokens rendered as chips. Making them a span takes them out of the Link format UI entirely, which fixes the behavior in Mamaduka's screencast where editing a mention through the Link UI destroyed the mention markup. The wp-note-mention class stays so no registered format claims the element (formats are differentiated by tag name and class), and per Mamaduka's testing RichText preserves the unregistered span without a dedicated mention format.
  • Keep classes, drop the data attribute (discussion): since the comment kses context requires an explicit allowance either way (data-* is not allowed by default in pre_comment_content, see the Notes: Carry mention user IDs in a data attribute instead of classes #80496 write-up), a data attribute has no security edge over a class whose tokens are strictly allowlisted. The class also keeps working as the format-differentiation and styling hook.
  • Close the open-class hole without stateful kses arming (@westonruter's original concern): the previous approach allowed any class on note links, guarded by ~120 lines of per-write arm/disarm across two request paths. Now the allowance is unconditional but reduced to exactly two inert tokens, so there is no styling/scripting selector surface to protect and no kses state to arm and disarm.

Behavior change

All commenters (including anonymous ones) can now persist <span> elements whose class is limited to wp-note-mention and/or user-N in comment content. This is inert: span is semantics-free, the two tokens are not styling or scripting hooks outside the notes sidebar, and mention notification parsing (#79606) only processes note-type comments.

The class reduction only runs while the restrictive comment allowlist (wp_filter_kses) is active: users with unfiltered_html are filtered through wp_filter_post_kses, where arbitrary classes are already permitted, and narrowing their markup would restrict what core allows them to post.

Coordination follow-ups

Testing instructions

Test with WordPress Playground

  1. As a user without unfiltered_html (e.g. an author), open a post, select a block, and add a note.
  2. Type @ and pick a teammate. The mention renders as a chip.
  3. Save the note. The chip survives the round-trip as <span class="wp-note-mention user-<id>"> (inspect the element). This is the case the kses allowance exists for.
  4. Place the caret inside a saved mention: no Link format popover appears, and editing surrounding text leaves the chip intact.

Automated coverage:

  • PHP: phpunit/tests/notes-mention-kses-test.php
  • e2e: the Mentions in the note form describe in test/e2e/specs/editor/various/block-notes.spec.js

…wance

Mentions are tokens rendered as chips, not links: a span keeps them out
of the Link format UI (which destroyed the mention markup on edit) and
needs no author-page href. Since the markup no longer carries an open
class allowance - a companion pre_comment_content pass reduces span
classes to the two mention tokens - the per-note kses arm/disarm
machinery collapses to two small always-on filters.
@adamsilverstein adamsilverstein added [Package] Editor /packages/editor [Feature] Notes Phase 3 of the Gutenberg roadmap around block commenting labels Jul 21, 2026
@github-actions

github-actions Bot commented Jul 21, 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>
Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>

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

@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown

Size Change: -532 B (-0.01%)

Total Size: 7.75 MB

📦 View Changed
Filename Size Change
build/scripts/block-editor/index.min.js 427 kB -10 B (0%)
build/scripts/block-library/index.min.js 354 kB -46 B (-0.01%)
build/scripts/editor/index.min.js 500 kB -79 B (-0.02%)
build/styles/editor/style-rtl.css 31.2 kB -108 B (-0.35%)
build/styles/editor/style-rtl.min.css 26.5 kB -91 B (-0.34%)
build/styles/editor/style.css 31.2 kB -107 B (-0.34%)
build/styles/editor/style.min.css 26.5 kB -91 B (-0.34%)

compressed-size-action

@Mamaduka Mamaduka left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks, @adamsilverstein!

The client-side code looks good, and mentions are testing well for me.

@westonruter, might have more feedback regarding the PHP-side, but here's one thing I noticed.

The gutenberg_notes_sanitize_mention_classes could use HTML APIs class_list, add_class and remove_class methods.

@Mamaduka Mamaduka added Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) Backport to WP 7.1 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta labels Jul 21, 2026
@adamsilverstein adamsilverstein added the [Type] Code Quality Issues or PRs that relate to code quality label Jul 21, 2026
@adamsilverstein

Copy link
Copy Markdown
Member Author

here's one thing I noticed.

The gutenberg_notes_sanitize_mention_classes could use HTML APIs class_list, add_class and remove_class methods.

Good suggestion, I'll work on it.

Per review: class_list() already handles token parsing and dedup, and
remove_class() drops the attribute when the last class goes, so the
manual get_attribute/preg_split/set_attribute handling is unnecessary.
@adamsilverstein

Copy link
Copy Markdown
Member Author

Thanks for the review and testing! Switched to class_list() / remove_class() in 2f1ee39 - remove_class() already drops the class attribute when the last token goes, so the manual attribute handling collapsed to a single loop.

@adamsilverstein
adamsilverstein requested review from westonruter and removed request for spacedmonkey July 21, 2026 15:50
adamsilverstein added a commit to adamsilverstein/wordpress-develop that referenced this pull request Jul 21, 2026
Match the reworked Gutenberg approach (WordPress/gutenberg#80528): mentions
are span.wp-note-mention.user-N chips rather than links, so the allowance
becomes two always-on filters - span.class in the comment kses context plus
a post-kses pass reducing span classes to the two mention tokens - and the
per-note arming inside wp_filter_comment() is no longer needed.
@t-hamano

Copy link
Copy Markdown
Contributor

Note that starting on the 22nd at around 9:00 UTC tomorrow, I plan to release Gutenberg 23.6 RC3, followed by the official release, and then synchronize core and Gutenberg. If we intend to ship this PR to WP 7.1 Beta3 and Gutenberg 23.6, it should be fine as long as this PR is merged by then.

The HTML API's whitespace handling when removing the final attribute is
not part of its contract, so asserting the exact '<span >' spacing is
brittle. Flagged by review on the Core backport (wordpress-develop#12503).
@westonruter

Copy link
Copy Markdown
Member

One more passing thought here: what about using a custom element? There could be a wp-user-mention tag: <wp-user-mention data-id="N">@Name</wp-user-mention>. This would further constrain the markup to just the intended usage. Just a thought, not firmly held.

Comment thread lib/compat/wordpress-7.1/block-comments.php
Comment thread phpunit/tests/notes-mention-kses-test.php Outdated
Comment thread phpunit/tests/notes-mention-kses-test.php Outdated
Comment thread phpunit/tests/notes-mention-kses-test.php Outdated
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown

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

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

Co-authored-by: Weston Ruter <westonruter@git.wordpress.org>
@Mamaduka

Copy link
Copy Markdown
Member

One more passing thought here: what about using a custom element? There could be a wp-user-mention tag: <wp-user-mention data-id="N">@Name</wp-user-mention>. This would further constrain the markup to just the intended usage. Just a thought, not firmly held.

Probably easier to deal with native elements at this point. Then there's React's handling of custom elements to consider, which just added better support in React 19, and it's not shipping until next release

Co-authored-by: Weston Ruter <westonruter@gmail.com>
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
The applied review suggestions dropped the docblock's leading-space
alignment and a closing angle bracket in the array shape annotations.
adamsilverstein added a commit to adamsilverstein/wordpress-develop that referenced this pull request Jul 21, 2026
Match westonruter's review on WordPress/gutenberg#80528: type the kses
filter and sanitizer signatures, and drop the try/finally filter
restoration in the test since the framework restores filters after each
test.
…tion

An uppercase <SPAN> survives kses with its casing preserved, so the
str_contains( ..., '<span' ) early return skipped the class reduction
entirely for such tags. The filter only runs when comment content is
written, so the optimization is unnecessary - run the tag processor
unconditionally and cover the uppercase case with a test.
Align with the Core backport (wordpress-develop#12503). The callback is
attached to wp_kses_allowed_html, which fires on nearly every
sanitization path, so a third-party apply_filters() passing a non-string
context would turn a bad argument into a fatal. The body compares with a
strict !==, so the hint buys no correctness, and $allowed in the same
signature is already untyped with a runtime guard.
Comment thread lib/compat/wordpress-7.1/block-comments.php Outdated
Co-authored-by: Weston Ruter <westonruter@git.wordpress.org>

@westonruter westonruter left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Assuming this is synchronized with the latest from the core PR.

@Mamaduka
Mamaduka merged commit 44798cf into trunk Jul 22, 2026
53 of 56 checks passed
@Mamaduka
Mamaduka deleted the update/note-mention-span-chip branch July 22, 2026 05:00
@github-actions github-actions Bot added this to the Gutenberg 23.7 milestone Jul 22, 2026
@github-actions github-actions Bot removed the Backport to WP 7.1 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Jul 22, 2026
gutenbergplugin pushed a commit that referenced this pull request Jul 22, 2026
…wance (#80528)

Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>
@github-actions github-actions Bot added the Backported to WP Core Pull request that has been successfully merged into WP Core label Jul 22, 2026
@github-actions

Copy link
Copy Markdown

I just cherry-picked this PR to the wp/7.1 branch to get it included in the next release: fa3ebec

t-hamano added a commit that referenced this pull request Jul 22, 2026
…wance (#80528)

Co-authored-by: adamsilverstein <adamsilverstein@git.wordpress.org>
Co-authored-by: Mamaduka <mamaduka@git.wordpress.org>
Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>
@t-hamano

Copy link
Copy Markdown
Contributor

I just cherry-picked this PR to the release/23.6 branch to get it included in the next release: 15f9943

@t-hamano t-hamano removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Jul 22, 2026
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Jul 22, 2026
This updates the pinned commit hash of the Gutenberg repository from `e73c3c481db0650183f092af157f6e42efe9ee2d` to `4997026b75c922d8a6f77a03d72ed7cad04c7073`.

A full list of changes included in this commit can be found on GitHub: 
WordPress/gutenberg@e73c3c4...4997026

- Notes: Replace blur-deselect bookkeeping with useFocusOutside (WordPress/gutenberg#80222)
- Playlist: Update @SInCE tags to 7.1.0 (WordPress/gutenberg#80317)
- fix playlist block Dimensions Design (WordPress/gutenberg#80312)
- UI: Backport compat overlay fixes to WordPress 7.1 (WordPress/gutenberg#80322)
- Editor: allow selecting which block styles to apply globally (WordPress/gutenberg#79839)
- Global Styles: Reject non-string custom CSS in the REST controller (WordPress/gutenberg#80338)
- Open inspector sidebar when toggling responsive editing (WordPress/gutenberg#80307)
- Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path (WordPress/gutenberg#80218)
- Hide block style variations when state is enabled in global styles (WordPress/gutenberg#80341)
- Media REST API: Fix sideload and finalize for EXIF rotated images (WordPress/gutenberg#80295)
- Fix upload snackbar stuck in uploading state on server-side uploads (WordPress/gutenberg#80345)
- Try fixing responsive layout in Nav block (WordPress/gutenberg#80305)
- Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar (WordPress/gutenberg#80339)
- RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary (WordPress/gutenberg#80324)
- Notes: Finish WPDS treatment for mention chips (WordPress/gutenberg#80300)
- Notes: Add placeholders to the RichText fields (WordPress/gutenberg#80296)
- Fix upload hang when converting long animated GIFs: decode only the first frame for still outputs (WordPress/gutenberg#80260) (WordPress/gutenberg#80342)
- Device preview dropdown: use active color for device icon when responsive styles are active (WordPress/gutenberg#80346)
- Fix default aspect ratio for lazy loaded Featured image (WordPress/gutenberg#80386)
- Vips/upload-media: consolidate optional params into options objects (WordPress/gutenberg#80330)
- Autocompleters: Don't pre-encode mention search terms (WordPress/gutenberg#80377)
- Animated GIF uploads: generate sub-sizes from the first frame, matching core (WordPress/gutenberg#80268)
- Custom CSS: Fix cascade order against block style variations (WordPress/gutenberg#80340)
- Rich Text: Restore the selection when focus returns to the editable (WordPress/gutenberg#80396)
- Notes: Arm the mention kses allowance on REST note creation (WordPress/gutenberg#80221)
- Fix upload snackbar double-counting a single HEIC upload in Safari (WordPress/gutenberg#80436)
- ContentEditableControl: fix invalid label association with contenteditable div (WordPress/gutenberg#80441)
- Editor: Disable canvas resizing while zoomed out (WordPress/gutenberg#80391)
- Fix Color Picker Cursor Shaking Issue (WordPress/gutenberg#80205) (WordPress/gutenberg#80435)
- Misc fixes for WordPress-Develop 7.0 merges (WordPress/gutenberg#80444)
- Style Book: Restore live global styles updates on the styles route (WordPress/gutenberg#80459)
- Worker threads: reject pending RPC calls on worker failure or termination (WordPress/gutenberg#79955) (WordPress/gutenberg#80421)
- Media: Add timeout and size guardrails to client-side GIF to video conversion (WordPress/gutenberg#80420)
- Post Content: Use the default block appender for empty content (WordPress/gutenberg#80026)
- Block Supports: Handle nested array block gap values properly (WordPress/gutenberg#80464)
- Editor: Restore fixed device preview height for mobile and tablet (WordPress/gutenberg#80466)
- Block Editor: Guard against non-string spacing preset values (WordPress/gutenberg#80467)
- Writing flow: fully select the ancestor when a text selection crosses a nesting boundary (WordPress/gutenberg#80462)
- Block Editor: Reflect inherited Global Styles values in block inspector controls (WordPress/gutenberg#80481)
- Autocomplete: Reference the suggestions list with `aria-controls` and `aria-haspopup` (WordPress/gutenberg#80403) (WordPress/gutenberg#80499)
- Media: Remove the redundant __heicUploadSupport flag (WordPress/gutenberg#80486)
- State control - avoid tertiary variant on toggle to match style of other dropdown toggles (WordPress/gutenberg#80505)
- Icons: Store the sanitized SVG content when registering an icon (WordPress/gutenberg#80508)
- Fix `useHomeEnd` on tabs in mac testing (WordPress/gutenberg#80374)
- Playlist: Fix playback of tracks served without CORS headers (WordPress/gutenberg#80533)
- Redirect editing events to extension handlers under editableRoot (WordPress/gutenberg#80287)
- Writing flow: fully select the items when a selection extends down into a nested item (WordPress/gutenberg#80492)
- Global Styles panels: fix wrong preset committed and shown when two color presets share a hex (WordPress/gutenberg#80497)
- Replaces the `title` attributes used by revision inline diff annotations with `aria-describedby` (WordPress/gutenberg#80440)
- Notes: Remove "Add note" from the inline styles dropdown (WordPress/gutenberg#80531)
- Global Styles: Resolve per-level heading element styles in block inspector controls (WordPress/gutenberg#80495)
- Notes: Render @ mentions as span chips and narrow the kses class allowance (WordPress/gutenberg#80528)
- Revisions: Specify block level diff status via aria-label (WordPress/gutenberg#77779)
- Backport from Core: improve icon name unit tests (WordPress/gutenberg#80552)
- Device type preview: fix collapsing to content height (WordPress/gutenberg#80553)
- Wrap notices in ThemeProvider with 0 corner radius (WordPress/gutenberg#80557)
- Global Styles: Limit the inherited value treatment to the Gutenberg plugin (WordPress/gutenberg#80555)
- Fix crashes when manipulating locked blocks (WordPress/gutenberg#80509)
- Notes: align floating threads with their inline marker (WordPress/gutenberg#79877)

Props wildworks.
See #65529.

git-svn-id: https://develop.svn.wordpress.org/trunk@62824 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Jul 22, 2026
This updates the pinned commit hash of the Gutenberg repository from `e73c3c481db0650183f092af157f6e42efe9ee2d` to `4997026b75c922d8a6f77a03d72ed7cad04c7073`.

A full list of changes included in this commit can be found on GitHub: 
WordPress/gutenberg@e73c3c4...4997026

- Notes: Replace blur-deselect bookkeeping with useFocusOutside (WordPress/gutenberg#80222)
- Playlist: Update @SInCE tags to 7.1.0 (WordPress/gutenberg#80317)
- fix playlist block Dimensions Design (WordPress/gutenberg#80312)
- UI: Backport compat overlay fixes to WordPress 7.1 (WordPress/gutenberg#80322)
- Editor: allow selecting which block styles to apply globally (WordPress/gutenberg#79839)
- Global Styles: Reject non-string custom CSS in the REST controller (WordPress/gutenberg#80338)
- Open inspector sidebar when toggling responsive editing (WordPress/gutenberg#80307)
- Client Side Media: Honor image_strip_meta and image_max_bit_depth on the client upload path (WordPress/gutenberg#80218)
- Hide block style variations when state is enabled in global styles (WordPress/gutenberg#80341)
- Media REST API: Fix sideload and finalize for EXIF rotated images (WordPress/gutenberg#80295)
- Fix upload snackbar stuck in uploading state on server-side uploads (WordPress/gutenberg#80345)
- Try fixing responsive layout in Nav block (WordPress/gutenberg#80305)
- Responsive styles: Use viewport dropdown to control states for in-editor global styles sidebar (WordPress/gutenberg#80339)
- RichTextControl: Replace DOM focus tracking with a single React-tree focus boundary (WordPress/gutenberg#80324)
- Notes: Finish WPDS treatment for mention chips (WordPress/gutenberg#80300)
- Notes: Add placeholders to the RichText fields (WordPress/gutenberg#80296)
- Fix upload hang when converting long animated GIFs: decode only the first frame for still outputs (WordPress/gutenberg#80260) (WordPress/gutenberg#80342)
- Device preview dropdown: use active color for device icon when responsive styles are active (WordPress/gutenberg#80346)
- Fix default aspect ratio for lazy loaded Featured image (WordPress/gutenberg#80386)
- Vips/upload-media: consolidate optional params into options objects (WordPress/gutenberg#80330)
- Autocompleters: Don't pre-encode mention search terms (WordPress/gutenberg#80377)
- Animated GIF uploads: generate sub-sizes from the first frame, matching core (WordPress/gutenberg#80268)
- Custom CSS: Fix cascade order against block style variations (WordPress/gutenberg#80340)
- Rich Text: Restore the selection when focus returns to the editable (WordPress/gutenberg#80396)
- Notes: Arm the mention kses allowance on REST note creation (WordPress/gutenberg#80221)
- Fix upload snackbar double-counting a single HEIC upload in Safari (WordPress/gutenberg#80436)
- ContentEditableControl: fix invalid label association with contenteditable div (WordPress/gutenberg#80441)
- Editor: Disable canvas resizing while zoomed out (WordPress/gutenberg#80391)
- Fix Color Picker Cursor Shaking Issue (WordPress/gutenberg#80205) (WordPress/gutenberg#80435)
- Misc fixes for WordPress-Develop 7.0 merges (WordPress/gutenberg#80444)
- Style Book: Restore live global styles updates on the styles route (WordPress/gutenberg#80459)
- Worker threads: reject pending RPC calls on worker failure or termination (WordPress/gutenberg#79955) (WordPress/gutenberg#80421)
- Media: Add timeout and size guardrails to client-side GIF to video conversion (WordPress/gutenberg#80420)
- Post Content: Use the default block appender for empty content (WordPress/gutenberg#80026)
- Block Supports: Handle nested array block gap values properly (WordPress/gutenberg#80464)
- Editor: Restore fixed device preview height for mobile and tablet (WordPress/gutenberg#80466)
- Block Editor: Guard against non-string spacing preset values (WordPress/gutenberg#80467)
- Writing flow: fully select the ancestor when a text selection crosses a nesting boundary (WordPress/gutenberg#80462)
- Block Editor: Reflect inherited Global Styles values in block inspector controls (WordPress/gutenberg#80481)
- Autocomplete: Reference the suggestions list with `aria-controls` and `aria-haspopup` (WordPress/gutenberg#80403) (WordPress/gutenberg#80499)
- Media: Remove the redundant __heicUploadSupport flag (WordPress/gutenberg#80486)
- State control - avoid tertiary variant on toggle to match style of other dropdown toggles (WordPress/gutenberg#80505)
- Icons: Store the sanitized SVG content when registering an icon (WordPress/gutenberg#80508)
- Fix `useHomeEnd` on tabs in mac testing (WordPress/gutenberg#80374)
- Playlist: Fix playback of tracks served without CORS headers (WordPress/gutenberg#80533)
- Redirect editing events to extension handlers under editableRoot (WordPress/gutenberg#80287)
- Writing flow: fully select the items when a selection extends down into a nested item (WordPress/gutenberg#80492)
- Global Styles panels: fix wrong preset committed and shown when two color presets share a hex (WordPress/gutenberg#80497)
- Replaces the `title` attributes used by revision inline diff annotations with `aria-describedby` (WordPress/gutenberg#80440)
- Notes: Remove "Add note" from the inline styles dropdown (WordPress/gutenberg#80531)
- Global Styles: Resolve per-level heading element styles in block inspector controls (WordPress/gutenberg#80495)
- Notes: Render @ mentions as span chips and narrow the kses class allowance (WordPress/gutenberg#80528)
- Revisions: Specify block level diff status via aria-label (WordPress/gutenberg#77779)
- Backport from Core: improve icon name unit tests (WordPress/gutenberg#80552)
- Device type preview: fix collapsing to content height (WordPress/gutenberg#80553)
- Wrap notices in ThemeProvider with 0 corner radius (WordPress/gutenberg#80557)
- Global Styles: Limit the inherited value treatment to the Gutenberg plugin (WordPress/gutenberg#80555)
- Fix crashes when manipulating locked blocks (WordPress/gutenberg#80509)
- Notes: align floating threads with their inline marker (WordPress/gutenberg#79877)

Props wildworks.
See #65529.
Built from https://develop.svn.wordpress.org/trunk@62824


git-svn-id: http://core.svn.wordpress.org/trunk@62104 1a063a9b-81f0-0310-95a4-ce76da25c4cd
@adamsilverstein

adamsilverstein commented Jul 22, 2026

Copy link
Copy Markdown
Member Author

Just noting I didn't manage to hit the cutoff to commit the PHP backport PR - WordPress/wordpress-develop#12503 for Beta 3, so the kses change won't land in core until Beta 4. I'll commit it as soon as Beta 3 release is complete.

pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Jul 23, 2026
The Notes @mention completer stores a mention as a non-interactive chip, `<span class="wp-note-mention user-N">@name</span>`, the `user-N` class token carrying the mentioned user's ID. Fix an issue where the default comment kses allowlist does not permit `span`, so for users without the `unfiltered_html` capability the mention markup is stripped when the note is saved. 

See related Gutenberg pull requests: WordPress/gutenberg#79604 and WordPress/gutenberg#80528. 

Props mamaduka, westonruter, t-hamano, luisdavid01, vedantere. 
Fixes #65622.



git-svn-id: https://develop.svn.wordpress.org/trunk@62832 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Jul 23, 2026
The Notes @mention completer stores a mention as a non-interactive chip, `<span class="wp-note-mention user-N">@name</span>`, the `user-N` class token carrying the mentioned user's ID. Fix an issue where the default comment kses allowlist does not permit `span`, so for users without the `unfiltered_html` capability the mention markup is stripped when the note is saved. 

See related Gutenberg pull requests: WordPress/gutenberg#79604 and WordPress/gutenberg#80528. 

Props mamaduka, westonruter, t-hamano, luisdavid01, vedantere. 
Fixes #65622.


Built from https://develop.svn.wordpress.org/trunk@62832


git-svn-id: http://core.svn.wordpress.org/trunk@62112 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backported to WP Core Pull request that has been successfully merged into WP Core [Feature] Notes Phase 3 of the Gutenberg roadmap around block commenting [Package] Editor /packages/editor [Type] Code Quality Issues or PRs that relate to code quality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix note @ mentions render as links and rely on an open kses class allowance

4 participants