Repository navigation
build: migrate from aube to pnpm - #176
Conversation
Dependabot cannot update aube-lock.yaml, so its PRs change only package.json and fail every CI job at `aube ci`. Switch to pnpm 10 (the newest line Dependabot documents as supported). - pnpm-lock.yaml: converted from aube-lock.yaml (same lockfile v9 format) with zero resolved-version drift; pnpm additionally records every platform variant of optional native bindings. - package.json: packageManager pnpm@10.34.5; overrides move to pnpm.overrides; allowBuilds becomes pnpm.onlyBuiltDependencies. - pnpm-workspace.yaml: keep aube's default supply-chain guards (minimumReleaseAge 1440, trustPolicy no-downgrade). - mise: install pnpm from npm (bundles node-gyp, which node-pty needs on Linux); tasks use pnpm install --frozen-lockfile and pnpm audit. - Add .github/dependabot.yml for npm and github-actions. - Update CI macOS tool list, docs, AGENTS.md, and .mux/init. --- _Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `high`_
# Conflicts: # .github/workflows/ci.yml # package.json # pnpm-lock.yaml
|
@codex review |
|
@codex security review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
|
@codex security review |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
|
@codex security review |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
|
@codex security review |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security ReviewSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Review record for the merge decision.
Generated with |
Why
Dependabot cannot update
aube-lock.yaml. Its PRs (for example #173) change onlypackage.json, and then every CI job fails ataube cibecause the lockfile is out of date. This PR moves the repo from aube to pnpm, so dependency bots work again and contributors use one standard package manager.What changed
aube-lock.yaml→pnpm-lock.yaml. aube already writes pnpm's lockfile v9 format, so I copied main's file and ranpnpm install. No resolved version changed: each of the 314 packages in main's aube lock is in the pnpm lock at the same version. The 62 new entries are platform variants of optional native bindings (esbuild, oxlint, oxfmt, rolldown, lightningcss) and the wasm fallback's deps (@emnapi/*,@napi-rs/wasm-runtime,@tybys/wasm-util).supportedArchitecturesstill limits which ones get installed.packageManager: pnpm@10.34.5. The top-leveloverridesmoved topnpm.overrides(the same 11 pins as main).pnpm.allowBuildsbecamepnpm.onlyBuiltDependencies(the same 6 packages).supportedArchitecturesandtrustPolicyExclude. AddsminimumReleaseAge: 1440andtrustPolicy: no-downgrade, so we keep the supply-chain checks that aube ran by default."npm:pnpm" = "10.34.5"replacesaube.npm.package_manager = "npm"makes mise install it with npm. Tasks:bootstrap=pnpm install && pnpm exec playwright install chromium,bootstrap-ci=pnpm install --frozen-lockfile,audit=pnpm audit --audit-level high. Inmise.lock, the aube block became annpm:pnpmentry. I edited it by hand, becausemise lockdeletes the task-level ffmpeg conda entries.ci.yml(edited by hand): the jobs that list their mise tools (lifecycle-model,checks-macos,test-integration-macos) installnpm:pnpmin place ofaube. The other jobs install every tool with--locked.release.ymlhas a comment fix only..github/dependabot.ymlfornpm(pnpm) andgithub-actions, weekly, with a 7-day cooldown. 7 days is zizmor's minimum, and it is longer thanminimumReleaseAge.start-run.shrunspnpm install --frozen-lockfile. The old script ranaube ciwhennode_modules/.bin/tscwas missing. pnpm's frozen install repairs a missingnode_modules/.binby itself (I deleted.binand the install restored it), so one command covers both cases.AGENTS.md,docs/CONTRIBUTING.md,docs/INSTALL.md, ADR 0009,.mux/initand the verify-agent-ttySKILL.md. I leftCHANGELOG.mdand the archivedplans/as they are, because they record history.Design choices
node-gyp rebuild. The npm build of pnpm bundles node-gyp. mise's standaloneaqua:pnpm/pnpmbinary does not, so the install fails withnode-gyp: not found.Validation
Local runs on a shared host with load average 40 to 90:
rm -rf node_modules && mise run bootstrap-cipassed, and node-pty compiled.mise run --forceofformat-check,workflow-lint,lint,audit(0 high or critical, 6 moderate),typecheck,build,test-unit,install-smokeandvalidate-bundles: all exit 0.test-integration: 406 passed, 2 failed.test-e2e: 33 passed, 2 failed. All four are timing limits:listunder 2000 ms innon-reaping-init.test.ts, a 5 s Chromium boot inbackend-selection.test.ts, thecolor-grididle wait inexport-fixtures.test.ts, and the 30 shello-promptflow. A side-by-side run of those four files with--retry=0on a main worktree installed withaube cifailed the same tests on this host (main: 8 of 19 failed, this branch: 9 of 19). This PR changes no file undersrc/. CI on GitHub runners is the gate for these.start-run.shdependency step: withnode_modules/.bindeleted,pnpm install --frozen-lockfilerestorednode_modules/.bin/tsc(exit 0).Risks
release.yml,release-please.ymland npm publish run only on tags or dispatch. They use the samemise run bootstrap-ciandmise run cipaths tested here, and publishing still usesnpm publish <tarball>.mise.lockentry fornpm:pnpmpins the version with no checksum. The mise npm backend records no checksum. The aqua backend does, but it cannot build node-pty.main. Security updates skip the cooldown, so a fix published less than a day earlier can hitminimumReleaseAge.minimumReleaseAgeExcludeis the escape hatch.pnpm.*settings in package.json work in pnpm 10. pnpm 11+ ignores them, so they must move topnpm-workspace.yamlwhen we upgrade.npm warn Unknown env configlines during install. pnpm exportsnpm_config_*variables, andpreparecallsnpm run build, which warns about them.Generated with
xum• Model:anthropic:claude-opus-5-5• Thinking:high