Skip to content

chore(deps): pin every direct dependency to an exact version#651

Merged
FelixTJDietrich merged 3 commits intomainfrom
chore/pin-all-dependencies
Apr 27, 2026
Merged

chore(deps): pin every direct dependency to an exact version#651
FelixTJDietrich merged 3 commits intomainfrom
chore/pin-all-dependencies

Conversation

@FelixTJDietrich
Copy link
Copy Markdown
Contributor

Summary

Strip every ^ / ~ from dependencies, devDependencies, and optionalDependencies across all 7 in-tree package.json files. Each range is replaced with the exact version currently resolved in the matching package-lock.json, so the install graph does not move.

File Pins applied
package.json 13
library/package.json 6 (devDeps only — runtime dependencies shipped to library consumers were already exact)
standalone/webapp/package.json 2
standalone/server/package.json 2
vscode-extension/package.json 14
vscode-extension/menu/package.json 21
vscode-extension/editor/package.json 21
Total 79

peerDependencies are intentionally untouched (none today; the rule documents intent for future deps).

Subtle case worth flagging

vscode-extension/package.json previously declared "@tumaet/apollon": "^4.2.16". It is an npm workspace member; pinning to an exact version would force npm to fetch the published 4.2.16 from the registry instead of using the workspace symlink (which is currently at 4.2.22), breaking local development of the VS Code extension against in-tree library changes. Changed to "*" — the same convention standalone/server and standalone/webapp already use. The non-workspace consumer vscode-extension/editor/package.json keeps a real exact pin (4.2.16) since it depends on the published package.

Verification

  • No install drift. After running npm install in the root, vscode-extension/menu, and vscode-extension/editor, every node_modules/* entry in all three lockfiles has the same version as before. The lockfile diffs are exclusively the packages[""].{dependencies,…} manifest mirrors.
  • npm run format:check
  • npm run lint
  • npm run build ✅ (library + server + webapp + vscode)
  • npm test ✅ 781/781
  • grep -rE '"\\^|"~' across all 7 project package.json files returns nothing.

Renovate interaction

The repo's renovate.json extends config:best-practices, which uses the replace range strategy — Renovate will simply rewrite each pin with the new exact version when an update is approved, so this change is fully compatible with the existing dependency-dashboard workflow.

🤖 Generated with Claude Code

Strip every `^` / `~` from `dependencies`, `devDependencies`, and
`optionalDependencies` across all 7 in-tree package.json files. Each
range is replaced with the exact version currently resolved in the
matching package-lock.json, so the install graph does not move.

Scope:
- root `package.json`
- `library/package.json` (only devDependencies were unpinned —
  `dependencies` shipped to consumers were already exact)
- `standalone/{server,webapp}/package.json`
- `vscode-extension/package.json`, `vscode-extension/{menu,editor}/package.json`

`peerDependencies` are intentionally left as ranges (none currently in
the repo, but the rule documents intent). The `@tumaet/apollon` entry in
`vscode-extension/package.json` is changed from `^4.2.16` to `*` to match
the workspace-link convention used by `standalone/{server,webapp}` —
pinning to an exact version would have forced npm to fetch the published
release instead of using the workspace symlink, breaking local dev.

Verified:
- `npm install` produces zero drift in any `node_modules/*` entry across
  all three lockfiles (root, vscode-extension/menu, vscode-extension/editor).
  The lockfile diffs are exclusively the `packages[""].{dependencies,…}`
  manifest mirrors, which is expected.
- `npm run format:check`, `npm run lint`, `npm run build`, and `npm test`
  (781/781) all pass.
- `grep -rE '"\\^|"~' package.json **/package.json` returns nothing in
  project files.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
@FelixTJDietrich FelixTJDietrich merged commit 9ed33d5 into main Apr 27, 2026
17 checks passed
@FelixTJDietrich FelixTJDietrich deleted the chore/pin-all-dependencies branch April 27, 2026 12:11
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Apollon Development Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants