Skip to content

Release 0.4.2 - #58

Merged
Giorgio Ughini (GiorgioUghini) merged 2 commits into
mainfrom
release/0.4.2
Aug 7, 2026
Merged

Release 0.4.2#58
Giorgio Ughini (GiorgioUghini) merged 2 commits into
mainfrom
release/0.4.2

Conversation

@GiorgioUghini

Copy link
Copy Markdown
Contributor

Summary

Cuts v0.4.2, a patch release that makes the source installers work on machines
whose npm registry is configured globally (corporate proxies, including
Microsoft-managed devices), and repairs main, which is currently red.

This PR contains two commits:

1. fix(install): drop the registry escape hatch from the installers

main@1a1f5e9 is failing both the Windows and Non-Windows workflows.
PR #57 introduced a SKILL_RECORDER_NPM_REGISTRY escape hatch, which made both
installers reference the npm registry environment variable by name. That trips the
deliberate compliance guard in scripts/compliance.test.mjs (source and release instructions remain compliance-preserving), which asserts the installers never pin
an npm registry — the exact regression that broke installs in the first place.

The escape hatch was redundant: npm already honours a caller-set registry
environment variable, so users keep the same capability without the installer
sources dictating a registry.

The actual fix from #57 is untouched. The installers still point the portable
Node runtime at the machine's existing npm configuration via
NPM_CONFIG_GLOBALCONFIG, which discovers the configured registry rather than
overriding it. Users with no npm configuration are unaffected — the variable is
only set when a config file actually exists on disk.

INSTALL.md now documents npm config set registry <url> --location=global as the
supported way to point at a mirror.

2. chore(release): prepare 0.4.2

Version bump only, in package.json and package-lock.json.

User-visible changes since v0.4.1

  • Source installs now succeed on networks that block registry.npmjs.org but
    provide a mirror through the machine's global npm configuration. Previously the
    portable runtime never read that configuration and fell back to the public
    registry, failing with ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE.
  • npm ci failures now report which registry was actually used and how to
    configure a mirror.
  • INSTALL.md gains a "Networks that block registry.npmjs.org" section.

Validation

Run with the portable runtime's npm 11.17.0 (package.json requires >=11.17.0):

  • npm run fix:lockfile-registry — normalized 0 URLs, no internal feed URLs leaked
  • npm run check:lockfile
  • npm ci --no-audit --no-fund --ignore-scripts=false --dangerously-allow-all-scripts=false --strict-allow-scripts — 459 packages
  • npm run compliance:licenses — 227 package licenses, 0 source materials
  • npm run build
  • npm run typecheck:evals
  • npm test — 147/148 pass; the compliance guard passes again. The one failure
    is environmental only: electron/debug-bundle.test.ts shells out to unzip,
    which is not present on this Windows machine.
  • bash -n install.sh
  • scripts/install-windows.test.ps1
  • install.ps1 parses under both PowerShell 5.1 and 7

End-to-end proof of the underlying fix is in #57: with the fix applied, npm fetched
zod-4.4.3.tgz from the corporate proxy instead of the blocked public registry.

Release model

Source-only, per RELEASING.md. No binaries, dist/, dist-electron/, or
node_modules/ will be attached to the GitHub Release — this is what keeps us
compliant with third-party licensing.

Follow-up (not in this PR)

623 of 625 lockfile entries carry SHA-1 integrity (sha1-…) rather than
sha512-…, because the feed that generated the lockfile only returns the legacy
dist.shasum. Worth regenerating from a registry that serves SHA-512.

PR #57 added a SKILL_RECORDER_NPM_REGISTRY escape hatch that made both
installers reference the npm registry environment variable directly. That
trips the deliberate compliance guard in scripts/compliance.test.mjs, which
asserts the installers never pin an npm registry -- the exact regression
that broke installs for users behind a corporate proxy in the first place.

The escape hatch was redundant anyway: npm already honours a caller-set
registry environment variable, so users keep the same capability without
the installer sources dictating a registry.

The actual fix stays: the installers still point the portable runtime at
the machine's existing npm configuration via NPM_CONFIG_GLOBALCONFIG,
which discovers rather than overrides the configured registry.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 02a84c32-5401-470c-a8f1-b5f7a3f1b05b
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 02a84c32-5401-470c-a8f1-b5f7a3f1b05b
@GiorgioUghini
Giorgio Ughini (GiorgioUghini) merged commit 93b3ccf into main Aug 7, 2026
4 checks passed
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