Prepare 2026-06-30 release - #2554
Conversation
Introduce `npm run bump-versions`, which sets each plugin's version based on its release milestone instead of editing the files by hand. A release milestone is an open GitHub milestone whose title is "<plugin-slug> <version>" (i.e. it does not contain "n.e.x.t") and which has a due date set; the due date distinguishes a release milestone from a backlog/planning milestone. For each matching milestone the target version is applied to: - the plugin bootstrap PHP file "Version" header, - the PHP version constant, - the "Stable tag" in readme.txt, and - a changelog entry in readme.txt. The changelog handling relabels an existing "= n.e.x.t =" entry to the version (preserving any notes accrued during development) rather than inserting a duplicate, is idempotent when an entry for the version already exists, and otherwise inserts a new empty entry so the readme stays version-consistent and is primed for `npm run readme`. The command warns (rather than skips) when a matched milestone still has open issues/PRs, errors if two dated milestones target the same plugin, and supports `--plugin`, `--token`, and `--dry-run`. A reusable `getMilestones()` helper is added to the milestone lib. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
By default `npm run since` now only resolves "n.e.x.t" tags for plugins that are actually being released, i.e. those with an open GitHub milestone that has a due date and whose title does not contain "n.e.x.t". This prevents resolving "@SInCE n.e.x.t" tags in plugins that are still mid-development (e.g. betas with no scheduled release). The release-milestone detection is shared with the `bump-versions` command: `getReleaseMilestones()` is exported from that command and reused here, mirroring how `readme` reuses `getChangelog` from `changelog`. A `--all` flag restores the previous behavior of updating every plugin while ignoring milestones; combined with `--plugin` it updates that one plugin without requiring a milestone. A `--token` option is added for the GitHub API request. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The `since` command only resolved the "n.e.x.t" version placeholder in "@SInCE" tags, leaving "@deprecated n.e.x.t" tags untouched. WordPress uses the same placeholder in both, so broaden the match to "@SInCE" and "@deprecated". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The logical assignment expression `( byPlugin[ slug ] ??= [] ).push( … )` was overly clever; expand it into a plain existence check before pushing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WgTbsDpCqxVBrH3yDH65jS
Clear the inspections that PhpStorm surfaces (but the project's tsc config does not) across the bin/plugin release commands: - Prefix intentionally-unused regex-replacer callback parameters with an underscore so they are recognized as deliberate (TS6133). - Drop the unused "milestone" parameter from changelog's formatChangelog(). - Remove redundant "\." escapes inside character classes in the version-parsing regular expressions. No behavior change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Turn on `noUnusedParameters` so `tsc` flags unused function parameters the same way PhpStorm's inspections already do, keeping the two consistent. The codebase is already clean under this option, so `npm run tsc` continues to pass with no new errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sed in 1.0.0-beta3
Limit the readme command to plugins with an open, dated release milestone (matching bump-versions and since), and add an --all flag to force the previous "update every plugin" behavior. Rework the changelog update so re-running merges only new pull requests into the existing entry, deduped by PR number, instead of wrapping prior content in an "Other" section. Also handle the empty changelog entry left by bump-versions, which previously fell through to inserting a duplicate section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add *.min.js and *.min.css to the rsync excludes in generate-pending-release-diffs.sh so the generated svn status/diff overview omits build-derived minified files. Because rsync runs with --delete, the excludes also protect the stable copies from removal, keeping them out of the diff entirely. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pending Release Diffs
|
|
Plugin builds: |
|
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 If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release/2026-06-30 #2554 +/- ##
===================================================
Coverage 70.38% 70.38%
===================================================
Files 91 91
Lines 7850 7850
===================================================
Hits 5525 5525
Misses 2325 2325
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
sinceto plugins with a release milestonesince??=in bump-versions with an explicit guard for readabilitynpm run readmeby release milestones and make it idempotent