Skip to content

fix: let aube's preinstall run under mise's new npm backend - #22

Open
natevick wants to merge 1 commit into
mainfrom
fix/aube-npm-lifecycle-scripts
Open

fix: let aube's preinstall run under mise's new npm backend#22
natevick wants to merge 1 commit into
mainfrom
fix/aube-npm-lifecycle-scripts

Conversation

@natevick

Copy link
Copy Markdown
Owner

aube was silently broken by upgrading mise 2026.2.17 → 2026.8.5. New mise resolves/links npm packages itself rather than shelling out, and passes --ignore-scripts. @endevco/aube ships no bin/ — its preinstall runs installArchSpecificPackage.js to download the ~48M arch-specific binary. Scripts skipped ⇒ package with no executable, backend metadata recorded as such, and the aube/aubr/aubx shims dropped. aube became command-not-found.

Both settings are required — verified by removing each in turn

config result
shell_out = true only npm runs, but still --ignore-scripts; mise warns it skipped preinstall
npm_args only (shell_out = false) mise's internal installer ignores it; binary never fetched
both clean install; aube --version and aubx --version report 1.38.1 via shims

Trade-off, stated plainly

shell_out = true reintroduces npm subprocesses — the surface the 2026-08-12 fork bomb recursed through. That is acceptable only because this box now runs mise 2026.8.5, which contains jdx/mise#8475 (shims stripped from dependency_env PATH). Do not set this on mise older than 2026.8.2, which install-mise.sh already enforces as the floor.

Placed in the managed config rather than machine-local ~/.config/mise/config.toml so a fresh machine reproduces a working aube.

What this does not establish

Only tested on Linux/x86_64 with npm 10.9.8. allow_builds (npm ≥ 11.16.0) would be the narrower opt-in — it scopes script execution to named packages instead of enabling it for every npm-backend tool — and is worth revisiting when npm crosses that version.

mise 2026.8.5 changed the npm backend: it now resolves and links packages
itself instead of shelling out to npm, and it passes --ignore-scripts.
@endevco/aube ships no bin/ -- its "preinstall" runs
installArchSpecificPackage.js, which downloads the ~48M arch-specific
binary. With scripts skipped, mise installed a package with no
executable, recorded backend metadata saying so, and dropped the aube /
aubr / aubx shims entirely. `aube` became command-not-found.

Both settings are required; verified by removing each in turn:
- shell_out = true alone: npm runs but still with --ignore-scripts, and
  mise warns it skipped the preinstall.
- npm_args alone (shell_out = false): mise's internal installer ignores
  it and the binary is never fetched.
Together: install is clean, `aube --version` and `aubx --version` both
report 1.38.1 through the shims.

shell_out = true does reintroduce npm subprocesses, which is the surface
the 2026-08-12 fork bomb recursed through. That is acceptable only
because the box now runs mise 2026.8.5, which includes jdx/mise#8475
(shims stripped from dependency_env PATH). Do not set this on a mise
older than 2026.8.2.

Lives here rather than machine-local ~/.config/mise/config.toml so a
fresh machine reproduces a working aube.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ARNZyPcAj3K2LhupCDn5gQ
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