Skip to content

Plan 1.11 and add a WordPress icon set from core's icon registry - #275

Merged
dknauss merged 2 commits into
mainfrom
claude/project-thread-ioly8p
Oct 28, 2026
Merged

dknauss merged 2 commits into
mainfrom
claude/project-thread-ioly8p

Conversation

@dknauss

@dknauss dknauss commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

Requested by Dan · project thread

Summary

  • Plans v1.11 (Phases 32–37) in .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.
  • Phase 32: a third icon picker tab, WordPress (7.1+ only, gated on 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.
  • Each icon is stored as a base64 SVG data URI, the same form Bootstrap icons use. That means the schema, 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 grey fill is baked in for browsers without CSS masks, and xmlns is added when the registry dropped it.
  • The list loads on demand from a new GET maestro/v1/icons route, gated by the same capability as /config. The picker sends the REST nonce for it, and its loadSet() 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

  • Bug fix
  • Feature
  • Documentation
  • Tooling / CI
  • Release / packaging

Verification

  • composer test:unit (CI)
  • composer lint (CI)
  • composer analyse:phpstan (CI; 7.1 icon API stubs in tests/phpstan-wp71-icons.php)
  • npm run test:js: 141 pass. icons-bundle.test.mjs also fails on clean main in this sandbox, so it isn't caused by this PR; it passes in CI.
  • npm run check:doc-links
  • npm run test:php (CI): new RestIconsTest, plus IconSetsTest additions (core icons are saveable, a plugin-registered icon shows up, icon_set_of recognises 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 tab
  • bash bin/build.sh (CI: Runtime package + Plugin Check)

Notes

  • Related issue/phase: Phase 32 (v1.11); ROADMAP "Bootstrap icon colour — Bootstrap icons do not recolour with the menu, unlike dashicons #172", last section
  • Screenshots/video for UI changes: pending. Core's icons are drawn on a 24px grid, so at the menu's 20px mask they look a bit smaller than Dashicons. Worth a look; cropping the viewBox is the fallback.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WPtgA1Rexv3K7fLbaMQmjw

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
@dknauss dknauss self-assigned this Oct 28, 2026
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
dknauss marked this pull request as ready for review October 28, 2026 00:37
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T00:39:10.345915Z c4e7641 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@dknauss
dknauss merged commit dc6b986 into main Oct 28, 2026
16 of 17 checks passed
@dknauss
dknauss deleted the claude/project-thread-ioly8p branch October 28, 2026 00:46
@dknauss dknauss mentioned this pull request Oct 28, 2026
4 of 13 tasks
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants