Skip to content

fix(deps): single-source the @orpc family version via pnpm catalog - #375

Merged
omridevk merged 1 commit into
mainfrom
fix/pin-orpc-family-exact
Aug 9, 2026
Merged

fix(deps): single-source the @orpc family version via pnpm catalog#375
omridevk merged 1 commit into
mainfrom
fix/pin-orpc-family-exact

Conversation

@omridevk

@omridevk omridevk commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Mechanism

The e2e consumer apps job broke on every fresh run since ~15:00 UTC today, on main and every PR, in conciv-e2e-nextjs packed-install tests: the packed tmp app's next dev served GET / 500 and the harness timed out.

Root cause: @orpc/tanstack-query@1.15.0 (published 2026-08-08 13:52 UTC) peer-requires @orpc/client@1.15.0 exactly — the orpc family peer-pins same-version across all its packages. Our manifests declared ^1.14.7 ranges, so any fresh install (the packed-e2e tmp app, and equally any external consumer of the published @conciv/* packages) resolved a split 1.15.0/1.14.7 pair and the Next client-component compile failed. The repo lockfile shields only workspace installs.

Attribution was verified by controlled experiment: with locally verified-clean dists (d.ts present in every closure package pre-pack), a fresh resolve of 1.15.0 reproduces the CI failure byte-for-byte; pinning makes the identical harness pass. Unrelated to the tsbuildinfo issue fixed by #374, which is local-only (fresh CI checkouts cannot hold stale buildinfo).

Fix

A pnpm catalog: block in pnpm-workspace.yaml single-sources the family version (exact 1.14.7); all 13 consuming manifests reference "catalog:". pnpm pack/publish replaces the reference with the concrete version — verified by packing @conciv/client and inspecting the tgz manifest ("@orpc/client": "1.14.7"). A future orpc upgrade is one line; half-bumping the family is now impossible.

Verification

  • pnpm typecheck:affected 92/92, pnpm build:affected 59/59, fallow audit pass.
  • Packed-manifest proof: catalog references replaced with exact versions in the published tarball.
  • This PR's own e2e consumer apps job fresh-installs the packed set — green = fix proven (the prior exact-pin revision of this branch already ran it green).

Unblocks #374 (its e2e failure is this drift, not the turbo.json change).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Standardized package version management around the exact 1.14.7 release.
    • Improved consistency and predictability across application components.
    • Reduced the risk of unintended version changes during installation and updates.
    • No user-facing feature changes are included in this release.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4fd52270-c9fb-423a-ac62-9a925ecaf367

📥 Commits

Reviewing files that changed from the base of the PR and between bd9ba9b and 2cb1dcf.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (14)
  • apps/conciv/package.json
  • packages/cli/package.json
  • packages/client/package.json
  • packages/contract/package.json
  • packages/core/package.json
  • packages/embed/package.json
  • packages/extension-testkit/package.json
  • packages/extension/package.json
  • packages/extensions/recorder/package.json
  • packages/extensions/terminal/package.json
  • packages/extensions/test-runner/package.json
  • packages/extensions/whiteboard/package.json
  • packages/harness-testkit/package.json
  • pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (6)
  • packages/extensions/recorder/package.json
  • packages/cli/package.json
  • packages/extensions/test-runner/package.json
  • apps/conciv/package.json
  • packages/contract/package.json
  • packages/extension/package.json

📝 Walkthrough

Walkthrough

The pull request adds a workspace catalog with exact @orpc version 1.14.7 pins. Application and package manifests now use catalog: references for these dependencies.

Changes

@orpc dependency catalog

Layer / File(s) Summary
Catalog version definition
pnpm-workspace.yaml
The workspace catalog pins six @orpc packages to version 1.14.7.
Manifest catalog migration
apps/conciv/package.json, packages/*/package.json, packages/extensions/*/package.json
Changed @orpc dependencies from explicit version specifications to catalog: references.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 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 clearly and concisely describes centralizing all @orpc package versions through a pnpm catalog.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/pin-orpc-family-exact

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed. For unrecoverable errors, disable the tool in CodeRabbit configuration.


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

@orpc/tanstack-query@1.15.0 peer-requires @orpc/client@1.15.0 exactly:
the whole @orpc family peer-pins every sibling to the identical version.
Our manifests carried caret ranges (^1.14.7), which is unsafe on any
fresh install — a fresh resolve can pick tanstack-query@1.15.0 while the
rest of the family resolves to 1.14.7, splitting the peer pair. That is
exactly what broke the packed nextjs e2e: a tmp-app install pulled
@orpc/tanstack-query@1.15.0 against @orpc/client@1.14.7.

Single-source the version with a pnpm catalog (pnpm-workspace.yaml)
instead of duplicating the exact string across 13 manifests: every
"@orpc/*" dependency now reads "catalog:", resolving through the one
`catalog.default` entry pinned to 1.14.7. Publish/pack replaces
"catalog:" with the concrete version before the tarball is built, so
published packages still ship a plain "1.14.7" — verified by packing
@conciv/client and inspecting the extracted package.json.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@omridevk
omridevk force-pushed the fix/pin-orpc-family-exact branch from bd9ba9b to 2cb1dcf Compare August 9, 2026 17:11
@omridevk omridevk changed the title fix(deps): exact-pin the @orpc family — upstream peer-pins same-version fix(deps): single-source the @orpc family version via pnpm catalog Aug 9, 2026
@omridevk
omridevk requested a balanced review from Copilot August 9, 2026 17:17

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

Centralizes all @orpc dependencies on exact version 1.14.7 to prevent incompatible peer-version resolution during fresh installs.

Changes:

  • Adds a pnpm catalog for the @orpc family.
  • Migrates 13 consumers to catalog:.
  • Updates the lockfile, including unrelated TanStack dependency drift.

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
pnpm-workspace.yaml Defines exact @orpc catalog versions.
pnpm-lock.yaml Records catalog resolutions and unrelated upgrades.
apps/conciv/package.json Catalogs @orpc/server.
packages/cli/package.json Catalogs @orpc/client.
packages/client/package.json Catalogs client/query packages.
packages/contract/package.json Catalogs client/contract packages.
packages/core/package.json Catalogs server/client packages.
packages/embed/package.json Catalogs embed’s @orpc dependencies.
packages/extension-testkit/package.json Catalogs testkit’s @orpc family.
packages/extension/package.json Catalogs client/server packages.
packages/extensions/recorder/package.json Catalogs server/query packages.
packages/extensions/terminal/package.json Catalogs client/server packages.
packages/extensions/test-runner/package.json Catalogs @orpc/server.
packages/extensions/whiteboard/package.json Catalogs client/server packages.
packages/harness-testkit/package.json Catalogs client/server packages.
Files not reviewed (1)
  • pnpm-lock.yaml: Generated file

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread pnpm-lock.yaml
'@tanstack/react-router':
specifier: latest
version: 1.170.21(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
version: 1.170.22(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
@omridevk
omridevk merged commit fb03295 into main Aug 9, 2026
41 of 43 checks passed
@omridevk
omridevk deleted the fix/pin-orpc-family-exact branch August 9, 2026 17:26
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.

2 participants