Skip to content

chore(deps): bump aube to 1.10.4, sandcastle to 0.5.10; revert node to 25#91

Merged
ThomasK33 merged 1 commit into
mainfrom
update-deps
May 11, 2026
Merged

chore(deps): bump aube to 1.10.4, sandcastle to 0.5.10; revert node to 25#91
ThomasK33 merged 1 commit into
mainfrom
update-deps

Conversation

@ThomasK33
Copy link
Copy Markdown
Member

@ThomasK33 ThomasK33 commented May 8, 2026

Summary

  • Bump aube 1.4.0 → 1.10.4 and migrate from pnpm/npm lockfiles to aube-lock.yaml
  • Bump @ai-hero/sandcastle to 0.5.10
  • Add @parcel/watcher and msgpackr-extract to onlyBuiltDependencies
  • Revert Node.js 26 → 25 (25.9.0) due to a known Playwright bug
  • Remove redundant playwright install chromium step from test-unit CI job (unit tests don't launch a browser)

Why not Node 26?

playwright install chromium hangs silently on Node 26 after the download completes — the zip extraction never finishes. This is a confirmed upstream bug: microsoft/playwright#40724. Root cause is a Node 26 stream lifecycle change that breaks yauzl's fd-slicer destroy path, causing async iteration to wait forever for a close event. The fix is merged to Playwright main (PR #40747) but not yet released. Upgrade back to Node 26 once Playwright ships the fix (expected v1.60.0+), and update package.json engines from <26 to <27 at the same time.

@ThomasK33 ThomasK33 force-pushed the update-deps branch 2 times, most recently from 746115e to c18b746 Compare May 11, 2026 08:23
@ThomasK33 ThomasK33 changed the title chore(deps): bump node to 26, aube to 1.9.1, sandcastle to 0.5.10 chore(deps): bump node to 26, aube to 1.10.4, sandcastle to 0.5.10 May 11, 2026
@ThomasK33 ThomasK33 changed the title chore(deps): bump node to 26, aube to 1.10.4, sandcastle to 0.5.10 chore(deps): bump aube to 1.10.4, sandcastle to 0.5.10; revert node to 25 May 11, 2026
Move from pnpm/npm lockfiles to aube-lock.yaml and add
@parcel/watcher + msgpackr-extract to onlyBuiltDependencies.

Change-Id: I0f9cf162ea1b2ca93b004d089b357d91d9de2df2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Thomas Kosiewski <tk@coder.com>
@ThomasK33 ThomasK33 merged commit d3ff298 into main May 11, 2026
13 checks passed
@ThomasK33 ThomasK33 deleted the update-deps branch May 11, 2026 09:16
ThomasK33 added a commit that referenced this pull request May 13, 2026
…101)

After the aube migration in #91 the repo no longer ships a
`package-lock.json`, but `scripts/release-helpers.mjs` and
`scripts/release-prep.mjs` still hardcoded it as a required file:

- `readPackageVersions` did `readJsonFile('package-lock.json')`
  unconditionally and failed with ENOENT on the current main.
- `assertPackageVersionsMatch` then asserted the lockfile's `version`
  and `packages[""].version` matched `package.json.version`.
- `release-prep.mjs` froze `VERSION_FILE_PATHS` as
  `['package.json', 'package-lock.json']` at module scope and staged
  both, so even if the version-match assertion were relaxed, the
  staging step would still fail because `package-lock.json` does not
  exist.

The net effect was that `npm run release:prep` (and, by inheritance,
`npm run release:finalize`) failed end-to-end on `main`, blocking the
documented release flow. This change makes the lockfile path optional:

- `readPackageVersions` checks `existsSync('package-lock.json')`. When
  present it still parses + returns the lockfile version fields;
  otherwise it returns `hasPackageLock: false` with null lockfile
  versions and only validates `package.json`.
- `assertPackageVersionsMatch` only runs the lockfile-coherence
  assertions when `hasPackageLock` is true.
- `release-prep.mjs` computes the version-file allowlist at runtime
  via `resolveVersionFilePaths(root)`. On an aube-only checkout this
  resolves to `['package.json']`; on a checkout that still carries
  `package-lock.json` it stays at `['package.json', 'package-lock.json']`,
  preserving the prior behavior for downstream consumers that
  re-introduce an npm lockfile.

`release-finalize.mjs` consumes `assertPackageVersionsMatch` and
inherits the fix without changes.

Tests
-----

`createTempRepo` / `writePackageFiles` gain an `includePackageLock`
option (default `true`), and two new integration test cases cover the
aube-only path:

- `prepares a release on an aube-only checkout (no package-lock.json)`
  asserts the prep commit's diff is exactly `['package.json']` and
  that `package.json.version` matches the requested release version.
- `finalizes on an aube-only checkout (no package-lock.json)` asserts
  the annotated tag is created and pushed.

The pre-existing npm-lockfile test cases are unchanged and continue
to assert the two-file diff + readVersions triple.

All 27 release-scripts tests pass. Format, lint, and typecheck are
clean.

Docs
----

`docs/RELEASE-PROCESS.md` is updated so the changelog-mode prose and
the manual-prep fallback no longer claim that `package-lock.json` is
always part of the prep commit; the fallback snippets now stage
`package-lock.json` only when it actually exists.

Change-Id: Idfb4bbdde5d222c4f0f9096d650bbbc2f6d5f9c9

Signed-off-by: Thomas Kosiewski <tk@coder.com>
@ThomasK33 ThomasK33 mentioned this pull request May 13, 2026
6 tasks
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