100 Commits
Author SHA1 Message Date
DenozordecandClaude Opus 5.5 68c5774df9 chore(release): выставить версию 1.0.0 во всех пакетах
Docker / build (push) Failing after 21s
- version 1.0.0 во всех package.json monorepo
- версия в GET /health и в меню пользователя (vite define)
- Docker: тег vX.Y.Z собирает образ :X.Y.Z и :X.Y, latest остаётся за main
- README: как закрепить версию образа

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 09:41:50 +07:00
DenozordecandClaude Opus 5.5 85ac5b15cb docs: переснять скриншоты после доработок UI и описать шкалу времени
Docker / build (push) Failing after 21s
Скриншоты сняты заново на демо-данных с неделей истории проверок.
В docs/features.md — навигация по точкам измерений и новые матрицы
блокировок и GeoIP. В мониторе цвет текста предупреждений читается
в светлой теме (*-foreground, как в KPI).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 03:09:49 +07:00
DenozordecandClaude Opus 5.5 8ae07628c6 feat(web): шкала времени и наглядные матрицы на страницах блокировок и GeoIP
- шкала по часовым точкам измерений: капсулы с долей проблемных прогонов,
  пресеты «Сейчас / −1 ч / −6 ч / −24 ч / −7 д», кнопки и клавиши ← →
- статусы блокировок — цветные IconTile, короткие подписи сервисов
  с иконками брендов, колонка «Доступно X из Y» с полосой
- GeoIP: флаги стран в ячейках, расхождение с большинством подсвечено,
  колонка «Страна · совпадает N/M»; расхождения считаются по сервисам
- флаг страны VPS в первой колонке, фильтры и вид в шапке матрицы
- демо-данные: неделя истории прогонов по полному списку сервисов

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 03:06:21 +07:00
DenozordecandClaude Opus 5.5 a4a8b9562d feat(web): унифицировать таблицы по раскладке MikrotikManager v2
- поиск и фильтры страниц перенесены в шапку рамки рядом с заголовком,
  ListFiltersBar стал однострочным тулбаром
- шапка таблицы с подложкой, строки без зебры (общий kitDataGridTableLayout)
- у таблиц заголовки и подписи из досок макета
- IP в списке VPS моноширинным шрифтом и без обрезки, компактная
  иконка в ячейке-названии

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 03:06:21 +07:00
DenozordecandClaude Opus 5.5 148ef8efb7 feat(web): привести «Внимание» и KPI к макету и EvoBGP
- монитор в шапке: пилюля «Внимание ●N ●M», в попапе сводка сбой /
  предупреждения / в норме, список проблем со ссылками, плитки метрик
  с полосами и время обновления
- KPI одной полосой в Frame с разделителями 1px, как доски макета

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 02:47:38 +07:00
DenozordecandClaude Opus 5.5 06d767fde7 docs: обновить README, описать возможности и настройку, переснять скриншоты
- README: главные возможности, галерея, быстрый старт, ссылки на документы
- docs/features.md: гид по всем разделам с новыми скриншотами
- docs/configuration.md: переменные окружения, права, роли, планировщик
- 26 скриншотов нового дизайна на демо-данных (в т.ч. мобильные)
- scripts/seed-demo.ts и scripts/docs-screenshots.mjs для пересъёмки

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 02:42:04 +07:00
DenozordecandClaude Opus 5.5 a26647a52d fix(web): пересчитывать «Баланс API» на дашборде в базовую валюту
KPI складывал балансы аккаунтов в разных валютах как есть (46,8 EUR +
1120 RUB показывалось как 1166,80 ₽). Теперь каждый баланс переводится
в базовую валюту с учётом курса хостера.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 23:18:16 +07:00
DenozordecandClaude Opus 5.5 d0e262c41d fix(projects): находить проекты с кириллицей без учёта регистра
SQLite LOWER() и LIKE понижают только ASCII, поэтому «Сайт и API» не
находился и каждый новый VPS с таким проектом создавал дубль; подсказки
по «сай» тоже были пустыми. Сравнение перенесено в JS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:58:30 +07:00
DenozordecandClaude Opus 5.5 5e29ff7ec3 Merge github/main: синхронизировать историю github и origin
Docker / build (push) Failing after 30s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:49:50 +07:00
DenozordecandClaude Opus 5.5 a185ffa659 Merge branch 'claude/elated-pasteur-5c3133': новый дизайн фронтенда VPS-Tracker
Docker / build (push) Failing after 2m15s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:47:56 +07:00
DenozordecandClaude Opus 5.5 f38694da63 fix(notifications): изолировать уведомления по space и чинить отправку в Telegram
- «Истекает оплата» строится только по VPS текущего space
- ключ notification_state разделён по space: второй space больше не
  падает на PRIMARY KEY и не получает дубль каждый тик
