Skip to content

Use pnpm Catalogs#448

Merged
yamcodes merged 7 commits intomainfrom
pnpm-catalog
Nov 28, 2025
Merged

Use pnpm Catalogs#448
yamcodes merged 7 commits intomainfrom
pnpm-catalog

Conversation

@yamcodes
Copy link
Owner

@yamcodes yamcodes commented Nov 28, 2025

Migrate the project to use pnpm Catalogs to keep a single source of truth for any dependency in this project.

(Except for examples. They are isolated from our pnpm workspace and are designed to be independent.)

(Also, update dependency tsdown to v0.16.7 here, instead of in #442. Didn't want to waste Renovate jobs.)

Summary by CodeRabbit

  • Chores
    • Updated dependency management to use a centralized catalog system for consistent version resolution across all packages and applications.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Nov 28, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
arkenv Ready Ready Preview Comment Nov 28, 2025 11:06am

@changeset-bot
Copy link

changeset-bot bot commented Nov 28, 2025

⚠️ No Changeset found

Latest commit: d3ce98f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions github-actions bot added arkenv Changes to the `arkenv` npm package. @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv www Improvements or additions to arkenv.js.org labels Nov 28, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 28, 2025

Warning

Rate limit exceeded

@yamcodes has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 23 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 81a0a3e and d3ce98f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (4)
  • apps/playgrounds/solid-start/package.json (1 hunks)
  • apps/www/package.json (1 hunks)
  • pnpm-workspace.yaml (1 hunks)
  • tooling/playwright-www/package.json (1 hunks)

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

This PR centralizes dependency version management across the monorepo by replacing exact version pins with catalog-based placeholders in multiple package.json files and introducing a comprehensive version catalog in pnpm-workspace.yaml.

Changes

Cohort / File(s) Summary
Playground apps
apps/playgrounds/bun-react/package.json, apps/playgrounds/bun/package.json, apps/playgrounds/node/package.json, apps/playgrounds/solid-start/package.json, apps/playgrounds/vite/package.json
Replaces concrete version pins for dependencies (react, react-dom, arktype, vite, etc.) and devDependencies (@types/*, typescript, vite plugins) with "catalog:" placeholders
Main application
apps/www/package.json
Updates devDependencies (@types/node, @types/react, @types/react-dom, @vitejs/plugin-react, typescript, vite-tsconfig-paths, vitest, concurrently) to "catalog:" placeholders
Core packages
packages/arkenv/package.json, packages/internal/types/package.json, packages/vite-plugin/package.json
Replaces devDependency version pins (arktype, typescript, vitest, vite-tsconfig-paths, size-limit, tsdown, esbuild-why, etc.) with "catalog:" placeholders; removes @ark/schema from arkenv devDependencies
Tooling
tooling/playwright-www/package.json
Converts devDependency pins (@axe-core/playwright, @playwright/test, @types/node, typescript) to "catalog:" placeholders
Root configuration
package.json
Updates devDependencies (@vitest/ui, rimraf, typescript, vitest) to "catalog:" placeholders
Workspace configuration
pnpm-workspace.yaml
Consolidates package globs into broader patterns (packages/\, packages/internal/\, apps/\, apps/playgrounds/\, tooling/\*); replaces quoted version strings in overrides; introduces a new catalog section with explicit pinned versions for all dependencies across the monorepo

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Areas requiring attention:
    • Verify all versions in the new pnpm-workspace.yaml catalog section match (or intentionally differ from) the previous exact pins across all affected package.json files
    • Confirm that the consolidated workspace glob patterns in pnpm-workspace.yaml correctly capture all intended packages and don't inadvertently exclude any
    • Check for any version inconsistencies between the catalog entries and removed dependency pins, particularly for transitive dependencies
    • Ensure the removal of @ark/schema from packages/arkenv/package.json doesn't break internal development workflows

Possibly related PRs

Suggested labels

example

Poem

🐰 A rabbit hops through versioned lands,
Where catalog holds the master strands,
No more pins scattered far and wide,
One source of truth now our guide,
Monorepo harmony, neat and clean!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Use pnpm Catalogs' accurately and concisely describes the main objective of the changeset—migrating the project to use pnpm Catalogs for centralized dependency version management. It clearly summarizes the primary change across all modified package.json and pnpm-workspace.yaml files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 28, 2025

Open in StackBlitz

npm i https://pkg.pr.new/arkenv@448
npm i https://pkg.pr.new/@arkenv/vite-plugin@448

commit: d3ce98f

@arkenv-bot
Copy link
Contributor

arkenv-bot bot commented Nov 28, 2025

📦 Bundle Size Report

Package Size Limit Diff Status
@arkenv/vite-plugin 891 B 2 kB 0.0%
arkenv 725 B 2 kB 0.0%

All size limits passed!

Copy link

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

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.

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
apps/playgrounds/vite/package.json (1)

22-22: Consider migrating @julr/vite-plugin-validate-env to catalog for consistency.

Line 22 keeps @julr/vite-plugin-validate-env at a fixed version (2.2.0) while surrounding dependencies use catalog:. This creates an inconsistency in the catalog migration strategy. Either this package should be added to the catalog, or there should be documentation explaining why it's excluded.

package.json (1)

30-39: Inconsistent catalog adoption across root devDependencies.

Some devDependencies use catalog: (vitest, typescript, rimraf, @vitest/ui) while others retain fixed versions (@biomejs/biome, @changesets/cli, @manypkg/cli, @playwright/test). This creates two parallel dependency resolution strategies in the same file. Either all should use catalogs or there should be documented rationale for the mixed approach.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 01374da and 81a0a3e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (12)
  • apps/playgrounds/bun-react/package.json (1 hunks)
  • apps/playgrounds/bun/package.json (1 hunks)
  • apps/playgrounds/node/package.json (1 hunks)
  • apps/playgrounds/solid-start/package.json (1 hunks)
  • apps/playgrounds/vite/package.json (1 hunks)
  • apps/www/package.json (1 hunks)
  • package.json (1 hunks)
  • packages/arkenv/package.json (1 hunks)
  • packages/internal/types/package.json (1 hunks)
  • packages/vite-plugin/package.json (1 hunks)
  • pnpm-workspace.yaml (1 hunks)
  • tooling/playwright-www/package.json (1 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
**/package.json

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Use workspace:* protocol for workspace dependencies between packages

When referencing workspace packages, use the workspace:* protocol in dependencies

Files:

  • apps/playgrounds/node/package.json
  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun-react/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}

📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)

