Skip to content

Desktop App Tailwind 4#1771

Open
ItsEeleeya wants to merge 16 commits intoCapSoftware:mainfrom
ItsEeleeya:desktop-tailwind-v4
Open

Desktop App Tailwind 4#1771
ItsEeleeya wants to merge 16 commits intoCapSoftware:mainfrom
ItsEeleeya:desktop-tailwind-v4

Conversation

@ItsEeleeya
Copy link
Copy Markdown
Contributor

@ItsEeleeya ItsEeleeya commented Apr 29, 2026

This was mostly handled with Tailwind's auto upgrade utility.
It fixes one issue where the cursor-default wasn't respected.
Now using antialiased font smoothing for better visual clarity.

Updated related packages:

  • Tailwind
  • PostCSS
  • tailwind-scrollbar
  • @tailwindcss/typography

Removed tailwind-animate in favor of tw-animate-css due to lacking v4 support.

Greptile Summary

This PR migrates the desktop app from Tailwind CSS v3 to v4, replacing tailwind.config.js with CSS-native @theme tokens, switching from @kobalte/tailwindcss ui-* variants to standard data-* variants, and swapping tailwindcss-animate for tw-animate-css. The auto-upgrade tool handled most of the mechanical conversion.

  • P1 – broken shimmer animation: The shimmer keyframe was only defined in the deleted apps/desktop/tailwind.config.js. animate-shimmer is still used in ExportPage.tsx (lines 747, 762) with no replacement @keyframes block in main.css or theme.css.
  • P1 – data-pressed: invalid in Tailwind v3 (web app): CameraPreviewWindow.tsx was updated to use data-pressed:bg-gray-3 / data-pressed:text-gray-12, but apps/web still runs Tailwind v3, which requires bracket syntax (data-[pressed]:). All five toolbar buttons will silently lose their pressed-state highlight.
  • P2 – focus ring removed from Toggle: outline-2 outline-offset-2 outline-blue-300 were dropped from the base toggle control styles without a focus-visible: replacement.

Confidence Score: 3/5

Not safe to merge as-is — two P1 regressions affect visible user-facing behavior.

Two P1 bugs are present: the shimmer loading animation is broken in the export page, and pressed-state toolbar button styles are silently dropped in the web app due to a Tailwind v3/v4 version mismatch. The rest of the migration looks mechanically correct.

apps/desktop/src/routes/editor/ExportPage.tsx (missing shimmer keyframe) and apps/web/app/(org)/dashboard/caps/components/web-recorder-dialog/CameraPreviewWindow.tsx (data-pressed: incompatible with Tailwind v3).

Important Files Changed

Filename Overview
apps/desktop/src/routes/editor/ExportPage.tsx Uses animate-shimmer on loading skeleton overlays, but the shimmer keyframe definition was removed with the deleted tailwind config — animation will be broken.
apps/web/app/(org)/dashboard/caps/components/web-recorder-dialog/CameraPreviewWindow.tsx Changed ui-pressed: to data-pressed: on toolbar buttons, but the web app uses Tailwind v3 which requires bracket syntax (data-[pressed]:); pressed-state styles will be silently omitted.
apps/desktop/tailwind.config.js Deleted as part of v4 migration; previously defined custom keyframes (gentleBounce, shimmer, float, floatSlow, pulse3d, spin3d, gradientShift, dash). The shimmer keyframe is still referenced in ExportPage.tsx with no replacement definition.
packages/ui-solid/src/main.css Core Tailwind v4 migration: replaces @tailwind base/components/utilities with @import "tailwindcss", migrates all color/shadow tokens to CSS custom properties in @theme, replaces tailwindcss-animate with tw-animate-css, and adds @apply antialiased on :root.
apps/desktop/src/styles/theme.css Imports @cap/ui-solid/main.css, registers @tailwindcss/typography and tailwind-scrollbar as @plugin, and adds a @layer base override to preserve Tailwind v3's default border color.
apps/desktop/src/components/Toggle.tsx Updates ui-* variants to data-* and simplifies spacing to Tailwind tokens; removes the focus ring outline classes from the base toggle styles.
packages/ui/style/tailwind.config.js Removes @kobalte/tailwindcss plugin from the shared web config; still uses Tailwind v3, so any remaining ui-* variant usage in web code should have been updated.
apps/desktop/src/routes/editor/ui.tsx Systematic migration of ui-* Kobalte variants to data-* Tailwind v4 variants and arbitrary value classes to named tokens across all shared UI primitives.
apps/desktop/postcss.config.cjs Replaces shared @cap/ui/postcss config with an inline @tailwindcss/postcss + autoprefixer config appropriate for Tailwind v4.
packages/ui-solid/package.json Bumps to tailwindcss@^4.2.2, replaces tailwindcss-animate with tw-animate-css, upgrades tailwind-scrollbar to ^4.0.2, and removes @kobalte/tailwindcss and tailwindcss from peer deps.
Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 3
apps/desktop/src/routes/editor/ExportPage.tsx:747-762
**Missing `shimmer` keyframe definition**

