Skip to content

pnpm migration#93

Merged
eviltester merged 19 commits into
masterfrom
89-migrate-to-pnpm-to-allow-workspace-pinning
May 12, 2026
Merged

pnpm migration#93
eviltester merged 19 commits into
masterfrom
89-migrate-to-pnpm-to-allow-workspace-pinning

Conversation

@eviltester

@eviltester eviltester commented May 12, 2026

Copy link
Copy Markdown
Owner

closes #89
closes #92

Summary by CodeRabbit

  • Chores

    • Switched repository to pnpm (packageManager set) and added workspace config; updated CI, builds, Docker images, hooks, and scripts to use pnpm
    • Converted several package dependencies to workspace-linked versions
    • Updated Playwright/webserver startup and verify script flows to pnpm
  • Documentation

    • Updated README, docs, test guides, and package READMEs to use pnpm-based commands and verification steps
  • Policy

    • Added repository-wide package manager policy favoring pnpm

Review Change Stack

Copilot AI review requested due to automatic review settings May 12, 2026 13:55
@eviltester eviltester linked an issue May 12, 2026 that may be closed by this pull request
@qa-tech-integration

Copy link
Copy Markdown

👀 QA.tech will run a exploratory tests to review this PR as soon as a deployment is available for this PR. Alternatively, you can comment @qa.tech to manually trigger a review.

Learn more about configuring preview deployments.

What happens next

  1. ⏳ Waiting for your preview deployment or a comment mentioning @qa.tech
  2. 🔍 Running full end-to-end tests to validate your changes
  3. 📝 Delivering detailed results and actionable feedback

🤖 AI end-to-end testing powered by QA.tech
For organization eviltester project Web app (iK6q). You can customize integration settings for this project.
💡 Comment @qa.tech to re-run testing. Add instructions for a focused review, e.g. @qa.tech test the checkout flow.

@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR migrates repo tooling and docs from npm/yarn to pnpm: adds pnpm workspace and PACKAGE_MANAGER_POLICY, sets root packageManager to pnpm@10.19.0, updates scripts, CI, Docker builder stages, Playwright/test commands, Husky hooks, READMEs/docs, and converts @anywaydata/core deps to workspace:^.

Changes

pnpm Monorepo Migration

