A Windows fix for nub run, native TypeScript transform configuration, and import-text on the Node 24 LTS backport.
Important
Windows npm installs could not run scripts. On 0.7.0–0.7.2, nub run failed on Windows with "bundled POSIX shell (busybox.exe) was not found" from the second invocation onward. Upgrading fixes it; there is nothing to clean up by hand.
Windows
nub run executes script bodies through a bundled busybox sh, which the binary resolves relative to itself. 0.7.0 began hardlinking nub.exe into npm's global bin directory for a faster dispatch path, which moved the binary away from that shell — so the first call after an install worked and every later one failed. The launcher now carries the shell into a nub-sh/ subdirectory beside the relocated binary, and the resolution accepts that layout. It goes in a subdirectory rather than beside the executable because that directory is on PATH, where a bare busybox.exe would shadow a busybox the user installed themselves. (#699, #687)
Configuration
Project nub.jsonc gains six native TypeScript transform fields — jsx, jsxFactory, jsxFragmentFactory, jsxImportSource, decorators, and emitDecoratorMetadata. (#697)
Runtime
| Area | What changed | Commit |
|---|---|---|
| import-text | --experimental-import-text is injected on the 24.19.0 LTS backport band as well as 26.5+, so a Node that knows the flag no longer falls through to the default loader and fails with ERR_UNKNOWN_FILE_EXTENSION
| 439853b
|
| TypeScript | customConditions from tsconfig.json are applied as Node export conditions
| 005e8e4
|
| Environment | An explicit env file is refused when Varlock owns the environment, rather than being silently layered | dfe9b73
|
| Environment | .env.schema ownership is decided by loader resolution, and a missing schema is a refusal rather than a degrade
| 7dfeb95
|
Types
@nubjs/types splits its shared declarations into common.d.ts and routes pre-6.0 compilers through a dedicated entry, so proposal declarations coexist with the official ones as they land. The fixture matrix runs under TypeScript 5.9, 6.0 and 7.0. (e29dc5c)
Testing & internals
- The Windows busybox probe runs its whole case matrix against both shell layouts, plus a negative control that fails when no shell is present (#699).
- A stray root
nub.jsoncsettingnodeCompat: truewas removed; it disabled augmentation for every in-tree test and took the whole test matrix red (#696, #695). - The
v0.7config-schema snapshot was refreshed againstlatest.jsonafter the transform fields landed, restoring the release verification gate (f58f09f). - Documentation for the runtime API augmentations, Varlock, and the configuration reference (
ddcf309,f1b2542,1eb177c).
What's Changed
- node: inject
--experimental-import-texton the 24.19.0 backport band by @pullfrog[bot] in #689 - runtime: refuse an explicit env file when Varlock owns the environment by @colinhacks in #690
- env: decide .env.schema ownership by loader resolution, and refuse when it is missing by @colinhacks in #691
- runtime: apply tsconfig customConditions as Node export conditions by @colinhacks in #692
- ci: remove the stray root nub.jsonc that disabled augmentation by @pullfrog[bot] in #696
- config: add native TypeScript transform fields by @colinhacks in #697
- run(windows): carry the bundled POSIX shell with the relocated nub.exe by @colinhacks in #699
Full Changelog: v0.7.2...v0.7.3