- таймаут 10 с для Telegram и webhook
- текст от хостеров экранируется для parse_mode=HTML
- сообщения длиннее 4096 символов обрезаются по строке
- повторное падение того же VPS снова уведомляет
- ошибки по отдельным чатам пишутся в журнал при частичной доставке
- удалён неиспользуемый sendWebhook/notifyWebhook

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:45:45 +07:00
DenozordecandClaude Opus 5.5 80af888cdb perf(api): чистить старые журналы и облегчить синк и dashboard
- раз в сутки удаляются notification_log и sync_log старше 90 дней и
  vps_health_checks старше 30 дней; синки, зависшие в running дольше
  часа, помечаются ошибкой
- dashboard stats не грузит тарифы, домены и проекты
- запросы характеристик VPS в BILLmanager идут по 4 параллельно

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:36:53 +07:00
DenozordecandClaude Opus 5.5 0b9b1cad54 fix(api): пускать к бэкапу и миграции только глобального админа
Скачивание и восстановление файла БД, JSON-бэкап и legacy-импорт
затрагивают все spaces и содержат учётные данные API, поэтому прав
vps:settings:admin в одном space для них недостаточно.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:36:53 +07:00
DenozordecandClaude Opus 5.5 273883f657 fix(api): закрыть SSRF в rates-proxy, проверять роль в space, убрать гонки синка
- rates-proxy запрашивает только сохранённый settings.ratesUrl
- viewer в space не может писать в платежи, баланс, провайдеров,
  аккаунты, проекты и запускать синк
