Skip to content

chore(ui,deps): bump tailwindcss v4, typescript v6, lucide-react v1, npm-minor-patch#1758

Open
jsonmp-k8 wants to merge 2 commits intokagent-dev:mainfrom
jsonmp-k8:deps/ui-bumps-consolidated
Open

chore(ui,deps): bump tailwindcss v4, typescript v6, lucide-react v1, npm-minor-patch#1758
jsonmp-k8 wants to merge 2 commits intokagent-dev:mainfrom
jsonmp-k8:deps/ui-bumps-consolidated

Conversation

@jsonmp-k8
Copy link
Copy Markdown
Contributor

@jsonmp-k8 jsonmp-k8 commented Apr 27, 2026

Summary

Consolidates the four open UI dependabot PRs into a single change so the major-version migrations land together with consistent CI signal. Each underlying PR was failing on main for migration reasons rather than flakes.

Supersedes / closes:

Migration notes

tailwindcss v4 — v4 uses CSS-first config. Changes:

  • Deleted ui/tailwind.config.ts; moved theme tokens into @theme inline { ... } in ui/src/app/globals.css.
  • globals.css now uses @import \"tailwindcss\" and @import \"tw-animate-css\" instead of @tailwind base/components/utilities.
  • Dark mode preserved via @custom-variant dark (&:where(.dark, .dark *));.
  • postcss.config.mjs switched from tailwindcss + autoprefixer to @tailwindcss/postcss (autoprefixer dropped — v4 handles vendor prefixes via Lightning CSS).
  • tailwindcss-animate (v3-only) replaced with tw-animate-css. All animate-in, fade-in-0, slide-in-from-*, zoom-in-95, etc. utilities used by Radix components verified to render.

typescript v6@typescript-eslint/* peer cap raises to <6.1.0 via the transitive bump that ships with this lockfile, so the upgrade resolves cleanly.

lucide-react v1 — brand icons (Linkedin, Github, etc.) were removed in v1. Replaced the only impacted call site (FinishStep.tsx) with an inline SVG. LucideIcon is still exported as a type and is now imported via type LucideIcon.

eslint-plugin-react-hooks pin7.0.1 → 7.1.1 (transitive) introduces react-hooks/set-state-in-effect, which surfaces 23 pre-existing violations across the codebase (AuthContext, use-mobile, GroupedChats, etc.). Fixing those is a separate concern; pinning to 7.0.1 via overrides keeps this PR scoped to dependency bumps.

Local verification

Check Status
npm run build (Next.js + TS)
npm run lint
npm test (jest) ✅ 129/129
npm run build-storybook
Dev server /agents smoke test ✅ — generated CSS contains bg-background, text-foreground, animation utilities

Caveats

  • One combined PR is reviewer-hostile and bisect-hostile compared to four sequential PRs; this is a deliberate trade-off because the four were fighting each other in CI and dependabot kept rebasing on top of unmerged majors. Drafting so reviewers can decide whether to land as-is or split.
  • Chromatic baselines will need to be re-accepted — Tailwind v4's reset and border-color defaults differ subtly from v3. No deliberate visual changes were made.
  • A pre-existing tsc --noEmit error on PromptInstructionsTextarea.test.tsx (toBeInTheDocument matcher typing) reproduces on main and is unrelated.

…npm-minor-patch group

Consolidates the four open dependabot UI PRs into a single change so
the breaking changes are migrated together:

- tailwindcss 3.4 -> 4.2.4 (closes kagent-dev#1751)
  - delete ui/tailwind.config.ts; move theme tokens to @theme inline in
    ui/src/app/globals.css (CSS-first config)
  - switch PostCSS to @tailwindcss/postcss; drop autoprefixer
  - replace tailwindcss-animate with tw-animate-css for v4 compat
  - dark mode preserved via @custom-variant dark

- typescript 5.9.3 -> 6.0.2 (closes kagent-dev#1587)
  - @typescript-eslint chain bumped transitively to a version whose
    peer cap is <6.1.0, so the upgrade is satisfiable

- lucide-react 0.577 -> 1.8.0 (closes kagent-dev#1665)
  - the Linkedin brand icon was removed in v1; replace the single
    callsite with an inline SVG
  - import LucideIcon as a type-only import (still exported as a type)

- npm-minor-patch group (closes kagent-dev#1750)
  - react-hook-form, @vitest/browser-playwright, chromatic, cypress,
    msw, vite minor/patch bumps

Pin eslint-plugin-react-hooks to 7.0.1 via overrides: the 7.0.1 -> 7.1.1
transitive bump introduces react-hooks/set-state-in-effect, which
flags 23 pre-existing call sites. Fixing those is out of scope for a
deps PR.

Local verification: next build, eslint, jest (129/129), storybook
build, dev server boot all pass.

Signed-off-by: Jaison Paul <paul.jaison@gmail.com>
@jsonmp-k8 jsonmp-k8 marked this pull request as ready for review April 28, 2026 00:22
@jsonmp-k8 jsonmp-k8 requested a review from peterj as a code owner April 28, 2026 00:22
Copilot AI review requested due to automatic review settings April 28, 2026 00:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Consolidates multiple UI dependency upgrades (Tailwind v4, TypeScript v6, lucide-react v1, and other minor/patch bumps) and applies the required migration changes in the UI codebase (Tailwind CSS-first config and icon replacement).

Changes:

  • Migrates Tailwind to v4 by removing tailwind.config.ts, updating globals.css to CSS-first Tailwind directives, and switching PostCSS to @tailwindcss/postcss.
  • Updates lucide-react usage for v1 (type-only LucideIcon import; replaces removed Linkedin icon with inline SVG).
  • Bumps UI dependencies/devDependencies (Tailwind, TypeScript, MSW, Cypress, Vite, etc.) and pins eslint-plugin-react-hooks via overrides.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
ui/tailwind.config.ts Removes Tailwind v3 JS/TS config in favor of Tailwind v4 CSS-first configuration.
ui/src/app/globals.css Adds Tailwind v4 @import/@theme/@custom-variant and moves theme tokens/animations into CSS.
ui/postcss.config.mjs Switches PostCSS plugin from tailwindcss (+ autoprefixer) to @tailwindcss/postcss.
ui/package.json Bumps key UI deps/devDeps and adds an overrides pin for eslint-plugin-react-hooks.
ui/src/components/onboarding/steps/FinishStep.tsx Replaces removed lucide brand icon (Linkedin) with an inline SVG component.
ui/src/components/create/SelectToolsDialog.tsx Updates lucide-react LucideIcon to a type-only import for v1 compatibility.
ui/public/mockServiceWorker.js Updates MSW worker metadata for the MSW version bump.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread ui/public/mockServiceWorker.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants