From 8921e341cc637586d34575d88bcbd13b2b583beb Mon Sep 17 00:00:00 2001 From: Wawa Date: Sun, 10 May 2026 13:12:08 +0000 Subject: [PATCH 1/2] Bump inter-package peerDeps to ^0.8.0 + fix release.yml sync bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two bugs in one fix: 1. The 0.8.0 release commit only bumped .version, not the inter-package peerDependencies / devDependencies. So the published packages still declared peer constraints like "@pascal-app/viewer": "^0.7.0". Caret in semver 0.x doesn't allow 0.8.0 to satisfy ^0.7.0, so bun resolves workspace consumers (and apps/editor's deep import paths) to the stale npm-published 0.7.0 instead of the workspace 0.8.0 — meaning local edits never show up in apps/editor or any linked consumer. 2. The release.yml sync step was using $GITHUB_ENV to read back the new versions in the same step, which doesn't work — env-file writes only surface in subsequent steps. Switched to a bash associative array (NEW_VERSIONS) for in-step lookup, kept the $GITHUB_ENV write for the downstream publish/commit/tag steps. Also added a final "refs after sync" debug print so this is visible in the workflow log. After this lands and you bun install, packages/editor/node_modules/@pascal-app/viewer should symlink to the workspace packages/viewer/, not to .bun/@pascal-app+viewer@0.7.0. Future releases will sync peerDeps correctly on their own. --- .github/workflows/release.yml | 17 ++++++++++++++--- packages/editor/package.json | 8 ++++---- packages/mcp/package.json | 4 ++-- packages/viewer/package.json | 2 +- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e60744f2..e539ef5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -67,12 +67,19 @@ jobs: echo "$MAJ.$MIN.$PAT" } + # Track new versions in shell-local vars. + # NOTE: $GITHUB_ENV writes don't surface within the same step, so the + # peerDeps sync below must use shell vars, not env indirection. + declare -A NEW_VERSIONS + for pkg in core viewer editor mcp; do if [ "$TARGET" = "$pkg" ] || [ "$TARGET" = "all" ]; then CUR=$(jq -r '.version' packages/$pkg/package.json) NEW=$(bump_version "$CUR") jq --arg v "$NEW" '.version = $v' packages/$pkg/package.json > tmp.json && mv tmp.json packages/$pkg/package.json + NEW_VERSIONS[$pkg]=$NEW UPPER=$(echo "$pkg" | tr '[:lower:]' '[:upper:]') + # Also export for the publish/commit/tag steps that follow. echo "${UPPER}_VERSION=$NEW" >> $GITHUB_ENV echo "Bumped @pascal-app/$pkg: $CUR → $NEW" fi @@ -83,9 +90,7 @@ jobs: for pkg in core viewer editor mcp; do FILE=packages/$pkg/package.json for dep in core viewer editor mcp; do - UPPER=$(echo "$dep" | tr '[:lower:]' '[:upper:]') - VAR="${UPPER}_VERSION" - VAL="${!VAR}" + VAL="${NEW_VERSIONS[$dep]}" [ -z "$VAL" ] && continue jq --arg name "@pascal-app/$dep" --arg v "^$VAL" ' if .peerDependencies[$name] then .peerDependencies[$name] = $v else . end @@ -94,6 +99,12 @@ jobs: done done + echo "=== @pascal-app/* refs after sync ===" + for pkg in core viewer editor mcp; do + echo "--- packages/$pkg/package.json ---" + jq '{ peerDependencies: (.peerDependencies // {} | with_entries(select(.key | startswith("@pascal-app/")))), devDependencies: (.devDependencies // {} | with_entries(select(.key | startswith("@pascal-app/")))) }' packages/$pkg/package.json + done + - name: Build & publish core if: inputs.package == 'core' || inputs.package == 'all' working-directory: packages/core diff --git a/packages/editor/package.json b/packages/editor/package.json index 89872d2c..1e18e364 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -11,8 +11,8 @@ "check-types": "tsc --noEmit" }, "peerDependencies": { - "@pascal-app/core": "^0.7.0", - "@pascal-app/viewer": "^0.7.0", + "@pascal-app/core": "^0.8.0", + "@pascal-app/viewer": "^0.8.0", "@react-three/drei": "^10", "@react-three/fiber": "^9", "next": ">=15", @@ -54,8 +54,8 @@ "three-mesh-bvh": "~0.9.8" }, "devDependencies": { - "@pascal-app/core": "^0.7.0", - "@pascal-app/viewer": "^0.7.0", + "@pascal-app/core": "^0.8.0", + "@pascal-app/viewer": "^0.8.0", "@pascal/typescript-config": "*", "@types/bun": "^1.3.0", "@types/howler": "^2.2.12", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 83cbdbc4..22c4cab0 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -54,14 +54,14 @@ "prepublishOnly": "bun run build && bun test" }, "peerDependencies": { - "@pascal-app/core": "^0.7.0" + "@pascal-app/core": "^0.8.0" }, "dependencies": { "@modelcontextprotocol/sdk": "^1.29.0", "zod": "^4.3.5" }, "devDependencies": { - "@pascal-app/core": "^0.7.0", + "@pascal-app/core": "^0.8.0", "@pascal/typescript-config": "*", "@types/node": "^25.5.0", "typescript": "5.9.3" diff --git a/packages/viewer/package.json b/packages/viewer/package.json index 6b077b41..e37f4ab4 100644 --- a/packages/viewer/package.json +++ b/packages/viewer/package.json @@ -22,7 +22,7 @@ "prepublishOnly": "npm run build" }, "peerDependencies": { - "@pascal-app/core": "^0.7.0", + "@pascal-app/core": "^0.8.0", "@react-three/drei": "^10", "@react-three/fiber": "^9", "react": "^18 || ^19", From 6488efe296f93601674f227cb7735aa33e168d5f Mon Sep 17 00:00:00 2001 From: Wawa Date: Sun, 10 May 2026 09:13:03 -0400 Subject: [PATCH 2/2] bun lock --- bun.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/bun.lock b/bun.lock index 00c23b30..8a11d1a7 100644 --- a/bun.lock +++ b/bun.lock @@ -61,7 +61,7 @@ }, "packages/core": { "name": "@pascal-app/core", - "version": "0.7.0", + "version": "0.8.0", "dependencies": { "dedent": "^1.7.1", "idb-keyval": "^6.2.2", @@ -87,7 +87,7 @@ }, "packages/editor": { "name": "@pascal-app/editor", - "version": "0.7.0", + "version": "0.8.0", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", @@ -122,8 +122,8 @@ "zustand": "^5.0.11", }, "devDependencies": { - "@pascal-app/core": "^0.7.0", - "@pascal-app/viewer": "^0.7.0", + "@pascal-app/core": "^0.8.0", + "@pascal-app/viewer": "^0.8.0", "@pascal/typescript-config": "*", "@types/bun": "^1.3.0", "@types/howler": "^2.2.12", @@ -133,8 +133,8 @@ "typescript": "6.0.2", }, "peerDependencies": { - "@pascal-app/core": "^0.7.0", - "@pascal-app/viewer": "^0.7.0", + "@pascal-app/core": "^0.8.0", + "@pascal-app/viewer": "^0.8.0", "@react-three/drei": "^10", "@react-three/fiber": "^9", "next": ">=15", @@ -162,7 +162,7 @@ }, "packages/mcp": { "name": "@pascal-app/mcp", - "version": "0.1.1", + "version": "0.2.0", "bin": { "pascal-mcp": "./dist/bin/pascal-mcp.js", }, @@ -171,13 +171,13 @@ "zod": "^4.3.5", }, "devDependencies": { - "@pascal-app/core": "^0.7.0", + "@pascal-app/core": "^0.8.0", "@pascal/typescript-config": "*", "@types/node": "^25.5.0", "typescript": "5.9.3", }, "peerDependencies": { - "@pascal-app/core": "^0.7.0", + "@pascal-app/core": "^0.8.0", }, }, "packages/typescript-config": { @@ -203,7 +203,7 @@ }, "packages/viewer": { "name": "@pascal-app/viewer", - "version": "0.7.0", + "version": "0.8.0", "dependencies": { "polygon-clipping": "^0.15.7", "three-bvh-csg": "^0.0.18", @@ -218,7 +218,7 @@ "typescript": "6.0.2", }, "peerDependencies": { - "@pascal-app/core": "^0.7.0", + "@pascal-app/core": "^0.8.0", "@react-three/drei": "^10", "@react-three/fiber": "^9", "react": "^18 || ^19",