You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ignore <!-- and --> between top-level rules in the CSS parser - #20665
The CSS parser treats --> as the start of a custom property, so parse('-->') throws Invalid custom property, expected a value. a { color: red } --> b { color: blue } turns rule b and everything after it into one fake declaration, including @tailwind utilities. <!-- also sticks to the next selector, or throws before an at-rule.
CSS Syntax 3 ignores these tokens at the top level of a stylesheet, and Lightning CSS already does. This PR skips them between top-level nodes. Inside a selector, a custom property value or a block nothing changes.
Test plan
New tests in css-parser.test.ts: 8 fail without the fix, all 208 pass with it.
corepack [email protected] exec vitest run in packages/tailwindcss: 5204 passed, 1 skipped.
Review was skipped as selected files did not have any reviewable changes.
Run configuration
Source mode: Auto
Repository: Unavailable
Branch: Unavailable
File: No configuration file from this repository applied
Commit: Unavailable
Layers: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: 2b746102-e841-42c6-af95-87c5df8ee514
Commits
Reviewing files that changed from the base of the PR and between a3ba483 and b7af26f.
You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.
Use the checkbox below for a quick retry:
Trigger review
No actionable comments were generated in the recent review.
Walkthrough
The CSS parser now skips <!-- and --> when they appear between top-level nodes and the parser buffer is empty. Tests cover markers around rules, at-rules, and declarations, plus cases where the sequences remain part of selectors, custom-property values, or rule contents. A changelog entry describes the top-level handling.
Merge Risk: Low · previous review a3ba4
Markers after a standalone CR or form feed can still cause a following rule to be misparsed. This pre-existing edge case does not appear to block merging, but it warrants owner awareness.
Pre-merge checks: 4
Check name
Status
Explanation
Title check
The title names the change: the CSS parser now ignores <!-- and --> (CDO/CDC tokens) between top-level rules. The raw summary confirms the parser skips these markers between top-level nodes with a…
Description check
The description states the problem: the parser treats --> as the start of a custom property, which throws an error or merges following rules into a fake declaration. It explains that CSS Syntax 3 ig…
Linked Issues check
Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check
Check skipped because no linked issues were found for this pull request.
Full details: Title check
Explanation
The title names the change: the CSS parser now ignores <!-- and --> (CDO/CDC tokens) between top-level rules. The raw summary confirms the parser skips these markers between top-level nodes with an empty buffer, and the test file covers them. The title is specific and matches the primary change.
Full details: Description check
Explanation
The description states the problem: the parser treats --> as the start of a custom property, which throws an error or merges following rules into a fake declaration. It explains that CSS Syntax 3 ignores these tokens at the top level, that the PR skips them between top-level nodes, and that selectors, custom property values, and blocks are unchanged. It also lists the test plan. This relates directly to the changeset.
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
File: No configuration file from this repository applied
Commit: Unavailable
Layers: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: a8a86152-fac5-4380-98e5-1bccfc1d2e93
Commits
Reviewing files that changed from the base of the PR and between 3201550 and a3ba483.
Files selected for processing: 1
packages/tailwindcss/src/css-parser.test.ts
Files skipped from review as they are similar to previous changes: 1
packages/tailwindcss/src/css-parser.test.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Review info
Run configuration
Source mode: Auto
Repository: Unavailable
Branch: Unavailable
File: No configuration file from this repository applied
Commit: Unavailable
Layers: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: f45a9ed3-5995-4d68-abec-df1276628f70
Commits
Reviewing files that changed from the base of the PR and between 2626ae6 and 3201550.
Files selected for processing: 3
.changelog/ignore-cdo-cdc-tokens.md
packages/tailwindcss/src/css-parser.test.ts
packages/tailwindcss/src/css-parser.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! Nice catch, and a very thorough one: the spec reading is right, and the tests cover the edge cases well (---a, selectors, custom property values, nested blocks).
It is a bit surprising that a 1990s trick to hide <style> content from browsers that did not know <style> is still a valid part of the CSS grammar in 2026. Apparently the spec never throws anything away. 🦖
## pnpm-workspace.yaml (default)
## Dependency Updates
| Package | From | To | Type |
| --- | --- | --- | --- |
| `@better-auth/cimd` | 1.7.17 | 1.7.18 | patch |
| `@better-auth/mcp` | 1.7.17 | 1.7.18 | patch |
| `@better-auth/oauth-provider` | 1.7.17 | 1.7.18 | patch |
| `@better-auth/passkey` | 1.7.17 | 1.7.18 | patch |
| `@better-auth/sso` | 1.7.17 | 1.7.18 | patch |
| `@react-email/ui` | 6.11.6 | 6.11.7 | patch |
| `@tailwindcss/vite` | 4.3.4 | 4.3.5 | patch |
| `better-auth` | 1.7.17 | 1.7.18 | patch |
| `mdast-util-to-markdown` | 2.2.2 | 2.2.3 | patch |
| `react-email` | 6.11.6 | 6.11.7 | patch |
| `seroval` | 1.7.7 | 1.7.8 | patch |
| `tailwindcss` | 4.3.4 | 4.3.5 | patch |
## Release Notes
<details>
<summary><b>@<!---->better-auth/cimd</b> (1.7.17 → 1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>@<!---->better-auth/mcp</b> (1.7.17 → 1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>@<!---->better-auth/oauth-provider</b> (1.7.17 →
1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>@<!---->better-auth/passkey</b> (1.7.17 → 1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>@<!---->better-auth/sso</b> (1.7.17 → 1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>@<!---->tailwindcss/vite</b> (4.3.4 → 4.3.5)</summary>
### Fixed
- Canonicalization: improve performance in projects with many functional
variant values (e.g. a `matchVariant` plugin with thousands of values)
([#20663](tailwindlabs/tailwindcss#20663))
- Don't crash or create a fallback with the wrong color for a
`color-mix(…)` without a color interpolation method (e.g.
`color-mix(var(--color-red-500))` or `color-mix(currentcolor 50%,
transparent)`)
([#20658](tailwindlabs/tailwindcss#20658),
[#20666](tailwindlabs/tailwindcss#20666))
- Ensure `@tailwindcss/oxide-wasm32-wasi` loads instead of hanging
forever (e.g. with `NAPI_RS_FORCE_WASI=error` or in WebContainers)
([#20667](tailwindlabs/tailwindcss#20667))
- Remove `as: '*.css'` from the `@tailwindcss/turbopack` setup in its
README, because it breaks CSS modules
([#20660](tailwindlabs/tailwindcss#20660))
- Ignore `<!--` and `-->` between top-level rules in CSS instead of
throwing or swallowing the next rule (e.g. `a { color: red } --> b {
color: blue }`)
([#20665](tailwindlabs/tailwindcss#20665))
- Ensure `@tailwindcss/oxide-wasm32-wasi` detects changed and new source
files after the first scan (e.g. in WebContainers)
([#20487](tailwindlabs/tailwindcss#20487))
- Prevent type errors with `skipLibCheck: false` caused by imports of
unshipped modules in the `@tailwindcss/node` type declarations
([#20632](tailwindlabs/tailwindcss#20632))
</details>
<details>
<summary><b>better-auth</b> (1.7.17 → 1.7.18)</summary>
> [!IMPORTANT]
> **Action required**
>
> - If you use `getTestInstance` with `testWith: "mysql"`, run a MySQL
server at `127.0.0.1:3306` with the `root` password set to
`root_password`.
([#12244](better-auth/better-auth#12244))
## `better-auth`
### Bug Fixes
- Fixed "revoke all sessions" with `secondaryStorage` and
`storeSessionInDatabase` to also revoke sessions created while the
revocation is running, except sessions created by a
`session.delete.after` hook, which stay active
([#12259](better-auth/better-auth#12259))
- Fixed `getTestInstance` from `better-auth/test` to close its own
Postgres connection pool and SQLite database when the test file
finishes, while with Vitest's default `sequence.hooks: "stack"` your
`afterAll` hooks still run first and can keep using the instance
([#12250](better-auth/better-auth#12250))
- Fixed `getTestInstance` with `testWith: "mysql"` hanging, and added a
separate database per instance so several instances can run in one test
file ([#12244](better-auth/better-auth#12244))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/better-auth/CHANGELOG.md)
## `@better-auth/core`
### Bug Fixes
- fix(core): accept introspected tokens when verifyOptions.typ is set
([#12249](better-auth/better-auth#12249))
For detailed changes, see
[`CHANGELOG`](https://github.com/better-auth/better-auth/blob/4946a1e3b66905c7374c7c52bd851fc43c6f83de/packages/core/CHANGELOG.md)
## Contributors
Thanks to everyone who contributed to this release:
@<!---->gustavovalverde
**Full changelog:**
[`v1.7.17...v1.7.18`](better-auth/better-auth@v1.7.17...v1.7.18)
</details>
<details>
<summary><b>mdast-util-to-markdown</b> (2.2.2 → 2.2.3)</summary>
#### Fix
* db77617 Fix to drop empty attention
#### Performance
* 3f85e8d Fix performance of many touching attention runs
**Full Changelog**:
syntax-tree/mdast-util-to-markdown@2.2.2...2.2.3
</details>
<details>
<summary><b>react-email</b> (6.11.6 → 6.11.7)</summary>
### Patch Changes
* d8a0778: Preserve custom utility theme-variable overrides when
resolving email styles, including local declaration order and
importance.
* 2b3d241: Resolve tsconfig path aliases in dynamic import template
literals on Windows, so editing a file inside an aliased directory
reloads the preview.
</details>
<details>
<summary><b>seroval</b> (1.7.7 → 1.7.8)</summary>
### Patch Changes
- Harden string encoding and stream error handling.
</details>
<details>
<summary><b>tailwindcss</b> (4.3.4 → 4.3.5)</summary>
### Fixed
- Canonicalization: improve performance in projects with many functional
variant values (e.g. a `matchVariant` plugin with thousands of values)
([#20663](tailwindlabs/tailwindcss#20663))
- Don't crash or create a fallback with the wrong color for a
`color-mix(…)` without a color interpolation method (e.g.
`color-mix(var(--color-red-500))` or `color-mix(currentcolor 50%,
transparent)`)
([#20658](tailwindlabs/tailwindcss#20658),
[#20666](tailwindlabs/tailwindcss#20666))
- Ensure `@tailwindcss/oxide-wasm32-wasi` loads instead of hanging
forever (e.g. with `NAPI_RS_FORCE_WASI=error` or in WebContainers)
([#20667](tailwindlabs/tailwindcss#20667))
- Remove `as: '*.css'` from the `@tailwindcss/turbopack` setup in its
README, because it breaks CSS modules
([#20660](tailwindlabs/tailwindcss#20660))
- Ignore `<!--` and `-->` between top-level rules in CSS instead of
throwing or swallowing the next rule (e.g. `a { color: red } --> b {
color: blue }`)
([#20665](tailwindlabs/tailwindcss#20665))
- Ensure `@tailwindcss/oxide-wasm32-wasi` detects changed and new source
files after the first scan (e.g. in WebContainers)
([#20487](tailwindlabs/tailwindcss#20487))
- Prevent type errors with `skipLibCheck: false` caused by imports of
unshipped modules in the `@tailwindcss/node` type declarations
([#20632](tailwindlabs/tailwindcss#20632))
</details>
---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
markharding
pushed a commit
to futo-org/Harbor
that referenced
this pull request
Nov 10, 2026
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
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.
Summary
The CSS parser treats
-->as the start of a custom property, soparse('-->')throwsInvalid custom property, expected a value.a { color: red } --> b { color: blue }turns ruleband everything after it into one fake declaration, including@tailwind utilities.<!--also sticks to the next selector, or throws before an at-rule.CSS Syntax 3 ignores these tokens at the top level of a stylesheet, and Lightning CSS already does. This PR skips them between top-level nodes. Inside a selector, a custom property value or a block nothing changes.
Test plan
css-parser.test.ts: 8 fail without the fix, all 208 pass with it.corepack [email protected] exec vitest runinpackages/tailwindcss: 5204 passed, 1 skipped.pnpm changelog checkpasses.