Files
auth-portal/docs/reui-upgrade.md
T
DenozordecandClaude Sonnet 5.5 4f5026980a chore(docs): обновить skill ReUI до 68f0e6fa91 и описать миграцию
Установщик ReUI обновил skill для Claude/Codex/Cursor/OpenCode, правила в AGENTS.md
и MCP-конфиги (ключ только ссылкой на REUI_LICENSE_KEY). План и решения — docs/reui-upgrade.md.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-18 01:58:41 +07:00

4.0 KiB
Raw Blame History

Обновление ReUI до последней версии

Ветка: chore/reui-latest (от feat/design-preview). План составлен по ReUI MCP (get_agent_skill, get_component data-grid|filters, get_block data-grid-drag-drop-2, get_project_context) и документации reui.io.

Было → стало

Что Было Стало
Skill ReUI (.claude/.agents/.cursor/.opencode) 3bdbad788a (в AGENTS.md значилась 668fb463eb), 20 компонентов 68f0e6fa91, 27 компонентов
@tanstack/react-table 8.21.3 (useReactTable) 9.3.1 (useTable + dataGridFeatures)
reui/data-grid/* v8-вариант v9: DnD-строки и колонки, виртуализация, выбор ячеек, i18n, getRowStatus
reui/filters один файл filters.tsx, плоский Filter[] каталог filters/, дерево FilterQuery (группы и правила)
reui/{badge,frame,alert,icon-tile,icon-stack,timeline} прежние обновлены из реестра
Примитивы packages/ui (button, checkbox, dropdown-menu, input, popover, select, separator, skeleton, spinner, tooltip, scroll-area, button-group) прежние обновлены (зависимости реестра)
Новые зависимости — @dnd-kit/{core,sortable,modifiers,utilities}, @tanstack/react-virtual, date-fns

Решения

  • Установка через shadcn add @reui/<имя> --overwrite из apps/web с ключом из apps/web/.env.local (в Git не попадает). Блоки и компоненты ставились целиком: частичное обновление ломает связку data-grid ↔ TanStack v9.
  • Реестр прописывает зависимость cn как npm-пакет; в проекте cn живёт в @authportal/ui/lib/utils, поэтому импорты from "cn" заменены, пакет cn не добавлялся.
  • Код реестра использует process.env.NODE_ENV и неиспользуемые параметры. В tsconfig.app.json добавлен тип node и выключены noUnusedLocals/noUnusedParameters (контроль остаётся за ESLint).
  • Старый плоский API фильтров заменён деревом: flattenFilterConditions(query) даёт {field, operator, values, negated}. Операторы: is_not_any_of → is_none_of.
  • Русские подписи DataGrid и Filters вынесены в apps/web/src/lib/reui-ru.ts (DATA_GRID_RU, FILTERS_RU, FILTER_OPERATORS_RU) и передаются пропами i18n/labels/operatorLabels.

Миграция потребителей

  1. PreviewSectionGrid (design-preview/section-grid.tsx) — useTable, ColumnDef<DataGridFeatures, T>.
  2. AdminUsersGrid (reui-kit) — useTable, ColumnVisibilityState, Filters на FilterQuery.
  3. Страница входов (routes/_auth.admin.logins.tsx) — useTable для истории и сессий.
  4. «Ссылки приложений» (макет) — настоящее перетаскивание строк через rowsDraggable и dnd-kit.

Проверка

pnpm --filter web build, pnpm --filter web lint, pnpm --filter @authportal/api test; браузер: все разделы /design-preview, ширины 390/820/1180/1440, консоль без ошибок. Боевые страницы (/, /apps, /account, /admin/*) проверяются сборкой и типами: запуск API не требовался.

Как обновлять дальше

cd apps/web
pnpm dlx shadcn@latest add @reui/<имя> --overwrite --yes   # REUI_LICENSE_KEY из .env.local
curl.exe -fsSL https://mcp.reui.io/install | node -        # skill и правила для агентов (из корня)