Conversation
WalkthroughThis PR updates numerous dependency versions across package manifests, adjusts pnpm patch entries, and adds 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Important Action Needed: IP Allowlist UpdateIf your organization protects your Git platform with IP whitelisting, please add the new CodeRabbit IP address to your allowlist:
Reviews will stop working after February 8, 2026 if the new IP is not added to your allowlist. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@playgrounds/v3/package.json`:
- Line 18: The dependency update bumped "@types/node" from v20 to v25 in
package.json which may introduce breaking type changes; update the package.json
entry for "@types/node" to the intended v25 version, run npm install (or yarn)
and then run the TypeScript compiler (tsc) to surface any type errors, fix any
API/typing mismatches (e.g., undici/fetch or Web API types) in affected modules
or adjust tsconfig/lib targets as needed so the codebase compiles cleanly
against TypeScript 5.9.3 and `@types/node`@25.
06fdcc4 to
b8f4de1
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@packages/tailwindcss/src/utilities.test.ts`:
- Around line 26649-26655: The shadow concatenation adds an extra space because
applyPrefix in alphaReplacedShadowProperties prepends the prefix to segments
that still have leading whitespace after replaceShadowColors joined them; update
applyPrefix (used by alphaReplacedShadowProperties and interacting with
replaceShadowColors/segment) to trim each segment before prepending the prefix
(e.g., call .trim() on the mapped value) so prefix + value has no doubled spaces
when rejoining layers.
+ ignore `crates/ignore/` when running prettier. We vendored this crate so ideally we only make changes that are required for our use cases.
The property value in Chromium and WebKit is different. One results in `rgb(255, 255, 255) solid 2px` the other in `2px solid rgb(255, 255, 255)` This normalizes the value by sorting its parts, but only for the `outline` property. We can add more exceptions when needed.
b8f4de1 to
254407c
Compare
| --animate-very-long-animation-name: very-long-animation-name | ||
| var(--very-long-animation-name-configuration, 2.5s ease-in-out 0s infinite normal none running); |
There was a problem hiding this comment.
The weird formatting here is because it's formatted this way in the input of the test above. The latest version of Lightning CSS doesn't normalize whitespace in custom properties anymore, which maps to the spec https://drafts.csswg.org/css-variables/#serializing-custom-props
Specified values of custom properties must be serialized exactly as specified by the author (with one exception, below). Simplifications that might occur in other properties, such as dropping comments, normalizing whitespace, reserializing numeric tokens from their value, etc., must not occur.
The one exception to serialization being precisely as specified in the source file is that an empty custom property (such as --foo:;) must serialize with a single space as its value.
| @supports (color: color-mix(in lab, red, red)) { | ||
| .text-red-500\\/50 { | ||
| color: color-mix(in oklab, var(--color-red-500) 50%, transparent); | ||
| color: color-mix(in oklab,var(--color-red-500)50%,transparent); |
There was a problem hiding this comment.
The input doesn't contain spaces, so this one doesn't contain spaces either. While this looks a little bit odd, it's correct. This is also the output we would produce in Tailwind Play or the CDN because we don't use Lightning CSS there.
| .-rotate-x-\\(--var\\) { | ||
| --tw-rotate-x: rotateX(calc(var(--var) * -1)); | ||
| transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, ); | ||
| transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, ); |
There was a problem hiding this comment.
These are a little bit silly but not the end of the world. This is because we run Lightning CSS twice to get better output. But they have a bug where they always introduce 1 additional whitespace character in these fallbacks.
I fixed this upstream: parcel-bundler/lightningcss#1142
So we likely will have a similar PR in the near future where we fix these again.
| font-size: var(--text-sm, .8755rem); | ||
| line-height: var(--text-sm--line-height, 1.255rem); | ||
| text-rendering: optimizeLegibility; | ||
| text-rendering: optimizelegibility; |
There was a problem hiding this comment.
Note: make sure you switch the version in the dropdown to 1.31.1 to see the change. If you're looking at this in the future, you can toggle between 1.30.2 and 1.31.0 to see the difference.
|
|
||
| .example-\\[7\\/9\\] { | ||
| --value: 7 / 9; | ||
| --value: 7/9; |
There was a problem hiding this comment.
This is because we take the input as-is and don't normalize whitespace here.
| let [lhs, rhs] = segment(candidate.value.fraction, '/') | ||
| if (!isPositiveInteger(lhs) || !isPositiveInteger(rhs)) return | ||
| value = `calc(${candidate.value.fraction} * 100%)` | ||
| value = `calc(${lhs} / ${rhs} * 100%)` |
There was a problem hiding this comment.
In calc expressions whitespace can be important for certain operators. The main reason this changed is because it will produce nicer output that's always correct.
| ) | ||
|
|
||
| expect(await getPropertyValue('#x', 'outline')).toEqual('rgb(255, 255, 255) solid 2px') | ||
| expect(await getPropertyValue('#x', 'outline')).toEqual('2px solid rgb(255, 255, 255)') |
There was a problem hiding this comment.
Normalized this because the order of arguments is different between WebKit and Chromium for some reason...
This PR bumps a bunch of dependencies. This also moves a few dependencies that we use in multiple packages to the pnpm catalog.
Closes: #19603, #19604, #19576, #19575, #19573, #19565, #19547, #19546, #19545, #19609, #19581, #19620, #19619
Test Plan
All tests in CI should still pass. [ci-all]