Skip to content

[DO NOT MERGE] Twenty Nineteen: Replace node-sass with Dart Sass (CI check, stacked on #11776) - #13379

Draft
manzoorwanijk wants to merge 7 commits into
WordPress:trunkfrom
manzoorwanijk:fix/twentynineteen-dart-sass
Draft

[DO NOT MERGE] Twenty Nineteen: Replace node-sass with Dart Sass (CI check, stacked on #11776)#13379
manzoorwanijk wants to merge 7 commits into
WordPress:trunkfrom
manzoorwanijk:fix/twentynineteen-dart-sass

Conversation

@manzoorwanijk

@manzoorwanijk manzoorwanijk commented Sep 3, 2026

Copy link
Copy Markdown
Member

Review #13380 instead. That is the actual PR for this change: the same three commits, based on trunk, decoupled from the Node.js upgrade.

This one is for CI verification only. Do not merge. It stacks those commits on #11776 so the theme build job runs against Node.js 24, which trunk does not yet use. That job currently fails on #11776 because Twenty Nineteen is the last default theme still using node-sass, which no longer builds on Node.js 22 or later. Here it passes.

The first four commits are #11776 by @desrosj. The last three are the theme change, described in full on #13380.

Trac ticket:

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code, Codex
Model(s): Claude Opus 5, GPT-5.4
Used for: Diagnosing the failure, the dependency swap, and differential testing of the output; reviewed and verified by me.

desrosj and others added 7 commits August 31, 2026 10:01
`node-sass` ships no prebuilt binary for Node.js 24 and its `nan`-based
native addon no longer compiles against V8, so `npm install` fails. Twenty
Nineteen was the last default theme still using it.

Switches to `sass` and commits the regenerated stylesheets.
Dart Sass drops contextual `@extend` selectors it considers redundant,
without accounting for the specificity those selectors relied on. Eight
fallback rules were subsumed by a less specific selector that a later
equal-specificity rule then won, dropping the non-latin font for all 31
locales on 404 titles, submit/reset/button inputs, cover block headings
and aligned pullquote citations.

Moves `%non-latin-fonts` into its own partial, imported last, so the
fallbacks follow the declarations they override and win on source order
rather than specificity.
…tton.

The raw declaration opted this button out of the non-latin fallbacks that
every other button gets. It now resolves to the fallback anyway, via the
generic `button` selector, but only on an equal-specificity source order
tie. Recording the intent removes that dependency.

Generated CSS is unchanged: Dart Sass folds the new selector into the
existing `button:lang()` groups.
@manzoorwanijk
manzoorwanijk force-pushed the fix/twentynineteen-dart-sass branch from 71e409a to 8227fd2 Compare September 3, 2026 12:09
@manzoorwanijk manzoorwanijk changed the title Twenty Nineteen: Replace node-sass with Dart Sass (CI check, stacked on #11776) [DO NOT MERGE] Twenty Nineteen: Replace node-sass with Dart Sass (CI check, stacked on #11776) Sep 3, 2026
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