npm Trusted Publishing requires the package to already exist on npm
before it can be published in a “trusted” workflow.
The current workflow looks like this, for example, if we have 10 NAPI
packages:
* I added a new NAPI package and forgot about it.
* During release, CI tries to release 5 packages.
* CI encounters the missing package, errors out with “package not
found,” and exits.
* I then publish the missing package locally.
* I can’t retry the CI publish process, because the retry immediately
fails with “package already published.”
So we need to check that *all* packages exist on npm **before**
publishing anything. This allows us to publish any missed packages
without breaking the entire release process.
Co-authored-by: Claude <noreply@anthropic.com>
Bump `acorn-test262` submodule to latest. It aligns its version of `test262` and `TypeScript` submodules to same versions as used in this repo, which fixes a bunch of erroneous ESTree conformance test failures.
It also updates to latest version of TS-ESLint parser, which altered the shape of `TSImportType` (https://github.com/typescript-eslint/typescript-eslint/pull/11591). The test cases broken by this are fixed in next PR (#16109).
- Rename workflow: update_compat_table.yml → update_submodules.yml
- Extract hardcoded SHAs in clone-parallel.sh into variables at the top
- Expand workflow to automatically update all 6 submodules:
- test262 (tc39/test262)
- babel (babel/babel)
- TypeScript (microsoft/TypeScript)
- prettier (prettier/prettier)
- acorn-test262 (oxc-project/acorn-test262)
- node-compat-table (williamkapke/node-compat-table)
- Workflow now fetches latest SHAs from all repos, compares with current, and updates clone-parallel.sh
- Creates single PR with summary of all updated submodules
🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary
- Moved `clone-parallel.sh` from `.github/actions/clone-submodules/` to `.github/scripts/` for better organization and reusability
- Updated justfile `submodules` recipe to use the centralized script, eliminating duplication
- Fixed issue where script would fail with "destination path already exists" error when directories already exist
- Script now properly handles existing directories by initializing or updating git repos instead of failing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary
- Replace `dorny/paths-filter` with `cargo tree`-based detection for more accurate dependency tracking in the conformance CI job
- Extract common file detection and utility functions into reusable modules
- Eliminate code duplication across CI scripts
## Changes
### New Files
- **`.github/scripts/get-changed-files.js`** - Reusable module for detecting changed files from GitHub events (PR/push)
- **`.github/scripts/check-conformance-changes.js`** - Conformance detection using `cargo tree -p oxc_coverage -p oxc_transform_conformance -p oxc_prettier_conformance`
- **`.github/scripts/utils.js`** - Shared utilities:
- `exec()` - Shell command execution with error handling
- `getCrateDependencies()` - Generic cargo tree wrapper
- `checkFilesAffectCrates()` - File-to-crate impact checking
### Modified Files
- **`.github/scripts/generate-benchmark-matrix.js`** - Refactored to use shared modules
- **`.github/workflows/ci.yml`** - Conformance job now uses `check-conformance-changes.js` instead of `dorny/paths-filter`
## Benefits
- **More accurate**: Uses actual crate dependencies from `cargo tree` instead of static path patterns
- **Maintainable**: Shared utilities eliminate code duplication
- **Extensible**: Easy to add new scripts that need similar functionality
- **Consistent**: Same file detection logic across all CI scripts
## Test Plan
- [x] Verify CI workflow syntax is valid
- [ ] Monitor first PR run to ensure conformance detection works correctly
- [ ] Check that conformance is skipped when appropriate (e.g., linter-only changes)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
closes https://github.com/oxc-project/oxc/issues/14007
- Replace 8 individual benchmark features with 2: compiler and linter
- Update matrix script to return objects with component and feature
fields
- Simplify workflow to use cargo codspeed build/run with feature mapping
🤖 Generated with [Claude Code](https://claude.ai/code)
This balances build speed and cache size, it was saving 7 separate
caches of 280MB each component + 400MB for the linter, it's now
200-300MB for the "compiler".
Co-authored-by: Claude <noreply@anthropic.com>