refactor(deps): Tailwind 4 (CSS-first) + Zod 4 + ESLint 10 + @types/node 26 + ai-kit 0.6.2 - #168
Merged
Merged
Conversation
…de 26 + ai-kit 0.6.2 Tailwind 3.4 -> 4.3: - tailwind.config.js DELETED; tokens now live in an @theme inline block in app/globals.css (semantic names unchanged: action, paper, edge, ink...) - postcss.config.js -> @tailwindcss/postcss; autoprefixer dropped (built in) - @tailwind directives -> @import 'tailwindcss'; forms/typography via @plugin - daisyui removed (no daisyui class used anywhere) - next/font vars renamed --font-inter/--font-fraunces to break the circular var() the old --font-sans binding would create inside @theme - v4 deleted *-opacity-* utilities: every bg/text/ring-opacity-N rewritten to slash syntax (bg-action/90, ring-black/5, ...); dynamic accent tint gets a literal class map in lib/config/colors.ts so the scanner sees each class - dead v3-era aspect-w/h custom utilities removed (unused; v4 has aspect-*) Zod 3.24 -> 4.5: - .errors -> .issues everywhere - z.string().uuid( -> .guid( (v4 uuid() is RFC-variant-strict; DB ids aren't) - z.record(z.unknown()) -> z.record(z.string(), z.unknown()) - object .default({}) -> .prefault({}) (v4 default takes the full output value) ESLint 9 -> 10: eslint-plugin-react's version:'detect' calls the removed context.getFilename; pin settings.react.version='19' AFTER the next configs. Verify (format+lint+typecheck+selfhost+test+build) green: 272 tests pass. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What moved
@pluginOld configs deleted:
tailwind.config.jsis gone (CSS-first@theme inlineinapp/globals.css),postcss.config.jsreduced to@tailwindcss/postcss.Traps handled
*-opacity-*utilities — everybg-opacity-90/ring-opacity-5/text-opacity-80(11 call sites incl. the@applyrules in globals.css) rewritten to slash syntax (bg-action/90,ring-black/5). The dynamic bot accent tint (${accentColor} bg-opacity-20) got a literalbg-*-500/20class map inlib/config/colors.tsso Tailwind's scanner sees every class.@layer utilitiescustom classes — dead v3-eraaspect-w-16/aspect-h-*utilities were unused anywhere; deleted instead of ported (v4 has native aspect-*).--font-sansbound by next/font would be circular inside@theme; renamed to--font-inter/--font-fraunces, aliased in@theme inline.version:'detect'calls the removedcontext.getFilename; pinnedsettings.react.version='19'after the next configs (they setdetect, so order matters)..errors→.issues;.uuid(→.guid((v4uuid()is RFC-variant-strict, DB ids aren't);z.record(z.unknown())→z.record(z.string(), z.unknown()); object.default({})→.prefault({})(v4.defaulttakes the full output value).Grep-gate results
grep -rn -- '-opacity-' src app components pages→ clean (0 hits; only remaining match repo-wide is an explanatory comment inlib/config/colors.ts)@layer componentsunder responsive variants in global CSS → none (the single@layer componentsblock is top-level).btn-primary,.prose(typography plugin),bg-blue-500/20tints,ring-black/5, ochre#b45309all emitted.Verify
npm run verify(format:check + lint + typecheck + check:selfhost + vitest + next build) exits 0. Tests: 272 passed, 2 skipped.🤖 Generated with Claude Code
https://claude.ai/code/session_01WqKqMnHQHSmkGFfc5t7Rxn