platform: drop EOL Node 18 from engines, add Nuxt engines, test 22+24, pin publish (#174)#313
Merged
Merged
Conversation
…, pin publish (#174) The SDK advertised runtimes it never tested (including two EOL lines) and built the published artifact on a floating `lts/*` CI never validated — drift in both directions. Non-breaking hygiene (the Node 20 drop is breaking → deferred to the next major, tracked in #312): - packages/jssdk `engines.node`: `^18.0.0 || ^20.0.0 || >=22.0.0` → `^20.0.0 || >=22.0.0` (drop end-of-life Node 18). - packages/jssdk-nuxt: add `engines.node: "^20.0.0 || >=22.0.0"` (it had none). - ci.yml `test` job: run the unit suite on a Node `22 + 24` matrix (fail-fast:false) so the advertised runtimes are actually exercised; the node-agnostic `pnpm audit` is gated to the 22 leg so it runs once. - Both npm-publish workflows: pin `node-version` from floating `lts/*` to `22` — the lowest supported + CI-validated line, so the published artifact is built on the floor (consumable by every supported consumer) with a deterministic runtime. Docs / consistency synced: the engines string in 4.nodejs.md, the "Node.js 18+" floor in 12 example pages, README-AI.md, the b24jssdk-core skill, and the local docker-compose smoke matrix (test-node18/20 → 22/24) all now reflect the supported set. CHANGELOG `[Unreleased]` records the drop. Node 20 stays in `engines` for now (EOL but removing it is breaking) — its removal, and the fact that CI does not test 20, is tracked in #312. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H6MQtPUx9MZjXY2rbLZhbv
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.
Closes #174.
The SDK advertised runtimes it never tested (including two EOL lines) and built the published artifact on a floating
lts/*that CI never validated — silent compatibility drift in both directions.Changes (non-breaking hygiene)
The genuinely breaking move — dropping Node 20 — is deferred to the next major and tracked in #312.
packages/jssdkengines:^18.0.0 || ^20.0.0 || >=22.0.0→^20.0.0 || >=22.0.0(drop EOL Node 18).packages/jssdk-nuxt: addengines.node: "^20.0.0 || >=22.0.0"(it had none).ci.ymltestjob: run the unit suite on a Node22 + 24matrix (fail-fast: false) so the advertised runtimes are actually exercised. The node-agnosticpnpm auditis gated to the 22 leg so it still runs exactly once.node-versionfrom floatinglts/*→22— the lowest supported + CI-validated line, so the published artifact is built on the floor (consumable by every supported consumer) with a deterministic runtime.Docs / consistency synced
The engines string in
4.nodejs.md, the "Node.js 18+" floor in 12 example pages,README-AI.md, theb24jssdk-coreskill, and the localdocker-compose.ymlsmoke matrix (test-node18/20→22/24) all now reflect the supported set.CHANGELOG.md[Unreleased]› Changed records the drop.Why pin publish to 22 (not 24)
The artifact should build on the lowest runtime we still support and validate, not the newest — so nothing that only breaks on an older-but-supported runtime slips through. Both 22 and 24 are now in CI; 22 is the conservative, fully-validated choice. (
lts/*currently resolves to 24, so this also removes the float.)Known gap (tracked)
enginesstill advertises Node 20 (EOL) but CI tests only22 + 24— adding a soon-to-be-removed line to the matrix wasn't worth the runner minutes. The gap is closed by removing 20 in #312, not by growing the matrix backward.Verification
pnpm --filter @bitrix24/b24jssdk typecheck— clean ·pnpm run lint— 0 errorspnpm run package-jssdk:test:run-unit— 377 passedpnpm run lint:md— 0 errors ·node scripts/docs-lint.mjs --strict— 0/0package.jsonparse cleanReviewed by a 5-perspective pass (CI-correctness, platform/semver, docs/consistency, supply-chain/publish, tech-director). Their findings are folded in: publish pinned to 22 (tech-director), the CHANGELOG entry added (all), and 3 doc stragglers fixed (docs reviewer:
README-AI.md,SKILL.md,docker-compose.yml).🤖 Generated with Claude Code
https://claude.ai/code/session_01H6MQtPUx9MZjXY2rbLZhbv
Generated by Claude Code