`animate-shimmer` is still used here, but the `shimmer` keyframe was only defined in `apps/desktop/tailwind.config.js`, which was deleted as part of this migration. No replacement definition was added to `packages/ui-solid/src/main.css` or `apps/desktop/src/styles/theme.css`. The loading skeleton shimmer effect on the export preview will be a no-op — the element will have the animation class but no matching `@keyframes` block, so nothing will animate.

### Issue 2 of 3
apps/web/app/(org)/dashboard/caps/components/web-recorder-dialog/CameraPreviewWindow.tsx:495-556
**`data-pressed:` variant not supported in Tailwind v3**

The web app (`apps/web`) uses Tailwind v3 (declared as `"tailwindcss": "^3"` in its `package.json`). Tailwind v3 requires bracket syntax for arbitrary data-attribute variants: `data-[pressed]:bg-gray-3`, not `data-pressed:bg-gray-3`. The shorthand `data-pressed:` without brackets is a Tailwind v4-only feature. Since the old `ui-pressed:` variant (from `@kobalte/tailwindcss`, which was also removed from `packages/ui/style/tailwind.config.js`) has been replaced with the v4 syntax, these five toolbar buttons will never show their pressed/active state background highlight.

### Issue 3 of 3
apps/desktop/src/components/Toggle.tsx:4-7
**Focus ring styles removed from Toggle**

The `outline-2 outline-offset-2 outline-blue-300` classes were dropped from the base `toggleControlStyles`. These set the shape, width, and color of the focus indicator used by keyboard and assistive-technology users. Verify that an equivalent `focus-visible:outline-*` ring is applied via another mechanism; otherwise toggling elements will lose their focus state entirely.

Reviews (1): Last reviewed commit: "format" | Re-trigger Greptile

Greptile also left 3 inline comments on this PR.

Also fix accidental renames inside strings
Update tailwind-scrollbar
Update Kobalte
Use Tailwind 3's default border color selection
Remove Kobalte's tailwind plugin as it's no longer needed with Tailwind 4
@richiemcilroy
Copy link
Copy Markdown
Member

please review the pr @greptileai

Comment thread apps/desktop/src/routes/editor/ExportPage.tsx
Comment thread apps/desktop/src/components/Toggle.tsx
@brin-security-scanner brin-security-scanner Bot added the contributor:flagged Contributor flagged for review by trust analysis. label May 5, 2026
@brin-security-scanner brin-security-scanner Bot added pr:flagged PR flagged for review by security analysis. and removed pr:flagged PR flagged for review by security analysis. labels May 6, 2026
@brin-security-scanner
Copy link
Copy Markdown

Brin PR Security Scan

This PR has findings that should be reviewed.

  • Score: 49/100
  • Verdict: suspicious

Analyzed by Brin

@brin-security-scanner brin-security-scanner Bot added pr:flagged PR flagged for review by security analysis. contributor:verified Contributor passed trust analysis. and removed contributor:flagged Contributor flagged for review by trust analysis. pr:flagged PR flagged for review by security analysis. labels May 7, 2026
@brin-security-scanner brin-security-scanner Bot added the pr:flagged PR flagged for review by security analysis. label May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor:verified Contributor passed trust analysis. pr:flagged PR flagged for review by security analysis.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants