Repository navigation
build: major dependency upgrades, wave 2 - #108
Merged
Merged
Conversation
Что: - octokit 3.2.2 -> 5.0.5 (точный пин) в apps/dokploy и packages/server. - @octokit/auth-app ^6.1.4 -> ^8.3.1 в обоих воркспейсах. - @octokit/webhooks ^13.9.1 -> ^14.2.0 в apps/dokploy. - Удалён неиспользуемый @octokit/rest из packages/server. Зачем: Мажорное обновление семейства octokit (волна 2). Из дерева уходят старые транзитивные зависимости (jsonwebtoken, btoa-lite, deprecation). Риски: Breaking changes: пакеты стали только ESM, удалён тип авторизации "oauth", минимальный Node 20. Оба воркспейса уже ESM, Node 24, тип "oauth" не используется, поэтому код не менялся. Вызовы auth, paginate, rest.* и Webhooks.verify сохранили сигнатуры. Проверки: - bun install --frozen-lockfile, bun run typecheck: ок. - vitest __test__/git-provider и __test__/deploy: 40 файлов, 426 тестов ок. - bunx biome check по изменённым файлам, bun audit: ок. - Импорт в Node: Octokit + createAppAuth создаются, verify принимает верную подпись и отклоняет неверную. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: bcrypt 5.1.1 -> 6.0.0 и @types/bcrypt 5.0.2 -> 6.0.0 (точные версии) в apps/dokploy и packages/server. Из lock ушло дерево @mapbox/node-pre-gyp, node-addon-api свёлся к одной версии 8.9.2. Добавлен тест __test__/security/bcrypt-hash-compat.test.ts с хэшами, сделанными bcrypt 5.1.1. Зачем: bcrypt 6 больше не скачивает бинарник через node-pre-gyp при установке, а поставляет готовые N-API сборки внутри пакета (prebuilds/, включая linux-x64 glibc) и грузит их через node-gyp-build. Минус устаревшая цепочка зависимостей (npmlog, gauge, rimraf 3, glob 7, tar 6). Риски: нативный модуль. Скрипт install (node-gyp-build) только находит готовую сборку, сеть и компилятор не нужны; bcrypt есть в списке пакетов, которым bun доверяет по умолчанию. Next держит bcrypt внешним пакетом, esbuild-конфиги собирают с packages: external, поэтому поиск prebuilds через __dirname не ломается. Dockerfile не менялся: prod-deps ставит hoisted node_modules вместе с prebuilds. Формат хэшей прежний ($2b$). Проверки: bun install --frozen-lockfile, bun run typecheck, тесты __test__/security (350/350), полный набор (один нестабильный тест backups/backup-files под нагрузкой, отдельно проходит), biome check, bun audit --audit-level=moderate. Загрузка биндинга под Node 24.22.1 локально (darwin-arm64). Образ проверит main-image-smoke в CI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: nanoid 3.3.20 -> 6.0.2 (точная версия) в apps/dokploy и
packages/server. Добавлен тест формата id (21 символ A-Za-z0-9_-) и
6-символьного суффикса имени приложения из customAlphabet.
Зачем: ветка 3.x поддерживается только ради CommonJS; оба пакета уже
ESM. В 6.x nanoid() и customAlphabet() быстрее, исправлены ошибки
customRandom и защита от отрицательного размера.
Риски: v4 убрала CommonJS, v5 убрала nanoid/async и Node 14/16, v6
требует Node ^22 || ^24 || >=26. В коде нет require("nanoid") и
удалённых точек входа, всё в серверном ESM-коде; Node 24.22.1. API
nanoid() и customAlphabet(alphabet, size), размер по умолчанию 21 и
алфавит не менялись. postcss сохраняет свою копию nanoid 3.
Проверки: bun install --frozen-lockfile, bun run typecheck, полный
набор тестов (4286 пройдено, 2 упавших по таймингу под нагрузкой
прошли при повторном запуске), biome check, bun audit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - date-fns 3.6.0 -> 4.4.0 (точная версия) в apps/dokploy и packages/server. - В bun.lock осталась одна копия date-fns@4.4.0: отдельная вложенная копия для react-day-picker (^4.1.0) больше не нужна. - Код не менялся: все 34 файла импортируют format, formatDate, formatDistanceToNow, isPast из корня пакета, их API в v4 тот же. Зачем: - Мажорное обновление волны 2; одна версия date-fns вместо двух в зависимостях. Риски: - v4 стал ESM-first (CJS сохранён) и ужесточил типы; typecheck проходит без правок. - Вывод форматирования проверен скриптом на 3.6.0 и 4.4.0 (все шаблоны из кода, UTC и Europe/Moscow): совпадает построчно. Проверки: - bun install --frozen-lockfile до и после: ок. - bun run typecheck: ок во всех workspace. - vitest (13 файлов, связанных с форматированием дат, уведомлениями и деплоями): 79/79. - bunx biome check на изменённых файлах: ок. - bun audit --audit-level=moderate: уязвимостей нет. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: node-os-utils 2.0.5 -> 3.1.0 (точная версия) в apps/dokploy и packages/server. Код в packages/server/src/monitoring/utils.ts менять не пришлось: конструктор, опция disk.includeStats, методы cpu.usage, memory.info, memory.swap, disk.usageByMountPoint, disk.stats, network.overview и тип MonitorResult (success/data) в v3 те же. Зачем: волна мажорных обновлений. В v3 сбой монитора без слушателя error больше не роняет процесс (в v2 при отсутствии ip/ifconfig network.overview() выбрасывал необработанное событие error), исправлены разбор df (df -P) и единицы памяти в запасном пути Linux, добавлен таймаут операций 10 с. Риски: ломающие изменения v3 касаются ProcessInfo, kill(), system.info() и DataSize с NaN/Infinity; мы их не используем. Таймаут 10 с: если команда зависнет, метрика придет как неуспешный результат, и код подставит 0, как и раньше при ошибке. Проверки: bun install --frozen-lockfile до и после, bun run typecheck, vitest __test__/monitoring (83 из 83), biome check, bun audit --audit-level=moderate (уязвимостей нет). Сравнение v2 и v3 в node:24.22.1-bookworm-slim с iproute2: структура и значения CPU, памяти, swap, диска, сети и disk.stats совпадают, диск совпадает с df байт в байт. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
Вторая волна мажорных обновлений библиотек форка одним PR, чтобы все изменения вошли в одну версию. Это серверные библиотеки панели: интеграция с GitHub, пароли, генерация ID, даты и мониторинг.
Заменяет PR #103–#107: в них те же изменения, по одному пакету на PR. Они закрываются без слияния.
Что изменилось
octokitapps/dokploy,packages/serveroauth, который у нас не используется. Получение installation-токенов,paginateиrest.*работают как раньше@octokit/auth-appapps/dokploy,packages/serveruniversal-github-app-jwt2)@octokit/webhooksapps/dokployWebhooks#verify(payload, signature)не изменился: верная подпись принимается, неверная отклоняется@octokit/restpackages/serverbcryptapps/dokploy,packages/servernode-pre-gypбольше ничего не скачивает. Хэши$2a$и$2b$, сделанные bcrypt 5, проверяются@types/bcryptapps/dokploy,packages/servernanoidapps/dokploy,packages/serverA-Za-z0-9_-) и 6-символьные суффиксы имён приложений не изменилисьdate-fnsapps/dokploy,packages/serverformat,formatDistanceToNowиisPastсовпал во всех 132 сравнениях до и после.react-day-pickerтеперь использует ту же копиюnode-os-utilsapps/dokploy,packages/serveripv3 возвращает ошибку, а не роняет процессapps/dokploy/__test__/security/bcrypt-hash-compat.test.ts: хэши, сделанные bcrypt 5, проверяются в v6;apps/dokploy/__test__/lib/id-format.test.ts: формат ID и суффикса имени приложения.bun.lock: 41 новая версия, все из деревьев этих пакетов. Ушли@mapbox/node-pre-gypсо своими зависимостями,jsonwebtokenиlodash.*из старого octokit. Посторонние пакеты не сдвинулись.Не вошли
bullmqиioredis, они остаются на v5. В bullmq 6 убрали старый API повторяющихся задач, на котором построен облачный планировщик upstreamapps/schedules. Форк этот сервис не запускает, а переход потребовал бы переписать его логику.Проверки
На этой ветке:
bun install --frozen-lockfile: без изменений.bun audit --audit-level=moderate: уязвимостей нет (1444 пакета).bunx biome checkпо изменённым файлам: замечаний нет.bun.lockсовпадает с объединением наборов из build: upgrade octokit to v5 #103–build: upgrade node-os-utils to v3 #107.bun run server:build, затемbun run typecheck: все четыре workspace без ошибок.bun run testвapps/dokploy: 377 файлов и 4292 теста прошли, 1 файл и 5 тестов пропущены, упавших нет.Что проверить вручную на dev
bcrypt).nanoid).date-fns).free -mиdf -hна хосте (node-os-utils).🤖 Generated with Claude Code