Repository navigation
build: major dependency upgrades, wave 1 - #101
Merged
Merged
Conversation
Что: - apps/api/package.json: удалена зависимость redis 4.7.1. - bun.lock: удалены redis@4.7.1, @redis/bloom, @redis/client, @redis/graph, @redis/json, @redis/search, @redis/time-series, generic-pool и вложенные копии @redis/client/cluster-key-slot и @redis/client/yallist. Пакеты ioredis, bullmq, cluster-key-slot, redis-errors и redis-parser остаются: их использует apps/schedules. Зачем: - Пакет нигде не импортируется: в apps/ и packages/ нет ни одного import или require из redis или @redis/*; в конфигурации сборки apps/api и Dockerfile.server его тоже нет. Удалить проще, чем обновлять 4 → 6. - apps/api — облачный сервис upstream, в образ панели форка (./Dockerfile) он не входит. Риски: - Минимальные: код, который мог бы загрузить пакет, отсутствует. Если upstream позже добавит импорт redis в apps/api, это проявится при слиянии с canary как ошибка typecheck. Проверки: - bun install --frozen-lockfile после изменения - без изменений. - bun run typecheck - все 4 workspace без ошибок. - bun run server:build, затем сборка apps/api (tsc) - без ошибок; после bun run server:script packages/server/package.json без изменений, сборочные dist удалены. - bunx biome check apps/api/package.json - без замечаний. - bun audit --audit-level=moderate - No vulnerabilities found (1516 пакетов). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что:
- @hono/node-server ^1.19.17 -> ^2.1.5 в apps/api и apps/schedules; bun.lock меняется только в этом пакете.
- Код не менялся: serve({ fetch, port }) в v2 работает так же.
Зачем:
- Ветка 1.x больше не развивается; v2 быстрее обрабатывает запросы (по данным авторов до 2.3 раза) и содержит исправления 2.1.x.
- apps/api и apps/schedules - облачные сервисы upstream, в образ панели форка они не входят.
Риски:
- v2 требует Node.js 20+; образы Dockerfile.server и Dockerfile.schedule на Node 24, engines тоже ^24.
- Удалён адаптер @hono/node-server/vercel; в проекте он не используется.
- hono остаётся 4.13.13 (pin в overrides), v2 поддерживает hono ^4.
Проверки:
- bun run typecheck - ок во всех воркспейсах.
- bun run server:build, затем build apps/api и apps/schedules - ок; server:script вернул packages/server/package.json без diff.
- Собранный apps/api с фиктивным env слушает порт, GET /health отдаёт 200.
- cloud-queue-availability.test.ts - 12/12.
- bunx biome check на изменённых файлах - ок; bun audit --audit-level=moderate - уязвимостей нет.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - lint-staged ^15.5.2 -> ^17.6.0 (17.6.0 от 2026-09-26) в корневом package.json и apps/dokploy/package.json. - bun.lock: lint-staged 17 тянет только picomatch, string-argv и tinyexec (уже были в lock); ушли execa 8, listr2, commander, lilconfig, chalk, debug и их зависимости. - Конфиг lint-staged в обоих package.json не менялся. Зачем: - Major-обновление волны 1. lint-staged только инструмент разработчика и не подключён к git-хукам в этом репозитории. Риски: - Нужен Node >=22.22.1 и Git >=2.32; локально и в CI Node 24.22.1. - В 16 убран флаг --shell и выполнение команд через shell, в 17 yaml стал опциональным; наш конфиг в package.json и одна команда biome без shell, это не затрагивает. Проверки: - bun install --frozen-lockfile: без изменений. - bun audit --audit-level=moderate: No vulnerabilities found. - lint-staged 17.6.0 на тестовых форматных правках в apps/dokploy и packages/server: файл из apps/dokploy взял конфиг apps/dokploy/package.json (cwd apps/dokploy), файл из packages/server взял корневой конфиг; biome исправил оба и lint-staged заново их застейджил. Тестовые правки откатаны. - bunx biome check package.json apps/dokploy/package.json: без замечаний. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - public-ip 6.0.2 -> 8.0.0 (точная версия) в apps/dokploy и packages/server. - Код не менялся: getPublicIpWithFallback в packages/server/src/wss/utils.ts и apps/dokploy/server/wss/terminal.ts вызывает publicIpv4/publicIpv6 без опций и ловит любую ошибку. - Из bun.lock ушли got 12 и его зависимости (cacheable-request, http2-wrapper, keyv и др.): v8 ходит по HTTPS через встроенный fetch. Зачем: - Major-обновление (волна 1): v6 больше не развивается, v8 тянет меньше зависимостей. Риски: - timeout (по умолчанию 5 с) в v8 считается на всю операцию, а не на каждый запрос: при недоступном IPv4 переход на IPv6 наступает не позже чем через 5 с. - При ошибке теперь бросается IpNotFoundError или TimeoutError; код ловит любую ошибку, поведение то же. - Нужен Node.js 20+, в образах Node 24. - Метод .cancel() удалён; в коде он не использовался. Проверки: - bun run typecheck: все 4 workspace без ошибок. - vitest: __test__/wss, domain-validation, domain-overview, cluster-router-security - 41 файл, 602 теста пройдены. - bunx biome check на изменённых package.json: без замечаний. - bun audit --audit-level=moderate: уязвимостей нет. - Локально publicIpv4() вернул IPv4-адрес, publicIpv6() без IPv6 отклонился с TimeoutError. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - bl 6.1.6 → 7.0.13 (точная версия) в apps/dokploy/package.json и packages/server/package.json. - bun.lock: у bl 7 нет runtime-зависимостей, из дерева ушли readable-stream 4, @types/readable-stream, abort-controller, event-target-shim, events и process; readable-stream 3.6.2 поднялся на верхний уровень вместо копий у docker-modem, tar-stream и are-we-there-yet. - apps/dokploy/__test__/process/spawn-async.test.ts: новый тест spawnAsync на настоящих процессах (сбор stdout по частям, onData, input в stdin, ошибка с stderr, кодом и обоими потоками). - Код spawnAsync не менялся: default-экспорт bl 7 по-прежнему BufferListStream с append/toString/length. Зачем: - bl 7 перешёл на ESM и node:stream/node:buffer без зависимостей: меньше пакетов в дереве и в образе. Риски: - bl 7 только ESM и требует Node >= 20. Оба пакета уже "type": "module", esbuild собирает сервер с packages: "external", поэтому bl грузится через import. - spawnAsync собирает вывод почти всех команд деплоя и сборки; поломка проявилась бы в логах деплоя и текстах ошибок. Проверки: - bun run typecheck — все четыре workspace без ошибок. - bunx vitest run __test__/process/ — 4 из 4. - bun run server:build — успешно, затем server:script, packages/server/package.json без лишних изменений. - bunx biome check по изменённым файлам — чисто; bun audit --audit-level=moderate — уязвимостей нет. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - boxen ^7.1.1 -> ^9.0.0 в apps/dokploy/package.json и packages/server/package.json (одна версия в обоих воркспейсах). - bun.lock: обновлено только дерево boxen (chalk 6, cli-boxes 4, string-width 8, wrap-ansi 10, widest-line 6, slice-ansi 9, type-fest 5), ушли ansi-align и camelcase@7; остальное в lock - перестановка уже имеющихся версий. - Код не менялся: вызов boxen() в packages/server/src/utils/builders/compose.ts использует только padding, width и borderStyle, их API в 8 и 9 не менялся. Зачем: - Выйти с ветки 7.x, которая больше не получает исправлений; 9.x - актуальная мажорная версия с багфиксами переноса строк и ширины. Риски: - boxen 9 требует Node.js >= 22; у нас Node 24, проблем нет. - Баннер в начале лога деплоя Docker Compose мог бы поменять вид; локально вывод v7 и v9 на одинаковом входе совпал побайтово (рамка double, ширина 80, перенос длинной команды, эмодзи). Проверки: - bun run typecheck - все 4 воркспейса без ошибок. - bunx vitest run (compose-exact-deploy, build-compose-command, compose-env-upsert, env-file-preserved) - 4 файла, 50 тестов прошли. - bunx biome check на изменённых package.json - чисто. - bun audit --audit-level=moderate - уязвимостей нет. - next build и полный набор тестов локально не запускались, их прогонит CI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что:
- vitest ^4.1.12 -> ^5.0.5 в apps/dokploy (devDependencies)
- bun.lock: обновлено только дерево vitest (@vitest/mocker, @vitest/spy, tinybench, obug, why-is-node-running, magic-string для vitest); @vitest/expect, runner, snapshot, utils, pretty-format, tinyrainbow, siginfo, stackback больше не нужны
- конфиг и тесты не менялись: в наборе нет удалённых в v5 API (test.sequential, toThrow(""), vi.mock внутри describe, неожидаемые resolves/rejects, expect.poll)
Зачем:
- ветка 4.x больше не получает новых возможностей; v5 работает с закреплённым vite 8.3.4 и Node 24
Риски:
- в v5 clearMocks включён по умолчанию: история вызовов моков сбрасывается перед каждым тестом. Текущие тесты от этого не зависят, но новые тесты должны это учитывать
- только тестовая зависимость, на сборку и работу приложения не влияет
Проверки:
- bun run test (apps/dokploy) до: 2 failed | 4281 passed | 5 skipped (падения из-за Docker: application.real.test.ts и env-file-literals.test.ts не смогли скачать образ)
- bun run test после: 4283 passed | 5 skipped, 0 failed
- bun run typecheck: все 4 workspace без ошибок
- bun audit --audit-level=moderate: уязвимостей нет
- bunx biome check apps/dokploy/package.json: без замечаний
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Что: - vite-tsconfig-paths 4.3.2 -> 6.1.1 (точная версия) в devDependencies apps/dokploy. - bun.lock: изменилась только запись самого пакета, дерево зависимостей прежнее. - Конфиг apps/dokploy/__test__/vitest.config.ts без изменений: опция projects в v6 осталась. Зачем: - Плагин нужен только тестам (Vitest), он резолвит алиасы путей из tsconfig. Версия 4 больше не развивается. Риски: - v5 сделал пакет только ESM; apps/dokploy уже "type": "module", конфиг грузится без ошибок. - v6 — внутренний рефакторинг без заявленных ломающих изменений; на прод и сборку не влияет. Проверки: - bun run test (apps/dokploy): до 374 файлов / 4283 тестов прошли, 5 пропущено; после то же самое. - bun run typecheck: все воркспейсы без ошибок. - bunx biome check на изменённых файлах: чисто. - bun audit --audit-level=moderate: уязвимостей нет. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 27, 2026
Closed
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, чтобы все изменения вошли в одну версию. Minor и patch обновляет ежедневный
deps-auto-update.yml, мажоры делаются вручную. В волну вошли инструменты разработки и серверные зависимости с небольшим охватом кода. Неиспользуемыйredisудалён, а не обновлён.Заменяет PR #92–#99: в них те же изменения, по одному пакету на PR, и у каждого CI был зелёным. Они закрываются без слияния.
Что изменилось
blapps/dokploy,packages/serverspawnAsync, через который идёт вывод почти всех команд деплоя, работает без правокboxenapps/dokploy,packages/serverpublic-ipapps/dokploy,packages/servergotвстроенныйfetch. Таймаут 5 с теперь на весь поиск, поэтому веб-терминал переходит с IPv4 на IPv6 не позже чем через 5 с@hono/node-serverapps/api,apps/schedulesredisapps/apivitestapps/dokploy, только тестыclearMocksвключён по умолчанию: история вызовов моков сбрасывается перед каждым тестомvite-tsconfig-pathsapps/dokploy, только тестыlint-stagedapps/dokployapps/dokploy/__test__/process/spawn-async.test.tsзапускает настоящие процессы и проверяет, какspawnAsyncсобирает stdout, передаётinputв stdin и формирует ошибку из stderr. Раньше тесты мокали его целиком.bun.lock: добавлены 27 версий, все из деревьев этих пакетов; ушли 88, которые больше никому не нужны (readable-stream@4, деревоgot@12,@redis/*,execa@8,listr2и другие). Посторонние пакеты, в том числе@biomejs/biome, не сдвинулись.Проверки
На этой ветке:
bun install --frozen-lockfile: без изменений.bun audit --audit-level=moderate: уязвимостей нет (1480 пакетов).bunx biome checkпо изменённым файлам: замечаний нет.bun run server:build, затемbun run typecheck: все четыре workspace без ошибок; послеbun run server:scriptуpackages/server/package.jsonнет изменений.bun run testвapps/dokploy: 375 файлов и 4286 тестов прошли, 1 файл и 5 тестов пропущены, упавших нет. Здесьvitest5 иvite-tsconfig-paths6 впервые работают вместе.bun.lockсовпадает с объединением наборов из build: upgrade bl to v7 #92–build: upgrade vite-tsconfig-paths to v6 #99.По отдельности в #92–#99 зелёными были все проверки CI: audit, typecheck, build, test и сборки образов.
Что проверить вручную на dev
bl).Error obtaining public IPv4 address(public-ip).boxen).🤖 Generated with Claude Code