No description
Tracking the swap promise was the wrong shape. It could always be read at a moment when the in-flight rebuild had not assigned its swap yet, so shutdown saw the old one settle, closed the queue, and dropped whatever the later generation flushed. Each fix narrowed that window without closing it. A full rebuild runs inside the queue, so the queue already knows when one is in flight — including a rebuild that has not yet replaced its watchers. Add `drain()`, wait for it before tearing the watchers down, and close only after their flush has landed. That removes the swap bookkeeping entirely. Both orderings are pinned: cleanup must not run while a rebuild is in flight, and what the watchers flush on the way out must still be processed. Against no-drain the cleanup runs early; against closing first the flush is ignored. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lcj4iQ3fBxMwAu2rf4zLbC |
||
|---|---|---|
| .github | ||
| crates | ||
| integrations | ||
| packages | ||
| patches | ||
| playgrounds | ||
| scripts | ||
| .gitignore | ||
| .prettierignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| rust-toolchain.toml | ||
| turbo.json | ||
| vitest.config.mts | ||
A utility-first CSS framework for rapidly building custom user interfaces.
Documentation
For full documentation, visit tailwindcss.com.
Community
For help, discussion about best practices, or feature ideas:
Discuss Tailwind CSS on GitHub
Contributing
If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.