Layer / File(s) Summary
Workspace configuration setup
pnpm-workspace.yaml, PACKAGE_MANAGER_POLICY.md
Adds pnpm workspace discovery globs, release-age and allowBuilds settings, and a repo-wide pnpm-first package manager policy.
Root package manager & scripts
package.json
Sets packageManager: pnpm@10.19.0 and migrates top-level scripts (Playwright CLI invocation form, verify chains, workspace orchestration) to pnpm/node CLI forms.
Workspace dependency linking
apps/api/package.json, apps/cli/package.json, apps/mcp/package.json, packages/core-ui/package.json
Change @anywaydata/core deps from 1.2.0 to workspace:^ for local workspace resolution.
CI workflow migration
.github/workflows/node.js.yml
Enable Corepack, prepare pinned pnpm, replace npm installs with pnpm install --frozen-lockfile, update rolldown fallback and CLI/Playwright verify steps to pnpm equivalents.
Docker builder stages
apps/web/Dockerfile, apps/anywaydata/Dockerfile, apps/api/Dockerfile, apps/mcp/Dockerfile
Builder stages enable corepack, activate pnpm@10.19.0, copy pnpm lock/workspace files, and run pnpm install --frozen-lockfile (scoped --filter where appropriate).
Playwright & tests
playwright.config.js, apps/api/src/tests/README.md, package.json scripts
Playwright webServer command and test/report scripts updated to pnpm exec or Playwright node CLI form; API test docs updated to pnpm command examples.
Developer workflow & hooks
.github/copilot-instructions.md, AGENTS.md, .husky/pre-commit, .husky/pre-push, packages/core/js/options/options-catalog-change-checklist.md
Definition-of-Done, AGENTS verification, and Husky hooks switched to pnpm run ... variants.
Docs and command examples
README.md, docs-src/*, apps/cli/README.md
Replace npm/yarn examples with pnpm install, pnpm run, pnpm --filter <pkg> run, and pnpm exec across startup, build, test, deploy, and publishing guides.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

"A rabbit hops and switches the plan,
from npm to pnpm — tidy and spry. 🐇
Workspaces linked and CI set tight,
scripts and docs now run just right.
Tests and builds hum through the night."

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'pnpm migration' accurately summarizes the main change—migrating the project from npm to pnpm throughout the repository.
Linked Issues check ✅ Passed The PR successfully implements pnpm migration (#89) with workspace protocol usage in all specified packages and creates pnpm-workspace.yaml addressing #92 minimum release age configuration.
Out of Scope Changes check ✅ Passed All changes are directly related to the pnpm migration objectives. No unrelated modifications to untracked functionality or scope expansion were introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 89-migrate-to-pnpm-to-allow-workspace-pinning

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/copilot-instructions.md:
- Around line 16-20: Replace the explicit three-command gate with the canonical
local gate by requiring `pnpm run verify:local` before calling `task_complete`;
keep the individual commands (`pnpm run format:check`, `pnpm run format`, `pnpm
test`, `pnpm run test:browser`) as explanatory details if desired, but update
the final line to say “Do not call `task_complete` until `pnpm run verify:local`
exits successfully” and ensure any existing wording referencing the three
separate commands is removed or annotated as informational only.

In `@apps/api/src/tests/README.md`:
- Around line 13-24: Update the README test commands so they either state they
must be run from the repository root or change the paths to be local-relative;
specifically update the four Playwright commands that reference
"apps/api/src/tests/health/", "apps/api/src/tests/generate/",
"apps/api/src/tests/fromschema/", and "apps/api/src/tests/options/" to either
include a prefatory note "Run from repo root" or replace each path with
"./health/", "./generate/", "./fromschema/", "./options/" (and keep the
--config=playwright-api.config.js flag) so running the commands from
apps/api/src/tests/ will not produce path errors.

In `@pnpm-workspace.yaml`:
- Around line 14-17: The pnpm config is unsafe and invalid: replace the global
flag dangerouslyAllowAllBuilds with false and remove the placeholder strings
under allowBuilds; for each package key (e.g. '@scarf/scarf' and
'unrs-resolver') set a valid pnpm value (true, false or the string 'warn')
instead of the human-readable placeholders so the file uses only permitted types
and does not globally allow all install scripts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1e27876a-0cb1-47ba-81c0-25e1d63685c8

📥 Commits

Reviewing files that changed from the base of the PR and between 0ef0fea and a9627b0.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (20)
  • .github/copilot-instructions.md
  • .github/workflows/node.js.yml
  • AGENTS.md
  • README.md
  • apps/anywaydata/Dockerfile
  • apps/api/Dockerfile
  • apps/api/package.json
  • apps/api/src/tests/README.md
  • apps/cli/README.md
  • apps/cli/package.json
  • apps/mcp/package.json
  • apps/web/Dockerfile
  • docs-src/README.md
  • docs-src/docs/070-interfaces-and-deployment/020-web-ui.md
  • docs-src/docs/070-interfaces-and-deployment/030-rest-api.md
  • docs-src/docs/070-interfaces-and-deployment/040-mcp.md
  • docs-src/docs/070-interfaces-and-deployment/050-cli-node-and-bun.md
  • package.json
  • packages/core-ui/package.json
  • pnpm-workspace.yaml

Comment thread .github/copilot-instructions.md
Comment thread apps/api/src/tests/README.md
Comment thread pnpm-workspace.yaml Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a9627b0a34

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

Comment thread .github/workflows/node.js.yml Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the monorepo from npm workspaces to pnpm to enable workspace protocol dependency pinning (workspace:^) and introduces pnpm workspace configuration for minimum release age.

Changes:

  • Switch root scripts, docs, and contributor instructions from npm/yarn to pnpm, including setting packageManager.
  • Update internal monorepo dependencies to use workspace:^ to avoid manual version bump churn.
  • Update CI and Docker build pipelines to install via pnpm and add pnpm-workspace.yaml settings (minimum release age / build controls).

Reviewed changes

Copilot reviewed 20 out of 22 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
README.md Updates repo usage/build/workspace commands to pnpm.
pnpm-workspace.yaml Adds pnpm workspace package globs and minimum release age/build settings.
packages/core-ui/package.json Switches @anywaydata/core dependency to workspace:^.
package.json Sets packageManager, updates scripts to pnpm, adjusts Playwright invocation, updates workspace orchestration.
docs-src/README.md Updates Docusaurus dev/build/deploy commands to pnpm.
docs-src/docs/070-interfaces-and-deployment/050-cli-node-and-bun.md Minor docs formatting tweak (trailing newline).
docs-src/docs/070-interfaces-and-deployment/040-mcp.md Updates MCP start command to pnpm filter usage.
docs-src/docs/070-interfaces-and-deployment/030-rest-api.md Updates API start commands to pnpm filter usage.
docs-src/docs/070-interfaces-and-deployment/020-web-ui.md Updates web UI run/build notes to pnpm.
apps/web/Dockerfile Migrates web Docker build to pnpm install/build with Corepack.
apps/mcp/package.json Switches @anywaydata/core dependency to workspace:^.
apps/cli/README.md Clarifies monorepo install/test vs published package usage.
apps/cli/package.json Switches @anywaydata/core dependency to workspace:^.
apps/api/src/tests/README.md Updates API test commands to pnpm equivalents and corrects paths.
apps/api/package.json Switches @anywaydata/core dependency to workspace:^.
apps/api/Dockerfile Migrates API Docker deps stage to pnpm install with filter.
apps/anywaydata/Dockerfile Migrates site build Dockerfile to pnpm for workspace install/build.
AGENTS.md Updates contributor verification instructions to pnpm.
.github/workflows/node.js.yml Updates CI caching/install/CLI pack smoke test and verification steps for pnpm.
.github/copilot-instructions.md Updates Copilot project instructions to pnpm-based build/test commands.

Comment thread pnpm-workspace.yaml Outdated
Comment thread pnpm-workspace.yaml Outdated
Comment thread README.md Outdated
Comment thread apps/web/Dockerfile Outdated
Comment thread apps/anywaydata/Dockerfile Outdated
Comment thread .github/workflows/node.js.yml Outdated
@coderabbitai

coderabbitai Bot commented May 12, 2026

Copy link
Copy Markdown

Caution

Review failed

An error occurred during the review process. Please try again later.

📝 Walkthrough

Walkthrough

This PR migrates the repository from npm/yarn to pnpm: adds pnpm workspace manifest, declares pnpm@11.1.1 in root package.json, updates scripts to pnpm, converts @anywaydata/core deps to workspace:^, updates CI and Dockerfiles to use corepack+pnpm, and revises documentation and developer guidance to use pnpm commands.

Changes

pnpm Monorepo Migration

Layer / File(s) Summary
Workspace configuration setup
pnpm-workspace.yaml
New pnpm workspace manifest declares packages/* and apps/* globs and adds release-age and build gating settings.
Root package manager declaration and scripts
package.json
Adds packageManager: pnpm@11.1.1 and migrates root/workspace scripts from npm/yarn to pnpm-style commands (verify, test:browser/api, build/test:workspaces, Playwright CLI invocation).
Workspace dependency linking across packages
apps/api/package.json, apps/cli/package.json, apps/mcp/package.json, packages/core-ui/package.json
Change @anywaydata/core dependency specs from 1.2.0 to workspace:^ for local workspace resolution.
CI workflow and container build automation
.github/workflows/node.js.yml, apps/web/Dockerfile, apps/anywaydata/Dockerfile, apps/api/Dockerfile
GitHub Actions and Docker builder stages now enable corepack, prepare/activate pnpm@11.1.1, use pnpm install --frozen-lockfile, run pnpm-based build/verify steps, and update CLI smoke tests to use pnpm workspace filters and pnpm dlx.
Developer workflow instructions and gates
.github/copilot-instructions.md, AGENTS.md, apps/cli/README.md
Update "Definition of Done" and verification commands to pnpm run verify:local, pnpm test, and pnpm run test:browser, and adjust CLI Quick Start to use pnpm workspace flows.
Public documentation and command examples
README.md, docs-src/README.md, docs-src/docs/070-interfaces-and-deployment/*, apps/api/src/tests/README.md
Replace npm/yarn examples with pnpm install, pnpm run, pnpm --filter <pkg> run, and pnpm exec in startup, build, test, deploy, and publishing guides.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

"A rabbit hops with a tidy plan,
switching scripts from npm to pnpm.
Workspaces linked, builds pinned true,
CI and docs all updated too.
Hooray — the monorepo's snug and new!"

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title "pnpm migration" is concise and clearly summarizes the main change: migrating the project from npm to pnpm.
Linked Issues check ✅ Passed All coding requirements from issue #89 are met: pnpm is adopted with workspace protocol applied to @anywaydata/core in packages/core-ui, apps/mcp, apps/cli, and apps/api package.json files. Issue #92 appears to be addressed via pnpm-workspace.yaml configuration.
Out of Scope Changes check ✅ Passed All changes are in scope: documentation updates reflect pnpm usage, Dockerfiles are updated for pnpm compatibility, workflows/scripts are migrated to pnpm, and workspace protocol dependencies are applied as required.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 89-migrate-to-pnpm-to-allow-workspace-pinning

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/node.js.yml:
- Around line 93-95: The workflow currently mutates the lockfile and hardcodes a
binding version using the command "pnpm add -Dw
`@rolldown/binding-linux-x64-gnu`@1.0.0", which makes CI stateful and brittle;
replace that mutation with a non-mutating install (use "pnpm install --no-save"
or equivalent) and resolve the binding version dynamically instead of hardcoding
1.0.0 (e.g., read the binding version from rolldown's package metadata or from
the lockfile/installed rolldown package at runtime) so the fallback installs the
exact optionalDependency without writing to the lockfile.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 76ddeb69-0eae-44cc-ac99-0dee2a960159

📥 Commits

Reviewing files that changed from the base of the PR and between a756c84 and c5b2a09.

📒 Files selected for processing (7)
  • .github/workflows/node.js.yml
  • apps/anywaydata/Dockerfile
  • apps/api/Dockerfile
  • apps/mcp/Dockerfile
  • apps/web/Dockerfile
  • package.json
  • pnpm-workspace.yaml
✅ Files skipped from review due to trivial changes (1)
  • pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/mcp/Dockerfile
  • apps/api/Dockerfile
  • apps/anywaydata/Dockerfile
  • package.json

Comment thread .github/workflows/node.js.yml Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

684-684: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix malformed Docker command in docs.

The backtick splits docker, which breaks copy/paste execution.

Suggested fix
-- Build first: `d`ocker build -f apps/mcp/Dockerfile -t anywaydata-mcp .`
+- Build first: `docker build -f apps/mcp/Dockerfile -t anywaydata-mcp .`
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 684, The README contains a malformed Docker command where
"d`ocker" splits the word; locate the line containing the string "d`ocker build
-f apps/mcp/Dockerfile -t anywaydata-mcp ." and remove the stray backtick so the
command reads "docker build -f apps/mcp/Dockerfile -t anywaydata-mcp .",
ensuring the command can be copy/pasted and executed.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/api/src/tests/README.md`:
- Line 14: Replace the machine-specific absolute path
"D:\github\grid-table-editor" in the README instruction with a generic reference
to the repository root (e.g., "Run these from the repository root") so the docs
are portable across OSes and setups; update the sentence that currently reads
`Run these from the repository root (`D:\github\grid-table-editor`):` to instead
reference "repository root" without any OS-specific path.

---

Outside diff comments:
In `@README.md`:
- Line 684: The README contains a malformed Docker command where "d`ocker"
splits the word; locate the line containing the string "d`ocker build -f
apps/mcp/Dockerfile -t anywaydata-mcp ." and remove the stray backtick so the
command reads "docker build -f apps/mcp/Dockerfile -t anywaydata-mcp .",
ensuring the command can be copy/pasted and executed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9889095d-c43b-46ef-9a22-c30d0673ce40

📥 Commits

Reviewing files that changed from the base of the PR and between c5b2a09 and 789dc22.

📒 Files selected for processing (7)
  • .github/copilot-instructions.md
  • .github/workflows/node.js.yml
  • PACKAGE_MANAGER_POLICY.md
  • README.md
  • apps/anywaydata/Dockerfile
  • apps/api/src/tests/README.md
  • pnpm-workspace.yaml
✅ Files skipped from review due to trivial changes (2)
  • PACKAGE_MANAGER_POLICY.md
  • .github/copilot-instructions.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • pnpm-workspace.yaml
  • .github/workflows/node.js.yml
  • apps/anywaydata/Dockerfile

Comment thread apps/api/src/tests/README.md Outdated
Comment thread .github/workflows/node.js.yml Fixed
Comment thread .github/workflows/node.js.yml Fixed
@eviltester eviltester merged commit c3261f5 into master May 12, 2026
7 checks passed
@eviltester eviltester deleted the 89-migrate-to-pnpm-to-allow-workspace-pinning branch May 12, 2026 22:15
@coderabbitai coderabbitai Bot mentioned this pull request May 13, 2026
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.

implement minimum release age migrate to pnpm to allow workspace pinning

3 participants