chore(server, noora, handbook): replace pnpm with aube#10584
Merged
Conversation
Switches the JavaScript package manager from pnpm to aube across workflows, mise configs, Dockerfiles, mix aliases, and docs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
aube refuses to resolve workspace members that lack a `version` field, so handbook builds and server esbuild jobs were failing on install. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
jdx
added a commit
to endevco/aube
that referenced
this pull request
May 2, 2026
`CI` is not propagated into `docker build` RUN steps, so a Dockerfile running `aube install` falls into the gvs branch and materializes `node_modules/.aube/<dep>` as symlinks pointing at `~/.cache/aube/virtual-store/<dep>`. A downstream `COPY --from=npm-deps /app/node_modules /app/node_modules` then ships dangling symlinks; tools like esbuild fail with `Could not resolve "<dep>"`. Add `is_container()` (checks `/.dockerenv` and `/run/.containerenv`) and gate the gvs default on both `!is_ci()` and `!is_container()`, so per-project materialization wins inside Docker / Podman builds without requiring users to set `CI=1` or `--disable-global-virtual-store`. Surfaced by tuist/tuist#10584's Docker build: `mix esbuild docs --minify` could not resolve "typesense" after `COPY --from=npm-deps`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
add ENV CI=1 to the npm-deps stage of server/Dockerfile and noora/storybook/Dockerfile, or pass --disable-global-virtual-store to the aube install invocations there you don't want to use the gvs in CI but aube isn't detecting that across the docker boundary since CI isn't set |
jdx
added a commit
to endevco/aube
that referenced
this pull request
May 2, 2026
## Summary Real-world failure: [tuist/tuist#10584](tuist/tuist#10584) tried to swap pnpm for aube and CI hit `workspace package noora at noora has no \`version\` field` from [crates/aube/src/commands/install/mod.rs:1869](crates/aube/src/commands/install/mod.rs:1869). pnpm accepts the same repo without complaint. The unconditional check predates the resolver's current `workspace:*` / `workspace:^` / `workspace:~` / bare-`*` fallback. The comment's collision rationale ("two unversioned members under one dep_path") doesn't hold either: `dep_path` keys on `(name, version)` and two members have distinct names by construction. Fix: fall back to `"0.0.0"` when `version` is absent. `workspace:*` / `workspace:^` / `workspace:~` / bare-`*` siblings still link locally (those branches in `resolve_workspace` accept any ws version regardless). A specific range like `workspace:^2.0.0` against an unversioned member correctly fails to satisfy, matching pnpm. ## Test plan - [x] `cargo test` (full suite green) - [x] `cargo clippy --all-targets -- -D warnings` - [x] `cargo fmt --check` - [x] `mise run test:bats test/workspace.bats` — 19 pass, including the new regression #4 - [ ] CI green on push 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the aube lockfile entries that mise generated on install and refreshes the generator URL comment in the root lockfile. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🛠️ Tuist Run Report 🛠️Builds 🔨
|
aube ignores `--ignore-workspace`, so the root pnpm-workspace.yaml made `aube install` in /server install workspace-only packages and skip server's own deps (breaking format and esbuild jobs). Drop the workspace yaml entirely (handbook, noora, server are independent projects), give each its own aube-lock.yaml, and update install scripts that used `--filter noora` to cd-into-noora-then-install instead. Other fixes bundled here: - pass `--disable-global-virtual-store` to aube install in Dockerfiles so node_modules symlinks survive cross-stage COPY. - add `mise use -g aube` and root mise.toml entry so the aube shim has a version when mise's npm: backend (used by Review) calls aube. - add `aube.allowBuilds` to subproject package.json files (ports the workspace's onlyBuiltDependencies). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Match the version used elsewhere in the repo so the global install is deterministic. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
aube is already declared in the root mise.toml, so jdx/mise-action installs it during setup and the explicit `mise use -g aube@1.6.2` adds nothing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per @jdx, aube auto-disables the global virtual store when CI is set, so we don't need the explicit `--disable-global-virtual-store` flag in the Dockerfiles. Setting CI=1 in the npm-deps stages restores the same behavior across the docker boundary that was missing. Also adds the platform-specific aube checksums to noora/mise.lock and the root mise.lock that were missing after `mise install` ran without fanning out across all platforms. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fortmarek
approved these changes
May 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces pnpm with aube as the JavaScript package manager across the repository.
Changes
server/,noora/,handbook/): swappnpmforaubeinmise.toml/.mise.tomland drop pnpm entries frommise.lock.handbook/mise/tasks/*,server/mise/tasks/*, andmise/tasks/noora/*to invokeaubeinstead ofpnpm.handbook.yml,noora.yml,release.yml, andserver.ymlto install/useaube, swap cache paths to~/.local/share/aubeand~/.cache/aube, and drop thePNPM_HOMEenv var.server/Dockerfileandnoora/storybook/Dockerfilenow install@endevco/aubevia npm and useaube install/aube run buildwith anaubecache mount.server/mix.exsassets.setup/assets.builduseaube install --filter nooraandaube run build.packageManager: pnpm@10.32.0; rewritebuildto callaube run build:js && aube run build:css.AGENTS.mdandserver/AGENTS.mdreflect the new package manager.How to test locally
server/:mise install && mise run install && mise run dev.noora/:mise install && aube install && aube run build && aube run test.handbook/:mise install && mise run install && mise run dev.