- /api/sync/status показывает журнал только текущего space
- повторный синк аккаунта во время текущего отвечает 409
- тики планировщика не накладываются, каждый space идёт по своему интервалу

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:32:50 +07:00
DenozordecandClaude Opus 5.5 78f413324a fix(sync): не стирать тарифы при ошибке загрузки прайс-листа
Ошибка запроса тарифов превращалась в пустой список: active_tariffs
удалялись, а следующий успешный синк объявлял все тарифы новыми.
Пустой ответ теперь оставляет старый список, замена идёт в транзакции.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:32:50 +07:00
DenozordecandClaude Opus 5.5 01a771407d fix(sync): сохранять данные синка в текущий space и не склеивать VPS
Вставки VPS, платежей, тарифов и uptime-проверок не задавали spaceId и
уходили в space-main. Поиск существующего VPS матчил bm-1 с bm-12 и
сервера с пустым IP между собой; теперь сначала по id, затем по точному
токену в заметке, затем по непустому IP.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:22:38 +07:00
DenozordecandClaude Opus 5.5 e37f69ebf0 fix(db): писать null в пустые FK и мигрировать старые БД без apiType
Пустая строка в vpsId/providerAccountId/providerId давала 500
SQLITE_CONSTRAINT_FOREIGNKEY при создании платежа, записи баланса и VPS
без провайдера. Старые БД падали с «no such column apiType»: добавлены
колонки providers.apiType/apiBaseUrl и перенос URL BILLmanager с аккаунтов.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:22:37 +07:00
DenozordecandClaude Opus 5.5 a70955f90d docs(ui): отметить статус экранов в плане миграции и заголовок грида VPS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:07:49 +07:00
DenozordecandClaude Opus 5.5 166abb03b1 fix(web): крошки деталей, контраст warning и тёмный сайдбар на телефоне
Детальные VPS и проекта показывают «раздел / запись» в крошках, warning-значения
KPI читаемы в светлой теме, мобильный сайдбар в светлой теме остаётся тёмным,
заголовки групп не попадают в Tab-порядок свёрнутого меню.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:06:39 +07:00
DenozordecandClaude Opus 5.5 9483e1122d fix(web): учесть reduced motion у шеврона групп меню
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:03:14 +07:00
DenozordecandClaude Opus 5.5 e3403bcb56 feat(web): перевести настройки, VPS-детали и журнал на вкладки из дизайна VPS-Tracker
Настройки — line-вкладки сверху вместо боковой навигации, детали VPS —
line-вкладки и действия в шапке, журнал — общие CountedLineTabs, шапка
страницы 20px. Детальные маршруты VPS и проекта вынесены из вложенности
(vps_.$vpsId, projects_.$projectId): списки не рендерят Outlet, и детали
не открывались.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 22:02:04 +07:00
DenozordecandClaude Opus 5.5 b5300b9082 feat(web): перевести shell и дашборд на дизайн VPS-Tracker
Сворачиваемые группы меню с точками проблем, приложения в AppSwitcher вместо
AppsMenu в шапке, пилюля монитора со счётчиками, KPI со значением и бейджем
в одной строке, вкладки дашборда на уровне страницы.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:57:47 +07:00
DenozordecandClaude Opus 5.5 10b20b9d55 feat(web): перевести тему на палитру и шрифты Geist из дизайна VPS-Tracker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:53:04 +07:00
DenozordecandClaude Opus 5.5 b3712af0c0 docs(ui): добавить план миграции на дизайн VPS-Tracker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 21:52:09 +07:00
denozordec b00fb9345f Add ReUI premium access configuration 2026-09-25 19:54:01 +07:00
denozordec e6ddb24964 Added mcp.json 2026-09-25 19:49:27 +07:00
DenozordecandCursor a64d8b9755 fix(topology): спрямить HA-линии и не показывать RR без пула
Docker / build (push) Failing after 19s
Membership идёт bezier по ближайшей грани; клик по сервису выделяет VPS-членов. Badge HA только при двух уникальных origin IP.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 15:09:19 +07:00
DenozordecandCursor 5a61ce33b4 feat(topology): вынести сервис CFDM в отдельный узел со связями членства
Docker / build (push) Failing after 23s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 14:20:09 +07:00
DenozordecandCursor 4dc5609f17 feat(topology): добавить группы сервисов CFDM на схему
Docker / build (push) Failing after 20s
Сервис ставится существующей группой с Badge типа резервирования; sync сохраняет lbMode.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 11:30:40 +07:00
DenozordecandCursor 29325179f4 fix(ui): привести таблицы к стилю ReUI PRO
Docker / build (push) Failing after 23s
Статусы через ReUI Badge, колонка действий — outline-меню без pin-slab.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 00:14:36 +07:00
DenozordecandCursor 573ca097aa fix(domains): привязывать общие FQDN ко всем совпавшим VPS
Docker / build (push) Failing after 29s
Общий binding с несколькими origin-IP больше не остаётся unmatched: строка размножается на каждый однозначно совпавший VPS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 22:02:06 +07:00
DenozordecandCursor 6e401533c7 feat(launcher): полный список ipregion на MikroTik (ros-8)
Docker / build (push) Failing after 27s
40 сервисов как у Linux: primary, custom и CDN. Имена совпадают с vernette/ipregion.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 19:27:28 +07:00
DenozordecandCursor adea0ab070 fix(launcher): собирать ingest JSON MikroTik вручную (ros-7)
Docker / build (push) Failing after 23s
RouterOS serialize ломал тело POST. ros-7 пишет JSON строкой и печатает префикс при ошибке ingest.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 16:30:47 +07:00
DenozordecandCursor f53ca1ed7d fix(launcher): принимать JSON-массив results от MikroTik
Docker / build (push) Failing after 28s
RouterOS serialize превращает results в объект с ключами 0,1 — API отвечал 400. ros-6 собирает массив, ingest принимает оба формата.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 15:59:30 +07:00
DenozordecandCursor d7bcd0d4ec fix(launcher): показывать ошибку ingest MikroTik и повторять без src-address
Docker / build (push) Failing after 23s
RouterOS скрывает HTTP 4xx как fetch error. ros-5 печатает код и тело ответа, затем повторяет POST без src-address.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 14:09:19 +07:00
DenozordecandCursor ecd053b832 fix(launcher): упростить пробы MikroTik до переменной vt-srcIp
Docker / build (push) Failing after 26s
Убраны автоопределение интерфейса и policy routing: исходный IP задаётся вручную на каждом роутере.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 10:55:17 +07:00
DenozordecandCursor 72aad059bd fix(launcher): выпускать пробы MikroTik через выбранный WAN
Docker / build (push) Failing after 24s
src-address недостаточно при нескольких default route: добавляем policy routing и снимаем правила после прогона.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:43:26 +07:00
DenozordecandCursor a9e3cce113 feat(launcher): требовать интерфейс для проверок MikroTik
Docker / build (push) Failing after 22s
Все пробы и ingest идут через src-address выбранного WAN, scheduler сохраняет vtIface.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:22:25 +07:00
DenozordecandCursor c844874b0a feat(launcher): добавить скрипты GEO и blocking для MikroTik 7.22+
Docker / build (push) Failing after 27s
Пробы выполняются на роутере через /tool fetch и уходят в те же ingest API. Ежедневный запуск ставит scheduler, который каждый день заново качает .rsc со свежим токеном.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 17:47:04 +07:00
DenozordecandCursor b03318800f feat(launcher): добавить ежедневный запуск проверок cc и ic
Docker / build (push) Failing after 24s
Флаг --daily ставит cron, который раз в сутки заново качает launcher со свежим токеном. Снять: --remove-daily.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 16:18:14 +07:00
DenozordecandCursor 7480b9dc11 fix(geo): распознать CDN-локации и добавить иконки сервисов
Docker / build (push) Failing after 22s
CDN-значения вида SE (ARN) больше не помечаются как ошибка. У каждого GeoIP-сервиса — бренд-иконка, как в разделе блокировок.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 15:54:04 +07:00
DenozordecandCursor 235ae03489 feat(geo): добавить раздел IP-регионов
Docker / build (push) Failing after 26s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 15:16:17 +07:00
DenozordecandCursor 60a22b9450 feat(blocking): определять и показывать хостер в матрице блокировок
Docker / build (push) Failing after 26s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 13:19:02 +07:00
DenozordecandCursor efebcaf16d feat(blocking): добавить шкалу снимков над матрицей
Docker / build (push) Failing after 24s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 12:32:46 +07:00
DenozordecandCursor 9254b8dc22 fix(blocking): удержать горизонтальный скролл матрицы внутри страницы
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 12:32:38 +07:00
DenozordecandCursor a5f83c6ecb fix(ui): выровнять header pin и матрицу блокировок под ReUI v9
Docker / build (push) Failing after 25s
Kit больше не перебивает defaults примитива: header без серой полосы, CRUD с table-fixed. Матрица /blocking получает sticky identity, иконки сервисов и статусы без текста ОК/Блок.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 21:47:58 +07:00
DenozordecandCursor 5847188dc7 feat(ui): перевести DataGrid на ReUI v9 и матрицу блокировок
Docker / build (push) Failing after 26s
Обновить registry data-grid на TanStack Table v9 и показать статус DPI компактной матрицей по VPS и сервисам.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 16:06:49 +07:00
DenozordecandCursor ca7f37f980 fix(censorcheck): показывать прогресс-бар во время проверки сайтов
Docker / build (push) Failing after 21s
JSON остаётся в stdout, бар пишет в stderr; launcher больше не перехватывает прогресс.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 11:15:18 +07:00
DenozordecandCursor d0853a7fd1 chore(git): зафиксировать LF для скриптов censorcheck
Docker / build (push) Failing after 21s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 11:06:16 +07:00
DenozordecandCursor 8ec1ccfecc fix(censorcheck): восстановить vendor-скрипт и ставить зависимости по ОС
Сломанный here-doc съел is_installed; launcher определяет дистрибутив и ставит jq/dig/column без prompt, скрипты отдаются с LF.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 11:06:06 +07:00
DenozordecandCursor 5c43d88f1a feat(censorcheck): добавить статус блокировок и launcher curl | bash
Docker / build (push) Failing after 25s
Прогон с VPS через HMAC-токен матчится к существующим серверам; UI /blocking показывает текущие проверки и историю.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 10:52:22 +07:00
DenozordecandCursor 9e0311b53a feat(settings): добавить Bot API URL и ячейку ошибок уведомлений
Docker / build (push) Failing after 26s
Монитор больше не ставит «Внимание» по скрытому счётчику. Telegram можно слать через локальный telegram-bot-api.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 02:29:07 +07:00
DenozordecandCursor 9214d6fbab chore(reui): обновить ReUI agent skill до актуальной версии
Docker / build (push) Canceled after 3m39s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 20:03:50 +07:00
DenozordecandCursor e25317bba7 chore(deploy): переключить registry на git.shx.one
Docker / build (push) Failing after 19s
Заменить хост Gitea в compose и документации деплоя.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 16:43:36 +07:00
DenozordecandCursor 55014105f5 fix(ui): выровнять chrome Frame KPI и доступность
Docker / build (push) Failing after 22s
Унифицировать оболочку ops-экранов, IconTile, skip-link и контракт UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 15:36:53 +07:00
Denozordec edf1da165a feat(reui): update ReUI components and documentation to reflect 20 building blocks
Docker / build (push) Failing after 19s
- Expanded the ReUI skill description to include 20 free building blocks.
- Updated references in various documentation files to reflect the new count of components.
- Enhanced the data-grid documentation to specify the use of TanStack Table v9.
- Added new component details, including the icon-tile, and clarified usage instructions across multiple files.

This update improves clarity and ensures that all references are consistent with the latest component offerings.
2026-08-07 16:40:14 +07:00
DenozordecandCursor 54f3587b45 feat(web): клик по проекту, копирование IP и доступ к серверу
Docker / build (push) Failing after 27s
Исправить выбор пространства через SelectField; режимы share/assign и отзыв grant.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 22:53:35 +07:00
Denozordec c14cf3953e fix(tests): enhance fetch mocks and type safety in settings and audit tests
Docker / build (push) Failing after 30s
Updated fetch mocks in settings and audit test files to improve type safety by specifying the fetch type. Adjusted handling of mock call parameters to ensure proper access to request options. This enhances test reliability and clarity in error handling scenarios.
2026-08-02 19:52:18 +07:00
DenozordecandCursor 0177f5d539 fix(integrations): фильтровать не-IP и наследовать VPS по сервису
Docker / build (push) Failing after 24s
CNAME с hostname в ips не матчились; unmatched bindings того же CFDM-сервиса наследуют уникальный VPS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 01:30:26 +07:00
DenozordecandCursor 619385981c fix(integrations): матчить CFDM-домены по dns и CNAME-цели
Docker / build (push) Failing after 20s
Плашка «без привязки» оставалась для CNAME: sync шёл, но матч был только по IP.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 01:16:26 +07:00
DenozordecandCursor d4d59f4b8e fix(integrations): sync только по сохранённым cfdmApiUrl и токену
Docker / build (push) Failing after 18s
Убран fallback на локальный App Switcher (192.168.x). URL из portal подставляется в форму для сохранения; кнопка sync требует URL в БД.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 00:46:28 +07:00
DenozordecandCursor c5198cdd7f fix(integrations): pull bindings из CFDM вместо обратного push
Docker / build (push) Failing after 19s
Устраняет fetch failed при ручном sync, когда CFDM не может достучаться до VPS Tracker. Ошибки показывают URL; UI подсказывает URL из App Switcher.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 00:36:04 +07:00
Denozordec fd2d5f39c0 feat(settings): add CFDM API URL handling and improve integration form
Docker / build (push) Failing after 22s
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.
2026-08-01 00:20:59 +07:00
Denozordec b8ee99ca03 fix(settings): update CFDM sync tests and improve error handling
Docker / build (push) Failing after 21s
Renamed test cases for clarity and added new tests for handling missing CFDM URL and token scenarios. Removed unnecessary checks in the sync request function to streamline the process. Updated integration form to ensure proper boolean handling for settings. Enhanced sync button behavior based on saved credentials.
2026-08-01 00:07:50 +07:00
DenozordecandCursor 033557a859 feat(integrations): добавить ручной sync с CFDM
Docker / build (push) Failing after 22s
Кнопка в настройках запрашивает полную выгрузку bindings из CFDM.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 23:24:04 +07:00
Denozordec 5bbf0061cf feat(data-grid): add sorting function support for DataGridColumn and update vps tariff calculations
Docker / build (push) Failing after 22s
Enhanced DataGridColumn interface to include a sorting function option. Updated the frame-data-grid component to utilize the new sorting function. Introduced a new function for calculating comparable daily rates for VPS tariffs, improving the accuracy of monthly burn calculations. Updated the VpsPage to implement the new sorting function and daily rate logic.
2026-07-31 17:00:25 +07:00
Denozordec 53d5ed5d33 refactor(vps): update vCPU, RAM, and disk fields to allow decimal values
Docker / build (push) Failing after 21s
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.
2026-07-31 16:46:26 +07:00
DenozordecandCursor 72f9597ede feat(audit): показывать человекочитаемые имена VPS в журнале
Docker / build (push) Failing after 19s
Вместо сырого ID — dns/ip (и name для хостера/аккаунта/проекта); id остаётся в title и деталях.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 18:10:43 +07:00
DenozordecandCursor c849dd5ff8 feat(audit): гибрид timeline и таблицы журнала изменений
Docker / build (push) Failing after 18s
Лента в стиле solution-users-6 с раскрываемым diff; переключение на ResourcePage.
Исправлено: монитор считает ошибку синка только по последней записи аккаунта.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 17:57:43 +07:00
DenozordecandCursor a02daba69b feat(audit): dual-write журнала в auth-portal ingest
Docker / build (push) Failing after 23s
Добавлены event_id/actorUserId и async push source_app=vps без блокировки CRUD.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 13:24:30 +07:00
DenozordecandCursor 8cee00e6e3 chore(rules): правило kpi-hybrid — только hybrid KPI из kit
Docker / build (push) Failing after 20s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 02:35:51 +07:00
DenozordecandCursor fe85cdd18d chore(security): игнорировать локальные mcp.json
Docker / build (push) Failing after 20s
.cursor/mcp.json и .mcp.json в gitignore; убраны из индекса; добавлен mcp.json.example без секрета.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 00:29:53 +07:00
DenozordecandCursor 78bde2da74 chore(security): убрать REUI Bearer и daemon.pid из git
Docker / build (push) Failing after 19s
Локальный .cursor/mcp.json в gitignore; в репо остаётся mcp.json.example без секрета.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 00:27:43 +07:00
Denozordec f11d82d89d feat(mcp): add ReUI configuration with authorization headers
Docker / build (push) Failing after 18s
2026-07-21 00:25:40 +07:00
DenozordecandCursor 9faec59338 feat(web): унифицировать ReUI PRO — ResourcePage, KpiStatGrid, chrome
Docker / build (push) Failing after 20s
Списки на ResourcePage, KPI на EvoBGP hybrid KpiStatGrid; удалены DataGridCard/SectionCards/ModeToggle; обновлены rules, skill и design contract.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 00:22:49 +07:00
DenozordecandCursor 8a4934940f fix(dashboard): не копировать оценку расходов на все месяцы
Docker / build (push) Failing after 20s
Оценка burn только за текущий месяц; KPI совпадает с convertVpsMonthlyBurnToBase.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 01:00:11 +07:00
DenozordecandCursor d25beec289 fix(dashboard): запас дней по paidUntil вместо balance/burn
Docker / build (push) Failing after 20s
Переименован Runway в «Запас дней»; минимум дней до оплаты активных VPS.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 00:47:28 +07:00
DenozordecandCursor b7a4a10333 feat(billmanager): профили ihor, cloudrix, servhost, landvps, datacheap
Docker / build (push) Failing after 19s
Гео из datacentername, specs через vds.order/vds.edit; парсер ДЦ/городов РФ.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 00:30:15 +07:00
DenozordecandCursor 11a0a85ff0 feat(billmanager): гео Waicore из datacentername
Docker / build (push) Failing after 20s
Страна и город VPS из `[DE] Город | …` и `Страна, Город` через enrichVds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-20 00:08:35 +07:00
DenozordecandCursor 4c6240c636 feat(sync): FirstByte daily paidUntil из баланса и гео 4VPS
Docker / build (push) Failing after 21s
Для daily FirstByte считать dailyRate из cost/30 и общий paidUntil по балансу аккаунта; для 4VPS парсить страну/город из dc_name+flag.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 23:26:50 +07:00
DenozordecandCursor 83ed3b8a42 feat(billmanager): профиль FirstByte — ДЦ, оплата и specs VPS
Docker / build (push) Failing after 19s
Парсинг страны/города и paidUntil из list vds; CPU/RAM/диск из vds.order по pricelist_id, иначе vds.edit.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 22:38:33 +07:00
DenozordecandCursor 4dda77f118 feat(billmanager): унифицированные профили хостеров (waicore vds.vps)
Docker / build (push) Failing after 20s
Overrides по apiBaseUrl: DEFAULT + partial merge; Waicore использует func=vds.vps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 22:15:13 +07:00
DenozordecandCursor 6f0a238c95 fix(ui): закрепить кнопку Сохранить в футере FormSheet
Docker / build (push) Failing after 19s
Контент формы скроллится отдельно, футер остаётся видимым.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 20:41:42 +07:00
DenozordecandCursor 42c567e5b5 fix(spaces): не закрывать ConfirmDialog при удалении из меню
Docker / build (push) Failing after 20s
Диалог вынесен из DropdownMenu, иначе размонтировался вместе с меню.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 18:14:44 +07:00
DenozordecandCursor 670b5a4468 feat(spaces): корзина, hard purge, transfer и полный backup
Docker / build (push) Failing after 20s
Soft-delete/restore/purge пространств, смена владельца, импорт JSON с spaces, proxy portal-users и polish Settings/ConfirmDialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 12:50:18 +07:00
DenozordecandCursor 74af90270f feat(settings): переработать страницу на ReUI Frame
Docker / build (push) Failing after 21s
Разбить монолитную Card-форму на вкладки Общие/Синхронизация/Уведомления/Интеграции с SettingRow и SettingsCard по эталонам settings-16/3/2.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 04:54:42 +07:00
DenozordecandCursor e079a61811 fix: EmptyState по центру и импорт SQLite без 413
Docker / build (push) Failing after 19s
Центрирование заглушек в графиках/Frame; лимит тела backup 100 MiB;
WAL checkpoint при экспорте и очистка -wal/-shm при импорте.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 04:41:42 +07:00
DenozordecandCursor 2931d6ee0f fix(db): bootstrap полной схемы на чистой установке и логи Docker
Docker / build (push) Failing after 18s
Пустой volume больше не отдаёт 500 на /api/data из-за отсутствующих таблиц. В compose добавлены json-file логи с ротацией и LOG_LEVEL для Fastify.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 04:27:42 +07:00
Denozordec 5060b78875 feat(readme): добавлен раздел о развертывании с Traefik и Cloudflare HTTPS
Docker / build (push) Failing after 20s
Обновлен оглавление и добавлен новый раздел с пошаговой инструкцией по развертыванию контейнера VPS Tracker с использованием Traefik и Cloudflare для HTTPS. Включены ссылки на необходимые файлы и команды для настройки.
2026-07-19 04:08:57 +07:00
DenozordecandCursor 03e951af18 feat(app-switcher): читать конфиг из auth-portal вместо локального editor
Docker / build (push) Failing after 18s
CURRENT_APP_ID vps; настройка ссылок только на портале.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 20:59:03 +07:00
DenozordecandCursor 54ffed6e57 fix(auth): выходить через портал /logout вместо SSO return_to
Docker / build (push) Failing after 17s
Иначе живая сессия портала сразу возвращала JWT в приложение.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 18:37:05 +07:00
DenozordecandCursor 51a52cbf79 fix(topology): бейджи над линией и вытаскивание из группы
Docker / build (push) Failing after 21s
Легенда связи смещена выше stroke; убран extent parent, чтобы узлы можно было вынести из группы.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 18:00:37 +07:00
DenozordecandCursor 7f3371591e feat(topology): Badge-подписи связей и parent-child группы
Docker / build (push) Failing after 19s
Связи показывают тип, подпись, протокол и IP туннеля вместе; группы на заднем слое, узлы внутри прилипают к группе.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 17:46:49 +07:00
DenozordecandCursor e18d3b4ce6 feat(topology): флаг страны на VPS-узле схемы
Docker / build (push) Failing after 21s
В левом верхнем углу карточки сервера показывается флаг по стране расположения, как у Timeweb.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 17:31:22 +07:00
DenozordecandCursor 56556ea736 feat(topology): редактирование параметров блоков, групп и связей
Docker / build (push) Failing after 23s
Клики по фигурам, заметкам, группам и рёбрам открывают FormSheet с параметрами, как у VPS-узлов.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 17:27:47 +07:00
DenozordecandCursor 1f24dbe2a5 fix(topology): починить клик и DnD палитры схемы
Docker / build (push) Failing after 19s
uid без crypto.randomUUID на HTTP; источники DnD через div; клик ставит узел в центр.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 17:15:50 +07:00
DenozordecandCursor 72a51b22fd fix(web): корректно определять Lucide-иконки в EmptyState
Docker / build (push) Failing after 19s
forwardRef-иконки lucide-react больше не рендерятся как ReactNode (ошибка #31).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 17:05:07 +07:00
DenozordecandCursor da818fe104 feat(topology): добавить схему инфраструктуры на React Flow
Docker / build (push) Failing after 19s
Редактор схем с VPS-нодами, связями и персистом в SQLite по space.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 16:52:36 +07:00
DenozordecandCursor c90b42c9c4 fix(web): реактивно переключать пространство через SpaceProvider
Docker / build (push) Failing after 18s
localStorage не вызывал re-render; useSpaceId + remount main по spaceId.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 16:15:52 +07:00
DenozordecandCursor a61b352f0a fix(auth): остановить SSO-цикл редиректов после handoff
Docker / build (push) Failing after 19s
Cooldown 12с между portal handoff и страница sso_loop вместо бесконечного редиректа.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 16:08:50 +07:00