Repository navigation
Conversation
- turbo.json: pipeline -> tasks. - Turbo 2 runs tasks in strict env mode, so the release task now passes through the CI/GitHub/npm/Yarn variables semantic-release needs. - Turbo 2 ships a built-in `turbo docs <query>` command, so root scripts now use the explicit `turbo run <task>` form. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
typedoc 0.25.8 -> 0.28.20, typedoc-plugin-markdown 3.17.1 -> 4.14.0, typedoc-plugin-merge-modules 5.1.0 -> 7.0.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
semantic-release 23.1.1 -> 25.0.9 (semantic-release-yarn is already on its latest, 3.0.2). semantic-release 25 needs Node ^22.14 || >=24.10; the release workflow runs on .nvmrc (25.2.1). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lockfile only, no new resolutions: brace-expansion (1.1.21 / 2.1.7 / 5.0.12), braces 3.0.3, compression 1.8.2, flatted 3.4.4, form-data 4.0.6, joi 17.13.8, js-yaml@3 3.15.2, lodash / lodash-es 4.18.1, micromatch 4.0.8, picomatch (2.3.2 / 4.0.7), ws (7.5.13 / 8.22.0). js-yaml 4.x is left to #182. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every mocha 11.x release pins serialize-javascript to ^6, which is vulnerable (GHSA-5c6j-r48x-rmvq, high; GHSA-qj8w-gfj5-8c6v, moderate). mocha 12 depends on ^7.1.1 (resolves 7.1.2), so this clears both without forcing a major on mocha 11 through a resolution. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
yarn dedupe collapsed the stale @types/react@* 18.3.3 lockfile entry into 19.2.18 (the version packages/native already declares). React 19's types no longer declare a global JSX namespace, so the fixture's `JSX.Element` stopped compiling under `yarn compile` and `yarn docs`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3f52540 to
729a4d2
Compare
There was a problem hiding this comment.
Hi @fefi95, thanks for batching these upgrades. Moving to Turbo 2 and clearing the transitive alerts in one go is really helpful.
I'm requesting changes for one item that I think will break the next real release. The rest are smaller and I've left them inline.
Blocking
turbo.json: Turbo 2's strict env mode will likely keep the GitHub OIDC variables away fromsemantic-release. Every package publishes with"provenance": true, and provenance needsACTIONS_ID_TOKEN_REQUEST_URL/_TOKEN. A dry run can't catch this, so it would only show up on the nextworkflow_dispatchrelease.
Non-blocking
mocha12 /semantic-release25 need a newer Node than our rootengines.node: ">=20"allows.@types/mochais still on v10 whilemochais on v12.- semantic-release jumps two majors (23 → 25, which brings commit-analyzer 13) and hasn't been run for real yet, so the scope-negation
releaseRulesare worth a quick check. - The same five devDependency bumps are repeated in 4 packages plus
examples/mocha. They could be hoisted to the root, but that can be a follow-up.
Pre-existing (not caused by this PR, FYI): the docs task's outputs: ["docs/*/build/**"] is resolved per package, but typedoc writes to ../../docs/<pkg>/build. So turbo caches no files, and after yarn clean a cache hit can leave docs/*/build empty. typedoc.json is also missing from inputs. It might be worth a follow-up issue, since this PR changes the typedoc majors.
🤖 Generated with Claude Code
| "cache": false, | ||
| "dependsOn": ["^build"] | ||
| "dependsOn": ["^build"], | ||
| "passThroughEnv": ["CI", "GITHUB_*", "GH_*", "NPM_*", "YARN_*"] |
There was a problem hiding this comment.
Turbo 2 runs tasks in strict env mode, so anything not listed here (or in turbo's small built-in allowlist) is removed from the task's environment. All four packages publish with publishConfig.provenance: true, and release.yml grants id-token: write for that. Provenance needs ACTIONS_ID_TOKEN_REQUEST_URL and ACTIONS_ID_TOKEN_REQUEST_TOKEN, and neither matches these globs. A dry run wouldn't catch this because nothing is published.
| "passThroughEnv": ["CI", "GITHUB_*", "GH_*", "NPM_*", "YARN_*"] | |
| "passThroughEnv": ["CI", "GITHUB_*", "GH_*", "NPM_*", "YARN_*", "ACTIONS_*", "RUNNER_*", "GIT_*", "SEMANTIC_RELEASE_*", "DEBUG"] |
(DEBUG is so DEBUG=semantic-release:* still works for troubleshooting. Alternatively, "envMode": "loose" on just this task would avoid keeping an allowlist up to date.)
| "all-contributors-cli": "^6.26.1", | ||
| "mocha": "^11.8.0", | ||
| "semantic-release": "^23.1.1", | ||
| "mocha": "^12.0.3", |
There was a problem hiding this comment.
mocha@12 requires Node ^20.19.0 || >=22.12.0, and semantic-release@25 requires ^22.14.0 || >=24.10.0. The root engines.node is still >=20, so the engines plugin lets someone on Node 20.11 / 22.0 install and then fail with a confusing error in yarn test / yarn release. CI is fine because it resolves the latest 20/22/24. Should we raise the root engines.node to ^20.19.0 || >=22.12.0?
| @@ -11,7 +11,7 @@ | |||
| "@examples/symbol-plugin": "workspace:^", | |||
| "@types/mocha": "^10.0.6", | |||
There was a problem hiding this comment.
@types/mocha is still ^10.0.6 (10.0.6 in the lockfile) while the runtime is now mocha 12, so the tests type-check against an older API. Could we bump it together with mocha?
| "mocha": "^11.8.0", | ||
| "semantic-release": "^23.1.1", | ||
| "mocha": "^12.0.3", | ||
| "semantic-release": "^25.0.9", |
There was a problem hiding this comment.
This is two majors of semantic-release (and commit-analyzer 12 → 13, @semantic-release/github → 12). Since yarn release wasn't run for real, could you double-check that the releaseRules scope negations in .releaserc.json (!core, !all, …) still match the same way under commit-analyzer 13? If not, the first release after merge could publish every package for a commit scoped to one package, or publish none.
| "jsdom": "^24.0.0", | ||
| "jsdom-global": "^3.0.2", | ||
| "mocha": "^11.8.0", | ||
| "mocha": "^12.0.3", |
There was a problem hiding this comment.
The same mocha / semantic-release / typedoc* bumps are hand-edited in core, dom, native, sinon and examples/mocha. We could hoist them to the root devDependencies so the next upgrade is a single edit and can't drift. That's fine as a follow-up and doesn't need to be in this PR.
Closes #188
Closes #198
Parent tools are bumped first, then the lockfile is refreshed within existing ranges. No
resolutionsadded. One commit per step. No published package's runtimedependencieschanged: onlydevDependencieswere edited.Not covered here, because other PRs own them:
js-yaml4.x (#182),minimatch(#185),ip-address/socks(#186) andshell-quote(#187). Expect ayarn.lockconflict with whichever of these merges first.Changes
turbotypedoc+ pluginssemantic-releasemochaserialize-javascript6.0.2 → 7.1.2; mocha 11 pins^6)pacote,sigstore@isaacs/brace-expansion,browserslist,cross-spawn,glob@10yarn dedupebrace-expansionbraces,compression,flatted,form-data,joijs-yaml@3,lodash,lodash-es,micromatch,picomatch,wshttp-cache-semantics,sprintf-js,elliptic,braces(new advisory),tmpBreaking changes handled
turbo.jsonmoved frompipelinetotasks.turbo docscommand, so the root scripts now useturbo run <task>.releasetask now getspassThroughEnvforCI,GITHUB_*,GH_*,NPM_*andYARN_*; a dry run shows both release tokens reach it..nvmrc(25.2.1), so this is fine. Release rules give the same results as before;yarn releasewas not run.yarn dedupemoved@types/reactto 19, which drops the globalJSXnamespace. One native test fixture now usesReactElementinstead.No upstream fix (for Vanta dismissal)
None of these is in the dependency tree of a published
@assertive-ts/*package. They are all dev-only.http-cache-semantics4.1.1 (high, #180)semantic-release→@semantic-release/npm→npm→make-fetch-happenmax-staleissue, so it wasn't used just to silence the alert.sprintf-js1.0.3 (moderate, #184)jest/react-native→babel-plugin-istanbul→@istanbuljs/load-nyc-config→js-yaml@3→argparse@1sprintf-jsrelease is affected.elliptic6.6.1 (low, #162)@assertive-ts/native(dev) →react-native-testing-mocks→rewiremock→node-libs-browser→crypto-browserifycrypto.braces3.0.3 (high, GHSA-vfj7)micromatch← jest / metro / semantic-releasetmp0.0.33 (high)all-contributors-cli→inquirer@7→external-editorall-contributors-clinever opens the editor prompt that would calltmp. Reviewer call:"external-editor/tmp": "^0.2.6"would close it.Still open: moderate and low (follow-up)
@babel/runtime,@humanfs/node,@sinonjs/text-encoding,@testing-library/react-native,ajv,core-js,eslint,fast-xml-parser,glob@7/inflight,lodash.get,pbkdf2,postcss-selector-parser,qs,rimraf@3,whatwg-encodingdiffAll are dev-only.
Verification
yarn install --immutable, with the turbo cache bypassed.yarn build,yarn docs,yarn compile,yarn lintandyarn testall pass, with the same test counts asmain.yarn npm audit --all --recursive --severity high🤖 Generated with Claude Code