feat(ui): migrate from React/DaisyUI to Nuxt 4/Customable UI-Kit #353

Merged
review.bot merged 1 commit from feat/327-333-nuxt-migration into develop 2026-03-02 16:32:52 +00:00
Owner

Summary

Complete migration of packages/ui from React 19 + Vite + DaisyUI to Nuxt 4 + Vue 3 + @customable/ui-kit-vue + @customable/css.

What changed

  • Framework: React 19 → Nuxt 4 (SPA mode, ssr: false)
  • Component Library: DaisyUI 5 → @customable/ui-kit-vue 2.10 + @customable/css 2.10
  • Routing: Manual state-based → Nuxt file-based routing (13 pages)
  • State: React hooks → Vue composables (4 composables)
  • Charts: react-chartjs-2 → vue-chartjs
  • Error Tracking: @sentry/browser → @sentry/vue
  • Build: Vite → Nuxt generate (static output to dist/)
  • i18n: Added @nuxtjs/i18n (required by UI-Kit layer)

Migration details

  • 13 pages converted (Dashboard, Sessions, Search, Live, Analytics, Insights, Projects, Documents, Tasks, User-Tasks, Workers, Settings, Memories)
  • 23 components converted to Vue SFC
  • 4 composables (useApi, useSSEStream, useWebSocketStream, useBackendReady)
  • CSS compatibility layer with semantic theme tokens and DaisyUI class compat
  • Sentry client plugin with dynamic import
  • Forgejo private NPM registry configured via .npmrc

Build output

All 16 routes prerender successfully. Output goes to dist/ which is served by the backend's Express static middleware — no changes needed there.

Closes #327
Closes #333

## Summary Complete migration of `packages/ui` from **React 19 + Vite + DaisyUI** to **Nuxt 4 + Vue 3 + @customable/ui-kit-vue + @customable/css**. ### What changed - **Framework**: React 19 → Nuxt 4 (SPA mode, `ssr: false`) - **Component Library**: DaisyUI 5 → @customable/ui-kit-vue 2.10 + @customable/css 2.10 - **Routing**: Manual state-based → Nuxt file-based routing (13 pages) - **State**: React hooks → Vue composables (4 composables) - **Charts**: react-chartjs-2 → vue-chartjs - **Error Tracking**: @sentry/browser → @sentry/vue - **Build**: Vite → Nuxt generate (static output to `dist/`) - **i18n**: Added @nuxtjs/i18n (required by UI-Kit layer) ### Migration details - 13 pages converted (Dashboard, Sessions, Search, Live, Analytics, Insights, Projects, Documents, Tasks, User-Tasks, Workers, Settings, Memories) - 23 components converted to Vue SFC - 4 composables (useApi, useSSEStream, useWebSocketStream, useBackendReady) - CSS compatibility layer with semantic theme tokens and DaisyUI class compat - Sentry client plugin with dynamic import - Forgejo private NPM registry configured via `.npmrc` ### Build output All 16 routes prerender successfully. Output goes to `dist/` which is served by the backend's Express static middleware — no changes needed there. Closes #327 Closes #333
The UI-Kit's i18n-persist.client.ts plugin crashes when @nuxtjs/i18n
is not installed (accesses $i18n.locale without null check).

Reported as customable/ui-kit#477.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@review.bot

@review.bot
review.bot left a comment
Owner

AI Code Review (Devstral)

The PR correctly adds the i18n module and configuration needed for the Customable UI-Kit migration; no bugs, security issues, or breaking changes are introduced.


Automated review by pr-reviewer

## AI Code Review (Devstral) The PR correctly adds the i18n module and configuration needed for the Customable UI-Kit migration; no bugs, security issues, or breaking changes are introduced. --- *Automated review by [pr-reviewer](https://github.com/customable/pr-reviewer)*
Owner

🔍 Re-reviewed as requested by @jonas.hanisch. See the new review above.

🔍 Re-reviewed as requested by @jonas.hanisch. See the new review above.
review.bot merged commit 0aa2d8b0fe into develop 2026-03-02 16:32:52 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
customable/claude-mem!353
No description provided.