{**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml}: Always use pnpm for all package management operations
Never use npm or yarn commands

Files:

  • apps/playgrounds/node/package.json
  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun-react/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
{pnpm-workspace.yaml,**/package.json}

📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)

Certain native dependencies are configured with onlyBuiltDependencies in pnpm configuration: @biomejs/biome, @sentry/cli, @swc/core, @tailwindcss/oxide, @vercel/speed-insights, esbuild, sharp

Files:

  • apps/playgrounds/node/package.json
  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun-react/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
packages/*/package.json

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Packages in packages/ directory must be published to npm and require changesets for versioning, proper exports, and type definitions

Files:

  • packages/vite-plugin/package.json
  • packages/arkenv/package.json
apps/*/package.json

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Applications in apps/ directory are not published to npm and may depend on workspace packages

Files:

  • apps/www/package.json
apps/playgrounds/bun-react/**/package.json

📄 CodeRabbit inference engine (apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc)

apps/playgrounds/bun-react/**/package.json: Use bun install instead of npm install, yarn install, or pnpm install in package.json scripts
Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> in package.json scripts

Files:

  • apps/playgrounds/bun-react/package.json
package.json

📄 CodeRabbit inference engine (.cursor/rules/pnpm.mdc)

The project uses pnpm@10.20.0 (specified in packageManager field)

