Skip to content

fix: prevent root publish, sync subpackage version, regenerate lockfile#68

Merged
lacymorrow merged 2 commits into
mainfrom
fix/release-config-sync
May 25, 2026
Merged

fix: prevent root publish, sync subpackage version, regenerate lockfile#68
lacymorrow merged 2 commits into
mainfrom
fix/release-config-sync

Conversation

@lacymorrow

@lacymorrow lacymorrow commented May 24, 2026

Copy link
Copy Markdown
Owner

Summary

Releases v1.8.12 through v1.8.17 published the root `package.json` to npm — the root has no `bin` field, so `npx lacy` errors with "could not determine executable to run". The real npm package lives in `packages/lacy/` and had drifted to 1.8.11 because the new release tool (shipx) only bumped root.

  • Sync `packages/lacy/package.json` to 1.8.17
  • Sync `bin/lacy` VERSION_FALLBACK to 1.8.17
  • Regenerate `packages/lacy/package-lock.json` (was stuck at 1.7.2)
  • Add `"private": true` to root `package.json` so any future publish from root fails loudly instead of shipping a broken npm package

This is a stop-gap — a proper fix in shipx (auto-detect the publishable subpackage) is in lacymorrow/shipx#49. Once that's released, lacy releases will work zero-config.

Test plan

  • Verify `packages/lacy/package.json` version matches root (1.8.17)
  • Verify `bin/lacy` VERSION_FALLBACK is 1.8.17
  • Verify root `package.json` has `"private": true`
  • `cd packages/lacy && npm pack --dry-run` — confirm it produces a small tarball with index.mjs only
  • After merging, run the shipx-fixed release path to publish v1.8.18 with a working `bin` field; `npx lacy@1.8.18` should run the installer

Releases v1.8.12-v1.8.17 were published from the root package.json,
which has no bin field, breaking npx lacy. The real npm package lives
in packages/lacy/ but had drifted to 1.8.11 because shipx only bumped
the root.

- Sync packages/lacy/package.json to 1.8.17
- Regenerate packages/lacy/package-lock.json (was stuck at 1.7.2)
- Sync bin/lacy VERSION_FALLBACK to 1.8.17
- Add "private": true to root package.json so any future publish from
  root fails loudly instead of shipping a broken npm package

A shipx config (or upstream shipx fix to auto-detect unpublishable
roots) is still needed before the next release will publish correctly.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the project version to 1.8.17 across several files, including the installation script and package manifests, and marks the root package.json as private. Feedback indicates that the package-lock.json file appears to have been manually edited rather than regenerated using the npm CLI, which has introduced metadata inconsistencies. It is recommended to perform a clean regeneration of the lockfile to ensure environment stability.

{
"name": "lacy",
"version": "1.7.2",
"version": "1.8.17",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The PR description mentions regenerating the lockfile, but the diff only shows manual version bumps. The full file content reveals inconsistencies in dependency metadata (e.g., picocolors version 1.2.0 resolved to 1.1.1.tgz on lines 59-60) and the presence of the legacy requires: true field (line 5). These are strong indicators that the lockfile was manually edited rather than properly regenerated using the npm CLI. Manual edits to package-lock.json are error-prone and can lead to installation failures or inconsistent environments. Please perform a clean regeneration by running npm install within the packages/lacy/ directory.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 6c6292brm -rf packages/lacy/{node_modules,package-lock.json} then a full npm install so npm writes a coherent lockfile from scratch. The picocolors mismatch (version: 1.2.0 / resolved: 1.1.1.tgz) is gone — both fields are now 1.1.1.

Gemini noticed the lockfile had inconsistent metadata after the previous
--package-lock-only regen: node_modules/picocolors had version "1.2.0"
but resolved/integrity pointed at the 1.1.1 tarball.

This commit removes the lockfile and node_modules, then re-runs a full
`npm install` so npm writes a coherent lockfile from scratch.
@lacymorrow lacymorrow merged commit 9b19164 into main May 25, 2026
4 checks passed
@lacymorrow lacymorrow deleted the fix/release-config-sync branch May 25, 2026 19:24
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