Установщик 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]>
54 lines
4.0 KiB
Markdown
54 lines
4.0 KiB
Markdown
# Обновление 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 не требовался.
|
||
|
||
## Как обновлять дальше
|
||
|
||
```bash
|
||
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 и правила для агентов (из корня)
|
||
```
|