Files:

  • package.json
tooling/*/package.json

📄 CodeRabbit inference engine (.cursor/rules/monorepo.mdc)

Tooling in tooling/ directory contains development and testing tools that are not published to npm and excluded from changesets

Files:

  • tooling/playwright-www/package.json
apps/playgrounds/bun/**/package.json

📄 CodeRabbit inference engine (apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc)

apps/playgrounds/bun/**/package.json: Use bun install instead of npm install, yarn install, or pnpm install for dependency management
Use bun run <script> instead of npm run <script>, yarn run <script>, or pnpm run <script> for running scripts

Files:

  • apps/playgrounds/bun/package.json
🧠 Learnings (50)
📓 Common learnings
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Use pnpm workspaces for package management across the monorepo instead of npm or yarn
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to {**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml} : Always use `pnpm` for all package management operations
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to package.json : The project uses `pnpm10.20.0` (specified in `packageManager` field)
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 428
File: apps/playgrounds/bun-solid-start/package.json:10-17
Timestamp: 2025-11-24T19:09:40.467Z
Learning: Applies to apps/playgrounds/bun**/package.json : Bun playgrounds use fixed version strings for workspace packages (e.g., arkenv/vite-plugin, arkenv) instead of the workspace:* protocol because they use Bun as the package manager while the monorepo uses pnpm, and workspace:* protocol doesn't work across different package managers.
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to **/package.json : Use workspace:* protocol for workspace dependencies between packages
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to packages/*/package.json : Packages in packages/ directory must be published to npm and require changesets for versioning, proper exports, and type definitions
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Create changesets for version management using `pnpm changeset` with appropriate bump levels: patch for bug fixes, minor for new features, major for breaking changes
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Run `pnpm install` to update the lock file when dependencies change
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Keep environment variable schemas readable and TypeScript-like using ArkType syntax

Applied to files:

  • apps/playgrounds/node/package.json
  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Leverage ArkType's type inference for TypeScript types instead of manual type definitions

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Use union types for enums in ArkType schemas (e.g., `"'dev' | 'prod'"`) instead of separate enum definitions

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Leverage ArkType's built-in types (e.g., `string.host`, `number.port`) where possible in environment schemas

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Use ArkType's `type()` function to define schemas in environment variable definitions

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:03:35.734Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Applies to **/*.{ts,tsx,js,jsx} : Use `createEnv(schema)` function (available as default export, typically imported as `arkenv`) to create validated environment objects with ArkType schema definitions

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: ArkType validates environment variables at runtime and TypeScript types are inferred from the schema definition

Applied to files:

  • apps/playgrounds/node/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/**/*.ts : Use the scoped `$` type system for custom types defined in `scope.ts`

Applied to files:

  • apps/playgrounds/node/package.json
  • apps/playgrounds/solid-start/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:03:45.283Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/arktype.mdc:0-0
Timestamp: 2025-11-24T16:03:45.283Z
Learning: Applies to packages/arkenv/scope.ts : Define custom types in `scope.ts` using ArkType's scoped type system for reusability across schemas

Applied to files:

  • apps/playgrounds/node/package.json
  • packages/internal/types/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:00.943Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Use PascalCase for type names (e.g., `ArkEnvError`)

Applied to files:

  • apps/playgrounds/node/package.json
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: packages/arkenv should not depend on other workspace packages; packages/vite-plugin depends on arkenv; apps/www may depend on workspace packages

Applied to files:

  • apps/playgrounds/node/package.json
  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T19:09:40.467Z
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 428
File: apps/playgrounds/bun-solid-start/package.json:10-17
Timestamp: 2025-11-24T19:09:40.467Z
Learning: Applies to apps/playgrounds/bun**/package.json : Bun playgrounds use fixed version strings for workspace packages (e.g., arkenv/vite-plugin, arkenv) instead of the workspace:* protocol because they use Bun as the package manager while the monorepo uses pnpm, and workspace:* protocol doesn't work across different package managers.

