chore(deps): let dependabot cover the VS Code extension#23
Conversation
|
Warning Review limit reached
Next review available in: 9 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request adds an npm package-ecosystem configuration to Dependabot for the '/extensions/vscode' directory. The review feedback suggests refining the ignore rule for '@types/vscode' to allow patch updates instead of ignoring the dependency entirely, ensuring compatibility with the engine constraints.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| ignore: | ||
| # Bumping @types/vscode forces raising engines.vscode above ^1.74.0. | ||
| - dependency-name: "@types/vscode" |
There was a problem hiding this comment.
Instead of ignoring @types/vscode completely, you can restrict the ignore rule to only semver-major and semver-minor updates. This allows Dependabot to still supply patch updates (e.g., 1.74.x bug fixes) which remain fully compatible with the declared "engines": { "vscode": "^1.74.0" } constraint.
ignore:
# Bumping @types/vscode forces raising engines.vscode above ^1.74.0.
- dependency-name: "@types/vscode"
update-types:
- "version-update:semver-major"
- "version-update:semver-minor"dependabot.yml declares gomod and github-actions only. The repo has 9 npm manifests, and extensions/vscode/package.json:110-116 is currently carrying five hand-written CVE resolutions pins - undici, form-data, js-yaml, minimatch - i.e. someone is patching CVEs by hand in a package dependabot never looks at. Scope is deliberately just /extensions/vscode: its yarn.lock is tracked (Yarn Classic v1, which the npm ecosystem supports). /pages is excluded because its lockfile is gitignored (.gitignore:13) - a maintainer policy call, not mine. / and the six npm/*/ stubs have no real dependencies. @types/vscode is ignored because package.json pins it to ^1.74.0 to match engines.vscode ^1.74.0; bumping the types alone would type-check against APIs absent from the declared minimum VS Code. Grouped to minor/patch so the breaking majors already pending (eslint 8->9, @typescript-eslint 6->8, @types/node 18->24, vsce ->3) arrive individually rather than as one unreviewable PR.
49185fe to
a846f61
Compare
|
Good suggestion in principle, and it made me go check the actual state rather than the declared state — which turned up something worse. But the premise doesn't hold here. The proposal assumes the installed version sits on
So with the ignore narrowed as suggested, the patch updates dependabot would actually offer are Keeping the blanket ignore, but you were right that the comment was misleading — it framed the drift as hypothetical when it has already happened. Amended to say what's actually true: ignore:
# yarn.lock already resolves @types/vscode far above the declared
# engines.vscode floor (^1.74.0). Realign the two deliberately rather
# than let a bot churn a version no CI job builds or type-checks.
- dependency-name: "@types/vscode"That last clause is the deciding factor: nothing in |
|
@coderabbitai review |
✅ Action performedReview finished.
|
Description
.github/dependabot.ymldeclares two ecosystems,gomodandgithub-actions, both at/. Therepo has 9 npm manifests:
/package.json, sixnpm/*/package.json,pages/package.json, andextensions/vscode/package.json.The evidence that the gap matters is already in the tree.
extensions/vscode/package.json:110-116:Someone is patching CVEs by hand, in a package dependabot never looks at. That's ongoing
manual work, not a hypothetical gap.
extensions/vscode/yarn.lockis tracked (226,661 bytes) and is# yarn lockfile v1— YarnClassic, which dependabot's npm ecosystem supports. So there's a lockfile to work from and no
policy question.
Scope is deliberately narrow — one directory, not nine
/extensions/vscodeyarn.lock, hand-pinned CVEs/pages.gitignore:13) — that's your policy call, not mine/and the sixnpm/*/optionalDependencieson their own0.0.0stubs) — pure noiseTwo parts of that are load-bearing rather than decoration:
@types/vscodeis ignored.package.jsondeclares"engines": {"vscode": "^1.74.0"}and"@types/vscode": "^1.74.0"— they're a contract. Dependabot would happily bump the types tocurrent, type-checking the extension against APIs that don't exist in the declared minimum VS
Code.
dart-frog-dev/dart_froghit exactly this at the same path and fixed it with an ignorerule.
update-types: [minor, patch]. The pending majors here are genuinely breaking:eslint ^8 → 9(flat-config migration, and.eslintrc.jsonis present),@typescript-eslint ^6 → 8,@types/node ^18 → 24,@vscode/vsce ^3. A bare"*"group would bundle all of them into oneunreviewable PR; this way majors arrive individually.
versioning-strategyis omitted on purpose — npm's defaultautois right for an app with alockfile, and all three peers at this exact path (
felangel/mason,dart-frog-dev/dart_frog,arc53/DocsGPT) omit it too.Peer shape:
apache/airflow.github/dependabot.yml:48uses adirectories:list of 9 pathsunder one ecosystem entry;
1Panel-dev/1Panel:1pairsgomodwithnpm: /frontend, which isalmost exactly this repo's shape.
🚨 The thing you should weigh before merging
Nothing in CI builds or tests this extension.
No workflow runs
yarn install,jest,webpack,eslint, orvsce packageforextensions/vscode— even thoughpackage.jsondefines all five scripts and there are 7 testfiles under
src/**/__tests__/. So every dependabot PR there would be checked only byci.yml, which is Go-only and entirely unaffected → green with zero validation. Merging ongreen would be merging blind.
I'd rather flag that than have it discovered later. If you'd prefer an extension CI job first,
I'm happy to close this and revisit after.
Also worth naming, since the CVE pins are this PR's whole motivation:
resolutionsis notmaintained by dependabot — it's a yarn field, and the nested-path form
"@typescript-eslint/typescript-estree/minimatch"is a known source of npm-updater errors. ThisPR reduces future manual pinning; it does not retire the existing block.
On the open dependabot queue
I noticed alibaba#340 (gomod) and alibaba#347 (actions) are both still open. Adding a third ecosystem to a
backlog that isn't being serviced is a fair objection, so: this entry is grouped and capped at
open-pull-requests-limit: 5, so it adds at most one PR per week, and the motivation isn'troutine churn — it's replacing the hand-written CVE pins above. If you'd rather not add an
ecosystem while the queue is backed up, I'm happy to close this and revisit.
Verification
Also confirmed first-hand:
yarn.locktracked and Yarn Classic v1;pages/package-lock.jsongitignored at
.gitignore:13;engines.vscodeand@types/vscodeboth^1.74.0.Limitations
dependabot.ymlonpush and surfaces parse errors in Insights → Dependency graph → Dependabot, but a schema-valid
file is not proof that the first run behaves as intended.
open-pull-requests-limit: 5contains it,but the initial batch will be larger than the steady state.
above.
Type of Change
How Has This Been Tested?
yaml.safe_loadparses; asserted 3 entries, the new one's limit/ignore/groups shape, andthat
versioning-strategyis absent/pageslockfilegitignored, the
engines/@types/vscodeversion contract, the fiveresolutionspinsChecklist
AI assistance: Claude Code helped research and verify this change. I reviewed the full diff
and take responsibility for it.