Repository navigation
Plan 1.11 and add a WordPress icon set from core's icon registry - #275
Merged
Merged
Conversation
Plan v1.11 (Phases 32-37) in .planning/milestones/v1.11-ROADMAP.md and build Phase 32: a third icon picker tab, WordPress, listing every icon registered with core's icon registry, including plugin collections. Each icon is stored as a base64 SVG data URI, the form Bootstrap icons already use, so the schema, sanitiser, #172 mask path and export/import are unchanged. The list loads on demand from a new GET maestro/v1/icons route behind the same capability as /config. The tab only appears when wp_get_icon() exists. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WPtgA1Rexv3K7fLbaMQmjw
get_all_registered() returns a list, not a slug-keyed map, so plugin collections fell back to their slug in the tooltip. Read each collection's slug instead. The picker set id becomes `registry` (WPCS flags a lowercase "wordpress"), and PHPStan gets declarations for the 7.1 icon API, which the pinned wordpress-stubs predate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WPtgA1Rexv3K7fLbaMQmjw
dknauss
marked this pull request as ready for review
October 28, 2026 00:37
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
dknauss
added a commit
that referenced
this pull request
Oct 28, 2026
Version 1.11.0 in the plugin header, MAESTRO_VERSION, Stable tag, package files and the three editor build stamps (bin/prep-release.sh). Changelog and upgrade notice for the WordPress icon tab (#275) and the separator, stale-files, saved-check and acceptance work (#276). The POT gains the eight new strings. STATE and ROADMAP record the cut; Dan pushes the tag. Claude-Session: https://claude.ai/code/session_01WPtgA1Rexv3K7fLbaMQmjw Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Dan · project thread
Summary
.planning/milestones/v1.11-ROADMAP.md, with ROADMAP and STATE pointing at it. Scope is Dan's 2026-10-28 pick: the registry icon set, the separator, stale-files and save-state todos, and prep for the iPad, touch and VoiceOver passes.wp_get_icon()). It lists every icon in core's icon registry: core's 88, plus any collection another plugin registers. Plugin icons name their collection in the tooltip.Config::sanitize_icon(), the Bootstrap icons do not recolour with the menu, unlike dashicons #172 mask path and export/import don't change, and a saved icon keeps showing if the plugin that registered it is removed. A greyfillis baked in for browsers without CSS masks, andxmlnsis added when the registry dropped it.GET maestro/v1/iconsroute, gated by the same capability as/config. The picker sends the REST nonce for it, and itsloadSet()is reused.iconSet: 'registry'lets the picker reopen on the WordPress tab for a stored registry icon. On 7.1 the tour's icon step names all three sets.Type of change
Verification
composer test:unit(CI)composer lint(CI)composer analyse:phpstan(CI; 7.1 icon API stubs intests/phpstan-wp71-icons.php)npm run test:js: 141 pass.icons-bundle.test.mjsalso fails on clean main in this sandbox, so it isn't caused by this PR; it passes in CI.npm run check:doc-linksnpm run test:php(CI): newRestIconsTest, plusIconSetsTestadditions (core icons are saveable, a plugin-registered icon shows up,icon_set_ofrecognises registry icons)npm run test:e2e(CI): new test that opens the WordPress tab, searches, saves, checks the mask after reload and reopens on the tabbash bin/build.sh(CI: Runtime package + Plugin Check)Notes
🤖 Generated with Claude Code
https://claude.ai/code/session_01WPtgA1Rexv3K7fLbaMQmjw