Applied to files:

  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • apps/playgrounds/bun-react/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/bun/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to packages/vite-plugin/src/**/*.test.ts : Test Vite plugin using the `with-vite-react-ts` example as a fixture and validate plugin works with real Vite projects

Applied to files:

  • packages/vite-plugin/package.json
  • apps/www/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to packages/*/package.json : Packages in packages/ directory must be published to npm and require changesets for versioning, proper exports, and type definitions

Applied to files:

  • packages/vite-plugin/package.json
  • packages/internal/types/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to packages/vite-plugin/src/**/*.test.ts : Use fixture-based testing pattern with `__fixtures__` directory for Vite plugin tests

Applied to files:

  • packages/vite-plugin/package.json
  • apps/www/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to tooling/*/package.json : Tooling in tooling/ directory contains development and testing tools that are not published to npm and excluded from changesets

Applied to files:

  • packages/vite-plugin/package.json
  • packages/internal/types/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to {pnpm-workspace.yaml,**/package.json} : Certain native dependencies are configured with `onlyBuiltDependencies` in pnpm configuration: biomejs/biome, sentry/cli, swc/core, tailwindcss/oxide, vercel/speed-insights, esbuild, sharp

Applied to files:

  • packages/vite-plugin/package.json
  • apps/playgrounds/solid-start/package.json
  • apps/www/package.json
  • packages/arkenv/package.json
  • package.json
  • tooling/playwright-www/package.json
  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to package.json : The project uses `pnpm10.20.0` (specified in `packageManager` field)

Applied to files:

  • packages/internal/types/package.json
  • package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:00.943Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/coding-guidelines.mdc:0-0
Timestamp: 2025-11-24T16:04:00.943Z
Learning: Applies to **/*.{ts,tsx} : Use TypeScript 5.1+ features when appropriate

Applied to files:

  • packages/internal/types/package.json
  • apps/www/package.json
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to apps/*/package.json : Applications in apps/ directory are not published to npm and may depend on workspace packages

Applied to files:

  • apps/www/package.json
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to **/*.test.{ts,tsx} : Use Vitest as the test framework for unit and integration tests

Applied to files:

  • apps/www/package.json
  • package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.test.{ts,tsx,js,jsx} : Use `bun test` instead of `jest` or `vitest` for running tests

Applied to files:

  • apps/www/package.json
  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-09-10T19:35:18.179Z
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 136
File: .changeset/vast-bananas-win.md:2-3
Timestamp: 2025-09-10T19:35:18.179Z
Learning: The arkenv package is currently in v0.x.x (pre-1.0) development phase, where breaking changes are acceptable in minor version bumps according to semantic versioning conventions.

Applied to files:

  • packages/arkenv/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use `bun install` instead of `npm install`, `yarn install`, or `pnpm install` in package.json scripts

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/package.json : Use `bun run <script>` instead of `npm run <script>`, `yarn run <script>`, or `pnpm run <script>` in package.json scripts

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use `bun install` instead of `npm install`, `yarn install`, or `pnpm install` for dependency management

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx,html,css} : Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` for bundling

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/package.json : Use `bun run <script>` instead of `npm run <script>`, `yarn run <script>`, or `pnpm run <script>` for running scripts

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Bun automatically loads .env files, so don't use the dotenv package

Applied to files:

  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.{ts,tsx,js,jsx} : Use `bun <file>` instead of `node <file>` or `ts-node <file>` for running TypeScript and JavaScript files

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.html : Use HTML imports with `Bun.serve()` and don't use Vite for frontend bundling and development

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/vite/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.ts : Use `bun --hot` to run TypeScript entry files with hot module reloading enabled

Applied to files:

  • apps/playgrounds/bun-react/package.json
  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:47.550Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun-react/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:47.550Z
Learning: Applies to apps/playgrounds/bun-react/**/*.test.{ts,tsx,js,jsx} : Use `bun:test` for unit and integration testing with `test` and `expect` from the built-in test module

