Style: Replace Grunt with @wordpress/scripts and modernize the build - #734
Draft
obenland wants to merge 5 commits into
Draft
Style: Replace Grunt with @wordpress/scripts and modernize the build#734obenland wants to merge 5 commits into
obenland wants to merge 5 commits into
Conversation
obenland
force-pushed
the
style/modernize-build-tooling
branch
from
July 25, 2026 00:25
d1d8266 to
6b014cc
Compare
obenland
force-pushed
the
style/modernize-build-tooling
branch
from
July 29, 2026 15:42
7b64e37 to
8de956a
Compare
obenland
added a commit
to obenland/wordpress.org
that referenced
this pull request
Aug 3, 2026
Brings trac/ in line with the formatting and lint rules from WordPress#734, ahead of that PR, so the same files do not need touching again when it lands and the assets only need deploying once. Retires the jinja2 compatibility shim: its rules now live in wp-trac.css and the templates no longer load the removed script and stylesheet. trac-search.js goes with it, unused since its include was removed in r7275. Builds markup through the DOM rather than by string concatenation in the attachment preview, the reopen notice, the non-gardener type field and the attachment autocomplete, and restores the preserved attribute matches by index so a comment cannot shift the restore queue. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
obenland
force-pushed
the
style/modernize-build-tooling
branch
from
August 4, 2026 01:40
8de956a to
a7109b2
Compare
- Swap Grunt/JSHint for @wordpress/scripts (build, lint-js, format), with a webpack config that builds js/navigation.min.js in place and a small bin/build-rtl.js for the RTL stylesheet, keeping the Dashicons arrow swap RTLCSS cannot infer. - Adopt the default WordPress code style (Prettier at a 120 line length) and fix all ESLint errors; convert HTML-building string concatenation to template literals and query building to URLSearchParams. - Update browser targets to @wordpress/browserslist-config, matching the rest of WordPress.org, and drop the vendor prefixes nothing supported needs anymore, along with the Autoprefixer pass and the self-referential wp4.css.map. - Remove trac/trac-search.js, unused since its include was removed in r7275. - Document the directory in README.md, trac/README.md, and AGENTS.md (with a CLAUDE.md wrapper): file inventory, development flow, testing Trac changes via DevTools overrides, and the deploy + scripts_version bump process.
Runs on changes to JS or CSS under wordpress.org/public_html/style/ and fails when the tooling wasn't run: ESLint errors, unformatted files, or committed build output (wp4-rtl.css, js/navigation.min.js) that is out of sync with its source.
Their behavior now lives in wp-trac.js and wp-trac.css; remove the files, their template includes, and their README entries. scripts_version is deliberately untouched: per the documented deploy flow it gets bumped in a follow-up commit once the merged assets are deployed, so the CDN never caches a stale file under the new version. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Nm6k2sd9zv3aRZZZt6XCp
obenland
force-pushed
the
style/modernize-build-tooling
branch
from
August 4, 2026 01:43
a7109b2 to
06d8578
Compare
Adds wp-scripts lint-style (the stock @wordpress/stylelint-config) as npm run lint:css, wired into the CI workflow, and conforms wp4.css and trac/wp-trac.css to it. Prettier ignores *.css, so stylelint owns CSS formatting outright. The fixes are rendering-identical: formatting, notation (::before, bold=700, named colors to hex, quote style), dropped declarations that a later duplicate in the same block already overrode, and generic font-family fallbacks — including 'Open Sans', "sans serif", which quoted the generic keyword into a nonexistent font name. Cascade-affecting rules (selector reordering/merging, renaming the Trac and WP.org markup's own ids and classes, unit conversions) are disabled in .stylelintrc.js. Vendored, generated, and frozen legacy stylesheets are excluded via .stylelintignore; wp4-rtl.css is rebuilt from the conformed wp4.css. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Nm6k2sd9zv3aRZZZt6XCp
Chrome stores DevTools local overrides with the query string in the file name and only matches that exact name; hand-placed files without it are silently ignored, as are tabs without an open DevTools window. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Nm6k2sd9zv3aRZZZt6XCp
obenland
force-pushed
the
style/modernize-build-tooling
branch
from
August 4, 2026 01:53
06d8578 to
78af7f7
Compare
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.
Modernizes the build tooling and code style for
wordpress.org/public_html/style/, and adds CI coverage for it.Tooling
@wordpress/scripts33:npm run build/build:css/build:js/format/lint:js.js/navigation.min.jsis built in place by webpack (webpack.config.js);wp4-rtl.cssby a smallbin/build-rtl.js, preserving the Dashicons arrow-swap and@importrenaming that RTLCSS can't infer and thatwp-scripts' built-in RTL support can't express.@wordpress/browserslist-config, matching the wporg-*-2024 themes, replacing the 2013-era list (IE 7+, Android 2.1+). Autoprefixer and the self-referentialwp4.css.mapare dropped: under current targets the stylesheet needs no generated prefixes (the few remaining-webkit-/-moz-occurrences are intentional non-standard properties).Code style
style/(includingtrac/) now passes the stock@wordpress/scriptsESLint ruleset with zero errors, and is Prettier-formatted with a single local override (printWidth: 120).URLSearchParams(which also percent-encodes values that previously went onto the wire raw).trac/trac-search.js, dead since its include was removed in r7275 (2018) — its API endpoint no longer exists.CI
style-lint.ymlworkflow runs on changes to JS/CSS understyle/: ESLint,prettier --check, and a build-drift check that fails when committed build output (wp4-rtl.css,js/navigation.min.js) is out of sync with its source.Docs
README.md,trac/README.md, andAGENTS.md(with aCLAUDE.mdwrapper): file inventory, development flow, testing Trac changes via DevTools local overrides, and the deploy flow (commit + sandbox deploy, then the follow-upscripts_versionbump in both Trac templates).Verification
wp4.cssbuilds byte-identical under the new pipeline before the browserslist change; the RTL diff beyond that consists of drift the old pipeline had accumulated plus the prefix removal.npm run lint:js,npx prettier --check .,node --checkon all sources, and a fullnpm run buildidempotency check all pass.Note for deployment: the changes to
trac/*.jswill need the usualscripts_versionbump insite_head.html/site_footer.htmlas a follow-up commit once the assets are deployed.🤖 Generated with Claude Code