build: една версия на Node навсякъде (24) и Dependabot за npm - #340
Merged
Conversation
Test coverage
✅ No workspace dropped below its baseline (tolerance 0.5pp). 📈 Coverage rose by more than 1pp — run |
todorkolev
force-pushed
the
build/node-24
branch
4 times, most recently
from
September 2, 2026 13:34
8ff3c63 to
4f22062
Compare
Node беше три различни неща наведнъж: engines казваше >=22, workflow-ите ползваха 22 (ci, deploy, scripts-test) и 24 (related-persons-data и вторият job на scripts-test), devcontainer-ът беше 22, а нямаше нито .node-version, нито .nvmrc. Резултатът е, че локално и в CI кодът върви върху различни runtime-и - точно така локалният пайплайн се разминава със сървърния, без някой да е избирал това. Изборът е 24, защото related-persons-data вече го изисква (node:sqlite DatabaseSync и native TS type-stripping без експериментален флаг) и това е единственият workflow, който наистина зависи от версията. Останалите просто не бяха обновени. - .node-version и .nvmrc = 24; engines.node >=24 - всички workflow-и на 24 (ci, deploy, двата job-а на scripts-test) - devcontainer образът на typescript-node:24-bookworm, пиннат по digest както досега (digest-ът е от манифест-индекса на MCR) - коментарът в scripts-test, който обосноваваше 24 "спрямо 22 по-горе", вече казва истината: разликата между двата job-а е node_modules, не runtime-ът Dependabot: досегашният файл покриваше само GitHub Actions и твърдеше, че npm "се обработва отделно" - не се обработваше от нищо, затова за уязвимости научавахме чак когато Dependency audit стане червен на main (browserslist, 2026-09-02). Блокът за actions е запазен дословно; добавен е npm: седмично, minor+patch в един групиран PR, мажорите по един PR за видимост, а шест от тях (react-router 8, TypeScript 7, @ai-sdk 4, ai 7, workers-types 5) изрично отложени за след релийза - миграции със собствен риск. Подовете в overrides остават единственият източник на security пинове; Dependabot мести lockfile-а, те са границата. Проверено локално с Node v24.20.0: lint, typecheck, целият turbo пакет, node --test scripts/*.test.mjs и cacbg/tr пакетът. По ревюто: мажорите остават НЕгрупирани. Отворен minor/patch PR маркира членовете си за "обработени" преди Dependabot да погледне негрупираните обновления (dependabot-core#14202), тъй че мажор за същия пакет се появява едва след като седмичният PR се мърджне или затвори; втора група не поправя това - тя само събира мажорите и добавя обратното потискане. Коментарите вече казват точно това, както и че override в pnpm-workspace.yaml е замяна, не под, а игнорираните мажори са потиснати, не "видими". jsdom 30 влиза в отложените: иска undici ^8.9, а override-ът в pnpm-workspace.yaml е замяна, не под, и би дал неподдържан граф. Коментарът и командата за преразрешаване в Dockerfile, както и CONTRIBUTING, вече не сочат Node 22.
todorkolev
force-pushed
the
build/node-24
branch
from
September 2, 2026 14:43
4f22062 to
e664ba6
Compare
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.
Трети и последен от серията за зависимостите (след #339 и catalog-а).
Проблемът
Node беше три различни неща наведнъж:
enginesказваше>=22, workflow-ите ползваха 22 (ci, deploy, scripts-test) и 24 (related-persons-data, вторият job на scripts-test), devcontainer-ът беше 22, а нямаше нито.node-version, нито.nvmrc. Локално и в CI кодът вървеше върху различни runtime-и — точно така локалният пайплайн се разминаваше със сървърния, без някой да е избирал това.Изборът: 24
related-persons-dataвече го изисква (node:sqliteDatabaseSync + native TS type-stripping без експериментален флаг) — единственият workflow, който наистина зависи от версията. Останалите просто не бяха обновени.wranglerняма таван (engines: >=22и в 4.93.1, и в 4.128.0), тъй че deploy на 24 е безопасен..node-version+.nvmrc= 24;engines.node >=24typescript-node:24-bookworm, пиннат по digest от манифест-индекса на MCR (същият вид пин като досега — проверено, и двата саimage.index)Dependabot за npm
Досегашният файл покриваше само GitHub Actions и твърдеше, че npm „се обработва отделно" — не се обработваше от нищо, затова за уязвимости научавахме чак когато Dependency audit стане червен на
main(browserslist, 02.09). Блокът за actions е запазен дословно. Добавен е npm: седмично, minor+patch в един групиран PR, мажорите по един PR за видимост, а шест от тях (react-router 8, TypeScript 7,@ai-sdk4,ai7, workers-types 5) изрично отложени за след релийза. Подовете вoverridesостават единственият източник на security пинове.Проверка под Node v24.20.0 (локално)
lint, typecheck, целият turbo пакет (web 521, db 490 …),
node --test scripts/*.test.mjs, cacbg/tr пакетът — всичко зелено.За теб след мърджа: devcontainer-ът трябва да се пресъздаде (Rebuild Container), за да вземе образа с Node 24.
🤖 Generated with Claude Code
https://claude.ai/code/session_013pBk7JaPgpsgELYGZgnkwt