Applied to files:

  • apps/playgrounds/bun-react/package.json
📚 Learning: 2025-11-24T16:03:35.734Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Use Vitest as the testing framework and run tests with `pnpm test -- --run` for all tests or filtered by name/package

Applied to files:

  • package.json
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Only packages in packages/ directory are published to npm; publishing is handled by changesets using pnpm release

Applied to files:

  • package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:03:35.734Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Create changesets for version management using `pnpm changeset` with appropriate bump levels: patch for bug fixes, minor for new features, major for breaking changes

Applied to files:

  • package.json
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Run `pnpm install` to update the lock file when dependencies change

Applied to files:

  • package.json
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to {**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml} : Always use `pnpm` for all package management operations

Applied to files:

  • package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to tooling/playwright-www/**/*.spec.ts : Use Playwright for end-to-end tests

Applied to files:

  • tooling/playwright-www/package.json
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Applies to tooling/playwright-www/**/*.spec.ts : Test complete user workflows and validate real browser behavior across Chromium, Firefox, and WebKit in end-to-end tests

Applied to files:

  • tooling/playwright-www/package.json
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to **/package.json : Use workspace:* protocol for workspace dependencies between packages

Applied to files:

  • tooling/playwright-www/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:11.869Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/monorepo.mdc:0-0
Timestamp: 2025-11-24T16:04:11.869Z
Learning: Applies to examples/*/package.json : Examples in examples/ directory are not published, may have their own lock files, and are used as test fixtures

Applied to files:

  • tooling/playwright-www/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to **/package.json : When referencing workspace packages, use the `workspace:*` protocol in dependencies

Applied to files:

  • tooling/playwright-www/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{ts,js} : Use `bun <file>` instead of `node <file>` or `ts-node <file>` for running scripts

Applied to files:

  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:58.603Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: apps/playgrounds/bun/.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:58.603Z
