Skip to content

refactor(deps): Tailwind 4 (CSS-first) + Zod 4 + ESLint 10 + @types/node 26 + ai-kit 0.6.2 - #168

Merged
github-actions[bot] merged 1 commit into
mainfrom
refactor/tw4-zod4
Aug 31, 2026
Merged

refactor(deps): Tailwind 4 (CSS-first) + Zod 4 + ESLint 10 + @types/node 26 + ai-kit 0.6.2#168
github-actions[bot] merged 1 commit into
mainfrom
refactor/tw4-zod4

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

What moved

Package From To
tailwindcss 3.4.x 4.3.3 (+ @tailwindcss/postcss)
zod 3.24.x 4.5.4
eslint 9.39.x 10.9.1
@types/node 20.x 26.4.0
ai-kit v0.5.0 v0.6.2 (installed version verified 0.6.2)
@tailwindcss/forms / typography 0.5.7 / 0.5.16 latest, loaded via @plugin
daisyui, autoprefixer removed (daisyui unused; autoprefixer built into v4)

Old configs deleted: tailwind.config.js is gone (CSS-first @theme inline in app/globals.css), postcss.config.js reduced to @tailwindcss/postcss.

Traps handled

  • v4 deleted *-opacity-* utilities — every bg-opacity-90 / ring-opacity-5 / text-opacity-80 (11 call sites incl. the @apply rules in globals.css) rewritten to slash syntax (bg-action/90, ring-black/5). The dynamic bot accent tint (${accentColor} bg-opacity-20) got a literal bg-*-500/20 class map in lib/config/colors.ts so Tailwind's scanner sees every class.
  • @layer utilities custom classes — dead v3-era aspect-w-16/aspect-h-* utilities were unused anywhere; deleted instead of ported (v4 has native aspect-*).
  • next/font circular var--font-sans bound by next/font would be circular inside @theme; renamed to --font-inter/--font-fraunces, aliased in @theme inline.
  • ESLint 10 × eslint-plugin-reactversion:'detect' calls the removed context.getFilename; pinned settings.react.version='19' after the next configs (they set detect, so order matters).
  • zod 4.errors.issues; .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).

Grep-gate results

  • grep -rn -- '-opacity-' src app components pagesclean (0 hits; only remaining match repo-wide is an explanatory comment in lib/config/colors.ts)
  • @layer components under responsive variants in global CSS → none (the single @layer components block is top-level)
  • Built CSS spot-checked: .btn-primary, .prose (typography plugin), bg-blue-500/20 tints, ring-black/5, ochre #b45309 all 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

…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
@github-actions
github-actions Bot merged commit b90308c into main Aug 31, 2026
1 check passed
@github-actions
github-actions Bot deleted the refactor/tw4-zod4 branch August 31, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant