Introduced a new test to verify the persistence of the CFDM API URL via the settings endpoint. Updated the integration form to reflect saved credentials more clearly, enhancing user feedback for the API URL and integration token. Improved sync button behavior to prevent actions without saved credentials. Updated settings schema to include CFDM API URL validation.
Changed the step attribute for NumberField components in the VpsEditSheet to "any" for vCPU, RAM, and disk inputs. Updated the vpsSchema to accept real numbers for vCPU, diskGb, and bandwidthTb. Adjusted database schema to store vCPU, diskGb, and bandwidthTb as REAL instead of INTEGER for better precision.
Лента в стиле solution-users-6 с раскрываемым diff; переключение на ResourcePage.
Исправлено: монитор считает ошибку синка только по последней записи аккаунта.
Co-authored-by: Cursor <cursoragent@cursor.com>
Разбить монолитную Card-форму на вкладки Общие/Синхронизация/Уведомления/Интеграции с SettingRow и SettingsCard по эталонам settings-16/3/2.
Co-authored-by: Cursor <cursoragent@cursor.com>
Центрирование заглушек в графиках/Frame; лимит тела backup 100 MiB;
WAL checkpoint при экспорте и очистка -wal/-shm при импорте.
Co-authored-by: Cursor <cursoragent@cursor.com>
Пустой volume больше не отдаёт 500 на /api/data из-за отсутствующих таблиц. В compose добавлены json-file логи с ротацией и LOG_LEVEL для Fastify.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Обновлены стили компонента PageHeader для более компактного отображения описания.
- Внедрён TooltipProvider в AppShell для улучшения взаимодействия с пользователем.
- Изменён размер боковой панели на 240px для согласованности с дизайном.
- Обновлена документация интерфейса для отражения изменений в компонентах.
- Обновлены стили компонента AppShell для улучшения макета и адаптивности.
- Добавлен новый элемент EvoBGP в конфигурацию App Switcher с соответствующими параметрами.
- Обновлена документация интерфейса для отражения изменений в AppShell и новых элементах навигации.
- Внедрён компонент QuickActionGrid для отображения часто используемых разделов на дашборде, управляемый настройкой showQuickActions.
- Добавлен новый параметр showQuickActions в схему настроек для управления видимостью быстрого доступа.
- Обновлён интерфейс настроек для включения переключателя отображения быстрого доступа.
- Добавлен компонент SystemMonitorPopover в заголовок приложения для мониторинга системы.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Добавлены новые правила для использования ReUI и обновлены существующие правила.
- Внедрены новые компоненты, такие как Frame, Alert, IconStack и DetailPanel, для улучшения интерфейса.
- Обновлены существующие компоненты, включая DataGridCard и EmptyState, с использованием новых элементов.
- Добавлены новые утилиты для фильтрации данных и управления состоянием.
- Обновлен .gitignore для исключения файлов окружения.
Co-authored-by: Cursor <cursoragent@cursor.com>
Синхронизация bindings в vps_domains с привязкой по IP, API приёма с Bearer-токеном, настройки и App Switcher из SQLite, UI доменов на VPS и уведомление CFDM при vps_down.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлены карточка проекта, KPI и фильтры на /projects, отчёты с разрезом по проектам, cascade rename и защита удаления на API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Парсинг object-map ответов API (vms/ips), cpus, memory в МБ, IP-массив.
Приоритет валюты аккаунта над baseCurrency хостера; поле в UI для Veesp.
Co-authored-by: Cursor <cursoragent@cursor.com>
Валюта VPS берётся из baseCurrency хостера, ставки — из тарифных планов с fallback и parsePlanCost. На списке VPS цены в валюте провайдера. Расширен parseTariffPrice для форматов UserAPI. Добавлены фильтры на странице тарифов.
Co-authored-by: Cursor <cursoragent@cursor.com>
API не всегда возвращает валюту (VDSina UserAPI); раньше подставлялся RUB вместо USD из настроек провайдера.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлен адаптер 4vps, обобщён pipeline синхронизации через ProviderAdapter и обновлён UI для Panel ID и API Key.
Co-authored-by: Cursor <cursoragent@cursor.com>
Тест отправки использует значения формы без предварительного сохранения; пустой токен при сохранении не затирает сохранённый. Добавлены подсказки по частым ошибкам Telegram API и колонка ошибок в журнале уведомлений.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлены новые функции для отправки уведомлений через Telegram и webhook, включая настройки для интервалов уведомлений и проверки uptime. Реализован журнал уведомлений для отслеживания статуса отправленных сообщений. Обновлены схемы и интерфейсы для поддержки новых полей и функционала.
Co-authored-by: Cursor <cursoragent@cursor.com>
Счётчик issuesCount и таблица «Проблемы» теперь используют общую логику в @cfdm/shared; добавлены категории «истекает 7 дн» и «низкий баланс».
Co-authored-by: Cursor <cursoragent@cursor.com>
Проект выбирается из справочника; ручные правки автоматически попадают в userOverrides без сброса при сохранении. CommandDialog приведён к эталону shadcn/ReUI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлены маршруты для аудита в API и интерфейсе, включая возможность обновления и удаления проектов. Реализована интеграция с системой аудита для отслеживания изменений в VPS и проектах. Обновлены компоненты и схемы для поддержки новых полей и функционала.
Co-authored-by: Cursor <cursoragent@cursor.com>
Заменён JSON-редактор в настройках на UI с drag-reorder, добавлены динамические колонки VPS с picker видимости и типизированные контракты в @cfdm/shared.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавить apiLogin из credentials, сводку и health-индикаторы на /accounts, фильтры, раздельную форму логина и пароля, безопасное удаление с 409 и тесты API/repository.
Co-authored-by: Cursor <cursoragent@cursor.com>
Фильтры стран и городов показывают только значения из БД; отключено автозаполнение поиска. Вкладки дашборда приведены к line tabs по REUI. VPS без проекта больше не считается проблемой.
Co-authored-by: Cursor <cursoragent@cursor.com>
Добавлены syncLog в snapshot, API статистики дашборда и маппинг цен тарифов; переработаны shell, главная страница, empty states и новые экраны журнала синка и проектов.
Co-authored-by: Cursor <cursoragent@cursor.com>
Node в Docker не мог импортировать .ts из workspace-пакетов; exports
переключены на dist, добавлен tsc build и сборка в Dockerfile.
Co-authored-by: Cursor <cursoragent@cursor.com>
Портированы BILLmanager sync/test/balance, планировщик и Telegram,
импорт/экспорт бэкапов и migrate API; Docker по умолчанию на fastify.
Добавлен .understand-anything/ в gitignore, исправлен path codegraph в MCP.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Регистр @reui в components.json (URL https://reui.io/r/{style}/{name}.json)
- Установлены @reui/filters, @reui/autocomplete, @reui/number-field,
@reui/date-selector и shadcn slider через shadcn CLI
- Поправлены TS-импорты в ReUI-исходниках (type-only) и удалены неиспользуемые
объявления; в packages/ui добавлены react-day-picker и date-fns для calendar
- Новый VpsFiltersToolbar: тулбар с поиском, кнопкой «Фильтр» (ReUI Filters),
chips с операторами, Popover «Вид» (группировка/компактность/пресеты)
- vps-filters.tsx переписан под массивы значений (мультивыбор) с поддержкой
операторов is_any_of / contains / gte; applyVpsFilters принимает как state,
так и Filter[] (stateToActiveFilters)
- В форме VPS vcpu/ramGb/diskGb/monthlyRate/dailyRate — @reui/number-field
через Controller, paidUntil — @reui/date-selector (одиночная дата)
- AutoCompleteInput: отступы флага size-4 leading-none, CommandList py-1,
CommandItem gap-2.5, PopoverContent min-w-[220px]
- build + tsc --noEmit без ошибок
Co-authored-by: Cursor <cursoragent@cursor.com>
- packages/shared/src/geo: страны ISO 3166-1 alpha-2 + топ-города по странам
- vps.tsx: countryOptions/cityOptions из справочника + существующих VPS,
города фильтруются по выбранной стране
- auto-complete-input: убран onBlur-хак с setTimeout, фильтрация по
основному полю, initialFocus=false чтобы popover не закрывался
- vite.config.ts + tsconfig.json: алиас @cfdm/shared/geo
Co-authored-by: Cursor <cursoragent@cursor.com>
- Новый компонент AutoCompleteInput (Popover + Command/cmdk):
ввод с подсказками, поддержка leading-иконки (эмодзи-флаг).
- Страна: в списке вариантов и в самом инпуте показывается
эмодзи-флаг через getCountryFlagEmoji.
- Город: автокомплит без флага.
- Источник данных — уникальные значения из snapshot.vps
(server-side API для стран/городов отсутствует).
- Подключено в форме VPS и в фильтрах страницы.
- Добавлены shadcn-компоненты command, popover, input-group;
зависимость cmdk в packages/ui.
Co-authored-by: Cursor <cursoragent@cursor.com>
В SelectContent по умолчанию было alignItemWithTrigger=true (стиль macOS:
поповер перекрывает триггер) и align=center. Заменил на align=start и
alignItemWithTrigger=false — меню появляется под триггером, как в
стандартном shadcn.
Co-authored-by: Cursor <cursoragent@cursor.com>