Learning: Applies to apps/playgrounds/bun/**/*.{html,ts,tsx,css} : Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild` for bundling

Applied to files:

  • apps/playgrounds/bun/package.json
📚 Learning: 2025-11-24T16:04:36.928Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-11-24T16:04:36.928Z
Learning: Achieve coverage goals: environment variable parsing and validation, type checking and error handling, default value handling, custom type validation, plugin integration with Vite, and real project build testing using examples as fixtures

Applied to files:

  • apps/playgrounds/vite/package.json
  • pnpm-workspace.yaml
📚 Learning: 2025-09-09T17:37:19.650Z
Learnt from: yamcodes
Repo: yamcodes/arkenv PR: 132
File: packages/arkenv/README.md:13-14
Timestamp: 2025-09-09T17:37:19.650Z
Learning: For yamcodes/arkenv project: Runtime support documentation should link to specific examples: Node.js (examples/basic), Bun (examples/with-bun), Vite (examples/with-vite-react-ts).

Applied to files:

  • apps/playgrounds/vite/package.json
📚 Learning: 2025-11-24T16:03:35.734Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:03:35.734Z
Learning: Use pnpm workspaces for package management across the monorepo instead of npm or yarn

Applied to files:

  • pnpm-workspace.yaml
📚 Learning: 2025-11-24T16:04:19.392Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/pnpm.mdc:0-0
Timestamp: 2025-11-24T16:04:19.392Z
Learning: Applies to {**/package.json,pnpm-lock.yaml,pnpm-workspace.yaml} : Never use `npm` or `yarn` commands

Applied to files:

  • pnpm-workspace.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: test-e2e (a11y)
  • GitHub Check: test-e2e (e2e)
🔇 Additional comments (12)
apps/playgrounds/node/package.json (1)

13-17: Catalog migration looks good; verify catalog definitions exist in pnpm-workspace.yaml.

The workspace:* protocol is correctly preserved for arkenv, and the catalog: placeholders follow proper syntax. However, the review is incomplete without seeing the corresponding catalog definitions in pnpm-workspace.yaml for arktype, @types/node, and tsx.

apps/playgrounds/solid-start/package.json (1)

11-16: Catalog migration is consistent; workspace: protocol preserved correctly.*

The workspace:* protocol is maintained for @arkenv/vite-plugin and arkenv, with arktype migrated to catalog:. This follows the pattern across other playgrounds.

apps/playgrounds/vite/package.json (1)

15-29: Catalog migration is otherwise consistent; workspace: and external npm alias preserved correctly.*

The workspace:* protocol is maintained for workspace dependencies, and the rolldown-vite npm alias is correctly preserved. All other dependencies follow the catalog: pattern.

packages/internal/types/package.json (1)

19-24: Catalog migration is correct; peerDependencies appropriately preserved.

The devDependencies correctly use catalog:, while peerDependencies retain explicit version constraints (^2.1.22). This is the correct approach for a published package, ensuring consumers can use compatible versions.

package.json (1)

41-50: PackageManager version supports catalogs; onlyBuiltDependencies configuration is complete.

The packageManager version (10.23.0) supports pnpm catalogs, and the onlyBuiltDependencies configuration is comprehensive. This provides the necessary infrastructure for catalog-based version resolution.

apps/playgrounds/bun/package.json (2)

16-20: Catalog migration syntax is correct; dependency version placeholders follow proper format.

The catalog: placeholders for arktype, @types/bun, and typescript follow correct syntax and align with the repo-wide catalog migration strategy.


15-15: Rewrite not needed — the original review concern has been addressed through documented design.

The workspace:* protocol on line 15 for arkenv is intentional and documented. The README explicitly states: "This playground uses workspace:* protocol for the arkenv dependency, which Bun doesn't understand. You must install dependencies using pnpm from the repository root first."

This is a known design pattern with a documented workaround: run pnpm install from the repository root before bun install. The code is functioning as designed, not as a bug. The git log confirms this pattern was introduced during the pnpm catalog migration and represents the monorepo's intentional cross-package-manager setup.

Likely an incorrect or invalid review comment.

packages/arkenv/package.json (1)

43-51: Catalog migration is correct for published package; workspace: and peerDependencies properly handled.*

The devDependencies correctly migrate to catalog:, while @repo/types appropriately uses workspace:* for workspace dependencies, and peerDependencies retain explicit version constraints. This follows best practices for a published npm package.

apps/playgrounds/bun-react/package.json (1)

13-19: Catalog migration is correct; all dependencies properly updated to catalog: placeholders.

The React dependencies and their type definitions follow the catalog: pattern. No workspace:* dependencies are present in this playground, which is correct as this specific example doesn't depend on other workspace packages.

apps/www/package.json (1)

58-70: Catalog references are correctly configured.

All eight devDependencies converted to catalog: placeholders have corresponding entries in the pnpm-workspace.yaml catalog section. The workspace:* protocol is properly preserved for the arkenv dependency (line 27).

packages/vite-plugin/package.json (1)

16-23: Catalog references are correctly configured.

All seven devDependencies converted to catalog: have corresponding entries in pnpm-workspace.yaml. The workspace:* protocol is correctly preserved for arkenv (line 12) and @repo/types (line 15). The deliberate pinning of vite to 7.2.4 (line 21) is reasonable for peer dependency compatibility.

pnpm-workspace.yaml (1)

2-6: Package glob consolidation improves maintainability.

Consolidating package glob patterns (lines 2–6) from individual entries to packages/*, packages/internal/*, apps/*, apps/playgrounds/*, and tooling/* is cleaner and more maintainable than granular paths.

@yamcodes yamcodes merged commit 0032ffe into main Nov 28, 2025
19 checks passed
@yamcodes yamcodes deleted the pnpm-catalog branch November 28, 2025 11:10
@coderabbitai coderabbitai bot mentioned this pull request Dec 8, 2025
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

@arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv arkenv Changes to the `arkenv` npm package. www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant