mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
6448 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
49948d087e
|
Fix failing integration tests (#19068)
The vite/nuxt integration tests started failing because one of the internal dependencies (`nuxi`) was updated from `3.28.0` to `3.29.0` which includes a newer version of `undici` which in turn relies on `node:sqlite`. `node:sqlite` was added in a newer Node version, and we still use Node v20 in CI. This PR pins `nuxi` to `3.28.0` until we can upgrade our Node version in CI. [ci-all] |
||
|
|
86e4b8e636
|
run prettier | ||
|
|
231e17b84a | Change permissions so issue-triage can run for everyone | ||
|
|
4cbdfa6e43 | Issue triage tweaks | ||
|
|
9ef314e786
|
Add agentic workflow issue-triage (#19057)
This PR attempts to set up an automatic issue triaging tool using Claude Code as the agent and GitHub Agentics as the framework: https://githubnext.github.io/gh-aw/start-here/quick-start/ Based on the `safe-outputs` setting, this agent can only label issues or write replies. Let's see how useful that is 🤷 You can't run it locally since it does not have a manual trigger and needs a new github issue instead so my plan is to merge it and then create some super legit issues to see if it works! ## Test plan ``` α dev/tailwindcss (add-workflow-workflows-issue-triage.md-3051) gh aw status Workflow Status Name | Installed | Up-to-date | Status | Time Remaining ------------ | --------- | ---------- | ------- | -------------- issue-triage | Yes | Yes | Unknown | 29d 22h ``` --------- Co-authored-by: Robin Malfait <malfait.robin@gmail.com> |
||
|
|
6802c685c9
|
Update globby 14.1.0 → 15.0.0 (major) (#19056)
Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ globby (14.1.0 → 15.0.0) · [Repo](https://github.com/sindresorhus/globby) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/sindresorhus/globby/releases/tag/v15.0.0">15.0.0</a></h4> <blockquote><h3 dir="auto">Breaking</h3> <ul dir="auto"> <li>Require Node.js 20 <a href=" |
||
|
|
573f633f13
|
Update eslint 9.35.0 → 9.36.0 (minor) (#19049)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ eslint (9.35.0 → 9.36.0) · [Repo](https://github.com/eslint/eslint) · [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/eslint/eslint/releases/tag/v9.36.0">9.36.0</a></h4> <blockquote><h2 dir="auto">Features</h2> <ul dir="auto"> <li> <a href=" |
||
|
|
b67cbcf6cc
|
Prepare v4.1.14 release (#19037)
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>v4.1.14 |
||
|
|
d96a48e3c1 | Update all of nextjs to version 15.5.4 | ||
|
|
2766a49e28
|
Update tar 7.4.3 → 7.5.1 (minor) (#19035)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ tar (7.4.3 → 7.5.1) · [Repo](https://github.com/isaacs/node-tar) · [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md) <details> <summary>Commits</summary> <p><a href=" |
||
|
|
5cd49b057b
|
Update @playwright/test 1.55.0 → 1.55.1 (patch) (#19033)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @playwright/test (1.55.0 → 1.55.1) · [Repo](https://github.com/Microsoft/playwright) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/microsoft/playwright/releases/tag/v1.55.1">1.55.1</a></h4> <blockquote><h3 dir="auto">Highlights</h3> <p dir="auto"><a href="https://bounce.depfu.com/github.com/microsoft/playwright/issues/37479">#37479</a> - [Bug]: Upgrade Chromium to 140.0.7339.186.<br> <a href="https://bounce.depfu.com/github.com/microsoft/playwright/issues/37147">#37147</a> - [Regression]: Internal error: step id not found.<br> <a href="https://bounce.depfu.com/github.com/microsoft/playwright/issues/37146">#37146</a> - [Regression]: HTML reporter displays a broken chip link when there are no projects.<br> <a href="https://bounce.depfu.com/github.com/microsoft/playwright/pull/37137">#37137</a> - Revert "fix(a11y): track inert elements as hidden".</p> <h2 dir="auto">Browser Versions</h2> <ul dir="auto"> <li>Chromium 140.0.7339.186</li> <li>Mozilla Firefox 141.0</li> <li>WebKit 26.0</li> </ul> <p dir="auto">This version was also tested against the following stable channels:</p> <ul dir="auto"> <li>Google Chrome 139</li> <li>Microsoft Edge 139</li> </ul></blockquote> <p><em>Does any of this look wrong? <a href="https://depfu.com/packages/npm/@playwright%2Ftest/feedback">Please let us know.</a></em></p> </details> <details> <summary>Commits</summary> <p><a href=" |
||
|
|
47d6a023e3
|
Ensure first class inside className in React is migrated (#19031)
### 1. Handling React className migration The PR fixes an issue when migrating React components to tailwind v4 with the migration tool, that the first class after `className="` is ignored. For example, when migrating ```JSX <div className="shadow"></div> ``` `shadow` will not be migrated to `shadow-sm` . This is because in `is-safe-migration.ts`, it tests the line before candidate with regex `/(?<!:?class)=['"]$/`. This basically skips the migration for anything like `foo="shadow"`, with only exception for Vue (eg. `class="shadow"`). The PR changes the regex from ```regex /(?<!:?class)=['"]$/ ```` to ```regex /(?<!:?class|className)=['"]$/ ``` which essentially adds a new exception specifically for React's `className="shadow"` case. ### 2. Removing redundant rules Besides, I found that several other rules in `CONDITIONAL_TEMPLATE_SYNTAX` being redundant since they are already covered by the rule above, so I removed them. If we prefer the previous explicit approach, I can revert it. ## Test plan <!-- Explain how you tested your changes. Include the exact commands that you used to verify the change works and include screenshots/screen recordings of the update behavior in the browser if applicable. --> Tests added for both the Vue and React classes to prevent false negative cases. --------- Co-authored-by: Jordan Pittman <jordan@cryptica.me> |
||
|
|
9d00662e10
|
Show version mismatch when running upgrade tool (#19028)
This PR fixes an issue where sometimes people try to run the upgrade tool, reset the changes and then try again. If this happens, then the `package.json` and/or your lock file will point to the old Tailwind CSS v3 version, but the actual installed version will be v4. This will also cause the upgrade tool to now upgrade from v4 to v4, which is not what most people want if they were trying to upgrade from v3 to v4. This in turn will cause some issues because now we won't try to migrate the config file, or v3-specific classes that also exist in v4 but are only safe to upgrade from v3 to v4. This PR uses `npm ls tailwindcss` to determine the actual installed version. This command already errors if there is a mismatch between the installed version and the version in `package.json` or the lock file. This also happens to work in pnpm and bun projects (added integration tests for these). If for whatever reason we can't determine the expected version, we fall back to the old behavior of just upgrading. In this scenario, the changes introduced in https://github.com/tailwindlabs/tailwindcss/pull/19026 will at least give you a hint of what version was actually installed. ### Test plan 1. Tested it in a v3 project where I performed the following steps: 1. Run the upgrade tool in full (`npx tailwindcss-upgrade`) 2. Reset the changes (`git reset --hard && git clean -df`) 1. Run the upgrade tool again This resulted in the following output: <img width="1059" height="683" alt="image" src="https://github.com/user-attachments/assets/1d2ea2d1-b602-4631-958f-cc21eb8a633f" /> 2. Added some integration tests to make sure this also works in pnpm, bun and normal npm projects. [ci-all] |
||
|
|
b497e1eaf3
|
Add Upgrading from Tailwind CSS v… when running upgrade tool (#19026)
This PR adds a bit more information when running the upgrade tool to know what version of Tailwind CSS you're upgrading from. This will help users and maintainers when things go wrong. Will have another PR up soon that errors when the Tailwind CSS version in package.json and node_modules don't match. ### Test plan Ran this one one of our older projects and saw the version logged correctly. <img width="1055" height="363" alt="image" src="https://github.com/user-attachments/assets/5cbf4c52-ea0f-42c8-bd55-5bae2ed511de" /> |
||
|
|
f6bb72cf46
|
Update jiti 2.5.1 → 2.6.0 (minor) (#19029)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ jiti (2.5.1 → 2.6.0) · [Repo](https://github.com/unjs/jiti) · [Changelog](https://github.com/unjs/jiti/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/unjs/jiti/releases/tag/v2.6.0">2.6.0</a></h4> <blockquote><p dir="auto"><a href="https://bounce.depfu.com/github.com/unjs/jiti/compare/v2.5.1...v2.6.0">compare changes</a></p> <h3 dir="auto">🌟 What is new?</h3> <p dir="auto">This release fixes minor issues, migrates to Rspack for dist, and lazily imports the Babel transformer only when needed, which should noticeably improve startup times.</p> <ul dir="auto"> <li>Install size reduced from <code class="notranslate">2.03MB</code> to <code class="notranslate">1.67MB</code> </li> <li>Loading times improved <code class="notranslate">150ms</code> => <code class="notranslate">22ms</code> (full transform: <code class="notranslate">180ms</code> => <code class="notranslate">115ms</code>)</li> </ul> <h3 dir="auto">🔥 Performance</h3> <ul dir="auto"> <li>Lazy load transformer (<a href="https://bounce.depfu.com/github.com/unjs/jiti/pull/405">#405</a>)</li> </ul> <h3 dir="auto">🩹 Fixes</h3> <ul dir="auto"> <li> <strong>cjs-interop:</strong> Handle function default exports (<a href="https://bounce.depfu.com/github.com/unjs/jiti/pull/396">#396</a>)</li> <li>Always use native require/import for <code class="notranslate">node:</code> specifiers (<a href="https://bounce.depfu.com/github.com/unjs/jiti/pull/392">#392</a>)</li> </ul> <h3 dir="auto">📦 Build</h3> <ul dir="auto"> <li>Migrate to rspack (<a href="https://bounce.depfu.com/github.com/unjs/jiti/pull/404">#404</a>)</li> <li>Updated bundled dependencies (<a href="https://bounce.depfu.com/github.com/unjs/jiti/compare/v2.5.1...v2.6.0#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519">diff</a>)</li> </ul> <h3 dir="auto">✅ Tests</h3> <ul dir="auto"> <li>Update deno and bun native test coverage (<a href="https://bounce.depfu.com/github.com/unjs/jiti/commit/df844f8">df844f8</a>)</li> </ul> <h3 dir="auto">❤️ Contributors</h3> <ul dir="auto"> <li>Pooya Parsa (<a href="https://bounce.depfu.com/github.com/pi0">@pi0</a>)</li> <li>Volodymyr Kolesnykov (<a href="https://bounce.depfu.com/github.com/sjinks">@sjinks</a>)</li> <li>Jungwoo LEE (<a href="https://bounce.depfu.com/github.com/jungwoo3490">@jungwoo3490</a>)</li> </ul></blockquote> <p><em>Does any of this look wrong? <a href="https://depfu.com/packages/npm/jiti/feedback">Please let us know.</a></em></p> </details> <details> <summary>Commits</summary> <p><a href=" |
||
|
|
9feefacf81
|
Update bun 1.2.20 → 1.2.22 (patch) (#19007)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ bun (1.2.20 → 1.2.22) · [Repo](https://github.com/oven-sh/bun) Sorry, we couldn't find anything useful about this release. ---  [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`. <details><summary>All Depfu comment commands</summary> <blockquote><dl> <dt>@depfu rebase</dt><dd>Rebases against your default branch and redoes this update</dd> <dt>@depfu recreate</dt><dd>Recreates this PR, overwriting any edits that you've made to it</dd> <dt>@depfu merge</dt><dd>Merges this PR once your tests are passing and conflicts are resolved</dd> <dt>@depfu cancel merge</dt><dd>Cancels automatic merging of this PR</dd> <dt>@depfu close</dt><dd>Closes this PR and deletes the branch</dd> <dt>@depfu reopen</dt><dd>Restores the branch and reopens this PR (if it's closed)</dd> <dt>@depfu pause</dt><dd>Ignores all future updates for this dependency and closes this PR</dd> <dt>@depfu pause [minor|major]</dt><dd>Ignores all future minor/major updates for this dependency and closes this PR</dd> <dt>@depfu resume</dt><dd>Future versions of this dependency will create PRs again (leaves this PR as is)</dd> </dl></blockquote> </details> Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> |
||
|
|
0d39788ec9
|
Update @tailwindcss/typography 0.5.16 → 0.5.19 (minor) (#19014)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @tailwindcss/typography (0.5.16 → 0.5.19) · [Repo](https://github.com/tailwindlabs/tailwindcss-typography) · [Changelog](https://github.com/tailwindlabs/tailwindcss-typography/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/tailwindlabs/tailwindcss-typography/releases/tag/v0.5.19">0.5.19</a></h4> <blockquote><h3 dir="auto">Fixed</h3> <ul dir="auto"> <li>Fixed broken color styles (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/405">#405</a>)</li> </ul></blockquote> <h4><a href="https://github.com/tailwindlabs/tailwindcss-typography/releases/tag/v0.5.18">0.5.18</a></h4> <blockquote><h3 dir="auto">Fixed</h3> <ul dir="auto"> <li>Fixed undefined variable error (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/403">#403</a>)</li> </ul></blockquote> <h4><a href="https://github.com/tailwindlabs/tailwindcss-typography/releases/tag/v0.5.17">0.5.17</a></h4> <blockquote><h3 dir="auto">Added</h3> <ul dir="auto"> <li>Add modifiers for description list elements (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/357">#357</a>)</li> <li>Add <code class="notranslate">prose-picture</code> modifier (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/367">#367</a>)</li> </ul> <h3 dir="auto">Fixed</h3> <ul dir="auto"> <li>Include unit in <code class="notranslate">hr</code> border-width value (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/379">#379</a>)</li> <li>Ensure <code class="notranslate"><kbd></code> styles work with Tailwind CSS v4 (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/387">#387</a>)</li> </ul> <h3 dir="auto">Changed</h3> <ul dir="auto"> <li>Remove lodash dependencies (<a href="https://bounce.depfu.com/github.com/tailwindlabs/tailwindcss-typography/pull/402">#402</a>)</li> </ul></blockquote> <p><em>Does any of this look wrong? <a href="https://depfu.com/packages/npm/@tailwindcss%2Ftypography/feedback">Please let us know.</a></em></p> </details> <details> <summary>Commits</summary> <p><a href=" |
||
|
|
20f830f687
|
Update prettier-plugin-organize-imports 4.2.0 → 4.3.0 (minor) (#19013)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ prettier-plugin-organize-imports (4.2.0 → 4.3.0) · [Repo](https://github.com/simonhaenisch/prettier-plugin-organize-imports) · [Changelog](https://github.com/simonhaenisch/prettier-plugin-organize-imports/blob/master/changelog.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/simonhaenisch/prettier-plugin-organize-imports/releases/tag/v4.3.0">4.3.0</a></h4> <blockquote><h2 dir="auto">What's Changed</h2> <ul dir="auto"> <li>feat: allow configuration of <code class="notranslate">organizeImportsTypeOrder</code>(<a href="https://bounce.depfu.com/github.com/simonhaenisch/prettier-plugin-organize-imports/pull/152">#152</a>) - thanks <a href="https://bounce.depfu.com/github.com/goege64">@goege64</a> for your first contribution 🎉</li> </ul> <p dir="auto"><strong>Full Changelog</strong>: <a href="https://bounce.depfu.com/github.com/simonhaenisch/prettier-plugin-organize-imports/compare/v4.2.0...v4.3.0"><tt>v4.2.0...v4.3.0</tt></a></p></blockquote> <p><em>Does any of this look wrong? <a href="https://depfu.com/packages/npm/prettier-plugin-organize-imports/feedback">Please let us know.</a></em></p> </details> <details> <summary>Commits</summary> <p><a href=" |
||
|
|
cc8fefc154 | Update magic-string to version 0.30.19 | ||
|
|
1f844244cb | Update all of nextjs to version 15.5.2 | ||
|
|
210575a6a5
|
Update dedent 1.6.0 → 1.7.0 (minor) (#19010)
Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ dedent (1.6.0 → 1.7.0) · [Repo](https://github.com/dmnd/dedent) · [Changelog](https://github.com/dmnd/dedent/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/dmnd/dedent/releases/tag/v1.7.0">1.7.0</a></h4> <blockquote><h2 dir="auto">What's Changed</h2> <ul dir="auto"> <li>docs: cleaned up README.md badges by <a href="https://bounce.depfu.com/github.com/JoshuaKGoldberg">@JoshuaKGoldberg</a> in <a href="https://bounce.depfu.com/github.com/dmnd/dedent/pull/100">#100</a> </li> <li>feat: add alignValues option by <a href="https://bounce.depfu.com/github.com/PaperStrike">@PaperStrike</a> in <a href="https://bounce.depfu.com/github.com/dmnd/dedent/pull/102">#102</a> </li> <li>1.7.0 by <a href="https://bounce.depfu.com/github.com/JoshuaKGoldberg">@JoshuaKGoldberg</a> in <a href="https://bounce.depfu.com/github.com/dmnd/dedent/pull/103">#103</a> </li> </ul> <h2 dir="auto">New Contributors</h2> <ul dir="auto"> <li> <a href="https://bounce.depfu.com/github.com/PaperStrike">@PaperStrike</a> made their first contribution in <a href="https://bounce.depfu.com/github.com/dmnd/dedent/pull/102">#102</a> </li> </ul> <p dir="auto"><strong>Full Changelog</strong>: <a href="https://bounce.depfu.com/github.com/dmnd/dedent/compare/v1.6.0...v1.7.0"><tt>v1.6.0...v1.7.0</tt></a></p></blockquote> <p><em>Does any of this look wrong? <a href="https://depfu.com/packages/npm/dedent/feedback">Please let us know.</a></em></p> </details> <details> <summary>Commits</summary> <p><a href=" |
||
|
|
3a4eb389b6
|
Update eslint 9.33.0 → 9.35.0 (minor) (#19009)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ eslint (9.33.0 → 9.35.0) · [Repo](https://github.com/eslint/eslint) · [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) <details> <summary>Release Notes</summary> <h4><a href="https://github.com/eslint/eslint/releases/tag/v9.35.0">9.35.0</a></h4> <blockquote><h2 dir="auto">Features</h2> <ul dir="auto"> <li> <a href=" |
||
|
|
de726339e7
|
Update @types/semver 7.7.0 → 7.7.1 (patch) (#19005)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @types/semver (7.7.0 → 7.7.1) · [Repo](https://github.com/DefinitelyTyped/DefinitelyTyped) Sorry, we couldn't find anything useful about this release. ---  [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`. <details><summary>All Depfu comment commands</summary> <blockquote><dl> <dt>@depfu rebase</dt><dd>Rebases against your default branch and redoes this update</dd> <dt>@depfu recreate</dt><dd>Recreates this PR, overwriting any edits that you've made to it</dd> <dt>@depfu merge</dt><dd>Merges this PR once your tests are passing and conflicts are resolved</dd> <dt>@depfu cancel merge</dt><dd>Cancels automatic merging of this PR</dd> <dt>@depfu close</dt><dd>Closes this PR and deletes the branch</dd> <dt>@depfu reopen</dt><dd>Restores the branch and reopens this PR (if it's closed)</dd> <dt>@depfu pause</dt><dd>Ignores all future updates for this dependency and closes this PR</dd> <dt>@depfu pause [minor|major]</dt><dd>Ignores all future minor/major updates for this dependency and closes this PR</dd> <dt>@depfu resume</dt><dd>Future versions of this dependency will create PRs again (leaves this PR as is)</dd> </dl></blockquote> </details> Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> |
||
|
|
d593a2101a
|
Update @types/react 19.1.9 → 19.1.13 (patch) (#19003)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @types/react (19.1.9 → 19.1.13) · [Repo](https://github.com/DefinitelyTyped/DefinitelyTyped) Sorry, we couldn't find anything useful about this release. ---  [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`. <details><summary>All Depfu comment commands</summary> <blockquote><dl> <dt>@depfu rebase</dt><dd>Rebases against your default branch and redoes this update</dd> <dt>@depfu recreate</dt><dd>Recreates this PR, overwriting any edits that you've made to it</dd> <dt>@depfu merge</dt><dd>Merges this PR once your tests are passing and conflicts are resolved</dd> <dt>@depfu cancel merge</dt><dd>Cancels automatic merging of this PR</dd> <dt>@depfu close</dt><dd>Closes this PR and deletes the branch</dd> <dt>@depfu reopen</dt><dd>Restores the branch and reopens this PR (if it's closed)</dd> <dt>@depfu pause</dt><dd>Ignores all future updates for this dependency and closes this PR</dd> <dt>@depfu pause [minor|major]</dt><dd>Ignores all future minor/major updates for this dependency and closes this PR</dd> <dt>@depfu resume</dt><dd>Future versions of this dependency will create PRs again (leaves this PR as is)</dd> </dl></blockquote> </details> Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> |
||
|
|
5aa2bf1d90
|
Update @vitejs/plugin-react 5.0.0 → 5.0.3 (patch) (#19006) | ||
|
|
a800585478
|
Update @types/react-dom 19.1.7 → 19.1.9 (patch) (#19004)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @types/react-dom (19.1.7 → 19.1.9) · [Repo](https://github.com/DefinitelyTyped/DefinitelyTyped) Sorry, we couldn't find anything useful about this release. ---  [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`. <details><summary>All Depfu comment commands</summary> <blockquote><dl> <dt>@depfu rebase</dt><dd>Rebases against your default branch and redoes this update</dd> <dt>@depfu recreate</dt><dd>Recreates this PR, overwriting any edits that you've made to it</dd> <dt>@depfu merge</dt><dd>Merges this PR once your tests are passing and conflicts are resolved</dd> <dt>@depfu cancel merge</dt><dd>Cancels automatic merging of this PR</dd> <dt>@depfu close</dt><dd>Closes this PR and deletes the branch</dd> <dt>@depfu reopen</dt><dd>Restores the branch and reopens this PR (if it's closed)</dd> <dt>@depfu pause</dt><dd>Ignores all future updates for this dependency and closes this PR</dd> <dt>@depfu pause [minor|major]</dt><dd>Ignores all future minor/major updates for this dependency and closes this PR</dd> <dt>@depfu resume</dt><dd>Future versions of this dependency will create PRs again (leaves this PR as is)</dd> </dl></blockquote> </details> Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> |
||
|
|
d6464bda09
|
Update @types/bun 1.2.20 → 1.2.22 (patch) (#19002)
Here is everything you need to know about this update. Please take a good look at what changed and the test results before merging this pull request. ### What changed? #### ✳️ @types/bun (1.2.20 → 1.2.22) · [Repo](https://github.com/DefinitelyTyped/DefinitelyTyped) Sorry, we couldn't find anything useful about this release. ---  [Depfu](https://depfu.com) will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with `@depfu rebase`. <details><summary>All Depfu comment commands</summary> <blockquote><dl> <dt>@depfu rebase</dt><dd>Rebases against your default branch and redoes this update</dd> <dt>@depfu recreate</dt><dd>Recreates this PR, overwriting any edits that you've made to it</dd> <dt>@depfu merge</dt><dd>Merges this PR once your tests are passing and conflicts are resolved</dd> <dt>@depfu cancel merge</dt><dd>Cancels automatic merging of this PR</dd> <dt>@depfu close</dt><dd>Closes this PR and deletes the branch</dd> <dt>@depfu reopen</dt><dd>Restores the branch and reopens this PR (if it's closed)</dd> <dt>@depfu pause</dt><dd>Ignores all future updates for this dependency and closes this PR</dd> <dt>@depfu pause [minor|major]</dt><dd>Ignores all future minor/major updates for this dependency and closes this PR</dd> <dt>@depfu resume</dt><dd>Future versions of this dependency will create PRs again (leaves this PR as is)</dd> </dl></blockquote> </details> --------- Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> Co-authored-by: Robin Malfait <malfait.robin@gmail.com> |
||
|
|
85575a41f4
|
Add Maud templating support (#18988)
This PR adds support for Maud templates in Rust. We already had some pre-processing for Rust but for Leptos `class:` syntax. This PR now added a dedicated Rust pre-processor that handles Leptos and Maud syntax. We only start pre-processing Maud templates if the Rust file includes the `html!` macro. ## Test plan Looking at the extractor, you can see that we now do extract the proper classes in Maud templates: <img width="1076" height="1856" alt="image" src="https://github.com/user-attachments/assets/e649e1de-289e-466f-8fab-44a938a47dd5" /> Fixes: #18984 |
||
|
|
c6e0a55d36
|
Ensure files with only @theme produce no output when built (#18979)
Closes #18978 |
||
|
|
9a5bae2038
|
Revert "Update all pnpm dependencies (2025-09-20) (#18971)"
This reverts commit 42eadfd1ee3c128b2f75b227d418c57a14b45116. |
||
|
|
42eadfd1ee
|
Update all pnpm dependencies (2025-09-20) (#18971)
This is your weekly update of **all** pnpm dependencies. Please take a good look at what changed and the test results before merging this pull request. ### What changed? ✳️ eslint (9.33.0 → 9.35.0, minor) · [Repo](https://github.com/eslint/eslint) · [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) · [Release](https://github.com/eslint/eslint/releases/tag/v9.35.0) · [Diff]( |
||
|
|
6c30d5ea3a
|
Bump napi toolchain to 3.3 (#18947)
This PR bumps all napi related dependencies to their latest version. Napi 3 has by now officially been released but since we've been using the preview already, there aren't many changes. One thing that ChatGPT found is that `--no-const-enum` is the default behavior now (see default value [in this table](https://napi.rs/docs/cli/build#options)) ## Test plan - `pnpm install && pnpm build` - `cd crates/node/npm/wasm32-wasi` - `pnpm install --ignore-workspace` (This is necessary for some reason or the bundled dependencies won't work, I have no clue why it's not necessary on CI) - `pnpm pack` - Install dependency in a new npm package with a simple config like this: ```js import { Scanner } from "@tailwindcss/oxide-wasm32-wasi"; let scanner = new Scanner({ sources: [ { base: "/Users/philipp/dev/tailwindcss/packages/@tailwindcss-postcss/src/fixtures/example-project", pattern: "**/*", negated: false, }, ], }); console.log(scanner.scan()); ``` - <img width="904" height="494" alt="CleanShot 2025-09-19 at 14 53 52@2x" src="https://github.com/user-attachments/assets/93e32c19-6db4-4d00-9fdb-a6fde22fc69c" /> I also tested the CI build to make sure the `bundledDependencies` are properly added. |
||
|
|
8d56381012
|
Detect classes in markdown inline directives (#18967)
Fixes #18071 |
||
|
|
d0f7f82787
|
Add plugin option documentation to the postcss plugin readme (#18940)
Closes https://github.com/tailwindlabs/tailwindcss.com/issues/2061 In lieu of finding a place to put this on the docs we can at least document this in the readme for the plugin. --------- Co-authored-by: Philipp Spiess <hello@philippspiess.com> |
||
|
|
5b8136e838
|
Re-throw errors from PostCSS nodes (#18373)
Fixes #18370 --------- Co-authored-by: Robin Malfait <malfait.robin@gmail.com> |
||
|
|
c2aab49c77
|
Bump Prettier (#18960)
This PR bumps prettier and solves one of our `- *` formatting issues. Not all, but a few! |
||
|
|
5a94f81e7e
|
Use default export condition for @tailwindcss/vite (#18948)
## Summary In `@tailwindcss/vite` 's `package.json`, change the `exports` key from `include` to `default` since there is no `require` case. Ran into an issue using the `tsx` package to run a script that has a sub-dependency that imports from `@tailwindcss/vite`, where `tsx` converts things to cjs to run, and since there is no `require` case for this package, it can't find the file. Changing to `default` covers the cases for both `import` and `require`. ## Test plan No testing needed. Functionality is the same. --------- Co-authored-by: Jordan Pittman <jordan@cryptica.me> |
||
|
|
d0a1bd655b
|
Show Lightning CSS warnings when optimizing/minifying in production (#18918)
This PR improves the DX by showing all the Lightning CSS warnings when using a "production" build (or using `--optimize` or `--minify` flags when using the CLI). Right now Tailwind CSS itself doesn't care about the exact syntax you are using in the CSS as long as it looks valid. We do this because otherwise we would have to parse a lot more CSS syntax and validate it even though it would be valid CSS in 99.99% of the cases. Even worse, if you want to use newer CSS syntax that Tailwind CSS doesn't validate yet, then you would get warnings for valid CSS. Another reason why we don't do this is because the browser already does a great job at ignoring invalid CSS. So the linked issue #15872 would still silently fail in development mode. In this case, everything would work, except the shadow with the invalid syntax. But in production mode, you would now get a proper warning from Lightning CSS, because they try to optimize the CSS and remove invalid CSS. One potential issue here is that we run Lightning CSS on the generated CSS, not on the input CSS. So the current output shows the warnings in the output CSS not the input CSS. Any thoughts if we would just skip the line numbers? ## Test plan 1. Everything works as before 2. In production mode, you would get warnings printed to the terminal. This is done in `@tailwindcss/node` so the CLI/Vite/PostCSS plugins would all get the same behavior. Screenshots: If you have a single issue: <img width="977" height="441" alt="image" src="https://github.com/user-attachments/assets/7b061ee9-b74f-4b40-aa05-cff67a21dfcc" /> If you have multiple issues: <img width="2170" height="711" alt="image" src="https://github.com/user-attachments/assets/a5bc9b0a-964b-465f-80f3-d30dd467e69c" /> Fixes: #15872 |
||
|
|
65bad11380
|
Do not migrate variant = 'outline' during upgrades (#18922)
This PR improves the upgrade tool for shadcn/ui projects where the
`variant = "outline"` is incorrectly migrated to `variant =
"outline-solid"`.
This PR also handles a few more cases:
```ts
// As default argument
function Button({ variant = "outline", ...props }: ButtonProps) { }
// With different kinds of quotes (single, double, backticks)
function Button({ variant = 'outline', ...props }: ButtonProps) { }
// Regardless of whitespace
function Button({ variant="outline", ...props }: ButtonProps) { }
// In JSX
<Button variant="outline" />
// With different quotes and using JavaScript expressions
<Button variant={'outline'} />
// As an object property
buttonVariants({ variant: "outline" })
```
|
||
|
|
d1fd645beb
|
Proposal: Allow overwriting static utilities that have a namespace (#18056)
This PR attempts to move static utilities that are overwriteable by a
theme value to be a fallback rather than a conflicting implementation.
The idea is to allow a theme value to take presedence over that static
utility _and cause it not to generate_.
For example, when overwriting the `--radius-full` variant, it should
ensure that the default `rounded-full` no longer emits the
`calc(infinity * 1px)` declaration:
```ts
expect(
await compileCss(
css`
@theme {
--radius-full: 99999px;
}
@tailwind utilities;
`,
['rounded-full'],
),
).toMatchInlineSnapshot(`
":root, :host {
--radius-full: 99999px;
}
.rounded-full {
border-radius: var(--radius-full);
}"
`)
```
This allows anyone who wants `--radius-full` to be a CSS variable to
simply define it in their theme:
```css
@theme {
/* Make `--radius-full` a CSS variable without the utility generating two CSS classes */
--radius-full: calc(infinity * 1px);
}
```
The idea is to extend this pattern across all functional utilities that
also have static utilities that can collide with the namespace. This
gives users more control over what they want as CSS variables when the
defaults don't work for them, allowing them to resolve #16639 and #15115
in user space.
You may now find yourself thinking "but Philipp, why would someone want
to be able to overwrite `--animate-none`. `none` surely always will mean
no animation" and I would agree [but it's already possible right now
anyways so this is not a new behavior! This PR just cleans up the
generated output.](https://play.tailwindcss.com/StnQqm4V2e)
---------
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
|
||
|
|
340b59dcde
|
Do not generate grid-column when configuring grid-column-start or grid-column-end (#18907)
This PR fixes an issue where configuring a custom `--grid-column-start`
or
`--grid-column-end` also generated a `grid-column` utility due to the
overlapping namespace.
```css
@theme {
--grid-column-start-custom: custom-start;
--grid-column-end-custom: custom-end;
}
```
Would then generate:
```css
.col-end-custom {
grid-column: var(--grid-column-end-custom);
}
.col-start-custom {
grid-column: var(--grid-column-start-custom);
}
.col-start-custom {
grid-column-start: var(--grid-column-start-custom);
}
.col-end-custom {
grid-column-end: var(--grid-column-end-custom);
}
```
Instead of the expected:
```css
.col-start-custom {
grid-column-start: var(--grid-column-start-custom);
}
.col-end-custom {
grid-column-end: var(--grid-column-end-custom);
}
```
Fixes: #18906
|
||
|
|
ee1c7a69dc
|
Fix CLI watcher cleanup race (#18905)
This PR supersets #18559 and fixes the same issue reported by @Gazler. Upon testing, we noticed that it's possible that two parallel invocations of file system change events could cause some cleanup functions to get swallowed. This happens because we only remember one global cleanup function but it is possible timing wise that two calls to `createWatcher()` are created before the old watchers are cleaned and thus only one of the new cleanup functions get retained. To fix this, this PR changes `cleanupWatchers` to an array and ensures that all functions are retained. In some local testing, I was able to trigger this, based on the reproduction by @Gazler in https://github.com/tailwindlabs/tailwindcss/pull/18559, to often call a cleanup with more than one cleanup function in the array. I'm going to paste the amazing reproduction from #18559 here as well: # Requirements We need a way to stress the CPU to slow down tailwind compilation, for example stress-ng. ``` stress-ng --cpu 16 --timeout 10 ``` It can be install with apt, homebrew or similar. # Installation There is a one-liner at the bottom to perform the required setup and run the tailwindcli. Create a new directory: ```shell mkdir twtest && cd twtest ``` Create a package.json with the correct deps. ```shell cat << 'EOF' > package.json { "dependencies": { "@tailwindcss/cli": "^4.1.11", "daisyui": "^5.0.46", "tailwindcss": "^4.1.11" } } EOF ``` Create the input css: ```shell mkdir src cat << 'EOF' > src/.input.css @import "tailwindcss" source(none); @plugin "daisyui"; @source "../core_components.ex"; @source "../home.html.heex"; @source "./input.css"; EOF ``` Install tailwind, daisyui, and some HTML to make tailwind do some work: ``` npm install wget https://raw.githubusercontent.com/phoenixframework/phoenix/refs/heads/main/installer/templates/phx_web/components/core_components.ex wget https://github.com/phoenixframework/phoenix/blob/main/installer/templates/phx_web/controllers/page_html/home.html.heex ``` # Usage This is easiest with 3 terminal windows: Start a tailwindcli watcher in one terminal: ```shell npx @tailwindcss/cli -i src/input.css -o src/output.css --watch ``` Start a stress test in another: ```shell stress-ng --cpu 16 --timeout 30 ``` Force repeated compilation in another: ```shell for i in $(seq 1 50); do touch src/input.css; sleep 0.1; done ``` # Result Once the stress test has completed, you can run: ```shell touch src/input.css ``` You should see that there is repeated output, and the duration is in the multiple seconds. If this setup doesn't cause the issue, you can also add the `-p` flag which causes the CSS to be printed, slowing things down further: ```shell npx @tailwindcss/cli -i src/input.css -p --watch ``` ## One-liner ```shell mkdir twtest && cd twtest cat << 'EOF' > package.json { "dependencies": { "@tailwindcss/cli": "^4.1.11", "daisyui": "^5.0.46", "tailwindcss": "^4.1.11" } } EOF mkdir src cat << 'EOF' > src/input.css @import "tailwindcss" source(none); @plugin "daisyui"; @source "../core_components.ex"; @source "../home.html.heex"; @source "./input.css"; EOF npm install wget https://raw.githubusercontent.com/phoenixframework/phoenix/refs/heads/main/installer/templates/phx_web/components/core_components.ex wget https://github.com/phoenixframework/phoenix/blob/main/installer/templates/phx_web/controllers/page_html/home.html.heex npx @tailwindcss/cli -i src/input.css -o src/output.css --watch ``` ## Test plan - Not able to reproduce this with a local build of the CLI after the patch is applied but was able to reproduce it again once the patch was reverted. Co-authored-by: Gary Rennie <gazler@gmail.com> |
||
|
|
b7c7e48c5d
|
Add @container-size utility (#18901)
This PR adds a new `@container-size` utility instead of `@container-[size]`. The main reason we didn't do this before is because we only have container width related container queries, and not block based ones so we never needed `size` and `inline-size` was enough. However, `@container-size` is still useful if you are using container query related units such as `cqb` which are using the block size of the container not the inline size. I also added a little helper such that `@container-size` is only available in `insiders` and `4.2.0` (and later) so `4.1.x` releases won't have this utility yet. This will require some CHANGELOG changes such that we don't include this when releasing the next minor release. |
||
|
|
2f1cbbfed2
|
Merge suggestions when using @utility (#18900)
This PR fixes a bug where custom `@utility` implementations with a name
that match an existing utility would override the existing suggestions
even though we generate both utilities.
With this, we want to make sure that both the custom and the built-in
utilities are suggested. We also want to make sure that we don't get
duplicate suggestions.
E.g.:
- `font-` would suggest:
- 'font-black'
- 'font-bold'
- 'font-extrabold'
- 'font-extralight'
- 'font-light'
- 'font-medium'
- 'font-mono'
- 'font-normal'
- 'font-sans'
- 'font-semibold'
- 'font-serif'
- 'font-thin'
But if you introduce this little custom utility:
```css
@theme {
--custom-font-weights-foo: 123;
}
@utility font-* {
--my-weight: --value(--custom-font-weights- *);
}
```
- `font-` would suggest:
- 'font-foo'
With this fix, we would suggest:
- `font-` would suggest:
- 'font-black'
- 'font-bold'
- 'font-extrabold'
- 'font-extralight'
- 'font-foo' // This is now added
- 'font-light'
- 'font-medium'
- 'font-mono'
- 'font-normal'
- 'font-sans'
- 'font-semibold'
- 'font-serif'
- 'font-thin'
We also make sure that they are unique, so if you have a custom utility
that happens to match another existing utility (e.g. `font-bold`), you
won't see `font-bold` twice in the suggestions.
```css
@theme {
--custom-font-weights-bold: bold;
--custom-font-weights-normal: normal;
--custom-font-weights-foo: 1234;
}
@utility font-* {
--my-weight: --value(--custom-font-weights-*);
}
```
- `font-` would suggest:
- 'font-black'
- 'font-bold' // Overlaps with existing utility
- 'font-extrabold'
- 'font-extralight'
- 'font-foo' // This is now added
- 'font-light'
- 'font-medium'
- 'font-mono'
- 'font-normal' // Overlaps with existing utility
- 'font-sans'
- 'font-semibold'
- 'font-serif'
- 'font-thin'
|
||
|
|
77b3cb5318
|
Handle @variant inside @custom-variant (#18885)
This PR fixes an issue where you cannot use `@variant` inside a
`@custom-variant`. While you can use `@variant` in normal CSS, you
cannot inside of `@custom-variant`. Today this silently fails and emits
invalid CSS.
```css
@custom-variant dark {
@variant data-dark {
@slot;
}
}
```
```html
<div class="dark:flex"></div>
```
Would result in:
```css
.dark\:flex {
@variant data-dark {
display: flex;
}
}
```
To solve it we have 3 potential solutions:
1. Consider it user error — but since it generates CSS and you don't
really get an error you could be shipping broken CSS unknowingly.
1. We could try and detect this and not generate CSS for this and
potentially show a warning.
1. We could make it work as expected — which is what this PR does.
Some important notes:
1. The evaluation of the `@custom-variant` only happens when you
actually need it. That means that `@variant` inside `@custom-variant`
will always have the implementation of the last definition of that
variant.
In other words, if you use `@variant hover` inside a `@custom-variant`,
and later you override the `hover` variant, the `@custom-variant` will
use the new implementation.
1. If you happen to introduce a circular dependency, then an error will
be thrown during the build step.
You can consider it a bug fix or a new feature it's a bit of a gray
area. But
one thing that is cool about this is that you can ship a plugin that
looks like
this:
```css
@custom-variant hocus {
@variant hover {
@slot;
}
@variant focus {
@slot;
}
}
```
And it will use the implementation of `hover` and `focus` that the user
has defined. So if they have a custom `hover` or `focus` variant it will
just work.
By default `hocus:underline` would generate:
```css
@media (hover: hover) {
.hocus\:underline:hover {
text-decoration-line: underline;
}
}
.hocus\:underline:focus {
text-decoration-line: underline;
}
```
But if you have a custom `hover` variant like:
```css
@custom-variant hover (&:hover);
```
Then `hocus:underline` would generate:
```css
.hocus\:underline:hover, .hocus\:underline:focus {
text-decoration-line: underline;
}
```
### Test plan
1. Existing tests pass
2. Added tests with this new functionality handled
3. Made sure to add a test for circular dependencies + error message
4. Made sure that if you "fix" the circular dependency (by overriding a
variant) that everything is generated as expected.
Fixes: https://github.com/tailwindlabs/tailwindcss/issues/18524
|
||
|
|
274be93fd8
|
Handle ' syntax in ClojureScript when extracting classes (#18888)
This PR fixes an issue where the `'` syntax in ClojureScript was not handled properly, resulting in missing extracted classes. This PR now supports the following ClojureScript syntaxes: ```cljs ; Keyword (print 'text-red-500) ; List (print '(flex flex-col underline)) ; Vector (print '[flex flex-col underline]) ``` ### Test plan 1. Added regression tests 2. Verified that we extract classes correctly now in various scenarios: Top is before, bottom is with this PR: <img width="1335" height="1862" alt="image" src="https://github.com/user-attachments/assets/746aa073-25f8-41f8-b71c-ba83a33065aa" /> Fixes: #18882 |
||
|
|
1334c99db8
|
Prepare v4.1.13 release (#18868) v4.1.13 | ||
|
|
65dc530f05
|
Do not allow variants to end with - or _ (#18872)
This PR is a followup of #18867, but this time we won't allow `@custom-variant` to end with `-` or `_`. The same reasoning applies here where Oxide doesn't pick this up but Intellisense and Tailwind CSS' core does. --------- Co-authored-by: Jordan Pittman <thecrypticace@gmail.com> |
||
|
|
54c3f308e9
|
Do not allow variants to start with - (#18867)
This PR fixes an issue where custom variants with just `-` in the name were allowed but weren't actually picked up by Oxide so you couldn't use them anyway. The reason we allow `-` is for `kebab-style-variants`, which is very common, but you shouldn't use `-`, `--` or more in a variant name. It doesn't really solve the issue (#18863), but it fixes the inconsistencies in that exist today. Inconsistencies: | | `-:flex` | `--:flex` | | --: | :--: | :--: | | Oxide | ❌ | ❌ | | Tailwind Play | ✅ | ❌ | | Intellisense | ✅ | ✅ | - Oxide already had the correct rules setup, so this is expected - Tailwind Play uses Tailwind's core compile step, but it considers candidates that start with `--` as a CSS variable instead of a utility. This means that the `--:flex` was considered a CSS variable and skipped during compilation. - Intellisense uses the same APIs than Tailwind's core, but it didn't have the CSS variable check which resulted in the `--:flex` being "correct". With this PR, the matrix looks like this now: | | `-:flex` | `--:flex` | | --: | :--: | :--: | | Oxide | ❌ | ❌ | | Tailwind Play | ❌ | ❌ | | Intellisense | ❌ | ❌ | This should not be considered a breaking change because Oxide didn't pick up candidates with variants that start with a `-`. CSS for these candidates was never generated before. Closes: #18863 --------- Co-authored-by: Jordan Pittman <thecrypticace@gmail.com> |
||
|
|
494051ca08
|
Consider variants starting with @- to be invalid (e.g. @-2xl:flex) (#18869)
This PR fixes a small parsing issue where variants such as `@-2xl:flex` would parse, but were handled as-if they were `@2xl:flex` instead. Noticed this while working on: #18867 This is because when we parse normal variants like `data-foo` then we want to have a `data` root and a `foo` value, not a `-foo` value. If you are now using `@-2xl:flex`, then no CSS will be generated for this anymore. If you were relying on this for some reason, you should use `@2xl:flex` instead. ## Test plan Before: <img width="862" height="586" alt="image" src="https://github.com/user-attachments/assets/b5993ca6-f907-49af-b5bd-b7206c8300e1" /> After: <img width="862" height="586" alt="image" src="https://github.com/user-attachments/assets/351f45e4-4cd3-451c-ae2a-c52c3e770629" /> --------- Co-authored-by: Jordan Pittman <thecrypticace@gmail.com> |