Skip to content

chore: reconcile package-lock.json with workspace package.jsons (unblocks npm 11)#19

Merged
Roy-Kid merged 1 commit into
MolCrafts:masterfrom
Roy-Kid:fix/lockfile-drift
Apr 20, 2026
Merged

chore: reconcile package-lock.json with workspace package.jsons (unblocks npm 11)#19
Roy-Kid merged 1 commit into
MolCrafts:masterfrom
Roy-Kid:fix/lockfile-drift

Conversation

@Roy-Kid
Copy link
Copy Markdown
Contributor

@Roy-Kid Roy-Kid commented Apr 20, 2026

Why

After #18 switched the release-core workflow to Node 24 (which ships npm 11), `npm ci` in run 24664999167 died with:

```
npm error code EUSAGE
npm error `npm ci` can only install packages when your package.json
npm error and package-lock.json or npm-shrinkwrap.json are in sync.
npm error Missing: @types/node@25.6.0 from lock file
npm error Missing: undici-types@7.19.2 from lock file
```

Root cause: pre-existing lockfile drift. `vsc-ext/package.json` declares `@types/node: ^25.3.2`, but the lockfile pinned `vsc-ext/node_modules/@types/node` at `22.19.7` — doesn't satisfy the range. npm 10 (Node 22) silently let it slide; npm 11 (Node 24) abort-on-lockfile-mismatch by design.

This has nothing to do with the Node 24 upgrade itself — the drift was already in the tree. Node 24 just surfaces it.

The fix

Regenerate `package-lock.json` with npm 11:

```
corepack prepare npm@11.11.0 --activate
npm install
```

Result:

  • `@types/node@25.6.0` hoisted to root (both page and vsc-ext request `^25.3.2` → dedupe)
  • `undici-types@7.19.2` hoisted accordingly
  • Three stale per-workspace `@types/node` + `undici-types` entries dropped

Net change: -9 lines in `package-lock.json`. No `package.json` touched.

Test plan

  • `npm ci` succeeds locally with npm 11
  • After merge: `gh workflow run release-core.yml --repo MolCrafts/molvis --ref master`
  • Verify `@molcrafts/molvis-core@0.0.4` on npm

`vsc-ext/package.json` declares `@types/node: ^25.3.2`, but the lockfile
had `vsc-ext/node_modules/@types/node` pinned at `22.19.7` — which does
not satisfy `^25.3.2`. npm 10 silently tolerated the drift, but npm 11
(used on Node 24) fails `npm ci` with:

    npm error `npm ci` can only install packages when your package.json
    and package-lock.json or npm-shrinkwrap.json are in sync.
    npm error Missing: @types/node@25.6.0 from lock file

This blocked the final npm publish step in the 0.0.4 release. After
regenerating the lockfile with npm 11:

- @types/node resolves to 25.6.0 (latest `^25.3.2`) hoisted at root
- undici-types@7.19.2 hoisted accordingly
- vsc-ext/node_modules/{@types/node, undici-types} dropped (dedupe)
- page/node_modules/{@types/node, undici-types} dropped (dedupe)

Net change: -9 lines in package-lock.json.
@Roy-Kid Roy-Kid merged commit 80348d0 into MolCrafts:master Apr 20, 2026
5 checks passed
Roy-Kid added a commit to Roy-Kid/molvis that referenced this pull request Apr 26, 2026
Bumps all workspaces (core, page, vsc-ext, root, python) from 0.0.4 to 0.0.5
and reconciles package-lock.json. Also narrows the page right sidebar's
default width from 21% to 13% (with minSize 14% → 10% so the new default
isn't clamped).

v0.0.4 only partially shipped: PyPI and the VS Marketplace published, but
the npm core release failed three times due to a package-lock.json drift
that was fixed afterwards by MolCrafts#19. Re-tagging v0.0.4 cannot recover that
because PyPI/Marketplace reject same-version republishes — 0.0.5 is the
first version number where all three platforms can land aligned.
Roy-Kid added a commit that referenced this pull request Apr 26, 2026
…anup (#20)

* chore(deps): bump @molcrafts/molrs to 0.0.14 + io/overlay/runtime cleanup

Bump @molcrafts/molrs ^0.0.12 → ^0.0.14 across the workspace and rebuild
package-lock.json. The only breaking change in molrs 0.0.13 is the
LAMMPSDumpReader rename to LAMMPSTrajReader; reader.ts and test_wasm.ts
adopt the new name. Beyond the bump, this batches in-flight refactors
that landed alongside the upgrade so master has a single coherent
state.

core
  - io: replace normalize_coords with a column-based atom_coords helper
    and a lazy frame reader, with new tests
  - overlays: revamp mark_atom overlay flow + types/composite mark
  - commands: refactor commands/index, frame, mark_atom, place_molecule
    around the new entity_source / scene_index plumbing
  - rpc: move buildFrame/buildBox tests from page/ to core/tests, where
    the helpers actually live since b5dca14
  - misc: trajectory, scene_index, modifiers (slice/wrap PBC),
    pipeline/data_source_modifier touch-ups

vsc-ext
  - split pathUtils into pure helpers (type-only vscode import) and a
    new activeUri.ts that owns the runtime vscode.window dependency,
    so unit tests can load pathUtils outside the extension host
  - tighten tsconfig.test.json include glob to only the files unit
    tests need (fixes rootDir / @molvis/core resolution)
  - rename rslib config files .ts → .mts for proper ESM resolution

page
  - drop the orphaned test_wasm_serialization (helpers moved to core);
    pass --passWithNoTests so the empty test suite exits clean

python
  - new molvis.runtime module + tests
  - overlay/scene/catalog updates wired through to the new runtime
  - drop the install_widget_stubs leftover from test_control/test_video

tooling
  - biome: ignore .venv, .rslib, out, out-test (CI-clean checkout
    matches local DX); fix package.json formatting

Verification
  - npx biome check: 0 errors, 14 warnings (all configured warn)
  - npm run typecheck: core + page + vsc-ext all green
  - npm run test:core: 382/382
  - npm run test:vsc-ext: 6/6
  - npm run test:python: 98 passed, 2 skipped (PIL/ffmpeg optional)
  - npm run build:all: core dist + page bundle + vsc-ext extension &
    webview all green

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: release 0.0.5

Bumps all workspaces (core, page, vsc-ext, root, python) from 0.0.4 to 0.0.5
and reconciles package-lock.json. Also narrows the page right sidebar's
default width from 21% to 13% (with minSize 14% → 10% so the new default
isn't clamped).

v0.0.4 only partially shipped: PyPI and the VS Marketplace published, but
the npm core release failed three times due to a package-lock.json drift
that was fixed afterwards by #19. Re-tagging v0.0.4 cannot recover that
because PyPI/Marketplace reject same-version republishes — 0.0.5 is the
first version number where all three platforms can land aligned.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant